目录
3、JAX-RS(Java API for RESTful Web Services)支持
作为java体系下标准的json函数库,目前默认被应用在spring boot中。jackson是一套用于Java和JVM平台的数据处理工具,包括流式json解析器/生成器函数库、数据绑定函数库(POJO和JSON的互转),以及用以处理Avro,BSON,CBOR,CSV,Smile,(Java)Properties,Protobuf,XML,和YAML编码的数据格式化模块。还有很多的数据格式模块用以支持更广泛的数据类型,诸如Guava,Joda,PCollections中的更多其他的数据类型也是支持转换的。
实际的核心组件属于他们自己的项目下-包括三个核心程序包(streaming【core】,databind,annotations),数据格式(dataformat)函数库,数据类型(datatype)库,JAX-RS(提供JSON、Smile【binary JSON】、CBOR【another kind of binary JSON】、XML、YAML的自动注册)
核心modules
支持第三方数据类型的modules
这些扩展作为jackson的module的插件(以ObjectMapper.registerModule()的方式),并通过添加序列化器和反序列化器来支持常用java库的数据类型,以便databind包(objectMapper,objectReader,objectWriter)能够对这些类型进行读写。
以下这些数据类型包是由jackson团队进行维护的:
jackson-module-parameter-names
: Module that adds support for using a new JDK8 feature, ability to access names of constructor and method parameters, to allow omitting @JsonProperty
.jackson-datatype-jsr310
: support for "Java 8 Dates" (ones added in JDK 8)
jackson-datatype-jdk8
: support for JDK 8 data types other than date/time types, including Optional
Money
, CurrencyUnit
)JSONObject
, JSONArray
此外,jackson团队并未直接维护的modules:
jackson-dataformat-protobuf
which adds support for encoding/decoding protobuf content but which does NOT depend on standard Java protobuf librarycom.github.caligin.tinytypes
, artifact tinytypes-jackson
)org.vertx.java.core.json.JsonObject
objects (repackaged org.json
node types)Jackson JAX-RS Providers has handlers to add dataformat support for JAX-RS implementations (like Jersey, RESTeasy, CXF). Providers implement MessageBodyReader
and MessageBodyWriter
. Supported formats currently include JSON
, Smile
, XML
, YAML
and CBOR
.
Data format modules 提供了除json外的其他格式支持。大部分都是简单继承了streaming的api,所以databinding组件可以使用。
streaming
implementation plus additional databind
-level support for Avro Schemasstreaming
api, with optional convenience databind
additionsAvro
streaming
API, no changes for databind
streaming
and databind
implementations. Similar to JAXB' "code-first" mode (no support for "XML Schema first", but can use JAXB beans)streaming
implementation另外,还有一些由其他人员开发的data format 的modules:
MsgPack
) format