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

How to serialize values which are provided JsonInclude.Include.NON_NULL at class level

目前我的应用程序有一个 class 如下

@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 中字段的空值。我如何获得它们?

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

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

然后使用这个修改后的 ObjectMapper 来序列化这个 class 但其他 class 的标准序列化。如果 Employee 有许多您要考虑的其他注释,则不方便。

USE_ANNOTATIONS