SpringBoot使用Jackson序列化时将null转成空字符串

简介

大家知道很多情况下,我们的API中数据交换都用JSON数据,这种数据格式简单、易读写、且轻量。在SpringBoot中默认使用jackson帮助我们进行序列化与反序列化的操作。

在控制层将我们的对象序列化返回给前端时,有些字段为null,序列化后的值也是null,如果前端直接展示的话,对用户不够友好,这里我们可以对jackson稍加修改,将值为null的转换成空字符串""

使用

只要在配置类中加入如下自定义的转换器即可:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper){
    objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
        @Override
        public void serialize(Object param, JsonGenerator jsonGenerator,
                              SerializerProvider paramSerializerProvider) throws IOException {
            jsonGenerator.writeString("");
        }
    });

    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
    mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
    return mappingJackson2HttpMessageConverter;
}

可以看出,核心代码就是对ObjectMapper增加一个null值转换器(ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现的)。

这里我是使用注入的ObjectMapper,也可以直接自定义一个ObjectMapper的Bean配置来代替上边的配置,不过这样就用不了SpringBoot自动配置的一些东西了。

效果:

在这里插入图片描述
在这里插入图片描述

另:
此外,jackson还支持字段为空时不序列化此字段,通过@JsonInclude以及@JsonSerialize注解都可以实现,这里就不详细介绍了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值