Jackson JSON Processor

NOTE: This is NOT the current home page of Jackson; instead check out:

Historic happenings

  • 14-Feb-2011: Finally remember to update this old nest; project moved to Codehaus, and documentation can be found at FasterXML Jackson wiki.
  • Many, many new features with following releases:
    • 1.7 (January 2011)
    • 1.6 (September 2010)
    • 1.5 (March 2010)
    • 1.4 (December 2009)
    • 1.3 (October 2009)
    • 1.2 (Aug 2009)
    • 1.1 (June 2009)
  • 08-May-2009: Jackson 1.0.0 released! (go see the New Home Page for more info!)
  • 08-May-2009: FasterXML now provides commercial support for Jackson, as well as variety of other high-performance enterprise-quality web service components!
  • 02-Mar-2009: 0.9.9 released: lots of minor improvements, but perhaps most importantly, now comes with a proper JAX-RS Json Content handler: No more Franken-JSON with JAX-RS!
  • 16-Feb-2009: 0.9.8 released: most basic annotations now implemented, JsonParser/JsonGenerator connected to ObjectMapper (iff using MappingJsonFactory)
  • 10-Feb-2009: First draft of Jackson Tutorial written.
  • 04-Feb-2008: Version 0.9.7 released: complete binary/base64 support, other misc improvements
  • 14-Jan-2009: Version 0.9.6 released: now with full-featured DE-serialization, too. That is, complete POJO/Bean data mapping support!
  • 10-Dec-2008: Version 0.9.5 released: now with full-featured serialization, including Bean serialization (just missing Bean deserialization)
  • 26-Nov-2008: Version 0.9.4 released. Tons of fixes, improvements; from OSGi bundling to Base64 writing, support for Json comments and copy-through methods!
  • 26-Mar-2008: Jackson was approved as a new project at Codehaus , and so the home page will eventually move to jackson.codehaus.org.
  • 14-Mar-2008: Version 0.9.1 released. Apart from minor fixes, JsonGenerator now has pretty printing capability (JsonGenerator.useDefaultPrettyPrinter()).
  • 16-Feb-2008: Moved downloads to a Download Page.
  • (notes for prior versions, between 0.7 and 0.9.4, removed)

A useful resource regarding Jackson development (and related things) is the Cowtown Blog.

What?

Jackson is a:
  • Streaming
  • Light-weight
  • FAST
  • Fully conformant
  • Open Source
  • And Fully Loaded with functionality; see 7 Killer Features of Jackson (aka "Powerful")
JSON processor (JSON parser + JSON generator).

So what do these properties mean?

  • Streaming means similar things here as it does with, say, STreaming Api for Xml processing for xml: low memory and processing overhead, and ability to process content of arbitrary length. Specifically, with JSON you can have tera-byte long streaming communication, and deal with it piece by piece.
  • Light-weight: streamability allows for light-weight operation, and Jackson makes very economic use of resources at its disposal. It also has minimal dependencies: all you need is Java 5 (JDK 1.5) and you are good to go!
  • FAST: given above points, it should come as no surprise that Jackson is blazingly fast. It is significantly faster than the Json Parser Reference Implementation, or ANY other Java parsers (for example, see JVM-serializers benchmark.
  • Fully conformant: Jackson implements the official JSON format specification to the tee. And by default it will not add any proprietary extensions at syntax level, to maximize interoperability (latest version incorporate some optional de-facto extension like alternative base64 encoding rules and JSON comments: these are not enabled by default)
  • Open Source: Jackson is dual-licensed and available under both LGPL (Free software) and ASL Open Source licenses. Packages to be usable under OSGi containers, as is; distributes via Maven repositories as well.
Beyond streaming parser and generator, Jackson also has extensive support for data binding that builds on high-performance streaming components. Read more on this at Tutorial page.

Current functionality

So what exactly does Jackson do for you? It lets you:
  • Read (parse) valid JSON content, value by value. Parsers are constructed by JsonFactory instances, from usual sources (InputStreams, Readers, URLs, Files).
  • Write (generate) valid JSON content, likewise value by value. Generator are constructed by JsonFactory instances, with usual targets (OutputStreams, Writers, Files).
  • Bind JSON values to/from basic java Object (POJOs, aka beans): that is, read Json as Objects, write Objects as Json (similar to how XStream and JAXB work with xml, but using JSON)
  • Alternatively, read and write Json content as a tree (similar to DOM for xml), JsonNode being the common node base class. This allows simple path-based access, dynamic modifications, but still very efficiently compared to xml tree models.

Download

Check Codehaus for downloads and source control repository access.

Mailing Lists

Mailing lists (dev, user) are hosted by Codehaus and open for subscription.

Future

Future plans are discussed on mailing lists (see above), and documented in Codehaus Jira system.

Authors

Jackson package is being developed by Jackson development team, and accessible via mailing lists. User community is considered to be helpful and active, especially by members of the community itself. :)

The original author (Tatu Saloranta) is accessible via email address "cowtowncoder" at "yahoo" dot "com" (and "tatu" at "fasterxml" dot "com").

Tatu likes to hear praise, will try to gracefully accept criticism.
He also has the habit of scribbling about various related and non-related things at Cowtown Blog (readers beware!).


Back to Cowtowncoder.com Hatchery page.