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

3

我已经创建了一个 .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("imaginary") 时,也会发生同样的问题。
我查看了许多网站(包括 StackOverflow),我按照大多数人写的方式进行了尝试,但我无法解决这个问题。
3个回答

4
你需要首先在数组中找到 JSONObject。你试图查找顶级 JSONObject 的字段 natural,但它只包含字段 numbers,因此返回了 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);
}

“想象的”怎么样?我应该在你写的for循环里再做一个 JSONArray complex = (JSONArray) jsonObject.get("imaginary"); 吗? - George
1
你可以在同一个循环中调用 jsonNumber.get("imaginary") 来获取 "imaginary" 字段。 - Jeremy Hanlon

2
您的文件中的对象恰好有一个名为numbers的属性。
没有natural属性。
您可能想要检查数组内部的对象。

0

在 Jermey Hanion 的回答和评论的基础上,以下是我为获取“虚数”和“实数”所做的操作:

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");
    JSONObject complex = (JSONObject) jsonNumber.get("complex");
    String imaginary = (String) complex.get("imaginary");
    System.out.println(natural);
}

Jeremey的获取虚数的答案不正确,或者也许它是正确的。据我所知,上面的代码片段在我的项目中可以正常工作。

PS. 抱歉重新激活这个帖子,但我认为它对于想要学习JSON.simple的人来说是一个有用的资源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接