第五章:配置使用FastJson返回Json視圖

fastJson是阿里巴巴旗下的一個開源項目之一,顧名思義它專門用來做快速操作Json的序列化與反序列化的組件。它是目前json解析最快的開源組件沒有之一!在這之前jaskJson是命名為快速操作json的工具,而當阿里巴巴的fastJson誕生后jaskjson就消聲匿跡了,不過目前很多項目還在使用。

本章目標

將fastJson加入到SpringBoot項目內,配置json返回視圖使用fastJson解析。

創建SpringBoot項目

看過我前幾章的程序猿們都知道,我們通過IntelliJ IDEA工具創建SpringBoot項目,我們本章也不例外,具體創建步驟這里就不多做解釋了,最終項目結構如下圖1所示:


圖1

可以看到我們事先導入了,Web、MySQL、JPA組件,我們把上一章的application.yml配置文件復制到我們的項目對應的目錄下,并且修改pom.xml添加Druid的支持。如下圖2所示:


圖2

注意:圖2中的spring-boot-stater-tomcat依賴的scope屬性一定要注釋掉我們才能在IntelliJ IDEA工具使用SpringBootApplication的形式運行項目!
完成上述配置后我們接下來將fastJson的maven依賴也添加進我們的pom.xml配置文件中。

添加依賴

跟我們上一章很相似,我們需要到maven倉庫復制對應的maven依賴xml配置到我們項目的pom.xml中。訪問倉庫地址:mvnrepository.com/artifact/co…,這里我們使用fastJson最新版本,我們當訪問fastJson的列表界面時可以看到阿里巴巴2017年就發布了很多個版本,證明阿里巴巴一直在維護并且升級版本,所以我們可以大膽的放心使用。添加效果圖如下圖3所示:


圖3

添加完成依賴后我們把上一章的實體類、控制器、JPA復制到我們當前項目下,我們就不重復講解如何創建這些簡單的實體類了。如下圖4所示:


圖4

我們接下來創建一個FastJsonConfiguration配置信息類,添加@Configuration注解讓SpringBoot自動加載類內的配置,有一點要注意我們繼承了WebMvcConfigurerAdapter這個類,這個類是SpringBoot內部提供專門處理用戶自行添加的配置,里面不僅僅包含了修改視圖的過濾還有其他很多的方法,包括我們后面章節要講到的攔截器,過濾器,Cors配置等。
fastJson視圖過濾配置詳細內容如下圖5所示:


圖5

上述圖5內fastJson配置實體調用setSerializerFeatures方法可以配置多個過濾方式,下面我們來介紹下常用的SerializerFeatures配置。

FastJson SerializerFeatures

WriteNullListAsEmpty :List字段如果為null,輸出為[],而非null
WriteNullStringAsEmpty : 字符類型字段如果為null,輸出為"",而非null
DisableCircularReferenceDetect :消除對同一對象循環引用的問題,默認為false(如果不配置有可能會進入死循環)
WriteNullBooleanAsFalse:Boolean字段如果為null,輸出為false,而非null
WriteMapNullValue:是否輸出值為null的字段,默認為false。

項目初嘗試運行

經過上述的配置我們基本完成對了SpringBoot整合FastJson的內容,我們接下來嘗試運行下項目,如下圖6所示:


圖6

可以看到我們的項目正常運行了,我們訪問之前編寫的查詢列表的請求,看是否給我返回了相應的數據,訪問地址:127.0.0.1:8080/user/list,如下圖7所示:


圖7

可以看到我們得到了我們想要的結果,那么接下來我們該如何去測試fastJson是否已經生效了呢?

我們上述的配置中添加一個SerializerFeatures(WriteMapNullValue)這個配置的含義就是輸入為NULL值的字段,我們嘗試修改數據庫中的nameNULL看看效果如何,如下圖8所示:


圖8

我們可以看到我們將之前的name為test的name字段設置了NULL,我們請求列表接口還是可以得到該字段的但是字段返回是沒有值得。
接下來修改FastJsonConfiguration類內的setSerializerFeatures方法再添加一個配置WriteNullStringAsEmpty,我們再次重啟項目訪問用戶列表地址效果如何?修改配置如下圖9所示:


圖9

配置修改完成后,重啟我們的項目程序,訪問用戶列表請求地址,得到的返回結果如下圖10所示:


圖10

可以看到上述圖10內的紅色標記處,name的值從NULL變成了"",那么證明我們的fastJson消息的轉換配置完美生效了。如果你的效果不是上圖10所示,請檢查FastJsonConfiguration配置以及maven依賴問題。

總結

以上便是我們本章的全部講解內容,本章主要講解了SpringBoot項目如何將返回的消息從內部的Json轉換變成fastJson轉換,如何添加fastJson的轉換器過濾配置SerializerFeature。因為@ResultControll注解的Controller本身返回值就是json字符串,我們上述講解通過兩次修改fastJson過濾器配置的方式見證了fastJson的神奇效果。

本上內容已經上傳到碼云:

SpringBoot配套源碼地址:gitee.com/hengboy/spr…

SpringCloud配套源碼地址:gitee.com/hengboy/spr…

SpringBoot相關系列文章請訪問:目錄:SpringBoot學習目錄

QueryDSL相關系列文章請訪問:QueryDSL通用查詢框架學習目錄

SpringDataJPA相關系列文章請訪問:目錄:SpringDataJPA學習目錄

SpringBoot相關文章請訪問:目錄:SpringBoot學習目錄,感謝閱讀!

歡迎加入QQ技術交流群,共同進步。


QQ技術交流群


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392912.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392912.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392912.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一加6android9玩飛車掉,解鎖新速度:一加6T深度評測

解鎖新速度:一加6T深度評測2019-11-02 14:28:595點贊2收藏4評論創作立場聲明:我們只談智能硬件,向改變生活的智能硬件Say“嗨”!作為安卓旗艦機成員,一加這個品牌在玩機一類的同學手里可是大放光彩,各種刷機…

設計模式(第十七式:迭代器模式)

概念:  迭代器模式:Provide a way to access the elements of an aggregarte object sequentiaally with exposing its underlying representation. 提供一種訪問容器對象內每個元素的一種方式,并且不暴露對象的一些內部細節。實現&#xf…

探討跨域請求資源的幾種方式

[轉自:http://www.cnblogs.com/dojo-lzz/p/4265637.html] 什么是跨域JSONPproxy代理corsxdr由于瀏覽器同源策略,凡是發送請求url的協議、域名、端口三者之間任意一與當前頁面地址不同即為跨域。具體可以查看下表(來源) JSONP 這種…

算法訓練營 重編碼_編碼訓練營適合您嗎?

算法訓練營 重編碼by Joanna Gaudyn喬安娜高登(Joanna Gaudyn) 編碼訓練營適合您嗎? (Is a Coding Bootcamp something for you?) Coding bootcamps’ popularity is growing. It sounds like a perfect idea to fast-forward your career. But is it really some…

leetcode 771. 寶石與石頭(set)

給定字符串J 代表石頭中寶石的類型,和字符串 S代表你擁有的石頭。 S 中每個字符代表了一種你擁有的石頭的類型,你想知道你擁有的石頭中有多少是寶石。 J 中的字母不重復,J 和 S中的所有字符都是字母。字母區分大小寫,因此"a…

用ntdsutil命令中的restore object 更新版本號

備份域控建立好后,備份域信息,用目錄還 原模式,還原域信息,用ntdsutil命令,中的 restore ob ject 更新版本號 本文轉自9pc9com博客,原文鏈接: http://blog.51cto.com/215363/783334 如需…

python處理excel文件(xls和xlsx)

一、xlrd和xlwt 使用之前需要需要先安裝,windows上如果直接在cmd中運行python則需要先執行pip3 install xlrd和pip3 install xlwt,如果使用pycharm則需要在項目的解釋器中安裝這兩個模塊,File-Settings-Project:layout-Project Interpreter&a…

html塊中的內容垂直居中,css如何設置行內元素與塊級元素的內容垂直居中

首先我們先了解一下行內元素和塊級元素行內元素(內聯元素):沒有自己的獨立空間,它是依附于其他塊級元素存在的,空間大小依附于內容多少。行內元素沒有度、寬度、內外邊距等屬性。塊級元素:占據獨立的空間,具有寬度&…

Mina、Netty、Twisted一起學(五):整合protobuf

protobuf是谷歌的Protocol Buffers的簡稱,用于結構化數據和字節碼之間互相轉換(序列化、反序列化),一般應用于網絡傳輸,可支持多種編程語言。protobuf怎樣使用這里不再介紹,本文主要介紹在MINA、Netty、Twi…

leetcode 1. 兩數之和(map)

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。 示例: 給定 nums [2, 7, 11, 15], target …

Redis 3.0.1 安裝和配置

一、下載,解壓和編譯Redis 12345# cd /tmp # wget http://download.redis.io/releases/redis-3.0.1.tar.gz # tar xzf redis-3.0.1.tar.gz # cd redis-3.0.1 # make二、下載、安裝tclsh 測試編譯: 1# make test得到如下錯誤信息: …

2021年南寧二中高考成績查詢,2021廣西高考圓滿結束,6月23日可查詢成績

6月8日下午,2021年高考統考圓滿結束。今年廣西參加高考統考考生人數40.05萬余人,比2020年增加了2.2萬人。我區預計6月23日可查詢高考成績,6月24日起可陸續填報志愿,我區的網上咨詢會將于6月25日至27日舉辦。▲高考結束&#xff0c…

29 Python - 字符與編碼

字符與編碼 01 字符串本質 Python字符串相關概念 字符串 str 字節 bytes 字節數組 bytearray 電腦字符串存儲機制 字符庫:A、B每個字符有一個代碼點如A是65 B為66,這種是方便人類讀寫的形式,但是最終需要存入計算機的CPU和內存&…

Linux 內存管理與系統架構設計

Linux 提供各種模式(比如,消息隊列),但是最著名的是 POSIX 共享內存(shmem,shared memory)。 Linux provides a variety of schemes (such as message queues), but most notable is POSIX shar…

如何正確使用Node.js中的事件

by Usama Ashraf通過Usama Ashraf 如何正確使用Node.js中的事件 (How to use events in Node.js the right way) Before event-driven programming became popular, the standard way to communicate between different parts of an application was pretty straightforward: …

你的成功有章可循

讀書筆記 作者 海軍 海天裝飾董事長 自我修煉是基礎。通過自我學習,在預定目標的指引下,將獲取的知識轉化為個人能力,形成自我規律,不斷循環,實現成功。 尋找和掌握規律,并熟練運用于實踐,是成功…

98k用計算機圖片,98K (HandClap)_譜友園地_中國曲譜網

《98K》文本歌詞98K之歌-HandClap-抖音 制譜:孫世彥這首《HandClap》是Fitz&TheTantrums樂隊演唱的一首歌曲,同時也是絕地求生中囂張BGM,是一首吃雞戰歌!這首歌譜曲者和填詞者都是三個人:JeremyRuzumna&#xff0c…

qt之旅-1純手寫Qt界面

通過手寫qt代碼來認識qt程序的構成,以及特性。設計一個查找對話框。以下是設計過程1 新建一個empty qt project2 配置pro文件HEADERS \Find.h QT widgetsSOURCES \Find.cpp \main.cpp3 編寫對話框的類代碼例如以下://Find.h #ifndef FIND_H #define F…

【隨筆】寫在2014年的第一天

想想好像就在不久前還和大家異常興奮地討論著世界末日的事,結果一晃也是一年前的事了。大四這一年,或者說整個2013年都是場搖擺不定的戲劇,去過的地方比前三年加起來還多的多,有時候也會恍惚地不知道自己現在在哪。簡單記幾筆&…

設計沖刺下載_如何運行成功的設計沖刺

設計沖刺下載by George Krasadakis通過喬治克拉薩達基斯(George Krasadakis) Design Sprints can generate remarkable output for your company — such as a backlog of impactful ideas, functional prototypes, learning and key insights from customers along with real…