Spring?boot詳解fastjson過濾字段為null值如何解決
前言
最近因項(xiàng)目需要,從零開始重新搭建了一套框架給同事們用。在前后端對接的時(shí)候,發(fā)現(xiàn)后端提供的字段缺少了很多,即實(shí)體類為null值的字段,全部被過濾了。經(jīng)排查,是fastjson的鍋。
因?yàn)閒astjson默認(rèn)就把value為null的值給過濾掉,不輸出空值。
俗話說,當(dāng)你遇見問題時(shí),找到問題的原因,你的問題就已經(jīng)解決了一半。
環(huán)境
jdk1.8
maven:3.6.3
spring boot:2.2.13-RELEASE
fastjson:1.28.0
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.80</version> </dependency>
解決方法
解決方法也很簡單,只需要加上一個(gè)配置文件即可,對于fastjson進(jìn)行注解配置。
其中,最主要的就是配置通過FastJsonConfig的setSerializerFeatures方法來配置fastJson的功能
com.alibaba.fastjson.support.config.FastJsonConfig#setSerializerFeatures
/** * 返回值過濾器 * * @Author: 攻城獅白玉 https://blog.csdn.net/zhh763984017 * @Date: 2022/7/09 18:05 */ @Configuration public class FastjsonConverterConfig { @Bean public HttpMessageConverters customConverters() { // 定義一個(gè)轉(zhuǎn)換消息的對象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 添加fastjson的配置信息 比如 :是否要格式化返回的json數(shù)據(jù) FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 這里就是核心代碼了,WriteMapNullValue把空的值的key也返回 fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue); List<MediaType> fastMediaTypes = new ArrayList<MediaType>(); // 處理中文亂碼問題 fastJsonConfig.setCharset(Charset.forName("UTF-8")); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastConverter.setSupportedMediaTypes(fastMediaTypes); // 在轉(zhuǎn)換器中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(); stringConverter.setDefaultCharset(Charset.forName("UTF-8")); stringConverter.setSupportedMediaTypes(fastMediaTypes); // 將轉(zhuǎn)換器添加到converters中 return new HttpMessageConverters(stringConverter,fastConverter); } }
后記
從零開始搭一個(gè)新的框架出來真的是不容易。
盡管原來的框架依賴是多了點(diǎn),重了點(diǎn),但是舊有配置好的東西也多,是挺香的哇。
不過重新搭建新的框架,也讓我重新審視了許多知識(shí),對于框架的搭建使用上,該用奧卡姆剃刀的時(shí)候就得用奧卡姆剃刀,保持框架盡可能的干凈。
到此這篇關(guān)于Spring boot詳解fastjson過濾字段為null值如何解決的文章就介紹到這了,更多相關(guān)Spring boot fastjson過濾字段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?synchornized與ReentrantLock處理并發(fā)出現(xiàn)的錯(cuò)誤
synchronized機(jī)制提供了對每個(gè)對象相關(guān)的隱式監(jiān)視器鎖,并強(qiáng)制所有鎖的獲取和釋放都必須在同一個(gè)塊結(jié)構(gòu)中。當(dāng)獲取了多個(gè)鎖時(shí),必須以相反的順序釋放。即synchronized對于鎖的釋放是隱式的2023-01-01Java動(dòng)態(tài)規(guī)劃之硬幣找零問題實(shí)現(xiàn)代碼
這篇文章主要介紹了Java動(dòng)態(tài)規(guī)劃之硬幣找零問題實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11springboot多環(huán)境配置方案(不用5分鐘)
這篇文章主要介紹了springboot多環(huán)境配置方案(不用5分鐘),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01