1. 程式人生 > 實用技巧 >2. 媽呀,Jackson原來是這樣寫JSON的

2. 媽呀,Jackson原來是這樣寫JSON的

沒有人永遠18歲,但永遠有人18歲。本文已被 https://www.yourbatman.cn 收錄,裡面一併有Spring技術棧、MyBatis、JVM、中介軟體等小而美的專欄供以免費學習。關注公眾號【BAT的烏托邦】逐個擊破,深入掌握,拒絕淺嘗輒止。

目錄

前言

各位好,我是A哥(YourBatman)。

上篇文章 整體介紹了世界上最好的JSON庫 -- Jackson,對它有了整體瞭解:知曉了它是個生態,其它的僅是個JSON庫而已。

有人說Jackson小眾?那麼請先看看上篇文章吧。學Jackson價效比特別高,因為它使用廣泛、會的人少,因此在團隊內如果你能精通,附加價值的效應就會非常明顯了...

我撓頭想了想,本系列來不了虛的,只能肝。本系列教程不僅僅教授基本使用,目標是搞完後能夠解決日常99.99%的問題,畢竟每個小團隊都最好能有某些方面的小專家,畢竟大家都不乏遇見過一個技術問題卡一天的情況。只有從底層把握,方能遊刃有餘

命名為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吧~

相信做難事必有所得,你我他都會用的技術、都能解決的問題,那絕成不了你的核心競爭力,自然在團隊內就難成發光體。

版本約定

原則:均選當前最新版本(忽略小版本)

  • Jackson版本:2.11.0
  • Spring Framework版本:5.2.6.RELEASE
  • Spring Boot版本:2.3.0.RELEASE
    • 內建的Jackson和Spring版本均和