调用 findValue 方法时 JsonNode 返回 null?

bra*_*orm 3 java json jackson

这是一个 json 示例

{
    "key1": {
        "key2": {
            "key3": "value3"
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

我想获取key3的值,即“value3”类findValue的方法JsonNode在这里应该可以达到目的。

所以我尝试了以下方法:

final ObjectMapper jsonMapper = new ObjectMapper();

String jsonRoot = "{\"key1\":\n" + "    {\"key2\":\n" + "            {\"key3\":\"value3\"}\n" + "    }\n" + "}";
JsonNode node = jsonMapper.convertValue(jsonRoot,JsonNode.class);
JsonNode found = node.findValue("key3");
System.out.println(found.asText());
System.out.println(found.isObject());
Run Code Online (Sandbox Code Playgroud)

但是,我看到“找到”为空。我无法弄清楚为什么会失败。我也尝试过node.findValue(“key2”)。我仍然为空。

谢谢

小智 5

这2种方法之间有区别

  1. JsonNode.get() 方法返回 null
  2. 使用 JsonNode.path(String).asText() 检查节点是否存在,如果不存在则返回空字符串。