Fasterxml Jackson原始布尔值序列化

3

我正在使用Fasterxml Jackson 2.2.2。

我有一个简单的POJO,其中包含一个布尔(原始数据类型)属性。当默认的BeanSerializerBeanPropertyWritter尝试将其序列化时,当该属性的值为false时,它将被跳过。

我想要:

{"id":1, "enabled":false}

我所得到的是:

{"id":1}
< p > < code > 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),所以当一个false布尔值到达此块时,它只会返回并且没有输出被返回。
我的选择是什么?我能否配置属性的写入器来取消其_suppressableValue?哪种方法最简单和更简单?

这真的很奇怪。它应该可以工作。你能展示一下你的实体类以及你是如何序列化这个实体的吗?对我来说它是可以工作的。我的实体类:class 'Entity { private long id; private boolean enabled; getters/setters }' 和我的序列化代码:'new ObjectMapper().writeValueAsString(entity)' - Michał Ziober
2
你的字段包含设置为 JsonSerialize.Inclusion.NON_DEFAULT 吗? - HiJon89
1个回答

3
正如建议的那样,您的ObjectMapper设置可能是非默认的,并指定了NON_DEFAULT的包含策略。
但是您可以在POJO类上或者甚至针对布尔属性本身添加@JsonInclude来覆盖这一点:确保使用Inclusion.ALWAYS。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接