2012-07-23 51 views
9

我有一个简单的POJO类,它扩展了另一个简单的POJO类。我正在使用com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy将这些POJO类中的属性编组为JSON。但是,当我将POJO的某些属性设置为null时,则会将这些属性输出为字符串null,而不是完全不输出。JacksonProviderProxy在json输出中写出空值

例如。

{ 
    Person: 
    [{ 
     "firstName":"John" 
     "lastName":"null" 
    }] 
} 

代替:

为如。

{ 
    Person: 
    [{ 
     "firstName":"John" 
    }] 
} 
+0

我正在尝试在网络应用程序中执行此操作。所以任何关于如何在Web应用程序中进行配置的指针都会很棒。 – 2012-07-23 06:09:09

回答

18

不同选项可用于抑制与空值,这取决于所使用的版本杰克逊的特性的序列,以及是否ObjectMapper可以直接配置。

随着杰克逊1.1+,直接访问配置ObjectMapper,你可以拨打setSerializationInclusionInclude.NON_NULL)。

或者,可以注释(类)类型,其具有的属性,该空的属性序列化是将被抑制,以@JsonSerializeinclude=Inclusion.NON_NULL)。

使用Jackson 2+而不是@JsonSerialize注释,请使用@JsonIncludeInclude.NON_NULL)。