将Java Map放到JSON中

时间:2014-03-12 23:54:16

标签: java json map

我有一个字符串对象和键的映射,我希望将它放到json文件中。我已经读过这样做的方法是将它转换为数组,它只适用于对象和键都是字符串的地图。我可以从地图中创建一个JSONObject,但不能将它放到数组中。有人能告诉我为什么这不起作用吗?

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 个答案:

答案 0 :(得分: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"}]