我正在使用 Fasterxml Jackson 2.2.2
我有一个带有 boolean
(原始)属性的简单 pojo。当默认的 BeanSerializer
和 BeanPropertyWritter
尝试对其进行序列化时,如果该属性的值为 false
,则会跳过该属性。
我要:
{"id":1, "enabled":false}
我得到的是:
{"id":1}
BeanPropertyWritter
中的代码是:
// and then see if we must suppress certain values (default, empty)
if (_suppressableValue != null) {
if (MARKER_FOR_EMPTY == _suppressableValue) {
if (ser.isEmpty(value)) {
return;
}
} else if (_suppressableValue.equals(value)) {
return;
}
}
我调试了它,发现 BeanPropertyWritter._suppressableValue
等于 Boolean(false)
,所以当一个假 boolean 值到达这个 block 时,它只是返回并且没有输出被退回。
我有哪些选择?我可以配置属性的编写器以取消设置它的 _suppressableValue
吗?什么是最简单的解决方案?
最佳答案
正如建议的那样,您的 ObjectMapper
设置可能不是默认设置,并指定包含策略 NON_DEFAULT
。
但您可以添加 @JsonInclude
以在您的 POJO 类上覆盖它,甚至为 boolean 属性本身:确保使用 Inclusion.ALWAYS
。
关于java - Fasterxml Jackson 原始 boolean 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18761540/