2014-01-28 58 views
0

我從Web服務中提取JSON字符串,這是以下版本中的樣式。根據在get中發送的內容,顯示id的JSON字符串字段將是任意的。我用gson跟蹤了一些例子,他們討論瞭如何使用json並將其運行到一個對象中以處理任意字段值。 How to decode JSON with unknown field using Gson?Dealing with randomly generated and inconsistent JSON field/key names using GSONGSON 2.0+ - 反序列化和解析任意字段

我的問題是,一旦我創建它來拉出特定字段,我該如何處理該對象。我有一個自定義的類來從對象(id,名稱,配置文件)等內部拉取值,但我迷失在如何能夠引用這兩者,或者我將如何從對象中提取信息變成一個數組列表或類似的東西。

{ 
    "415943": { 
     "id": 415943, 
     "name": "Zoro Roronoa", 
     "profileIconId": 580, 
     "revisionDate": 1390848107000, 
     "summonerLevel": 30 
    }, 
    "19758386": { 
     "id": 19758386, 
     "name": "Zoro", 
     "profileIconId": 535, 
     "revisionDate": 1390855130000, 
     "summonerLevel": 30 
    } 
} 

Main.java

Gson gson = new Gson(); 
Object o = gson.fromJson(jsonStatsString, Object.class); 

回答

0

您可以使用包含在JSON映射的字段中輸入您的自定義對象,並讓他們轉換成一個列表供您:

List<MyObject> items = 
       gson.fromJson(json, new TypeToken<List<MyObject>>() { }.getType()); 
+0

我一直得到錯誤'「預期的BEGIN_ARRAY,但是在BEGIN_OBJECT第1行第2列」 – Razgriz231

+0

這是因爲它看起來像JSON不是一個數組,而是一個包含多個對象的對象。我只需要返回字符串並用[]替換外部{},以便它是一個數組。那麼它應該工作。 – brwngrldev

+0

我沒有最終使用列表對象,但您的答案中的「TypeToken」部分就是我一直在尋找的東西。 – Razgriz231