fastJson是阿里巴巴旗下的一個開源項目之一,顧名思義它專門用來做快速操作Json的序列化與反序列化的組件。
它是目前json解析最快的開源組件沒有之一!在這之前jaskJson是命名為快速操作json的工具,而當阿里巴巴的fastJson誕生後jaskjson就消聲匿跡了,不過目前很多項目還在使用。
本章目標
將fastJson加入到SpringBoot項目內,配置json返回視圖使用fastJson解析。
創建SpringBoot項目
看過我前幾章的程序猿們都知道,我們通過IntelliJ IDEA工具創建SpringBoot項目,我們本章也不例外,具體創建步驟這裡就不多做解釋了,最終項目結構如下圖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/com.alibaba/fastjson/1.2.31,這裡我們使用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值的字段,我們嘗試修改數據庫中的name為NULL看看效果如何,如下圖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專題】【spring源碼】
【mysql優化專題】【HTTP協議】
【架構技術專題】【多線程專題】
【dubbo專題】【dubbo源碼專題】
【JVM調優專題】【HTTP專題】
【設計模式專題】【高併發專題】
【架構技術專題】【Lucene專題】
【數據結構專題】【redis專題】
【mq中間件專題】【netty專題】
【java面試專題】【zookeeper】
閱讀更多 java進階架構師 的文章