天天看點

jackson json 嵌套對象_jackson學習之一:基本資訊歡迎通路我的GitHub關于jackson版本資訊三個核心子產品低階API庫的作用歡迎關注我的公衆号:程式員欣宸

歡迎通路我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原創文章分類和彙總,及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

關于jackson

本文是《jackson學習》系列的第一篇,先來一起了解jackson:

  1. jackson的github位址:https://github.com/FasterXML/jackson
  2. 按照官網所述,jackson是java技術棧内最好的JSON解析工具(best JSON parser for Java);
  3. 除了JSON解析,jackson還是個資料處理工具集:基于流的解析庫和生成庫、資料綁定、資料格式化子產品(Avro、XML、Protobuf、YAML等);

版本資訊

  1. jackson共有1.x和2.x兩個版本系列,其中1.x已廢棄不再有版本釋出,2.x是活躍版本;
  2. 1.x和2.x不相容,如果您的代碼已經使用了1.x,現在想改用2.x,您就必須修改使用jackson的那部分代碼;
  3. 雖然不相容,但是1.x和2.x不沖突,您的項目可以在pom.xml中同時依賴這兩個版本,假設您原有三處代碼調用了1.x的API,現在可以把一處改成2.x的,另外兩處維持不變,這個特性适合将項目逐漸從1.x更新到2.x(This is by design and was chosen as the strategy to allow smoother migration from 1.x to 2.x.);
  4. 2.x系列版本中,有的版本已關閉(除非bug或者安全問題才會釋出新的小版本),有的版本還處于活躍狀态,如下圖,您可以在這個位址擷取最新情況:https://github.com/FasterXML/jackson/wiki/Jackson-Releases
jackson json 嵌套對象_jackson學習之一:基本資訊歡迎通路我的GitHub關于jackson版本資訊三個核心子產品低階API庫的作用歡迎關注我的公衆号:程式員欣宸

三個核心子產品

jackson有三個核心子產品,如下,括号内是maven的artifactId:

  1. Streaming(jackson-core):低階API庫,提供流式解析工具JsonParser,流式生成工具JsonGenerator;
  2. Annotations(jackson-annotations):jackson注解;
  3. Databind (jackson-databind):基于java對象的序列化、反序列化能力,需要前面兩個子產品的支援才能實作;

低階API庫的作用

  • 當我們用jackson做JSON操作時,常用的是Databind子產品的ObjectMapper類,對處于核心位置的jackson-core反倒是很少直接用到,那麼該子產品有什麼作用呢?
  • 如下圖,BeanSerializer是jackson-databind的功能類,其serialize方法負責将java對象轉為JSON,方法中的處理邏輯就是調用JsonGenerator的API,而JsonGenerator就是jackson-core中負責序列化的主要功能類:
jackson json 嵌套對象_jackson學習之一:基本資訊歡迎通路我的GitHub關于jackson版本資訊三個核心子產品低階API庫的作用歡迎關注我的公衆号:程式員欣宸
  • 可見Databind子產品的ObjectMapper類提供給我們的API,其底層操作是基于jackson-core實作的;

至此,我們對jackson已有了基本了解,接下來的文章會開始一系列實戰,通過實戰來掌握和了解這個優秀的工具;

歡迎關注我的公衆号:程式員欣宸

jackson json 嵌套對象_jackson學習之一:基本資訊歡迎通路我的GitHub關于jackson版本資訊三個核心子產品低階API庫的作用歡迎關注我的公衆号:程式員欣宸