Spring?boot詳解fastjson過濾字段為null值如何解決
前言
最近因項目需要,從零開始重新搭建了一套框架給同事們用。在前后端對接的時候,發(fā)現(xiàn)后端提供的字段缺少了很多,即實體類為null值的字段,全部被過濾了。經(jīng)排查,是fastjson的鍋。
因為fastjson默認就把value為null的值給過濾掉,不輸出空值。
俗話說,當你遇見問題時,找到問題的原因,你的問題就已經(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>
解決方法
解決方法也很簡單,只需要加上一個配置文件即可,對于fastjson進行注解配置。
其中,最主要的就是配置通過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() { // 定義一個轉(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); } }
后記
從零開始搭一個新的框架出來真的是不容易。
盡管原來的框架依賴是多了點,重了點,但是舊有配置好的東西也多,是挺香的哇。
不過重新搭建新的框架,也讓我重新審視了許多知識,對于框架的搭建使用上,該用奧卡姆剃刀的時候就得用奧卡姆剃刀,保持框架盡可能的干凈。
到此這篇關(guān)于Spring boot詳解fastjson過濾字段為null值如何解決的文章就介紹到這了,更多相關(guān)Spring boot fastjson過濾字段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?synchornized與ReentrantLock處理并發(fā)出現(xiàn)的錯誤
synchronized機制提供了對每個對象相關(guān)的隱式監(jiān)視器鎖,并強制所有鎖的獲取和釋放都必須在同一個塊結(jié)構(gòu)中。當獲取了多個鎖時,必須以相反的順序釋放。即synchronized對于鎖的釋放是隱式的2023-01-01Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)代碼
這篇文章主要介紹了Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)代碼,具有一定參考價值,需要的朋友可以了解下。2017-11-11springboot多環(huán)境配置方案(不用5分鐘)
這篇文章主要介紹了springboot多環(huán)境配置方案(不用5分鐘),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01