如何序列化在类级别提供JsonInclude.Include.NON_NULL的值

时间:2018-02-18 21:49:57

标签: java json jackson fasterxml jackson-databind

目前我的应用程序有一个类,如下所示

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Employee {
  Department department;
  String firstName;
  String lastName;
  String address;
  String phoneNumber;
}

我正在捕获日志中的员工对象,我将对象转换为JSON。我能够将对象转换为JSON,但空值不会进入JSON。

我试过以下

 objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
 generator.setCodec(objectMapper);
 generator.writeObjectField(fieldName, argument);

但是无法获取JSON中字段的空值。我如何得到它们?

1 个答案:

答案 0 :(得分:0)

您可以复制ObjectMapper并更改其中的一些选项,在这种情况下,您可以忽略注释:

ObjectMapper mapperIgnoringAnnotations = mapper.copy()
        .disable(MapperFeature.USE_ANNOTATIONS)
        .setSerializationInclusion(JsonInclude.Include.ALWAYS)
        .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)

然后使用此修改后的ObjectMapper序列化此类,但使用其他类的标准类。如果Employee包含许多您想要考虑的其他注释,则不方便。

USE_ANNOTATIONS