方式一:在实体类的属性上添加注解
children的值为null时不序列化(null不返回)
category的值为null时不序列化(null不返回)
categoryName的值为空字符串或null时不序列化(空值和null不返回)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Category> children;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Category category;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String categoryName;
方式二:在yml配置文件中进行全局配置
spring:
jackson:
default-property-inclusion: NON_EMPTY
方式三:配置ObjectMapper对象
/**
* 更改jackson默认配置
*/
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
// 防止JSON名称被转义
// objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
// 将Null值改为空字符串
/*objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException {
jg.writeString("");
}
});*/
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
// 对于空的对象转json的时候不抛出错误
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
// 禁用遇到未知属性抛出异常
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
// null的属性不序列化(null不返回)
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 空值的属性不序列化(空字符串和null不返回)
// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
return objectMapper;
}
总结:
NON_NULL表示null值不序列化(null不返回)
NON_EMPTY表示空字符串和null值不序列化(空字符串和null不返回)