SpringBoot整合FastJson過程解析
更新時間:2019年10月29日 11:07:11 作者:天宇軒-王
這篇文章主要介紹了SpringBoot整合FastJson過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
這篇文章主要介紹了SpringBoot整合FastJson過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
一、Maven依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
二、配置類
@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的過程為:
Controller調(diào)用結(jié)束后返回一個數(shù)據(jù)對象,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)換器刪除,不然會先匹配上jackson,導(dǎo)致沒使用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,我們將它打開
SerializerFeature.WriteNullListAsEmpty, // 將Collection類型字段的字段空值輸出為[]
SerializerFeature.WriteNullStringAsEmpty, // 將字符串類型字段的空值輸出為空字符串
SerializerFeature.WriteNullNumberAsZero, // 將數(shù)值類型字段的空值輸出為0
SerializerFeature.WriteDateUseDateFormat,
SerializerFeature.DisableCircularReferenceDetect // 禁用循環(huán)引用
);
fastJsonHttpMessageConverter.setFastJsonConfig(config);
// 添加支持的MediaTypes;不添加時默認(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-有效
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- springboot中使用FastJson解決long類型在js中失去精度的問題
- SpringBoot整合Gson 整合Fastjson的實例詳解
- SpringBoot如何使用Fastjson解析Json數(shù)據(jù)
- springboot中用fastjson處理返回值為null的屬性值
- 使用SpringBoot+OkHttp+fastjson實現(xiàn)Github的OAuth第三方登錄
- SpringBoot Redis配置Fastjson進(jìn)行序列化和反序列化實現(xiàn)
- springboot實現(xiàn)FastJson解析json數(shù)據(jù)的方法
- Spring Boot使用FastJson解析JSON數(shù)據(jù)的方法
- Spring?boot詳解fastjson過濾字段為null值如何解決
相關(guān)文章
easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼
這篇文章主要介紹了easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
SpringBoot整合Quartz及異步調(diào)用的案例
Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架、它的簡單易用受到業(yè)內(nèi)人士的一致好評,這篇文章主要介紹了SpringBoot整合Quartz及異步調(diào)用,需要的朋友可以參考下2023-03-03
MyBatis CodeHelperPro激活方法詳細(xì)教程
MyBatisCodeHelper-Pro是IDEA下的一個插件,功能類似mybatis plugin,今天小編給大家分享MyBatis CodeHelperPro激活方法,需要的朋友跟隨小編一起看看吧2021-07-07

