使用JAVA在JSON中有效地找到键值

时间:2015-07-09 22:14:29

标签: java json dictionary hashmap jackson

我想知道给定密钥的JSON中是否存在键值对。此键值对可能不在root下。它可能深深地嵌入到文档中。例如:

{"Persons":[
  {"Person":
    {"name":"john"}
  }]
}

我希望有类似JsonDoc.has(“name”)的东西,然后返回true。 我在网上搜索并找到这个主题:Java: Json has key/field

两个答案(minimal-json和org.json)都有一些名为has()或get()的函数,但我查看了它们的源代码,它们都试图在root下找到键值。所以他们不能满足我的需求。

我可以想到遍历整个json并尝试找到键值,但它看起来效率不高。

1 个答案:

答案 0 :(得分:1)

如果您使用Jackson,则可以在JsonNode上调用findParent,该JsonNode将在节点或其后代中查找字段。

http://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/JsonNode.html#findParent(java.lang.String)