首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gson反序列化时的java.lang.NullPointerException

使用gson反序列化时的java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2016-07-13 05:36:28
回答 0查看 461关注 0票数 0

大家好,我在用gson反序列化我的json时遇到了一些麻烦,当我试图反序列化到我的列表中时,我没有捕捉到任何错误,但每当我试图显示列表的内容时,我就得到了一个java.lang.NullPointerException。

下面是json:

代码语言:javascript
复制
{
  "_id": "577f81286ed8b475f5faf6fb",
  "title": "bad (feat. vassy) [radio edit]",
  "album": "Listen",
  "artist": {
    "_id": "577f81140e8784358e32ae2d",
    "name": "david guetta"
  },
  "genre": {
    "_id": "577f81140e8784358e32ae2e",
    "name": "dance"
  },
  "duration": "2m50s",
  "year": 2014,
  "artwork": {
    "small": "https://i.scdn.co/image/f59354f8d3f2841e44c1bd7aa0cd55a22843cfc7",
    "medium": "https://i.scdn.co/image/9b092f765831793404d46b816d688135ff32735f",
    "large": "https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96",
    "default": "https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96"
  },
  "extraGenres": [],
  "extraArtists": []
}

这是我的模型:

代码语言:javascript
复制
public class SongDetails {

    public String _id;
    public String title;
    public String album;

    public String duration;
    public int year;

    @SerializedName("artist") Artist artist;
    public static class Artist {
        public String _id;
        public String name;
    }

    @SerializedName("genre") Genre genre;
    public static class Genre {
        public String _id;
        public String name;
    }


    @SerializedName("artwork") Artwork artwork;
    public static class Artwork {
        public String small;
        public String medium;
        public String large;
        @SerializedName("default")
        public String defaultX;
    }

    @SerializedName("votes") public VotesPlayer votes;
    public static class VotesPlayer {
        public int upVotes;
        public int downVotes;
        public int standing;
        public String by;
    }
}

我尝试像这样反序列化:

代码语言:javascript
复制
Gson gson = new Gson();
Log.d("playdetails to des", toDeserialize);
// toDeserialize = {"_id":"577f81286ed8b475f5faf6fb","title":"bad (feat. vassy) [radio edit]","album":"Listen","artist":{"_id":"577f81140e8784358e32ae2d","name":"david guetta"},"genre":{"_id":"577f81140e8784358e32ae2e","name":"dance"},"duration":"2m50s","year":2014,"artwork":{"small":"https://i.scdn.co/image/f59354f8d3f2841e44c1bd7aa0cd55a22843cfc7","medium":"https://i.scdn.co/image/9b092f765831793404d46b816d688135ff32735f","large":"https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96","default":"https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96"},"extraGenres":[],"extraArtists":[]}
try {
       Response r = gson.fromJson(toDeserialize, Response.class);
       Log.d("deser details", r.myPlaylistDetails.size()+"");
    } catch (Exception e) {
          e.printStackTrace();
    }

public class Response {
        public List<SongDetails> myPlaylistDetails;
    }

我得到了这个错误

W/System.err: java.lang.NullPointerException:尝试在空对象引用上调用接口方法'int java.util.List.size()‘

在行:"Log.d("deser details",r.myPlaylistDetails.size()+"");“

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38339280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档