考虑以下(简化的)JSON 树结构:
{
"id": "1",
"metaData": {
"name": "nestedName"
},
"name": "rootName"
}
Run Code Online (Sandbox Code Playgroud)
我将此结构放入 com.fasterxml.jackson.databind.JsonNode 对象中。要获取这些列的字符串值,我只需在 Java 代码中包含以下语句:
String id = jsonNode.findPath("id").textValue();
Run Code Online (Sandbox Code Playgroud)
我喜欢它不仅因为它简单,而且我的代码不必知道它正在解析的 JSON 树结构。我意识到,如果我特别想要 [root][name],我就必须有某种确定逻辑。
我的问题是,为了以某种方式区分/指定要获取的“名称”,我需要的最少逻辑量是多少?我已经研究了 JsonNode.findValues(String fieldName) 以获取值列表,但仍然不确定如何确定哪个值来自哪个“名称”以及如何选择“根”值,或者至少,最接近根的那个。
抱歉,如果这是一个重复的问题,但我找不到完全匹配的问题,所以再次询问。
如果你想要一个直接位于根目录下的节点,请使用 .get()
jsonNode.get("id").textValue();
Run Code Online (Sandbox Code Playgroud)
如果您想获得“名称”但遇到歧义问题,您可以这样做
jsonNode.findPath("metaData").findPath("name").textValue();
Run Code Online (Sandbox Code Playgroud)
但当然,您知道必须了解有关模式的一些信息。
归档时间: |
|
查看次数: |
24932 次 |
最近记录: |