How to parse a mulidimensional JSONString in Java

时间:2018-09-22 22:49:08

标签: java json parsing

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?

1 个答案:

答案 0 :(得分:1)

  

...但是我得到了ParseException而不是方便的JSONObject。为什么会这样?

如果您有ParseException,则意味着您认为的JSON实际上是无效的JSON。您的解析代码或JSONObject解析器没有问题。首先是产生(假定的)JSON的方式是一个问题,或者是到达其应解析的代码的“通道”。


  

我应该以不同的方式对待字符串,因为它内部有一个映射吗?

不。

我注意到您的示例代码片段不够清晰/不完整,无法准确说明您在做什么。 (将来,请提供真实的MCVE而不是没有意义的 1 ...肯定不能编译和运行的代码段。)但是并不能说明那个代码是ParseException的原因。

  

还是我做的事情超出了JSONParser的能力范围?

不。 JSON解析器可以处理任何格式正确的JSON


要解决此问题,您将需要弄清解析器认为您的JSON错误的原因,并找出导致该错误的根本原因。


1-例如,为什么要为JSONParser类型的变量分配Object对象?