2015-08-15 64 views
2

創建JSON我有在Java中的複雜的代碼,當簡化成爲如下所述:在java的特定格式的Android

我創建從「MyClass的」類對象並將其添加到一個List<myclass>對象。

我轉換List<myclass> to List<Map>對象。

現在我創建一個JSONArray和..

轉換成List<Map>所有地圖對象JSON對象,然後將它們添加到jsonArray對象。

於是最後我把它轉換成字符串的toString功能。

JSONArray arr = new JSONArray(); 
     for(Map m : map) { 
      JSONObject mapjs = new JSONObject(m); 
      arr.put(mapjs); 
     } 
     String mapString=arr.toString(); 

有了這個,我能夠得到如下字符串..

[{"json1":{"id":"jsonid1"}},{"json2":{"id":"jsonid2"}}] 

我需要它是按以下格式..

{"json1":{"id":"jsonid1"},"json2":{"id":"jsonid2"}} 

衷心感謝所有幫助..

謝謝

+0

爲什麼不創建一個新的JSONObject(),然後添加其他對象而不是使用JSONArray()? – kabuto178

+0

那麼我想它會造成.. {{ 「json1」:{ 「ID」: 「jsonid1」}},{ 「json2」:{ 「ID」: 「jsonid2」}}},仍然沒有格式,我需要或我錯了...... – Arnab

+0

這確實是你想要的格式,然後你可以訪問整個字符串,它是1個JSON對象,然後從中選擇一個內部json對象。 – kabuto178

回答

0

一種更好的方法似乎是在其中當轉換爲JSON這樣的格式創建地圖創建在必要的格式文件

Map mymap = new Hashmap(); 
    for(Map m : map) { 
       mymap.putall(m); 
      } 
    JSONObject mapjs = new JSONObject(mymap).toString(); 
+0

感謝您發佈這個問題的答案! Stack Overflow不鼓勵使用代碼解答,因爲沒有上下文的代碼轉儲並不能解釋解決方案如何或爲什麼會起作用,這使原始海報(或任何未來的讀者)很難理解其背後的邏輯。請編輯你的問題,幷包括你的代碼的解釋,以便其他人可以從你的答案中受益。謝謝! –

0

方括號表示裏面的JSON數據是一個數組等等,而不是使用JSONArray只使用JSONObject

JSONObject arr = new JSONObject(); 
int i = 1; 
for(Map m : map) { 
    JSONObject mapjs = new JSONObject(m); 
    arr.put("json"+i, mapjs); 
    i++; 
} 
String mapString=arr.toString(); 
+0

我沒有選擇添加arr.put(mapjs); JSONObject沒有選項可以放置另一個JSONObject – Arnab

+0

@Arnab ..哦,對不起,更新了答案,它應該給出預期的結果 – Garry

0

將對方的JSONObject成一個JSONObject把你的數據,你可以嘗試如下所示:

JSONObject jsonObject = new JSONObject().put("json1", new JSONObject.put("id", "jsonid1"));