SpringBoot整合FastJson過程解析
這篇文章主要介紹了SpringBoot整合FastJson過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
一、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é)束后返回一個(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)致沒使用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;不添加時(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類型在js中失去精度的問題
- 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過濾字段為null值如何解決
相關(guān)文章
Java 實(shí)現(xiàn)分布式服務(wù)的調(diào)用鏈跟蹤
分布式服務(wù)中完成某一個(gè)業(yè)務(wù)動(dòng)作,需要服務(wù)之間的相互協(xié)作才能完成,在這一次動(dòng)作引起的多服務(wù)的聯(lián)動(dòng)我們需要用1個(gè)唯一標(biāo)識(shí)關(guān)聯(lián)起來,關(guān)聯(lián)起來就是調(diào)用鏈的跟蹤。本文介紹了Java 實(shí)現(xiàn)分布式服務(wù)的調(diào)用鏈跟蹤的步驟2021-06-06解決Spring?Security升級(jí)到5.5.7、5.6.4及以上啟動(dòng)報(bào)錯(cuò)出現(xiàn)版本不兼容的問題
這篇文章主要介紹了解決Spring?Security升級(jí)到5.5.7、5.6.4及以上啟動(dòng)報(bào)錯(cuò)出現(xiàn)版本不兼容的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http
這篇文章主要介紹了SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http.HttpServletRequest not present解決辦法,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03java數(shù)字和中文算數(shù)驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了java數(shù)字和中文算數(shù)驗(yàn)證碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07mybatis如何使用注解實(shí)現(xiàn)一對(duì)多關(guān)聯(lián)查詢
這篇文章主要介紹了mybatis如何使用注解實(shí)現(xiàn)一對(duì)多關(guān)聯(lián)查詢的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java詳解實(shí)現(xiàn)多線程的四種方式總結(jié)
哈哈!經(jīng)過一個(gè)階段的學(xué)習(xí),Java基礎(chǔ)知識(shí)學(xué)習(xí)終于到多線程了!Java多線程以及后面互斥鎖的概念都是Java基礎(chǔ)學(xué)習(xí)的難點(diǎn),所以我做了一個(gè)總結(jié),希望對(duì)大家也有幫助2022-07-07oracle數(shù)據(jù)庫導(dǎo)入TXT文件方法介紹
這篇文章主要介紹了oracle數(shù)據(jù)庫導(dǎo)入TXT文件方法介紹,文中向大家展示了具體代碼示例,需要的朋友可以參考下。2017-09-09log4j2 自動(dòng)刪除過期日志文件的配置及實(shí)現(xiàn)原理
這篇文章主要介紹了log4j2 自動(dòng)刪除過期日志文件配置及實(shí)現(xiàn)原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07