简短的问题:有没有办法根据它在杰克逊中的值选择性地序列化一个字段?有没有办法告诉杰克逊,比如“如果某个整数字段的值为 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,String
到null
。所以如果我序列化这个对象,我只会得到int
s 结果,全部设置为 0,这要归功于@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
.
在实际操作中,假设我只需要回复一些a1...a99,比如 a20 到 a26,设置为一些有意义的值(对我来说它不是 0)。只发送那些字段是明智的,对吗?
为了实现这一点,我总是可以将我的int
声明更改为Integer
. 然而,我有很多关于整数的数值计算,并且在网上思考了一下,遇到了这样和这样的链接,我有点想坚持原始类型。是否存在满足我两个需求的解决方案?