Gson 报空指针...死活搞不明白怎么回事,求指点~~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Amarok
V2EX    Android

Gson 报空指针...死活搞不明白怎么回事,求指点~~

  •  
  •   Amarok 2016-12-21 11:26:01 +08:00 12404 次点击
    这是一个创建于 3227 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 条回复    2016-12-21 13:30:46 +08:00
    Amarok
        1
    Amarok  
    OP
       2016-12-21 11:27:07 +08:00
    String jsOnText= jsonStringTool.Optimization(s);
    Log.e(TAG, jsonText);


    Gson detailGson = new Gson();

    PostingExample postingExample = detailGson.fromJson(jsonText,PostingExample.class);
    String id = postingExample.getPostings().get(1).getID();
    String pID = postingExample.getPostings().get(1).getPid();

    String COntents= postingExample.getPostings().get(1).getContents();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", id);
    map.put("pID", pID);


    map.put("Contents", Contents);

    log 出来的 json 字符串没问题...到操作 get ( 1 )的时候就报空指针...
    Amarok
        2
    Amarok  
    OP
       2016-12-21 11:31:56 +08:00
    getPostings().size()就报空指针...T.T
    hinkal
        3
    hinkal  
       2016-12-21 11:33:19 +08:00 via Android
    你这个代码没贴全, PostingExample 的类结构呢
    xuhaoyangx
        4
    xuhaoyangx  
       2016-12-21 11:33:20 +08:00
    只给代码不给错误信息,而且你这个代码也不全,只说空指针,可以
    Amarok
        5
    Amarok  
    OP
       2016-12-21 11:36:38 +08:00
    还没发完就被老板叫过去了....回来补上代码....

    PostingExample.class
    public class PostingExample {
    private List<PostingDetail> Postings;

    public List<PostingDetail> getPostings() {
    return Postings;
    }

    public void setPostings(List<PostingDetail> postings) {
    Postings = postings;
    }

    }


    PostingDetail .class
    public class PostingDetail {
    private String FocusName;
    private String status;
    private String sportsName;
    private String ptype;
    private String UserName;
    private String ID;
    private String postType;
    private String baseTitle;
    private String fixedTitle;
    private String sportstypeName;
    private String collection;
    private String sendTime;
    private String pid;
    private String titleimg;
    private String contents;

    public String getID() {
    return ID;
    }

    public void setID(String ID) {
    this.ID = ID;
    }

    public String getBaseTitle() {
    return baseTitle;
    }

    public void setBaseTitle(String baseTitle) {
    this.baseTitle = baseTitle;
    }

    public String getFixedTitle() {
    return fixedTitle;
    }

    public void setFixedTitle(String fixedTitle) {
    this.fixedTitle = fixedTitle;
    }

    public String getCollection() {
    return collection;
    }

    public void setCollection(String collection) {
    this.collection = collection;
    }

    public String getSendTime() {
    return sendTime;
    }

    public void setSendTime(String sendTime) {
    this.sendTime = sendTime;
    }

    public String getStatus() {
    return status;
    }

    public void setStatus(String status) {
    this.status = status;
    }

    public String getPid() {
    return pid;
    }

    public void setPid(String pid) {
    this.pid = pid;
    }

    public String getTitleimg() {
    return titleimg;
    }

    public void setTitleimg(String titleimg) {
    this.titleimg = titleimg;
    }

    public String getFocusName() {
    return FocusName;
    }

    public void setFocusName(String focusName) {
    FocusName = focusName;
    }

    public String getSportstypeName() {
    return sportstypeName;
    }

    public void setSportstypeName(String sportstypeName) {
    this.sportstypeName = sportstypeName;
    }

    public String getSportsName() {
    return sportsName;
    }

    public void setSportsName(String sportsName) {
    this.sportsName = sportsName;
    }

    public String getPtype() {
    return ptype;
    }

    public void setPtype(String ptype) {
    this.ptype = ptype;
    }

    public String getUserName() {
    return UserName;
    }
    Amarok
        6
    Amarok  
    OP
       2016-12-21 11:38:04 +08:00
    jsonText :
    {
    "Posting": [
    {
    "UserName": "小袁",
    "FocusName": "衰神",
    "status": "未审核",
    "sportsName": "网球",
    "ptype": "原创",
    "ID": "11",
    "sportstypeName": "竞技球类",
    "baseTitle": "小米手环 2 开箱及与小米手环 1 对比",
    "fixedTitle": "小米哈哈 666",
    "seen": "900",
    "collection": "170",
    "sendTime": "08 27 2016 11:11AM",
    "pid": "20160827111111",
    "titleimg": "http://imageqiniu.xxxxxbbs.com/FrtK2K9JqwoE6xhYWRPFv9tIZym4?watermark/1/image/aHR0cDovLzd4c2N3NS5jb20wLnowLmdsYi5xaW5pdWNkbi5jb20vd2F0ZXJtYXJrLnBuZw==/gravity/South/dy/5",
    "Contents": "aaa"
    }
    ]
    }
    Amarok
        7
    Amarok  
    OP
       2016-12-21 11:39:06 +08:00
    @hinkal 贴上了....谢谢~
    CFO
        8
    CFO  
       2016-12-21 11:39:18 +08:00 via Android
    实体类还是用 GsonFormat 生成吧 靠谱
    Amarok
        9
    Amarok  
    OP
       2016-12-21 11:40:00 +08:00
    @xuhaoyangx 太着急了刚刚,已经贴上了.....谢谢~
    sjn9588
        10
    sjn9588  
       2016-12-21 11:40:15 +08:00
    postingExample.getPostings()返回的 Postings 是 null 吧?
    Ouyangan
        11
    Ouyangan  
       2016-12-21 11:40:18 +08:00
    我想说你为什么不把反序列化出来的对象打印出来呢?
    shakespaces
        12
    shakespaces  
       2016-12-21 11:43:28 +08:00
    你这个类方法没看到和 content 相关的东西啊
    sorra
        13
    sorra  
       2016-12-21 11:44:49 +08:00
    一个叫 Posting ,一个叫 Postings ,不匹配啊
    xuhaoyangx
        14
    xuhaoyangx  
       2016-12-21 11:45:06 +08:00
    我怎么感觉的你的 json 有问题呢。。
    xuhaoyangx
        15
    xuhaoyangx  
       2016-12-21 11:46:30 +08:00   2
    private List<PostingDetail> Postings
    但是你的 json 那个数组名字是 Posting
    Amarok
        16
    Amarok  
    OP
       2016-12-21 11:47:08 +08:00
    @sjn9588 对...是 null
    sjn9588
        17
    sjn9588  
       2016-12-21 11:48:57 +08:00   1
    @Amarok 15 楼正解
    Amarok
        18
    Amarok  
    OP/div>
       2016-12-21 11:49:41 +08:00
    @xuhaoyangx 啊啊啊啊啊我瞎了.....这么低级的问题,捂脸......
    pubby
        19
    pubby  
       2016-12-21 12:32:57 +08:00
    @SerializedName("Posting")
    private List<PostingDetail> Postings;

    名字不一致没关系,上面加个注解也能解决
    wanttofly
        20
    wanttofly  
       2016-12-21 13:30:46 +08:00
    话说不用 GsonFormat 吗?应该不会出现变量名这个问题了啊。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3022 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 12:48 PVG 20:48 LAX 05:48 JFK 08:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86