如何在 Java 中解析多维 JSON string



我有一个 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的变量?

最新更新