本篇使用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()輸出