通过gson反序列化对象会导致空指针异常



下面是我的pojo类,

public class LocalTrack {
    private long id;
    private String title;
    private String artist;
    private String album;
    private String path;
    private long duration;
    private String index;
  //constructor
    //getter setters for above fields
}

我使用以下代码来检索json响应,这是以前保存的。

  Map<String, ?> all = tinydb.getAll();
            Iterator       it  = all.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry pairs = (Map.Entry) it.next();
                LocalTrack localTrack = gson.fromJson(pairs.getValue().toString(), LocalTrack.class);
            }

pairs.getValue()得到如下json。

{"album":"http://MyMp3Song.Com","artist":"04 - Thai Mannai Vanakka","index":"#","path":"/storage/sdcard1/Download/04 - Thai Mannai Vanakkam(MyMp3Song.Com).mp3","title":"04 - Thai Mannai Vanakkam(MyMp3Song.Com)","duration":369424,"id":32004}

当我输入gson.fromJson(pairs.getValue().toString(), LocalTrack.class)时,它返回以下错误,

. lang。NullPointerException:尝试调用虚方法"java . lang . object com.google.gson.Gson.fromJson(以,java.lang.Class)'在空对象引用上在android.app.ActivityThread.performLaunchActivity (ActivityThread.java: 2364)

为什么会这样?

需要初始化'gson'对象。这里有一个链接…Mkyong如何使用gson

Gson gson = new Gson();
Map<String, ?> all = tinydb.getAll();
            Iterator       it  = all.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry pairs = (Map.Entry) it.next();
                LocalTrack localTrack = gson.fromJson(pairs.getValue().toString(), LocalTrack.class);
            }

相关内容

最新更新