2. 媽呀,Jackson原來是這樣寫JSON的
阿新 • • 發佈:2020-07-24
> 沒有人永遠18歲,但永遠有人18歲。本文已被 [**https://www.yourbatman.cn**](https://www.yourbatman.cn) 收錄,裡面一併有Spring技術棧、MyBatis、JVM、中介軟體等小而美的**專欄**供以免費學習。關注公眾號【**BAT的烏托邦**】逐個擊破,深入掌握,拒絕淺嘗輒止。
[TOC]
![](https://img-blog.csdnimg.cn/20200717122214583.png)
# 前言
各位好,我是A哥(YourBatman)。[上篇文章](https://mp.weixin.qq.com/s/iqSN4HUoIdX0kGcSdnD7EA) 整體介紹了世界上最好的JSON庫 -- Jackson,對它有了整體瞭解:知曉了它是個生態,其它的僅是個JSON庫而已。
> 有人說Jackson小眾?那麼請先看看上篇文章吧。學Jackson價效比特別高,因為它使用廣泛、會的人少,因此在團隊內如果你能精通,附加價值的效應就會非常明顯了...
我撓頭想了想,本系列來不了虛的,只能肝。本系列教程不僅僅教授基本使用,目標是搞完後能夠解決日常99.99%的問題,畢竟每個小團隊都最好能有某些方面的小專家,畢竟大家都不乏遇見過一個技術問題卡一天的情況。**只有從底層把握,方能遊刃有餘**。
![](https://img-blog.csdnimg.cn/20200715180628489.png)
命名為core的模組一般都不簡單,`jackson-core`自然也不例外。它是三大核心模組之一,並且是**核心中的核心**,提供了對JSON資料的**完整支援**(包括各種讀、寫)。它是三者中最強大的模組,具有**最低的**開銷和**最快的**讀/寫操作。
此模組提供了**最具底層**的Streaming JSON解析器/生成器,這組流式API屬於Low-Level API,具有非常顯著的特點:
- 開銷小,損耗小,效能極高
- 因為是Low-Level API,所以靈活度極高
- 又因為是Low-Level API,所以易錯性高,可讀性差
**jackson-core**模組提供了兩種處理JSON的方式(縱纜整個Jackson共三種):
1. 流式API:讀取並將JSON內容寫入作為離散事件 -> `JsonParser`讀取資料,而`JsonGenerator`負責寫入資料
2. 樹模型:JSON檔案在記憶體裡以樹形式表示。此種方式也很靈活,它類似於XML的DOM解析,層層巢狀的
作為“底層”技術,應用級開發中確實接觸不多。為了引起你的重視,提前預告一下:`Spring MVC`對JSON訊息的轉換器`AbstractJackson2HttpMessageConverter`它就用到了底層流式API -> JsonGenerator寫資料。想不想拿下Spring呢?我想你的答案應該是Yes吧~
![](https://img-blog.csdnimg.cn/20200715182507991.png)
相信做**難事必有所得**,你我他都會用的技術、都能解決的問題,那絕成不了你的核心競爭力,自然在團隊內就難成發光體。
## 版本約定
原則:均選當前最新版本(忽略小版本)
- Jackson版本:`2.11.0`
- Spring Framework版本:`5.2.6.RELEASE`
- Spring Boot版本:`2.3.0.RELEASE`
- 內建的Jackson和Spring版本均和