繁体   English   中英

有条件地忽略Jackson的原始类型字段

[英]Conditionally ignore primitive typed fields with Jackson

简短问题 :有没有办法根据杰克逊的值来选择性地序列化一个字段? 有没有办法告诉杰克逊,比如“如果某个整数字段的值为0,则不要序列化它”。

(如果你理解我的意思,请跳过以下内容)

长问题为什么我要做这样的事情 :说我有一个Spring MVC模型类

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Foo {
    int a0;
    int a1;
    .
    .
    .
    int a99;
    String c;

    //getters and setters
}

对于Foo的新对象,所有int都将初始化为0, Stringnull 所以如果我序列化这个对象,我只会得到结果中的int ,所有都设置为0,这要归功于@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

在实际操作中,假设我只回复a1 ... a99中的一些 ,比如说a20到a26,设置为一些有意义的值(对我而言,它不是0)。 发送那些字段是明智的,对吧?

为了实现这一点,我总是可以将我的int声明更改为Integer 但是,我有很多关于整数的数值计算,并且在网上思考了一下并遇到像这样这样的链接,我有点想坚持原始类型。 是否存在满足我需求的解决方案?

考虑JSON过滤器 我想你需要实现自己的BeanPropertyFilter实例。

好的。 我失踪的只是@JsonInclude(Include.NON_DEFAULT)

和默认构造函数。

我还将我的Jackson依赖项从codehaus转移到了fastxml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM