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).
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