2014-03-12 47 views
1

我有一個我希望放到json文件中的字符串對象和鍵的映射。我已經讀過,要做到這一點的方法是將它轉換爲一個數組,並且它只適用於對象和鍵都是字符串的映射。我可以從地圖上創建JSONObject,但不能將它放到數組中。有人能告訴我爲什麼這不起作用嗎?將Java Map放到JSON中

private static final String JSON_USER_VOTES = "user_votes"; 
private Map<String, String> mCheckedPostsMap; //This is populated elsewhere 


JSONObject obj=new JSONObject(mCheckedPostsMap); 
JSONArray array=new JSONArray(obj.toString()); // <<< Error is on this line 
json.put(JSON_USER_VOTES, array); 

以下是錯誤:

org.json.JSONException: Value {"232":"true","294":"true"} of type org.json.JSONObject cannot be converted to JSONArray 
+1

你讀錯了。也許你應該發佈一個鏈接到你閱讀的地方。 – kdgregory

+1

錯誤似乎很明顯:一個字符串不是一個數組。什麼是obj? – duffymo

+0

你可以發佈輸入地圖嗎? – Neel

回答

1

如果你希望所有封閉在一個JSON對象初始地圖項,您可以使用:

JSONArray array = new JSONArray().put(obj);

這會產生一種像 [{"key1:"value1","key2":"value2"}]

如果你想每個初始映射條目爲不同的JSON對象,你可以使用:

JSONObject obj = new JSONObject(map); JSONArray array = new JSONArray(); for(Iterator iter = obj.keys(); iter.hasNext();){ String key = (String)iter.next(); JSONObject o = new JSONObject().put(key, map.get(key)); array.put(o); }

這將產生類似 [{"key1:"value1"}, {"key2":"value2"}]

+0

謝謝你,夥計,這正是我一直在尋找的。 –