我有一个包含多个节点的复杂JSON:
{
"List": {
"Summary": {
"0": {
"Id": 163375,
"city" : "Paris"
},
"1": {
"Id": 15541,
"city" : "London"
},
"2": {
"Id": 18459,
"city" : "Berlin"
}
}
}
}
我需要每个节点0,1,2 ...
的Id和City如何解析我想要的信息? (第三个节点......)。
我如何迭代? (有时,我可以有25个或更多节点,我的意思是0到25)。
提前感谢您的帮助!
P上。
答案 0 :(得分:1)
尝试:
org.json.JSONObject json = new JSONObject("Place your JSON here");
json = json.getJSONObject("List").getJSONObject("Summary").getJSONObject("2");
System.out.println(json.toString());
仅当您知道所需对象的ID时才有效。
JSONObject的Maven依赖:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
答案 1 :(得分:0)
您可以使用Jackson及其JsonNode
:
final ObjectMapper mapper = new ObjectMapper();
final JsonNode input = mapper.readTree(yourSourceHere);
Map.Entry<String, JsonNode> entry;
final Iterator<Map.Entry<String, JsonNode>> iterator
= input.get("List").get("Summary").fields();
while (iterator.hasNext()) {
entry = iterator.next();
// work with entry
}
但是请注意:对象成员顺序在JSON中并不重要(请参阅RFC 4627)。奇怪的是,内部对象不是存储在数组中(因为数组元素顺序 显着)。
即:{"0": null, "1": null}
和{"1": null, "0": null}
是同一个对象,但[0, 1]
和[1, 0]
不是同一个数组。
杰克逊将按照出场的顺序阅读,但这是一次“意外”。不要依赖它。