在 java 中使用 JsonNode 查找 JSON 没有 parent 的兄弟姐妹

Find JSON sibling with no parent using JsonNode in java

我有一个JSONobject如下:

[
    {
        "name":"thisIsAName",
        "id":1
    },
    {
        "name":"anotherName",
        "id":2
    },
    {
        "name":"anotherName2",
        "id":3
    }
]

我正在尝试根据名称查找 ID。没有 parent 时如何导航到同级?我从 Jersey 客户端收到 JSON 响应:

Response responseObject = client.getAllObjects();
JsonNode responseAsNode = responseObject.readEntity(JsonNode.class);

如果我按名称搜索:responseAsNode.findValue("name");,那么它会正确地为我提供一个包含每个名称元素的 List<JsonNode>,因此我可以在其中搜索符合我预期的那个,但它仅returns "name":"value", 的 Json 个节点的列表。

for (JsonNode node : responseAsNode.findValues("name")){
    if (node.textValue().equals("ftp-" + DEFAULT_ENV.toLowerCase()))    {
        //Now, find my id and do something with it.

        break;
    }
}

如果我调用 node.getParent(),我会得到一个异常,因为没有 parent。除了要求开发人员在 Json 前面添加 "list": 之外,我应该尝试什么?

导航 JSON 树,并尝试匹配每个元素。

String toFind = "anotherName";

Iterator<JsonNode> iter = responseAsNode.elements();

while (iter.hasNext())
{
    JsonNode node = iter.next();

    JsonNode name = node.get("name");

    if (toFind.equals(name.asText()))
    {
        System.out.println(node.get("id").asLong());
    }

}

这将打印 2