'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());
在这两种情况下,序列化值 s1
和 s2
将是 "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());
考虑以下语句:
String s1 = new ObjectMapper().writeValueAsString(null);
String s2 = new ObjectMapper().writeValueAsString(NullNode.getInstance());
在这两种情况下,序列化值 s1
和 s2
将是 "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());