【问题标题】:Efficiently find a key-value in JSON with JAVA使用 JAVA 在 JSON 中高效查找键值
【发布时间】:2015-09-28 12:27:21
【问题描述】:

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

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

我想要 JsonDoc.has("name") 之类的东西,然后返回 true。 我在网上搜索,找到了这个帖子:Java: Json has key/field

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

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

【问题讨论】:

  • 你希望如何搜索整个树而不搜索整个树(遍历它)?
  • 所以...我正在寻找一个好的算法,或者一个已经为我实现了一些算法的库。希望以后...
  • 使用Gson

标签: java json dictionary hashmap jackson


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2019-12-24
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多