2010-09-06 56 views
1

達累斯薩拉姆,JSON官方的Java API:一個JSONObjects的JSONArray

使用json.org API,我們可以輕鬆地將地圖以一個JSON對象:

Map<String, String> carta = new Map<String, String>(); 
    carta.put("id", "123"); 
    carta.put("Planet", "Earth"); 
    carta.put("Status", "getting dirty"); 
    JSONObject json = new JSONObject(); 
    for(Iterator<String> it=input.keySet().iterator(); it.hasNext();){ 
    String key = it.next(); 
    json.put(key, input.get(key)); 
    } 
    System.out.println(json.toString()); 
// output:   {id:"123", Planet:"Earth", Status: "getting dirty"} 

現在,我們希望有這些數組對象 這個API不提供這個嗎?而在API中他們提到

JSONArray joArr = new JSONArray(); 
    joArr.put(cartaEarth); 
    joArr.put(cartaMars); 
    System.out.println(joArr.toString()); 

//output:  [{ id:123, Planet:Earth, Status: getting dirty }, {id: 456, Planet:Mars, Status: maybe aliens there }] 

沒有括號...:

put(java.util.Map value) 
      Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map. 

,而不是做這件事的byhand,首選

至少,添加一個JSONObjects到JSONArray移除支架先討論一下,謝謝!

+2

您是否嘗試http://code.google.com/p/google-gson/?它是專門從Obj到JSon和Json到Obj – rsilva4 2010-09-06 14:49:51

+0

究竟是什麼問題?你問如何把你的對象放在一個數組中,但繼續顯示你知道如何去做。 – RoToRa 2010-09-06 15:00:03

+0

我不明白爲什麼JSONArray的轉換與JSONObject轉換不一致。在JSONArray中,括號被刪除! – 2010-09-06 15:25:12

回答

1

你試試GSon?它專門針對JSon和Java對象的Java對象。

+0

gson很好地完成了這項工作,謝謝@rsilva!不過,我不知道json.org的api是否可以嗎? – 2010-09-06 16:30:15

0

我會建議看看別的東西比org.json包。幾乎所有來自org.json列表的替代方案都提供了使用JSON更方便和更簡單的方法。 除了有些人喜歡的Gson,我會推薦Jackson;而flex-json和Svenson是另外一些看起來很體面的軟件包。

如果你堅持使用org.json來做這件事,你需要更多地解釋你的問題 - API有你需要的所有方法,它們允許你添加所有類型的值(JSON數組,對象,字符串,數字,布爾值和空值)。但是你的類型需要匹配JSON類型,所以沒有從數組到對象的轉換。

+0

OK 4 http://jackson.codehaus.org/ 至於json.org,我沒有附件...尚未... @API,JSONArray以不同的方式從地圖生成JSONObjects(無括號)比從地圖手動創建JSONObject。 – 2010-09-07 10:15:34

+0

好(關於創建地圖),還沒有廣泛使用它。太糟糕,如果它是不對稱的。但請注意,括號不是對象模型的一部分,而是序列化的一部分......我想你所說的是它添加了Map或List的所有元素,而不是Map或List本身。在Java中,通常是由於List.add()和List.addAll()(或Map.put(),Map.putAll())之間的區別。 – StaxMan 2010-09-07 16:33:42

相關問題