Amarok
V2EX  ›  Android

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

  •  
  •   Amarok · Dec 21, 2016 · 14386 views
    This topic created in 3609 days ago, the information mentioned may be changed or developed.
    20 replies  •  2016-12-21 13:30:46 +08:00
    Amarok
    Amarok
    OP
    Dec 21, 2016
    1
    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
    Amarok
    OP
    Dec 21, 2016
    2
    getPostings().size()就报空指针...T.T
    hinkal
    hinkal
    Dec 21, 2016 via Android
    3
    你这个代码没贴全, PostingExample 的类结构呢
    xuhaoyangx
    xuhaoyangx
    Dec 21, 2016
    4
    只给代码不给错误信息,而且你这个代码也不全,只说空指针,可以
    Amarok
    Amarok
    OP
    Dec 21, 2016
    5
    还没发完就被老板叫过去了....回来补上代码....

    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
    Amarok
    OP
    Dec 21, 2016
    6
    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
    Amarok
    OP
    Dec 21, 2016
    7
    @hinkal 贴上了....谢谢~
    CFO
    CFO
    Dec 21, 2016 via Android
    8
    实体类还是用 GsonFormat 生成吧 靠谱
    Amarok
    Amarok
    OP
    Dec 21, 2016
    9
    @xuhaoyangx 太着急了刚刚,已经贴上了.....谢谢~
    sjn9588
    sjn9588
    Dec 21, 2016
    10
    postingExample.getPostings()返回的 Postings 是 null 吧?
    Ouyangan
    Ouyangan
    Dec 21, 2016
    11
    我想说你为什么不把反序列化出来的对象打印出来呢?
    shakespaces
    shakespaces
    Dec 21, 2016
    12
    你这个类方法没看到和 content 相关的东西啊
    sorra
    sorra
    Dec 21, 2016
    13
    一个叫 Posting ,一个叫 Postings ,不匹配啊
    xuhaoyangx
    xuhaoyangx
    Dec 21, 2016
    14
    我怎么感觉的你的 json 有问题呢。。
    xuhaoyangx
    xuhaoyangx
    Dec 21, 2016❤️2
    15
    private List<PostingDetail> Postings
    但是你的 json 那个数组名字是 Posting
    Amarok
    Amarok
    OP
    Dec 21, 2016
    16
    @sjn9588 对...是 null
    sjn9588
    sjn9588
    Dec 21, 2016❤️1
    17
    @Amarok 15 楼正解
    Amarok
    Amarok
    OP
    Dec 21, 2016
    18
    @xuhaoyangx 啊啊啊啊啊我瞎了.....这么低级的问题,捂脸......
    pubby
    pubby
    Dec 21, 2016
    19
    @SerializedName("Posting")
    private List<PostingDetail> Postings;

    名字不一致没关系,上面加个注解也能解决
    wanttofly
    wanttofly
    Dec 21, 2016
    20
    话说不用 GsonFormat 吗?应该不会出现变量名这个问题了啊。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1429 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 04:51 · PVG 12:51 · LAX 20:51 · JFK 23:51
    ♥ Do have faith in what you're doing.