springboot 给前端返回参数过滤空值 针对@ResponseBody注解

代码方式:

@Configuration
public class NullValueFilteringConfig {

@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
    ObjectMapper objectMapper = builder.createXmlMapper(false).build();

    // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
    // Include.Include.ALWAYS 默认
    // Include.NON_DEFAULT 属性为默认值不序列化
    // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
    // Include.NON_NULL 属性为NULL 不序列化,就是为null的字段不参加序列化
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

    // // 字段保留,将null值转为""
    // objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
    //     @Override
    //     public void serialize(Object o, JsonGenerator jsonGenerator,SerializerProvider serializerProvider)
    //             throws IOException, JsonProcessingException {
    //         jsonGenerator.writeString("");
    //     }
    // });
    return objectMapper;
}
 
  

}

配置文件方式:
#non_null 过滤null值
#non_absent

NON_DEFAULT 属性为默认值不序列化

#NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
spring.jackson.default-property-inclusion=non_null
参数值有下列四种:
springboot 给前端返回参数过滤空值 针对@ResponseBody注解_第1张图片

你可能感兴趣的:(SpringBoot)