SpringBoot中fastJson返回數據展示null字段(響應值爲null時字段被過濾)

fastjson將對象轉爲json字符串給前端的時候, 如果字段的值爲null, 則該字段默認被fastJson過濾直接不展示. 而在實際項目中我們往往也是需要展示這個字段的 , 解決即增加一個fastJson序列化配置 , 設置序列化格式.

package com.xbz.mvc.config;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;

import java.util.ArrayList;
import java.util.List;

/**
 * @title fastjson前端響應處理
 * @description 需要正常返回null值的字段
 * @author Xingbz
 * @createDate 2019-10-15
 */
@Configuration
public class FastJsonMvcConfig {

    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        //1.定義一個convert消息轉換對象
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        //2.添加fastJson的序列化配置信息
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
                SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullListAsEmpty);
        //3.處理中文亂碼問題
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        //4.在convert中添加配置信息
        fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        return new HttpMessageConverters(fastJsonHttpMessageConverter);

    }
}

fastJson序列化格式(SerializerFeature屬性)配置如下 : 

名稱 說明 缺省值
QuoteFieldNames 輸出key時是否使用雙引號 true
UseSingleQuotes 使用單引號而非雙引號 false
WriteMapNullValue 是否輸入值爲null的key字段 false
WriteEnumUsingToString Enum輸出name()或original false
UseISO8601DateFormat Date使用ISO8601格式輸出 false
WriteNullListAsEmpty list字段如果爲null,則輸出[] false
WriteNullStringAsEmpty 字符串字段如果爲null,則輸出"" false
WriteNullNumberAsZero 數值字段如果爲null,則輸出0 false
WriteNullBooleanAsFalse 布爾字段如果爲null,則輸出false false
SkipTransientField 對象中的屬性是transient修飾的,序列化時將會被忽略 true
SortField 按字段名稱排序後輸出 false
WriteTabAsSpecial 將\t製表符做轉義輸出(不推薦使用) false
PrettyFormat 輸出內容是否格式化 false
WriteClassName 序列化時寫入類型信息. 反序列化時會用到 false
DisableCircularReferenceDetect 消除對同一對象循環引用的問題 false
WriteSlashAsSpecial 對/斜槓進行轉義 false
BrowserCompatible 將中文漢字都轉爲\uXXXX格式, 字節數會多一些,但兼容IE6 false
WriteDateUseDateFormat 全局日期格式修改. JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); false
DisableCheckSpecialChar 字符串value中如果有特殊字符如雙引號,將會在轉成json時帶有反斜槓轉移符 false
NotWriteRootClassName    
BeanToArray 將對象轉爲數組輸出 false
WriteNonStringKeyAsString    
NotWriteDefaultValue    
BrowserSecure    
IgnoreNonFieldGetter 忽略沒有get方法的字段 false
WriteEnumUsingName    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

更多更詳細說明可參見此博文  https://blog.csdn.net/u010246789/article/details/52539576

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