使用JAVA在JSON中高效地查找键值

使用JAVA在JSON中高效地查找键值,java,json,dictionary,hashmap,jackson,Java,Json,Dictionary,Hashmap,Jackson,我想找出给定键的JSON中是否存在键值对。此键值对可能不在根目录下。它可能深深地嵌入到文档中。例如: {"Persons":[ {"Person": {"name":"john"} }] } 我想要像JsonDoc.has(“name”)这样的东西,并返回true。 我在线搜索并找到此线程: 两个答案(minimal json和org.json)都有一些函数名为has()或get(),但我查看了它们的源代码,它们都试图在root下找到键值。所以他们不能满足我的需要 我可以考虑遍

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

{"Persons":[
  {"Person":
    {"name":"john"}
  }]
}
我想要像JsonDoc.has(“name”)这样的东西,并返回true。 我在线搜索并找到此线程:

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


我可以考虑遍历整个json并尝试查找键值,但这似乎效率不高。

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


如果不搜索整棵树(遍历它),您希望如何搜索整棵树。。。我正在寻找一个好的算法,或者一个已经为我实现了一些算法的库。希望以后有一个…使用