考虑以下(简单的)JSON树结构:
{
"id": "1",
"metaData": {
"name": "nestedName"
},
"name": "rootName"
}
我把这个结构放在com.fasterxml.jackson.databind.JsonNode对象中。要获取这些列的String值,我只需要在我的Java代码中包含此语句:
String id = jsonNode.findPath("id").textValue();
我喜欢这个,不仅因为它简单,而且我的代码不必知道它正在解析的JSON树结构。我意识到,如果我特别想要[root] [name],我将不得不有某种决定逻辑。
我的问题是,为了以某种方式区分/指定要获得的“名称”,我需要的逻辑量是多少?我查看了JsonNode.findValues(String fieldName)以获取值的列表,但仍不确定我将如何确定哪个值来自哪个“name”以及如何选择“root”,或者至少,最接近根的那个。
道歉,如果这是一个重复的问题,但我找不到完全匹配,所以再问一遍。
答案 0 :(得分:2)
如果您希望根目录下的节点使用.get()
jsonNode.get("id").textValue();
如果你想得到“名字”,但你有歧义问题,你可以做类似的事情
jsonNode.findPath("metaData").findPath("name").textValue();
但当然,你知道必须了解一下架构。