[英]Parsing a JSON file in Java using 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("imaginary") 时也会发生同样的事情。
我查看了许多网站(包括 StackOverflow),我遵循大多数人编写的相同方式,但我无法解决这个问题。
您需要首先在数组中找到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);
}
文件中的对象只有一个属性,名为numbers
。
没有natural
财产。
您可能想要检查该数组中的对象。
加上@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 的人来说是一个有用的资源
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.