当前位置: 首页 > 知识库问答 >
问题:

如何告诉jackson在序列化期间忽略一个字段,如果它的值为空?

乔望
2023-03-14

如果字段的值为NULL,如何将jackson配置为在序列化期间忽略该字段的值。

例如:

public class SomeClass {
   // what jackson annotation causes jackson to skip over this value if it is null but will 
   // serialize it otherwise 
   private String someValue; 
}

共有2个答案

梁丘宏硕
2023-03-14

对于jackson>1.9.11和<2.x,可以使用@jsonserialize注释来实现:

@jsonSerialize(include=jsonSerialize.inclusion.non_null)

李浩邈
2023-03-14

要使用jackson>2.0禁止序列化具有空值的属性,可以直接配置ObjectMapper,或者使用@JSONInclude注释:

mapper.setSerializationInclusion(Include.NON_NULL);

或:

@JsonInclude(Include.NON_NULL)
class Foo
{
  String bar;
}

或者,您可以在getter中使用@jsoninclude,以便在值不为null时显示属性。

关于如何防止Map中的null值和bean中的null字段通过jackson序列化,我的答案中提供了一个更完整的示例。

 类似资料:
  • 问题内容: 如果该字段的值为null,如何配置Jackson在序列化期间忽略该字段的值。 例如: 问题答案: 要使用抑制具有空值的序列化属性,可以直接配置或使用批注: 要么: 或者,你可以在中使用,以便在值不为时显示属性。

  • 问题内容: 在反序列化过程中(据我了解,这是将JSON数据转换为Java对象的过程),我如何告诉Jackson,当它读取不包含数据的对象时,应该忽略它吗? 我正在使用Jackson 2.6.6和Spring 4.2.6 我的控制器收到的JSON数据如下: 问题是对象“ containedObject”按原样解释,并且正在实例化。因此,控制器读取此JSON数据后,它将立即生成ContainedObj

  • 我有课 并希望将其转换为XML。但是,如果flag不为true,我需要在序列化期间忽略flag字段。 因此,如果flag=true,我希望得到:

  • 问题内容: 在反序列化过程中(据我了解,这是将JSON数据转换为Java对象的过程),我如何告诉杰克逊,当它读取不包含数据的对象时,应将其忽略吗? 我正在使用Jackson 2.6.6和Spring 4.2.6 我的控制器收到的JSON数据如下: 问题是对象“ containedObject”按原样解释,并且正在实例化。因此,一旦我的控制器读取此JSON数据,它就会生成ContainedObjec

  • 我的控制器接收到的JSON数据如下: 问题是对象“ContainedObject”被解释为是,并且它正在被实例化。因此,只要我的控制器读取这个JSON数据,它就会生成一个ContainedObject对象类型的实例,但我需要它为空。 最简单、最快的解决方案是,在接收的JSON数据中,该值为空,如下所示: 我的实体类如下: 和包含的对象类,如下所示:

  • 我正在使用Jackson ObjectMapper序列化POJO。我在POJO中有嵌套字段。例如:序列化类 如果字符串为,则不序列化整个属性。也就是说,如果字符串为,我希望输出为: 但我得到的是作为输出。 我已经为序列化包含设置了(),但这并不能解决问题