jackson學習之一:基本信息
- 2021 年 1 月 25 日
- 筆記
歡迎訪問我的GitHub
//github.com/zq2599/blog_demos
內容:所有原創文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;
系列文章匯總
- jackson學習之一:基本信息
- jackson學習之二:jackson-core
- jackson學習之三:常用API操作
- jackson學習之四:WRAP_ROOT_VALUE(root對象)
- jackson學習之五:JsonInclude註解
- jackson學習之六:常用類註解
- jackson學習之七:常用Field註解
- jackson學習之八:常用方法註解
- jackson學習之九:springboot整合(配置文件)
- jackson學習之十(終篇):springboot整合(配置類)
關於jackson
本文是《jackson學習》系列的第一篇,先來一起了解jackson:
- jackson的github地址://github.com/FasterXML/jackson
- 按照官網所述,jackson是java技術棧內最好的JSON解析工具(best JSON parser for Java);
- 除了JSON解析,jackson還是個數據處理工具集:基於流的解析庫和生成庫、數據綁定、數據格式化模塊(Avro、XML、Protobuf、YAML等);
版本信息
- jackson共有1.x和2.x兩個版本系列,其中1.x已廢棄不再有版本發佈,2.x是活躍版本;
- 1.x和2.x不兼容,如果您的代碼已經使用了1.x,現在想改用2.x,您就必須修改使用jackson的那部分代碼;
- 雖然不兼容,但是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.);
- 2.x系列版本中,有的版本已關閉(除非bug或者安全問題才會發佈新的小版本),有的版本還處於活躍狀態,如下圖,您可以在這個地址獲取最新情況://github.com/FasterXML/jackson/wiki/Jackson-Releases
三個核心模塊
jackson有三個核心模塊,如下,括號內是maven的artifactId:
- Streaming(jackson-core):低階API庫,提供流式解析工具JsonParser,流式生成工具JsonGenerator;
- Annotations(jackson-annotations):jackson註解;
- Databind (jackson-databind):基於java對象的序列化、反序列化能力,需要前面兩個模塊的支持才能實現;
低階API庫的作用
- 當我們用jackson做JSON操作時,常用的是Databind模塊的ObjectMapper類,對處於核心位置的jackson-core反倒是很少直接用到,那麼該模塊有什麼作用呢?
- 如下圖,BeanSerializer是jackson-databind的功能類,其serialize方法負責將java對象轉為JSON,方法中的處理邏輯就是調用JsonGenerator的API,而JsonGenerator就是jackson-core中負責序列化的主要功能類:
3. 可見Databind模塊的ObjectMapper類提供給我們的API,其底層操作是基於jackson-core實現的;
至此,我們對jackson已有了基本了解,接下來的文章會開始一系列的實戰,通過實戰來掌握和理解這套優秀的工具;
你不孤單,欣宸原創一路相伴
歡迎關注公眾號:程序員欣宸
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢遊Java世界…
//github.com/zq2599/blog_demos