java - Fasterxml Jackson 原始 boolean 序列化

标签 java json serialization jackson fasterxml

我正在使用 Fasterxml Jackson 2.2.2

我有一个带有 boolean(原始)属性的简单 pojo。当默认的 BeanSerializerBeanPropertyWritter 尝试对其进行序列化时,如果该属性的值为 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/

相关文章:

python - Django Rest Framework 在 POST 中接收主键值并将模型对象作为嵌套序列化程序返回

java - 如何使 Immutables 库跳过序列化可选字段

json - 使用 Specs2 测试 json 数据

java - 关于为什么使用 jsp :include tag into another jsp isn't working in this scenario? 传递对象的任何原因

Java Comprable 重写还是不重写compareTo?

json - 如何通过 jq 命令将 json 文件中的所有整数转换为字符串?

scala - 惰性字段的序列化如何工作?

c# - 使用 PullFilter 删除数组元素时出现异常

java - 设置一个 DTO 对象,它有一个数组作为实例变量

Java 输入一个错误的 if 语句