jackson is a suite of data-processing tools for Java (and the JVM platform), including the flagship streaming JSON parser / generator library, matching data-binding library (POJOs to and from JSON) and additional data format modules to process data encoded in Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, XML or YAML; and even the large set of data format modules to support data types of widely used data types such as Guava, Joda, PCollections and many, many more (see below).



比如 Guava/Joda/PCollections



While the actual core components live under their own projects – including the three core packages (streaming, databind, annotations);

data format libraries; data type libraries; JAX-RS provider; and a miscellaneous set of other extension modules – this project act as the central hub for linking all the pieces together.


Core modules are the foundation on which extensions (modules) build upon.

There are 3 such modules currently (as of Jackson 2.x):

Streaming (docs) (“jackson-core”) defines low-level streaming API, and includes JSON-specific implementations

Annotations (docs) (“jackson-annotations”) contains standard Jackson annotations

Databind (docs) (“jackson-databind”) implements data-binding (and object serialization) support on streaming package; it depends both on streaming and annotations packages

  • 个人感受



Datatype modules 支持


Datatype modules directly maintained by Jackson team are under the following Github repositories:


Guava: support for many of Guava datatypes.

HPPC: support for High-Performance Primitive Containers containers

PCollections: support for PCollections datatypes (NEW in Jackson 2.7!)


Hibernate: support for Hibernate features (lazy-loading, proxies)

Joda: support for types of Joda date/time library datatypes


JDK7: support for JDK 7 data types not included in previous versions

Deprecated in 2.7, as baseline JDK becomes 7, support to be included in jackson-databind

Java 8 Modules: support or JDK 8 features and datatypes through 3 separate modules


JSR-353: support for “Java JSON API” types (specifically, its tree model objects)

org.json: support for “org.json JSON lib” types like JSONObject, JSONArray


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


Avro: supports Avro data format, with streaming implementation plus additional databind-level support for Avro Schemas

CBOR: supports CBOR data format (a binary JSON variant).

CSV: supports Comma-separated values format – streaming api, with optional convenience databind additions

Ion (NEW with Jackson 2.9!): support for Amazon Ion binary data format (similar to CBOR, Smile, i.e. binary JSON - like)

(Java) Properties (2.8): creating nested structure out of implied notation (dotted by default, configurable), flattening similarly on serialization

Protobuf (2.6): supported similar to Avro

Smile: supports Smile (binary JSON) – 100% API/logical model compatible via streaming API, no changes for databind

XML: supports XML; provides both streaming and databind implementations. Similar to JAXB’ “code-first” mode (no support for “XML Schema first”, but can use JAXB beans)

YAML: supports YAML, which being similar to JSON is fully supported with simple streaming implementation


jackson 支持大量丰富的数据类型和数据格式,侧重点在于丰富的支持。