Spring?boot詳解fastjson過(guò)濾字段為null值如何解決
前言
最近因項(xiàng)目需要,從零開(kāi)始重新搭建了一套框架給同事們用。在前后端對(duì)接的時(shí)候,發(fā)現(xiàn)后端提供的字段缺少了很多,即實(shí)體類為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)的框架依賴是多了點(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調(diào)用基于Ollama本地大模型的實(shí)現(xiàn)
本文主要介紹了Java調(diào)用基于Ollama本地大模型的實(shí)現(xiàn),實(shí)現(xiàn)文本生成、問(wèn)答、文本分類等功能,開(kāi)發(fā)者可以輕松配置和調(diào)用模型,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
Java實(shí)現(xiàn)讀取設(shè)置pdf屬性信息
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)讀取設(shè)置pdf屬性信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
SpringBoot整合EasyExcel實(shí)現(xiàn)文件導(dǎo)入導(dǎo)出
這篇文章主要介紹了SpringBoot整合EasyExcel實(shí)現(xiàn)文件導(dǎo)入導(dǎo)出的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-05-05
java簡(jiǎn)單網(wǎng)頁(yè)抓取的實(shí)現(xiàn)方法
這篇文章主要介紹了java簡(jiǎn)單網(wǎng)頁(yè)抓取的實(shí)現(xiàn)方法,詳細(xì)分析了與Java網(wǎng)頁(yè)抓取相關(guān)的tcp及URL相關(guān)概念,以及對(duì)應(yīng)的類文件原理,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
mybatis對(duì)象List<String> List<Integer>屬性映射方式
這篇文章主要介紹了mybatis對(duì)象List<String> List<Integer>屬性映射方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
詳解Java的Hibernate框架中的緩存與原生SQL語(yǔ)句的使用
這篇文章主要介紹了Java的Hibernate框架中的緩存與原生SQL語(yǔ)句的使用,Hibernate是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-12-12
解決httpServletRequest.getParameter獲取不到參數(shù)的問(wèn)題
這篇文章主要介紹了解決httpServletRequest.getParameter獲取不到參數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
SpringMVC中常用參數(shù)校驗(yàn)類注解使用示例教程
這篇文章主要介紹了SpringMVC中常用參數(shù)校驗(yàn)類注解使用示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03

