簡介
大家知道很多情況下,我們的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註解都可以實現,這裏就不詳細介紹了