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


问题内容

简短的问题 :是否有一种方法可以根据杰克逊中的值来选择对字段进行序列化?有没有办法告诉杰克逊,类似“如果某个整数字段的值为0,请不要序列化它”。

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

长问题 aka又 为什么我想做这样的事情 :说我有一个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