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

Efficiently find a key-value in JSON with JAVA

我想查找给定键的 JSON 中是否存在键值对。此键值对可能不在根目录下。它有可能深深嵌入文档中。例如:

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

我想要 JsonDoc.has("name") 之类的东西,并且 return 是真的。 我在网上搜索并找到这个主题:Java: Json has key/field

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

我可以想到遍历整个json并尝试找到key-value,但似乎效率不高

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

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