SpringBoot整合FastJson過(guò)程解析
這篇文章主要介紹了SpringBoot整合FastJson過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
一、Maven依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
二、配置類(lèi)
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 使用fastjson代替jackson
*
* @param
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
/*
先把JackSon的消息轉(zhuǎn)換器刪除.
備注: (1)源碼分析可知,返回json的過(guò)程為:
Controller調(diào)用結(jié)束后返回一個(gè)數(shù)據(jù)對(duì)象,for循環(huán)遍歷conventers,找到支持application/json的HttpMessageConverter,然后將返回的數(shù)據(jù)序列化成json。
具體參考o(jì)rg.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor的writeWithMessageConverters方法
(2)由于是list結(jié)構(gòu),我們添加的fastjson在最后。因此必須要將jackson的轉(zhuǎn)換器刪除,不然會(huì)先匹配上jackson,導(dǎo)致沒(méi)使用fastjson
*/
for (int i = converters.size() - 1; i >= 0; i--) {
if (converters.get(i) instanceof MappingJackson2HttpMessageConverter) {
converters.remove(i);
}
}
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//自定義fastjson配置
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(
SerializerFeature.WriteMapNullValue, // 是否輸出值為null的字段,默認(rèn)為false,我們將它打開(kāi)
SerializerFeature.WriteNullListAsEmpty, // 將Collection類(lèi)型字段的字段空值輸出為[]
SerializerFeature.WriteNullStringAsEmpty, // 將字符串類(lèi)型字段的空值輸出為空字符串
SerializerFeature.WriteNullNumberAsZero, // 將數(shù)值類(lèi)型字段的空值輸出為0
SerializerFeature.WriteDateUseDateFormat,
SerializerFeature.DisableCircularReferenceDetect // 禁用循環(huán)引用
);
fastJsonHttpMessageConverter.setFastJsonConfig(config);
// 添加支持的MediaTypes;不添加時(shí)默認(rèn)為*/*,也就是默認(rèn)支持全部
// 但是MappingJackson2HttpMessageConverter里面支持的MediaTypes為application/json
List<MediaType> fastMediaTypes = new ArrayList<>();
MediaType mediaType = MediaType.parseMediaType("text/html;charset=UTF-8");
fastMediaTypes.add(mediaType);
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
// fastJsonHttpMessageConverter.setDefaultCharset(Charset.forName("UTF-8"));
converters.add(fastJsonHttpMessageConverter);
}
}
三、使用
@JSONField(serialize=false) private String delFlag; // 數(shù)據(jù)刪除標(biāo)記, 0-已刪除 1-有效
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- springboot中使用FastJson解決long類(lèi)型在js中失去精度的問(wèn)題
- SpringBoot整合Gson 整合Fastjson的實(shí)例詳解
- SpringBoot如何使用Fastjson解析Json數(shù)據(jù)
- springboot中用fastjson處理返回值為null的屬性值
- 使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄
- SpringBoot Redis配置Fastjson進(jìn)行序列化和反序列化實(shí)現(xiàn)
- springboot實(shí)現(xiàn)FastJson解析json數(shù)據(jù)的方法
- Spring Boot使用FastJson解析JSON數(shù)據(jù)的方法
- Spring?boot詳解fastjson過(guò)濾字段為null值如何解決
相關(guān)文章
easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼
這篇文章主要介紹了easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
詳解spring mvc對(duì)異步請(qǐng)求的處理
spring mvc3.2及以上版本增加了對(duì)請(qǐng)求的異步處理,是在servlet3的基礎(chǔ)上進(jìn)行封裝的,有興趣的可以了解一下。2017-01-01
SpringBoot整合Quartz及異步調(diào)用的案例
Quartz是一個(gè)完全由java編寫(xiě)的開(kāi)源作業(yè)調(diào)度框架、它的簡(jiǎn)單易用受到業(yè)內(nèi)人士的一致好評(píng),這篇文章主要介紹了SpringBoot整合Quartz及異步調(diào)用,需要的朋友可以參考下2023-03-03
詳解Spring依賴注入的三種方式以及優(yōu)缺點(diǎn)
IoC?和?DI?是?Spring?中最重要的兩個(gè)概念,其中?IoC(Inversion?of?Control)為控制反轉(zhuǎn)的思想,而?DI(Dependency?Injection)依賴注入為其(IoC)具體實(shí)現(xiàn)。那么?DI?實(shí)現(xiàn)依賴注入的方式有幾種?這些注入方式又有什么不同?本文就來(lái)和大家一起詳細(xì)聊聊2022-08-08
MyBatis CodeHelperPro激活方法詳細(xì)教程
MyBatisCodeHelper-Pro是IDEA下的一個(gè)插件,功能類(lèi)似mybatis plugin,今天小編給大家分享MyBatis CodeHelperPro激活方法,需要的朋友跟隨小編一起看看吧2021-07-07

