java - JSON_encoded 字符串到 Java JSONObject

标签 java android json

我有来自服务器的 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/

相关文章:

iphone - JSONKit 给出解析错误,但 JSONLint.org 表示它是有效的

java - FasterXML jackson : The JSON @ symbol?

android - 无法编译值文件

java - 用 Paint 给位图着色?

java - Dropwizard资源类调用另一个资源方法类?

javascript - 无法显示来自服务器的 Json 对象

java - 如何摆脱自动安装新表

java - 断言部分文本

java - orielly 的 MultipartRequest 的一个好的开源替代品是什么?

android - 删除的 Espresso 测试仍在运行