如何使jackson不使用默认值序列化基元

时间:2013-01-21 08:15:36

标签: java json jackson

在Jackson中,可以在POJO上使用JsonSerialize注释,以防止空对象被序列化(@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL))。但是,基元不能设置为null,因此此注释不适用于未触及的int,默认为0。

是否有一个注释可以让我说“对于这个类,不要序列化基元,除非它们与默认值不同”或“对于这个字段,如果它的值是X,不要序列化它“?

1 个答案:

答案 0 :(得分:6)

事实是,在Java中,类加载器将设置为默认值所有未初始化的基本属性(int = 0,boolean = false等...),因此您无法将它们与您明确设置的那些区分开来应用程序。在我看来,你有两个选择:

  • 使用相应的包装器对象而不是基元(Integer,Boolean,Long ..)
  • 如上所述,定义自定义序列化程序