[英]How to conditionally ignore properties with a Jackson AnnotationIntrospector
[英]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, String
为null
。 所以如果我序列化这个对象,我只会得到结果中的int
,所有都设置为0,这要归功于@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
。
在实际操作中,假设我只回复a1 ... a99中的一些 ,比如说a20到a26,设置为一些有意义的值(对我而言,它不是0)。 发送那些字段是明智的,对吧?
为了实现这一点,我总是可以将我的int
声明更改为Integer
。 但是,我有很多关于整数的数值计算,并且在网上思考了一下并遇到像这样和这样的链接,我有点想坚持原始类型。 是否存在满足我需求的解决方案?
考虑JSON过滤器 。 我想你需要实现自己的BeanPropertyFilter
实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.