SpringBoot2.0 自定义Json序列化规则(忽略value为null的key序列化)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nicolas12/article/details/82430344

最近公司项目重构,发现接口返回的json数据中存在有value值为null 的key,这些应该被视为废数据,不应该输出给前端占用带宽,于是去修改json序列化的方式,在spring中我们都知道去xml配置文件中加一行配置或者在输出模型上加一@JsonInclude(JsonInclude.Include.NON_NULL) 注解,但是在SpringBoot2.0中是没有该注解和xml的配置文件,有关SpringBoot2.0 Json序列化的网上资料也是少的可怜,后面经过查阅SpringBoot2.0.4的文档发现该如下配置:
这里写图片描述
前提要引入spring-boot-starter-web依赖,所以编写如下代码

@JsonComponent
public class JsonSerializerManage {

    @Bean
    @ConditionalOnMissingBean
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
        //设置序列化规则,不能允许为空,当value为null时,key不进行序列化
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        //objectMapper.setSerializerFactory()  根据需求可以自定义序列化工厂和提供者
        //objectMapper.setSerializerProvider()
        return objectMapper;
    }

或者在application.yml配置文件中加一句配置

spring:
  jackson:
    default-property-inclusion: non_null

这样就可以搞定接口返回的数据中不含value为null的key,减少带宽占用

猜你喜欢

转载自blog.csdn.net/Nicolas12/article/details/82430344