【发布时间】:2014-03-12 23:54:16
【问题描述】:
我有一个字符串对象和键的映射,我希望将它们放入 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
【问题讨论】:
-
你读错了。也许您应该发布一个链接到您阅读的地方。
-
错误似乎很明显:字符串不是数组。什么是obj?
-
可以贴出输入图吗?
-
您可以创建一个JSONObject from a Map using the constructor,如帖子所示-但是,您的实际问题和报告的错误似乎是错误的,并且
obj.toString()的使用是不正确 .也许它应该简单地是:array = new JSONArray().put(obj);? -
如果您有想要转换为 JSON 的地图,请找到一个接受地图的 JSON 工具包并告诉它进行转换。 Map 自然地转换为 JSON“对象”,只是并非所有 Java JSON 工具包都知道如何进行转换(因为有些坚持只对自己的自定义类进行操作)。将 Map 转换为数组几乎是零意义。