1. 程式人生 > 其它 >SpringBoot專案Json中的空值處理,將null轉為空字串"",空list轉為空陣列等

SpringBoot專案Json中的空值處理,將null轉為空字串"",空list轉為空陣列等

本篇使用fastjson進行空值null處理

Jackson的請看:https://blog.csdn.net/qq_31183727/article/details/99539115

專案中之前用的null值轉空串方法,將空list也轉換為了"",不適合需求,之後在網上找的方法修改後,適用現在的需求,現在分享給大家。

  1. import com.alibaba.fastjson.serializer.SerializerFeature;
  2. import com.alibaba.fastjson.support.config.FastJsonConfig;
  3. import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.http.converter.HttpMessageConverter;
  6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  7. import java.util.List;
  8. /**
  9. * 返回結果,null按型別轉換為對應的預設值
  10. */
  11. @Configuration
  12. public class ResultConfig extends WebMvcConfigurerAdapter{
  13. @Override
  14. public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
  15. FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
  16. FastJsonConfig fastJsonConfig = new FastJsonConfig();
  17. fastJsonConfig.setSerializerFeatures(
  18. //List欄位如果為null,輸出為[],而非null
  19. SerializerFeature.WriteNullListAsEmpty,
  20. //是否輸出值為null的欄位,預設為false
  21. SerializerFeature.WriteMapNullValue,
  22. //字串null返回空字串
  23. SerializerFeature.WriteNullStringAsEmpty,
  24. //空布林值返回false
  25. SerializerFeature.WriteNullBooleanAsFalse,
  26. //結果是否格式化,預設為false
  27. SerializerFeature.PrettyFormat);
  28. //格式化日期
  29. fastJsonConfig.setDateFormat("YYYY-MM-dd HH:mm:ss");
  30. converter.setFastJsonConfig(fastJsonConfig);
  31. converters.add(converter);
  32. }
  33. }

下面是從別的部落格找的一些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()輸出