有一个JSON格式String
,具有一个单一的键值对,并Map
包含String
各种类型的键和值,如下所示:
"{"Key":"value","Map":{"key1":"val1","key2":"val2",...}}"
想要做的是将其String
转换为JSONObject
(因为我有其他代码可以轻松解释a JSONObject
)。我的第一直觉是使用解析器(JSONParser
),如下面的代码片段...
JSONParser parser = new JSONParser();
Object o = new JSONParser();
o = (JSONObject) parser.parse(jsonStr);
JSONObject j = (JSONObject) o;
...但我得到了一个ParseException
而不是方便JSONObject
。这是为什么?我应该以String
不同的方式对待它,因为它有Map
内在的吗?或者我在做一些超出能力范围的事情JSONParser
?
发布于 2018-09-25 15:23:24
...但我得到了一个
ParseException
而不是方便JSONObject
。这是为什么?
如果你有一个ParseException
,那就意味着你认为JSON(实际上)是无效的JSON。解析代码或JSONObject
解析器不是问题。这或者是(假设的)JSON首先产生的方式的问题,或者是“通道”,它到达了应该解析它的代码。
我应该以不同的方式处理字符串,因为它内部有一个映射吗?
我注意到您的示例代码片段不够清晰/完整,无法准确判断您在做什么。(将来,请提供一个真正的MCVE,而不是代码片段,这些代码片段没有多大意义1 ...当然也无法编译和运行。)但没有任何迹象表明该代码是导致这个ParseException
。
或者我在做一些超出能力范围的事情
JSONParser
?
不。JSON解析器可以处理任何JSON,只要它是格式良好的。
要解决这个问题,您需要弄清楚为什么解析器认为您的JSON是坏的,并回到导致错误的根本原因。
1 - 例如,为什么要将JSONParser
对象分配给类型的变量Object
?
https://stackoverflow.com/questions/-100006155
复制相似问题