2016-09-16 24 views
-1

這是我的JSON響應,始終數組爲空,同時使用GSON解析

[ 
    { 
    "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 
    }, 
    { 
    "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 
    } 
] 

我用下面的代碼來創建上述JSON

public static class SaveFavourites extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 
      String json5 = gson.toJson(favouriteTracks.getFavourite()); 
       prefsEditor.putString("favouriteTracks", json5); 
      prefsEditor.commit(); 
      return null; 
     } 
    } 

林檢索解析上述創建的響應爲如下,

gson.fromJson(json5, Favourite.class); 

但是,當我解析它總是一個空的數組。

我怎樣才能解析它使用GSON?

回答

0

您的json響應是jsonArray(,因爲它是以「[」「開頭的,但是您將它作爲json接收,那就是問題所在。 你應該使用toJsonArray或其他東西來刪除它。如果仍然存在錯誤。問我一下。

+0

我該如何排除這種情況? –

+0

我需要的只是將最喜歡的歌曲存儲在json數組中並將其保存爲共享首選項。在 –

+0

之後訪問它,建議使用共享首選項來存儲非常少的數據,如某些int或布爾值,所以我不建議這樣做。改用sqllite數據庫。 –

1

你正在解析一個Favourite的數組,所以你應該提供一個合適的類型。例如List<Favourite>

List<Favourite> list = gson.fromJson(json5, new TypeToken<List<Favourite>>(){}.getType()); 
+0

謝謝,但它返回一個空數組 –

+0

@ J.Doe我自己測試它,它工作正常。那麼你可能在其他地方有一個錯誤。 –

+0

我試過了。只有在停止後應用程序恢復時,數據纔會持續存在。一旦它被銷燬,數據不會被保留,因此數組是空的:( –