I have a JSON-formatted String
that has a singular key-value pair and a Map
consisting of various String
-typed keys and values within it, as follows:
"{"Key":"value","Map":{"key1":"val1","key2":"val2",...}}"
What I want to do is convert this String
into a JSONObject
(because I have other code that can easily interpret a JSONObject
). My first instinct was to use a parser (JSONParser
) like the code snippet below...
JSONParser parser = new JSONParser();
Object o = new JSONParser();
o = (JSONObject) parser.parse(jsonStr);
JSONObject j = (JSONObject) o;
…but I got a ParseException
instead of the convenient JSONObject
. Why is that? Should I be treating the String
differently, since it has a Map
inside of it? Or am I doing something beyond the capabilities of a JSONParser
?
答案 0 :(得分:1)
...但是我得到了
ParseException
而不是方便的JSONObject
。为什么会这样?
如果您有ParseException
,则意味着您认为的JSON实际上是无效的JSON。您的解析代码或JSONObject
解析器没有问题。首先是产生(假定的)JSON的方式是一个问题,或者是到达其应解析的代码的“通道”。
我应该以不同的方式对待字符串,因为它内部有一个映射吗?
不。
我注意到您的示例代码片段不够清晰/不完整,无法准确说明您在做什么。 (将来,请提供真实的MCVE而不是没有意义的 1 ...肯定不能编译和运行的代码段。)但是并不能说明那个代码是ParseException
的原因。
还是我做的事情超出了
JSONParser
的能力范围?
不。 JSON解析器可以处理任何格式正确的JSON 。
要解决此问题,您将需要弄清解析器认为您的JSON错误的原因,并找出导致该错误的根本原因。
1-例如,为什么要为JSONParser
类型的变量分配Object
对象?