【发布时间】:2013-10-09 14:23:31
【问题描述】:
小问题:有没有办法根据它在杰克逊中的值选择性地序列化一个字段?有没有办法告诉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。所以如果我序列化这个对象,我只会得到ints 结果,全部设置为0,感谢@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)。
在实际操作中,假设我只需要回复 a1...a99 中的 一些,比如 a20 到 a26,设置为一些有意义的值(对我来说它不是 0)。只发送那些字段是明智的,对吧?
为了实现这一点,我可以随时将我的 int 声明更改为 Integer。但是,我有很多关于整数的数值计算,并且在网上思考了一下,遇到了this 和this 之类的链接,我有点想坚持原始类型。是否存在满足我两个需求的解决方案?
【问题讨论】:
-
如果您要选择 Gson 而不是 jackson,那么您可以使用他们的排除策略来做到这一点。参考这里:stackoverflow.com/questions/4802887/…
-
我有点太远了,无法更改实现,谢谢:)
标签: java spring spring-mvc jackson