這是傑克遜項目的主頁。
(注意:有關最新發布信息,請參見Jackson版本)
傑克遜被稱為“ Java Json圖書館”或“ Java的最佳JSON PARSER”。或簡單地作為“ Json for Java”。
不僅如此,傑克遜是針對Java(和JVM平台)的一套數據處理工具,包括旗艦流媒體json Parser / Generator庫,匹配數據結合庫(Pojos to and json)和其他數據格式模塊,以處理在Avro,Cbor,cbor,cbor,cbor,smile prote proties prote yam proties proties tonk yam proties toce consed in toc ofderies properies protsies protsies proties proties proties tocl of。甚至大量的數據格式模塊,以支持廣泛使用的數據類型的數據類型,例如Guava,Joda,Pcollections等等(請參見下文)。
雖然實際的核心組件生活在自己的項目下 - 包括三個核心軟件包(流,數據賓會,註釋);數據格式庫;數據類型庫; JAX-RS提供商;還有一組其他擴展模塊 - 該項目是將所有零件鏈接在一起的中心樞紐。
傑克遜項目常見問題解答是該讀書人的好伴侶。
傑克遜套房有兩個主要版本:1.x被棄用,沒有發布版本; 2.x是積極開發的版本。這兩個主要版本使用不同的Java套件和Maven文物ID,因此它們不是相互兼容的,而是可以和平共存的:一個項目可以依賴傑克遜1.x和2.x,而不會發生衝突。這是通過設計的,被選為允許從1.x到2.x更平滑的遷移的策略。
這些分支機構的最新穩定版本是:
推薦使用Jackson的方法是通過Maven存儲庫;將發佈到中央Maven存儲庫(CMR)。單個項目的Wiki頁面有時還包含直接下載鏈接,指向CMR。
從Jackson版本頁面找到了2.x版本的發行說明。
下面列出的大多數項目是傑克遜開發團隊的領導;但是有些人是其他一般傑克遜社區成員。我們嘗試將模塊版本的版本兼容,以減少有關哪些版本共同使用的混亂。
核心模塊是擴展(模塊)基礎的基礎。目前有3個這樣的模塊(截至傑克遜2.x):
streaming軟件包上實現數據結合(和對象序列化)支持;這既取決於streaming和annotations軟件包這些擴展名是插件Jackson Module S(用ObjectMapper.registerModule() )註冊,並通過添加串行序列化器和Deserializer來添加對各種常用Java庫的數據型的支持,以便Jackson databind Package( ObjectMapper / ObjectReader / ObjectReader / Objectergriter / ObjectWriter )可以讀取和寫入這些類型。
傑克遜團隊直接維護的數據類型模塊在以下GitHub存儲庫下:
jackson-module-parameter-names :增加了使用新的JDK8功能的支持,可以訪問構造函數的名稱和方法參數,以允許省略@JsonProperty 。jackson-datatype-jsr310 :支持“ Java 8日期”(JDK 8中添加的日期)jackson-datatype-jdk8 :支持JDK 8數據類型以外的日期/時間類型,包括OptionalMoney , CurrencyUnit )javax.json )和“ New”( jakarta.json )的兩個數據類型模塊:jakarta.json中的“新” JSON-P類型(添加在Jackson 2.12.2中)javax.jsonJSONObject , JSONArray此外,我們知道Core Jackson團隊未直接維護的其他模塊:
jackson-dataformat-protobuf不同,後者增加了對編碼/解碼Protobuf內容的支持,但不依賴於標準Java Protobuf庫com.github.caligin.tinytypes , tinytypes-jackson )org.vertx.java.core.json.JsonObject對象(重新包裝org.json節點類型)Jackson JAX-RS提供商的處理程序可以為JAX-RS實現增加數據Format支持(例如Jersey,Resteasy,CXF)。提供者實現MessageBodyReader和MessageBodyWriter 。當前支持的格式包括JSON , Smile , XML , YAML和CBOR 。
數據格式模塊為JSON以外的數據格式提供支持。他們中的大多數只是實現streaming API抽象,因此可以按原樣使用數據指標組件;有些提供(很少需要)其他databind級功能來處理諸如模式之類的內容。
當前遵循數據格式模塊是完全可用和支持的(括號中的版本號,如果包括,則是第一個包括模塊的傑克遜2.x版本;如果丟失,則包括2.0中)
streaming實現以及額外的databind級支持AVRO模型的支持streaming api,並具有可選的便利性databind添加Avro的支持streaming api兼容100%API/邏輯模型,沒有更改databindstreaming和databind實現streaming和databind實現。類似於JAXB的“ Code-First”模式(不支持“ XML Schema”,但可以使用JAXB bean)streaming實現的全面支持傑克遜核心團隊以外的開發人員還提供了其他數據格式模塊:
MsgPack )格式傑克遜註釋定義了Pojos的預期屬性和預期處理,除了傑克遜本身用於讀取/寫作JSON和其他格式外,它還允許生成外部模式。這些功能中的某些功能包括在上述數據形式擴展中。但是也有許多獨立的架構工具,例如:
FastXML團隊的其他完全可用的模塊包括:
@JacksonInject (或除)JAXB註釋作為替代方案(除了或代替)標準傑克遜註釋@JacksonInject註釋從OSGI註冊表中註入值@JsonProperty 。雖然傑克遜(Jackson Databind)是通用數據結合的好選擇,但其足跡和啟動開銷在某些域(例如手機)中可能會出現問題。特別是用於輕度使用(幾個讀或寫入)。此外,一些開發人員發現傑克遜API的全部壓倒性。
由於所有這些原因,我們決定創建一個更簡單,較小的庫,該庫支持功能的子集,稱為Jackson Jr。它建立在傑克遜流媒體API上,但不依賴於數據座。結果,它的尺寸(jar和運行時內存使用量)都小得多;它的API非常緊湊。
如果您想幫助傑克遜項目,請查看貢獻。
您可能還想退房:
傑克遜組件通過傑克遜社區通過郵寄列表,吉特論壇,github問題來支持。有關詳細信息,請參見貢獻。
除了免費(所有)社區支持外,企業支持(以2.10版本開始),作為(大多數)傑克遜組件的Tidelift訂閱的一部分。
Jackson和其他成千上萬的軟件包的維護者正在與Tidelift合作,為您用於構建應用程序的開源依賴關係提供商業支持和維護。節省時間,降低風險並改善代碼健康,同時支付您使用的確切依賴項的維護者。了解更多。
報告可能的安全漏洞的建議機制遵循所謂的“協調披露計劃”(有關一般想法,請參見DCP的定義)。第一步是提交Tidelift安全聯繫人:Tidelift將通過其係統將所有報告路由與維護相關軟件包的維護者一起路由,並啟動將評估關注並發布可能的修復程序,發送更新通知等的過程。請注意,您無需成為潮汐式訂戶即可提交安全聯繫人。
另外,您也可以將可能的漏洞報告到fasterxml dot com郵寄地址的info 。請注意,提交報告問題是可以的,但是如果您這樣做,請不要在問題中包含安全問題的詳細信息,而僅在電子郵件聯繫人中。這很重要,讓我們有時間在必要時為問題提供補丁。
傑克遜錯誤需要針對其影響的組件進行報告:因此,該項目未啟用問題跟踪器。如果您不確定哪些特定項目問題會影響哪個特定的項目,則最有可能的組件是jackson-databind ,因此您將使用Jackson Databind Essue Tracker。
有關建議和新想法,請嘗試傑克遜未來的想法
對於首次用戶,有許多傑克遜使用教程,包括一般用法 / JSON教程:
以及更具體的教程:
已經發布了有關傑克遜組件的報告
由於您可能希望與傑克遜項目無關的Java開發人員發表意見,而與要使用的庫有關,因此這裡有一些現有獨立比較的鏈接: