我有来自服务器的 JSON 响应。它看起来有点像这样:
"json_key" : {
"key_1" : value,
"key_2" : json_object,
"key_3" : json_object
}
问题是其中一个 json 对象采用特定编码
"object_key": "a:4:{s:6:\"ITEM_KEY_1\";s:2:\"ITEM_VALUE_1\";s:6:\"ITEM_KEY_2\";s:2:\"ITEM_VALUE+2\";s:8:\"ITEM_KEY_3\";s:8:\"ITEM_VALUE_3\";s:8:\"ITEM_KEY_4\";s:5:\"ITEM_VALUE_4\";}"
据我了解,这是一个 json_encoded 字符串。如何将其转换为 java JSONObject
?
之所以问这个问题,是因为当我尝试通常的方式 JSONObject json = new JSONObject(jsonStr);
时,它会抛出 JSONException - 无法将 String 转换为 JSONObject
。
编辑 每个验证工具都将对象值视为字符串,而不是 JSON。
最佳答案
问题是
"object_key": "a:4: s:6:\"ITEM_KEY_1\";s:2:\"ITEM_VALUE_1\";s:6:\"ITEM_KEY_2\";s:2:\"ITEM_VALUE+ 2\";s:8:\"ITEM_KEY_3\";s:8:\"ITEM_VALUE_3\";s:8:\"ITEM_KEY_4\";s:5:\"ITEM_VALUE_4\";}"
不是有效的 JSON,因此当您尝试解析它时会出错。
字符串中的第一个错误是:"object_key": "a: 4:
,但我猜测您希望整个字符串位于 object_key
据我所知,JSON 无法忽略值内的 ':',并且无法对其进行转义。如果对象键不包含所有这些内容,则需要重构 JSON 直到其有效。
作为工具,使用http://jsonlint.com/ ,它允许您检查 JSON 是否有效
回复:Yami 的编辑 - 恐怕您提供给我们的 JSON 示例无效,如我列出的网站所示。如需有关此问题的更多帮助,您需要将私有(private) JSON 数据更改为与您在这些站点之一验证 JSON 时所遇到的结果相同的结果,否则我们无能为力。并验证它
关于java - JSON_encoded 字符串到 Java JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216897/