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註解都可以實現,這裏就不詳細介紹了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章