2016-09-16 81 views
1

以下是我的POJO類,反序列通過GSON結果的對象空指針異常

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)返回以下錯誤,

顯示java.lang.NullPointerException:試圖調用虛擬方法 「java.lang.Object繼承com.google.gson.Gson。 fromJson(java.lang.String中, java.lang.Class中)」上的空對象引用 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)

這是爲什麼呢?

+0

該錯誤則說這是gson''null'。你可能從未初始化過它。 –

+0

兄弟....那真棒...我不知道爲什麼我犯了這樣一個愚蠢的錯誤...我忘了初始化它...謝謝 –

回答

1

'gson'對象需要初始化。這裏是一個鏈接.. mkyong on how to use 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); 
      }