'null' 与 'NullNode.getInstance()' 上的 ObjectMapper writeValueAsString

ObjectMapper writeValueAsString on 'null' vs 'NullNode.getInstance()'

考虑以下语句:

String s1 = new ObjectMapper().writeValueAsString(null);

String s2 = new ObjectMapper().writeValueAsString(NullNode.getInstance());

在这两种情况下,序列化值 s1s2 将是 "null"(字符串格式)。默认情况下,Jackson 毫无例外地序列化 null 个对象。 什么情况下我们需要使用NullNode,而不是直接序列化null

"null" 这里是一个字符串,不是 null 值。这就是 writeValueAsString 所做的:它将空值或 NullNode 作为 "null" 字符串写入。

NullNode 是 Jackson 中的一个特殊类型,表示 null 值。例如,读取以下 JSON 将反序列化为 NullNode (这是一个单例):

JsonNode readValue = new ObjectMapper().readValue(" { \"abc\" : null }", JsonNode.class);
JsonNode jsonNode = readValue.get("abc"); // will return a NullNode
assertTrue(jsonNode == NullNode.getInstance());