如何解决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());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。