Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JSON simple在Java中解析JSON文件_Java_Json_Parsing_Json Simple - Fatal编程技术网

使用JSON simple在Java中解析JSON文件

使用JSON simple在Java中解析JSON文件,java,json,parsing,json-simple,Java,Json,Parsing,Json Simple,我已经创建了一个.json文件: { "numbers": [ { "natural": "10", "integer": "-1", "real": "3.14159265", "complex": { "real": 10, "imaginary": 2 }, "EOF": "yes" } ] } 我想用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);
问题是natural的值是“null”而不是“10”。当我编写jsonObject.get(“想象”)时也会发生同样的事情


我查看了许多网站(包括StackOverflow),我遵循了大多数人编写的方法,但我无法解决此问题。

您文件中的对象只有一个属性,名为
numbers

没有
natural
属性


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

您需要首先在数组中找到
JSONObject
。您试图查找顶级
JSONObject
natural
字段,该字段只包含
数字
,因此它返回
null
,因为它找不到
natural

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

请尝试以下方法:

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);
}

非常感谢。我已经找了好几个小时了!“想象”呢?我是否应该制作另一个
JSONArray complex=(JSONArray)jsonObject.get(“虚构”)在您编写的for循环内的for循环中?您可以通过在与自然循环相同的循环中调用jsonNumber.get(“virtual”)来获取“virtual”字段。