SpringBoot專案Json中的空值處理,將null轉為空字串"",空list轉為空陣列等
本篇使用fastjson進行空值null處理
Jackson的請看:https://blog.csdn.net/qq_31183727/article/details/99539115
專案中之前用的null值轉空串方法,將空list也轉換為了"",不適合需求,之後在網上找的方法修改後,適用現在的需求,現在分享給大家。
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import com.alibaba.fastjson.support.config.FastJsonConfig;
-
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.converter.HttpMessageConverter;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
- import java.util.List;
- /**
- * 返回結果,null按型別轉換為對應的預設值
-
*/
- public class ResultConfig extends WebMvcConfigurerAdapter{
- public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
- FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
-
FastJsonConfig fastJsonConfig = new FastJsonConfig();
- fastJsonConfig.setSerializerFeatures(
- //List欄位如果為null,輸出為[],而非null
- SerializerFeature.WriteNullListAsEmpty,
- //是否輸出值為null的欄位,預設為false
- SerializerFeature.WriteMapNullValue,
- //字串null返回空字串
- SerializerFeature.WriteNullStringAsEmpty,
- //空布林值返回false
- SerializerFeature.WriteNullBooleanAsFalse,
- //結果是否格式化,預設為false
- SerializerFeature.PrettyFormat);
- //格式化日期
- fastJsonConfig.setDateFormat("YYYY-MM-dd HH:mm:ss");
- converter.setFastJsonConfig(fastJsonConfig);
- converters.add(converter);
- }
- }
下面是從別的部落格找的一些SerializerFeature中的屬性及含義
名稱 含義
QuoteFieldNames 輸出key時是否使用雙引號,預設為true
UseSingleQuotes 使用單引號而不是雙引號,預設為false
WriteMapNullValue 是否輸出值為null的欄位,預設為false
WriteEnumUsingToString Enum輸出name()或者original,預設為false
UseISO8601DateFormat Date使用ISO8601格式輸出,預設為false
WriteNullListAsEmpty List欄位如果為null,輸出為[],而非null
WriteNullStringAsEmpty 字元型別欄位如果為null,輸出為”“,而非null
WriteNullNumberAsZero 數值欄位如果為null,輸出為0,而非null
WriteNullBooleanAsFalse Boolean欄位如果為null,輸出為false,而非null
SkipTransientField 如果是true,類中的Get方法對應的Field是transient,序列化時將會被忽略。預設為true
SortField 按欄位名稱排序後輸出。預設為false
WriteTabAsSpecial 把\t做轉義輸出,預設為false 不推薦
PrettyFormat 結果是否格式化,預設為false
WriteClassName 序列化時寫入型別資訊,預設為false。反序列化是需用到
DisableCircularReferenceDetect 消除對同一物件迴圈引用的問題,預設為false
WriteSlashAsSpecial 對斜槓’/’進行轉義
BrowserCompatible 將中文都會序列化為\uXXXX格式,位元組數會多一些,但是能相容IE 6,預設為false
WriteDateUseDateFormat 全域性修改日期格式,預設為false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
DisableCheckSpecialChar 一個物件的字串屬性中如果有特殊字元如雙引號,將會在轉成json時帶有反斜槓轉移符。如果不需要轉義,可以使用這個屬性。預設為false
NotWriteRootClassName 含義
BeanToArray 將物件轉為array輸出
WriteNonStringKeyAsString Map<Integer,Stirng> 輸出 key 預設為 Integer新增此屬性,Integer 添加了 “”,變成字元型
NotWriteDefaultValue 將基礎型別的預設值遮蔽
BrowserSecure 含義
IgnoreNonFieldGetter 含義
WriteEnumUsingName 用列舉name()輸出