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.  
     
  8.  
    import java.util.List;
  9.  
     
  10.  
    /**
  11.  
    * 返回結果,null按類型轉換為對應的默認值
  12.  
    */
  13.  
    @Configuration
  14.  
    public class ResultConfig extends WebMvcConfigurerAdapter{
  15.  
    @Override
  16.  
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
  17.  
    FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
  18.  
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
  19.  
    fastJsonConfig.setSerializerFeatures(
  20.  
    //List字段如果為null,輸出為[],而非null
  21.  
    SerializerFeature.WriteNullListAsEmpty,
  22.  
    //是否輸出值為null的字段,默認為false
  23.  
    SerializerFeature.WriteMapNullValue,
  24.  
    //字符串null返回空字符串
  25.  
    SerializerFeature.WriteNullStringAsEmpty,
  26.  
    //空布爾值返回false
  27.  
    SerializerFeature.WriteNullBooleanAsFalse,
  28.  
    //結果是否格式化,默認為false
  29.  
    SerializerFeature.PrettyFormat);
  30.  
    //格式化日期
  31.  
    fastJsonConfig.setDateFormat( "YYYY-MM-dd HH:mm:ss");
  32.  
    converter.setFastJsonConfig(fastJsonConfig);
  33.  
    converters.add(converter);
  34.  
    }
  35.  
    }

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM