fastjson序列化將Null設定為空字串""等問題
阿新 • • 發佈:2018-12-13
fastjson序列化將Null設定為空字串""等問題
Spring Boot使用FastJson解析JSON資料的方法
Spring Boot預設使用json格式從後臺返回資料給前臺,當返回的String型別或者List<>型別資料為null時,我們希望返回的是""或者[],此時就需要使用fastjson來轉換。使用fastjson需要注意以下事項:
1、加入fastjson依賴項
<!--新增fastjson解析JSON資料--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.16</version> </dependency>
2、配置fastjson
寫一個配置類
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // 初始化轉換器 FastJsonHttpMessageConverter fastConvert = new FastJsonHttpMessageConverter(); // 初始化一個轉換器配置 FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 設定fastjson的SerializerFeature序列化屬性 fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat, SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullListAsEmpty); // 將配置設定給轉換器並新增到HttpMessageConverter轉換器列表中 fastConvert.setFastJsonConfig(fastJsonConfig); converters.add(fastConvert); super.configureMessageConverters(converters); } }
3、fastjson的SerializerFeature序列化屬性
QuoteFieldNames———-輸出key時是否使用雙引號,預設為true WriteMapNullValue——–是否輸出值為null的欄位,預設為false WriteNullNumberAsZero—-數值欄位如果為null,輸出為0,而非null WriteNullListAsEmpty—–List欄位如果為null,輸出為[],而非null WriteNullStringAsEmpty—字元型別欄位如果為null,輸出為”“,而非null WriteNullBooleanAsFalse–Boolean欄位如果為null,輸出為false,而非null