2013-06-04 33 views
2

我想從服務器解析json並將其放入類中。我爲此使用json4s。問題是json對象包含太多的字段,大約有40-50個字段,其中一些名稱很長。解析有很多字段的json對象

我想知道,什麼是一個明智的方式來存儲所有這些,我將不得不在一個類中創建40-50個領域?請記住,他們中的一些人會有很長的名字,正如我之前所說的。

我使用Scala,但Java的方法可能與它類似,所以我也添加了Java標籤。

回答

1

我不知道json4s,但在澤西與傑克遜,例如,您可以使用Map持有Json數據或您可以使用POJO與所有這些名稱。

有時最好有名字。它使代碼更容易理解。

有時最好使用Map。例如,如果字段名稱不時變化。

如果我記錯的話,使用純傑克遜你做這樣的事情:

String jsonString = ....; // This is the string of JSON stuff 
JsonFactory factory = new JsonFactory(); 
ObjectMapper mapper = new ObjectMapper(factory); // A Jackson class 
Map<String,Object> data = mapper.readValue(jsonString, HashMap.class); 

可以使用TypeReference,使之成爲少許清潔劑至於仿製藥。傑克遜的文件告訴更多關於它。這裏還有更多的:StackOverflow: JSON to Map

+0

地圖...我忘了它。 –

+0

如何將一個json對象提取到一個Map [String,Any]? –

+0

添加傑克遜信息,但它的Java,而不是斯卡拉。 –

1

通常有兩種方式解析json到對象 1)解析json到對象表示。 另一個可能適合你,因爲你提到你的對象有太多的字段是amap/hashtable,或者你可以保留它作爲JObject,一個獲取字段ehrn你需要他們

+0

我如何從JObject獲得它們,爲什麼它更方便? –

+0

看這裏http://www.scala-lang.org/api/current/index.html#scala.util.parsing.json.JSONObject返回一個val – varun

+0

的地圖,它直接將對象直接轉換爲包裝器[parse(「」「{」numbers「:[1,2,3,4]}」「」)]這又允許你訪問像關係船這樣的關鍵值,我在json.net中使用了類似的技術。真的沒有太大的區別。 – varun