Java JSON:仅序列化为对象显式设置的字段

Java JSON:仅序列化为对象显式设置的字段,java,json,jackson,Java,Json,Jackson,我有一个Java对象,我想序列化为JSON。但是,在此之前,我为该对象的字段设置了一些属性。现在我想将这个对象序列化为JSON。如何仅序列化显式赋值的字段,而基本上排除所有其他字段 对我来说,在对象类上添加这些注释是不起作用的:@JsonSerialize(include=JsonSerialize.Inclusion.NON_EMPTY)和@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)。原因是我有一些基本数据类型的字段。通过添加

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

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


更多信息:我正在使用Jackson ObjectMapper。

从Jackson 2.6开始,使用

值,该值指示仅具有不同值的特性 从默认设置(即当Bean 包含使用其无参数(构造函数)构造的


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

Jackson如何区分false属性和false属性,因为它是默认值,还有一个属性是假的,因为你把它设置为false?我相信这就是我需要解决的根本问题!也许我需要手动配置对象映射器,并明确告诉它我想要的字段。在这种情况下,似乎没有任何其他方法。可能有用。我也考虑过这一点。本质上,我将不再有原语;我真的无法判断这是否是我必然想要的结果。这似乎是一个很好的解决方案。但是,如果我将其中一个布尔字段显式设置为false会怎么样?@KevinWu如果
false
是该属性的默认值,那么它将不会序列化该属性。您好,您是否有解决此问题的方法?@KevinWu代替POJO,使用
Map
类型(或直接创建
ObjectNode
)并且只为所需的键设置值。这里最简单的方法是使用
布尔值
,这允许将默认值保留为
null