2012-10-10 15 views
0

好上我有一個JSON在未來是這樣的:GSON只有專心內部對象

{count:xxx, important:[{...}]} 

所有我關心的重要對象。有什麼我可以用自定義的反序列化器或任何可以讓GSON反序列化那個重要的json對象的東西嗎?

而且我想反序列化對象的方式看是這樣的:

List<Important> = Gson.fromJson(arg0, new TypeToken<ArrayList<Important>>(){}.getType()); 
+1

做完最近的一些工作GSON,我只是咬了子彈,創造了所有的對象到我需要的人。您可以省略字段名稱,這些對象將被忽略。 – lynks

回答

3

是的,你可以使用JsonParser類從GSON圖書館閱讀它作爲一個JSONObject。然後,拉出你需要的內部對象,並使用Gson來填充你的Java類。

例子:

Reader jsonReader = 
       new BufferedReader(
       new InputStreamReader(getIStream("myFile.json"))); 
JsonParser parser = new JsonParser(); 
JsonObject top = parser.parse(jsonReader).getAsJsonObject(); 

JsonElement importantEl = top.get("important"); 

//Parse the important element into whatever structure you're creating 
Gson gson = new Gson(); 
List<Important> important 
    = Gson.fromJson(importantEl, new TypeToken<ArrayList<Important>>(){}.getType()); 
+0

不應該'重要'是'el'?我不知道這是如何工作的 - 它創建了一個json樹嗎? – maaartinus

+0

是的,對不起。我正在爲我正在編寫的一個項目編寫一些代碼。是的,JsonObject是頂級json樹的解析版本,JsonElement類型可以表示json數組或json對象。 Gson知道如何讀取它並將其轉換爲您通過的類類型 – Collin

+0

您有什麼意義,但它會毀掉我的通用類,所以我會以其他方式解決它... – arinte