如何序列化 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
有许多您要考虑的其他注释,则不方便。
目前我的应用程序有一个 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
有许多您要考虑的其他注释,则不方便。