2011-10-05 139 views
0

當解析JSON我通常只是constuct一個對象,並使用gson庫來我的字符串解析到該對象。用Java解析這個JSON?

不過,我現在有相當複雜的響應它由許多元素每個對象和數組和對象數組的子元素的發現自己。它看起來是這樣的......

{ 
"type": "thetype", 
"object":{ 
    "text": "texthere", 
    "moretext": "more here" 
    }, 
    ..., 
    ..., 
    ..., 
    ..., 
    "fieldIwant": [ 
    { 
    "object":"object!" 
    }, 
    .... 
    .... 
    { 
    "object":"object!" 
    }, 
    ] 
} 

的事情是,我只在我和fieldIwant沒有別的真正感興趣。 Java中沒有一種方法可以提取該字段並單獨使用它,而不是我不需要的所有其他重量。

回答

1

可以使用低級別JsonParser API

JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject(); 
yourArray = new Gson().fromJson(jsonObject.get("fieldIwant"), yourArrayType); 

或者,你可以創建一個ExclusionStrategyGsonBuilder

2

根據這一http://sites.google.com/site/gson/gson-design-document它看起來像GSON默認完成了這個要求。

當您將Json字符串反序列化爲所需類型的對象時,可以導航輸入樹或所需類型的類型樹。 Gson使用後一種方法導航目標對象的類型。這樣可以使你在實例只是你期望(主要是驗證對預期的「模式」輸入)對象的類型進行嚴格控制。 通過這樣做,您也可以忽略Json輸入有但沒有預期的任何額外字段。

換句話說,它不反序列化任何不需要的字段。你應該很好走。

+0

所以用,有什麼你告訴我是..我可以構造一個對象匹配我想要的對象數組,插入到gson中,它會像魔術一樣工作? – user596186

+0

是的。根據本文檔,GSON只是拋出你不需要的垃圾。 –