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