解析复杂的Json Java Mulit节点

时间:2014-02-24 10:58:58

标签: java json parsing

我有一个包含多个节点的复杂JSON:

{
  "List": {
    "Summary": {
      "0": {
        "Id": 163375,
        "city" : "Paris"

    },
      "1": {
        "Id": 15541,
        "city" : "London"

    },
      "2": {
        "Id": 18459,
        "city" : "Berlin"

    }
   }
  }
}

我需要每个节点0,1,2 ...

的Id和City
  1. 如何解析我想要的信息? (第三个节点......)。

  2. 我如何迭代? (有时,我可以有25个或更多节点,我的意思是0到25)。

  3. 提前感谢您的帮助!

    P上。

2 个答案:

答案 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]不是同一个数组。

杰克逊将按照出场的顺序阅读,但这是一次“意外”。不要依赖它。