简介
大家知道很多情况下,我们的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注解都可以实现,这里就不详细介绍了