Jackson Download Page
Artifact Types
Jackson versions 1.1 and above come in 4 separate jars, and Jackson versions 1.6 and above in 6:
Core jar contains streaming JSON parser and generator interfaces and implementations
Optional Mapper jar contains functionality for data binding:
TreeMapper to build "trees" consisting of JsonNodes, and write them as JSON
ObjectMapper to construct Plain Old Java Objects (POJOs, aka Beans) from JSON, and similarly write Java objects as JSON.
Optional jax-rs jar contains class(es) needed to make a JAX-RS implementation like Jersey use Jackson for simple, convenient and lightning fast binding of JSON to/from Java objects
- Jaxrs package depends on mapper jar (and transitively on core as well)
Jaxrs is only needed if you use Jackson via JAX-RS, and not for stand-alone usage
Optional xc (Xml Compatibility) jar (added for 1.1) contains classes needed to add XML compatibility support such as:
Ability to use JAXB annotations (instead of or in addition to basic Jackson annotations)
Optional MrBean jar (jackson-mrbean) contains functionality for Materialized Beans -- ability to let Jackson create implementation classes (not just instances!) for interfaces and abstract classes. Depends on mappper and core modules
Optional Smile jar (jackson-mrbean) contains support for JSON-compatible binary format called "Smile". It depends on core module.
Jackson 1.6 added a new one, jackson-all jar that contains contents of all the other jars; this may be more convenient to use and upgrade than set of separate jars, for some use cases (or as source when building subsets that only contain specific classes you need)
Jackson 1.9 further added one more, jackson-mini, jar that contains minimized set of things from the core jar; specifically excluding following things, to reduce jar size by 40%:
- License files
- Annotations
Note that for streaming parsing/writing of JSON, core package can be used without the other jars.
Versioning Strategy
Jackson versioning follows guidelines similars to ones Eclipse project uses, so that:
- Major version upgrade indicates incompatible changes.
- You MUST recompile (and re-test) your application or service when upgrading to a new major version
- Major version upgrades occur rarely
- Minor version upgrade indicates added functionality, but without removing existing functionality
- It is possible that observed behavior changes, but this should usually not cause compatibility problems
- Changes are binary compatible so it is possible -- although not recommended -- to just upgrade jar. Instead, you should recompile application, and re-test code that uses Jackson
- Patch version upgrades are strictly for bug fixes, and no new functionality is added
- Only changes to observed behavior is to fix broken behavior
- Upgrade by swapping jars should work without problems
Dynamic version detection
Starting with Jackson 1.6, major components of the system (like ObjectMapper and JsonFactory implement org.codehaus.jackson.Versioned interface, which defines methods version() that returns Version object to indicate which version corresponding package is. This can be useful for third party libraries that can use different versions of Jackson with different levels of support; or to verify more accurately which version is and can be used (above and beyond what version management systems can offer).
Dependency handling
Jackson comes with Maven "pom"-files (and is available via Codehaus Maven2 repo, which gets synced with main Maven2 repository).
The only dependencies are:
- Core and mapper require JDK 5
- Mapper jar depends on core jar
- Jax-rs, Jackson-xc and jackson-mrbean jars depend on mapper jar
All jars are also first-class OSGi bundles with the usual import and export declarations.
Maven: snapshots
Snapshot versions can be used by adding following Maven dependencies in your projects pom.xml:
===== Jackson 1.x ======
<repositories> <repository> <id>codehaus-snapshots</id> <url>http://snapshots.repository.codehaus.org</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.4</version> </dependency> </dependencies>
===== Jackson 2.x ======
Available from Sonatype snapshot repository: https://oss.sonatype.org/content/repositories/snapshots/com/fasterxml/jackson/core/
Licensing
Jackson is dual-licensed under two alternative popular Open Source licenses: Apache (AL 2.0) and GNU Lesser GPL (LGPL 2.1). You choose one or the other, as necessary (if you want to redistribute the code -- for use, you do not need license), and abide by the license rules as defined by the respective license agreement (and only that one).
All code contributions must be licensable under these two licenses.
Source
Is available from Codehaus Jackson SVN repository.
Repositories
Downloads
Latest stable version
Current stable branch is 1.9, and the latest version 1.9.4:
- Released: 20-Jan-2012
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
ASL/LGPL mrbean (bean materializer)
ASL/LGPL Smile (binary format)
Jackson All (includes contents of all above jars)
Jackson Mini includes contents of jackson-core except for Annotations, license files, and is meant for environments where size should be minimized (like mobile devices)
Smile Tool (command-line tool for converting Smile to/from JSON)
Latest stable versions of earlier branches
1.8 branch: 1.8.8
- Released: 20-Jan-2012
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
ASL/LGPL mrbean (bean materializer)
ASL/LGPL Smile (binary format)
Jackson All (includes contents of all above jars):
Smile Tool (command-line tool for converting Smile to/from JSON)
1.7 branch: 1.7.9 (final release -- no further maintenance)
- Released: 12-Aug-2011
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
ASL/LGPL mrbean (bean materializer)
ASL/LGPL Smile (binary format)
Jackson All (includes contents of all above jars):
Smile Tool (command-line tool for converting Smile to/from JSON)
1.6 branch: 1.6.9 (final release -- no further maintenance)
- Released: 04-Aug-2011
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
ASL/LGPL mrbean (bean materializer)
ASL/LGPL Smile (binary format)
Jackson All (includes contents of all above jars):
1.5 branch: 1.5.8 (final release -- no further maintenance)
- Released: 21-Dec-2010
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
1.4 branch: 1.4.5 (final release -- no further maintenance)
- Released: 25-Jun-2010
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
1.3 branch: 1.3.5 (final release -- no further maintenance)
- Released: 18-Feb-2010
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
1.2 branch: 1.2.1 (final release -- no further maintenance)
- Released: 03-Oct-2009
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
1.1 branch: 1.1.2 (final release -- no further maintenance)
- Released: 31-Jul-2009
- Documentation:
- Deployable jars
ASL: core-asl, mapper-asl
LGPL: core-lgpl, mapper-lgpl
ASL/LGPL jax-rs
ASL/LGPL jax-xc
Earlier versions
Older versions can be found from Codehaus Maven2 repository.
