JSON:使Jackson只显示为对象明确设置的序列化字段

时间:2016-01-01 19:59:46

标签: java json jackson

我有一个Java对象,我想序列化为JSON。但是,在我这样做之前,我在该对象的字段上设置了一些属性。现在我想将此对象序列化为JSON。如何仅序列化明确赋值的字段并基本上排除所有其他字段?

对我来说,在对象类上方添加这些注释不起作用:@JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY)@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)。原因是我有原始数据类型的字段。通过添加上述两个注释之一,我不会阻止原始数据类型字段被序列化。例如,我有几个布尔字段将使用其默认值false进行序列化。但是,我不希望这些字段出现在JSON结果中,因为我没有在序列化过程之前显式设置它们的值。有什么想法吗?

有关详细信息:我正在使用Jackson ObjectMapper。

1 个答案:

答案 0 :(得分:2)

从Jackson 2.6开始,将@JsonIncludeInclude.NON_DEFAULT一起使用。

  

表示仅具有不同值的属性的值   来自默认设置(意味着当Bean为时它们具有的值)   用其无参数构造函数构造)将被包括在内。

杰克逊将创建一个类的一次性实例,以便它可以验证哪些属性值与默认值不同,并且仅序列化这些属性。