Spring?boot詳解fastjson過濾字段為null值如何解決
前言
最近因項目需要,從零開始重新搭建了一套框架給同事們用。在前后端對接的時候,發(fā)現(xiàn)后端提供的字段缺少了很多,即實體類為null值的字段,全部被過濾了。經(jīng)排查,是fastjson的鍋。
因為fastjson默認(rèn)就把value為null的值給過濾掉,不輸出空值。

俗話說,當(dāng)你遇見問題時,找到問題的原因,你的問題就已經(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進(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() {
// 定義一個轉(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調(diào)用基于Ollama本地大模型的實現(xiàn)
本文主要介紹了Java調(diào)用基于Ollama本地大模型的實現(xiàn),實現(xiàn)文本生成、問答、文本分類等功能,開發(fā)者可以輕松配置和調(diào)用模型,具有一定的參考價值,感興趣的可以了解一下2025-03-03
SpringBoot整合EasyExcel實現(xiàn)文件導(dǎo)入導(dǎo)出
這篇文章主要介紹了SpringBoot整合EasyExcel實現(xiàn)文件導(dǎo)入導(dǎo)出的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-05-05
mybatis對象List<String> List<Integer>屬性映射方式
這篇文章主要介紹了mybatis對象List<String> List<Integer>屬性映射方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
詳解Java的Hibernate框架中的緩存與原生SQL語句的使用
這篇文章主要介紹了Java的Hibernate框架中的緩存與原生SQL語句的使用,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12
解決httpServletRequest.getParameter獲取不到參數(shù)的問題
這篇文章主要介紹了解決httpServletRequest.getParameter獲取不到參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
SpringMVC中常用參數(shù)校驗類注解使用示例教程
這篇文章主要介紹了SpringMVC中常用參數(shù)校驗類注解使用示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03

