使用json-simple解析Java中的JSON文件

时间:2016-04-01 17:43:16

标签: java json parsing json-simple

我创建了一个.json文件:

{
  "numbers": [
    {
      "natural": "10",
      "integer": "-1",
      "real": "3.14159265",
      "complex": {
        "real": 10,
        "imaginary": 2
      },
      "EOF": "yes"
    }
  ]
}

我想用Json Simple解析它,以便提取“自然”和“虚构”的内容。

这是我到目前为止所写的:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); //the location of the file
JSONObject jsonObject = (JSONObject) obj;
String natural = (String) jsonObject.get("natural");
System.out.println(natural);

问题是自然的值是“null”而不是“10”。当我写jsonObject.get(“imaginary”)时会发生同样的事情。

我看过很多网站(包括StackOverflow),我跟大多数人写的一样,但是我无法解决这个问题。

2 个答案:

答案 0 :(得分:4)

您需要先在数组中找到JSONObject。您正在尝试查找顶级natural的字段JSONObject,该字段仅包含字段numbers,因此它返回null,因为它无法找到natural 1}}。

要解决此问题,您必须先获取数字数组。

请改为尝试:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); //the location of the file
JSONObject jsonObject = (JSONObject) obj;
JSONArray numbers = (JSONArray) jsonObject.get("numbers");

for (Object number : numbers) {
    JSONObject jsonNumber = (JSONObject) number;
    String natural = (String) jsonNumber.get("natural");
    System.out.println(natural);
}

答案 1 :(得分:2)

文件中的对象只有一个名为numbers的属性 没有natural属性。

您可能想要检查该数组中的对象。