我有一个字符串对象和键的映射,我希望将它放到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
答案 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"}]