我有一个 JSON 格式的String
,它有一个单一的键值对和一个由各种String
类型的键和值组成的Map
,如下所示:
"{"Key":"value","Map":{"key1":"val1","key2":"val2",...}}"
我想做的是将此String
转换为JSONObject
(因为我还有其他可以轻松解释JSONObject
的代码(。我的第一直觉是使用解析器(JSONParser
(,就像下面的代码片段一样......
JSONParser parser = new JSONParser();
Object o = new JSONParser();
o = (JSONObject) parser.parse(jsonStr);
JSONObject j = (JSONObject) o;
。但我得到了一个ParseException
而不是方便的JSONObject
.为什么?我应该以不同的方式对待String
,因为它里面有Map
吗?还是我在做一些超出JSONParser
能力的事情?
...但我得到了一个
ParseException
而不是方便的JSONObject
.为什么?
如果你有一个ParseException
,这意味着你认为的JSON(实际上(不是有效的JSON。 解析代码或JSONObject
解析器没有问题。 这要么是(假定的(JSON最初生成方式的问题,要么是到达应该解析它的代码的"通道"的问题。
我应该以不同的方式对待字符串,因为它里面有一个映射吗?
不。
我注意到您的示例代码片段不够清晰/完整,无法准确判断您在做什么。 (将来,请提供真正的MCVE,而不是没有多大意义的代码片段1...当然不能编译和运行。 但是没有任何迹象表明该代码是ParseException
的原因。
还是我在做超出
JSONParser
能力的事情?
不。 JSON 解析器可以处理任何 JSON,前提是它是格式正确的。
要解决此问题,您需要弄清楚为什么解析器认为您的JSON不好,并回到坏的根本原因。
1 - 例如,为什么要将JSONParser
对象分配给类型为Object
的变量?