SpringBoot2.X版本返回json数据的null处理

通常我们项目controller层给前端返回数据的时候一般都是json格式,那么就或多或少会出现有一些通用的字段不是每个接口都会用到,就会导致返回的数据中包括了null(看着很不爽,关键还浪费流量),那么springboot提供了一种很简单的处理方式:

1、在返回的bean成员属性中加上注解:@JsonInclude(JsonInclude.Include.NON_NULL)

SpringBoot2.X版本返回json数据的null处理_第1张图片

2、 配置jackson序列化方式(springboot默认采用jackson序列化),也可以选择fastjson,但是配置起来没有jackson方便,毕竟jackson是spring自带的:

@Configuration
public class ResponseJsonFormat {
    @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(Include.NON_EMPTY);
        // 字段保留,将null值转为""
        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
            @Override
            public void serialize(Object o, JsonGenerator jsonGenerator,
                                  SerializerProvider serializerProvider)
                    throws IOException, JsonProcessingException {
                jsonGenerator.writeString("");
            }
        });
        return objectMapper;
    }
} 
  

SpringBoot2.X版本返回json数据的null处理_第2张图片

 请求实例再也没有null了,看着很清爽:

SpringBoot2.X版本返回json数据的null处理_第3张图片

 

你可能感兴趣的:(json,java,spring,boot)