这是杰克逊项目的主页。
(注意:有关最新发布信息,请参见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开发人员发表意见,而与要使用的库有关,因此这里有一些现有独立比较的链接: