內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等; 系列文章匯總jackson學(xué)習(xí)之一:基本信息 jackson學(xué)習(xí)之二:jackson-core jackson學(xué)習(xí)之三:常用API操作 jackson學(xué)習(xí)之四:WRAP_ROOT_VALUE(root對象) jackson學(xué)習(xí)之五:JsonInclude注解 jackson學(xué)習(xí)之六:常用類注解 jackson學(xué)習(xí)之七:常用Field注解 jackson學(xué)習(xí)之八:常用方法注解 jackson學(xué)習(xí)之九:springboot整合(配置文件) jackson學(xué)習(xí)之十(終篇):springboot整合(配置類)
關(guān)于jackson本文是《jackson學(xué)習(xí)》系列的第一篇,先來一起了解jackson: 按照官網(wǎng)所述,jackson是java技術(shù)棧內(nèi)最好的JSON解析工具(best JSON parser for Java); 除了JSON解析,jackson還是個數(shù)據(jù)處理工具集:基于流的解析庫和生成庫、數(shù)據(jù)綁定、數(shù)據(jù)格式化模塊(Avro、XML、Protobuf、YAML等);
版本信息jackson共有1.x和2.x兩個版本系列,其中1.x已廢棄不再有版本發(fā)布,2.x是活躍版本; 1.x和2.x不兼容,如果您的代碼已經(jīng)使用了1.x,現(xiàn)在想改用2.x,您就必須修改使用jackson的那部分代碼; 雖然不兼容,但是1.x和2.x不沖突,您的項(xiàng)目可以在pom.xml中同時依賴這兩個版本,假設(shè)您原有三處代碼調(diào)用了1.x的API,現(xiàn)在可以把一處改成2.x的,另外兩處維持不變,這個特性適合將項(xiàng)目逐步從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系列版本中,有的版本已關(guān)閉(除非bug或者安全問題才會發(fā)布新的小版本),有的版本還處于活躍狀態(tài),

三個核心模塊jackson有三個核心模塊,如下,括號內(nèi)是maven的artifactId: Streaming(jackson-core):低階API庫,提供流式解析工具JsonParser,流式生成工具JsonGenerator; Annotations(jackson-annotations):jackson注解; Databind (jackson-databind):基于java對象的序列化、反序列化能力,需要前面兩個模塊的支持才能實(shí)現(xiàn);
低階API庫的作用當(dāng)我們用jackson做JSON操作時,常用的是Databind模塊的ObjectMapper類,對處于核心位置的jackson-core反倒是很少直接用到,那么該模塊有什么作用呢? 如下圖,BeanSerializer是jackson-databind的功能類,其serialize方法負(fù)責(zé)將java對象轉(zhuǎn)為JSON,方法中的處理邏輯就是調(diào)用JsonGenerator的API,而JsonGenerator就是jackson-core中負(fù)責(zé)序列化的主要功能類:
 3. 可見Databind模塊的ObjectMapper類提供給我們的API,其底層操作是基于jackson-core實(shí)現(xiàn)的; 至此,我們對jackson已有了基本了解,接下來的文章會開始一系列的實(shí)戰(zhàn),通過實(shí)戰(zhàn)來掌握和理解這套優(yōu)秀的工具;
|