第五章:配置使用FastJson返回Json视图
fastJson是阿里巴巴旗下的一個(gè)開(kāi)源項(xiàng)目之一,顧名思義它專(zhuān)門(mén)用來(lái)做快速操作Json的序列化與反序列化的組件。它是目前json解析最快的開(kāi)源組件沒(méi)有之一!在這之前jaskJson是命名為快速操作json的工具,而當(dāng)阿里巴巴的fastJson誕生后jaskjson就消聲匿跡了,不過(guò)目前很多項(xiàng)目還在使用。
本章目標(biāo)
將fastJson加入到SpringBoot項(xiàng)目?jī)?nèi),配置json返回視圖使用fastJson解析。
創(chuàng)建SpringBoot項(xiàng)目
看過(guò)我前幾章的程序猿們都知道,我們通過(guò)IntelliJ IDEA工具創(chuàng)建SpringBoot項(xiàng)目,我們本章也不例外,具體創(chuàng)建步驟這里就不多做解釋了,最終項(xiàng)目結(jié)構(gòu)如下圖1所示:
圖1
可以看到我們事先導(dǎo)入了,Web、MySQL、JPA組件,我們把上一章的application.yml配置文件復(fù)制到我們的項(xiàng)目對(duì)應(yīng)的目錄下,并且修改pom.xml添加Druid的支持。如下圖2所示:
圖2
注意:圖2中的spring-boot-stater-tomcat依賴(lài)的scope屬性一定要注釋掉我們才能在IntelliJ IDEA工具使用SpringBootApplication的形式運(yùn)行項(xiàng)目!
完成上述配置后我們接下來(lái)將fastJson的maven依賴(lài)也添加進(jìn)我們的pom.xml配置文件中。
添加依賴(lài)
跟我們上一章很相似,我們需要到maven倉(cāng)庫(kù)復(fù)制對(duì)應(yīng)的maven依賴(lài)xml配置到我們項(xiàng)目的pom.xml中。訪問(wèn)倉(cāng)庫(kù)地址:mvnrepository.com/artifact/co…,這里我們使用fastJson最新版本,我們當(dāng)訪問(wèn)fastJson的列表界面時(shí)可以看到阿里巴巴2017年就發(fā)布了很多個(gè)版本,證明阿里巴巴一直在維護(hù)并且升級(jí)版本,所以我們可以大膽的放心使用。添加效果圖如下圖3所示:
圖3
添加完成依賴(lài)后我們把上一章的實(shí)體類(lèi)、控制器、JPA復(fù)制到我們當(dāng)前項(xiàng)目下,我們就不重復(fù)講解如何創(chuàng)建這些簡(jiǎn)單的實(shí)體類(lèi)了。如下圖4所示:
圖4
我們接下來(lái)創(chuàng)建一個(gè)FastJsonConfiguration配置信息類(lèi),添加@Configuration注解讓SpringBoot自動(dòng)加載類(lèi)內(nèi)的配置,有一點(diǎn)要注意我們繼承了WebMvcConfigurerAdapter這個(gè)類(lèi),這個(gè)類(lèi)是SpringBoot內(nèi)部提供專(zhuān)門(mén)處理用戶(hù)自行添加的配置,里面不僅僅包含了修改視圖的過(guò)濾還有其他很多的方法,包括我們后面章節(jié)要講到的攔截器,過(guò)濾器,Cors配置等。
fastJson視圖過(guò)濾配置詳細(xì)內(nèi)容如下圖5所示:
圖5
上述圖5內(nèi)fastJson配置實(shí)體調(diào)用setSerializerFeatures方法可以配置多個(gè)過(guò)濾方式,下面我們來(lái)介紹下常用的SerializerFeatures配置。
FastJson SerializerFeatures
WriteNullListAsEmpty :List字段如果為null,輸出為[],而非null
WriteNullStringAsEmpty : 字符類(lèi)型字段如果為null,輸出為"",而非null
DisableCircularReferenceDetect :消除對(duì)同一對(duì)象循環(huán)引用的問(wèn)題,默認(rèn)為false(如果不配置有可能會(huì)進(jìn)入死循環(huán))
WriteNullBooleanAsFalse:Boolean字段如果為null,輸出為false,而非null
WriteMapNullValue:是否輸出值為null的字段,默認(rèn)為false。
項(xiàng)目初嘗試運(yùn)行
經(jīng)過(guò)上述的配置我們基本完成對(duì)了SpringBoot整合FastJson的內(nèi)容,我們接下來(lái)嘗試運(yùn)行下項(xiàng)目,如下圖6所示:
圖6
可以看到我們的項(xiàng)目正常運(yùn)行了,我們?cè)L問(wèn)之前編寫(xiě)的查詢(xún)列表的請(qǐng)求,看是否給我返回了相應(yīng)的數(shù)據(jù),訪問(wèn)地址:127.0.0.1:8080/user/list,如下圖7所示:
圖7
可以看到我們得到了我們想要的結(jié)果,那么接下來(lái)我們?cè)撊绾稳y(cè)試fastJson是否已經(jīng)生效了呢?
我們上述的配置中添加一個(gè)SerializerFeatures(WriteMapNullValue)這個(gè)配置的含義就是輸入為NULL值的字段,我們嘗試修改數(shù)據(jù)庫(kù)中的name為NULL看看效果如何,如下圖8所示:
圖8
我們可以看到我們將之前的name為test的name字段設(shè)置了NULL,我們請(qǐng)求列表接口還是可以得到該字段的但是字段返回是沒(méi)有值得。
接下來(lái)修改FastJsonConfiguration類(lèi)內(nèi)的setSerializerFeatures方法,再添加一個(gè)配置WriteNullStringAsEmpty,我們?cè)俅沃貑㈨?xiàng)目訪問(wèn)用戶(hù)列表地址效果如何?修改配置如下圖9所示:
圖9
配置修改完成后,重啟我們的項(xiàng)目程序,訪問(wèn)用戶(hù)列表請(qǐng)求地址,得到的返回結(jié)果如下圖10所示:
圖10
可以看到上述圖10內(nèi)的紅色標(biāo)記處,name的值從NULL變成了"",那么證明我們的fastJson消息的轉(zhuǎn)換配置完美生效了。如果你的效果不是上圖10所示,請(qǐng)檢查FastJsonConfiguration配置以及maven依賴(lài)問(wèn)題。
總結(jié)
以上便是我們本章的全部講解內(nèi)容,本章主要講解了SpringBoot項(xiàng)目如何將返回的消息從內(nèi)部的Json轉(zhuǎn)換變成fastJson轉(zhuǎn)換,如何添加fastJson的轉(zhuǎn)換器過(guò)濾配置SerializerFeature。因?yàn)?#64;ResultControll注解的Controller本身返回值就是json字符串,我們上述講解通過(guò)兩次修改fastJson過(guò)濾器配置的方式見(jiàn)證了fastJson的神奇效果。
本上內(nèi)容已經(jīng)上傳到碼云:
SpringBoot配套源碼地址:gitee.com/hengboy/spr…
SpringCloud配套源碼地址:gitee.com/hengboy/spr…
SpringBoot相關(guān)系列文章請(qǐng)?jiān)L問(wèn):目錄:SpringBoot學(xué)習(xí)目錄
QueryDSL相關(guān)系列文章請(qǐng)?jiān)L問(wèn):QueryDSL通用查詢(xún)框架學(xué)習(xí)目錄
SpringDataJPA相關(guān)系列文章請(qǐng)?jiān)L問(wèn):目錄:SpringDataJPA學(xué)習(xí)目錄
SpringBoot相關(guān)文章請(qǐng)?jiān)L問(wèn):目錄:SpringBoot學(xué)習(xí)目錄,感謝閱讀!
歡迎加入QQ技術(shù)交流群,共同進(jìn)步。
QQ技術(shù)交流群
總結(jié)
以上是生活随笔為你收集整理的第五章:配置使用FastJson返回Json视图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到和兔子打架怎么回事
- 下一篇: 用ntdsutil命令中的restore