Jackson Release: 1.8
Version 1.8 was released April 20th, 2011, about 4 months after 1.7; see Download page.
As with all "minor versions", it is backwards compatible with earlier version, regarding public API; and with only minor changes with internal (or semi-public) interfaces. Set of such mostly-internal changes is included in release notes.
Goal for this version was to address "most wanted" features, both by users and development team. In addition, modular extensibility was a priority, so multiple improvements to Module API were included.
Implemented features, Major
- Customized low-level output encoding:
JACKSON-102: Allow forced escaping of non-ASCII characters, using JsonGenerator.Feature.ESCAPE_NON_ASCII (or JsonGenerator.setHighestNonEscapedChar
JACKSON-106: Added org.codehaus.jackson.io.CharacterEscapes which can be registered with JsonFactory, JsonGenerator, to add fully customized character escaping functionality.
JACKSON-178: Add support for custom property naming strategy.
JACKSON-494: Add pluggable format auto-detection support
Support added for basic JSON (JsonFactory), Smile (SmileFactory), as well as "jackson-xml-databinding" module (XmlFactory).
- Full support for configurable key serializers, deserializers:
JACKSON-513: Add methods for registering key serializers, deserializers, via Module API
JACKSON-519: Add support for contextual serializers, deserializers.
Implemented features, Medium
JACKSON-43: Add ObjectMapper.readValues(), ObjectReader.readValues() to allow convenient binding of sequences (arrays, root-level sequences) of values.
JACKSON-204 Add feature to allow deserializing empty Strings as nulls (for POJOs).
JACKSON-427 JsonNode: add "upsert" accessor for JsonNode (although only usable for ObjectNode); JsonNode.with(String property) -- gets or creates ObjectNode-valued property of an ObjectNode.
JACKSON-464: Add SimpleAbstractTypeResolver to allow defining mapping from abstract types to concrete types (like, say, from java.util.Collection to java.util.HashSet)
JACKSON-520: Add "FormatSchema" abstraction (mostly a tag interface); add to JsonGenerator, JsonParser, as well as to ObjectMapper, ObjectReader and ObjectWriter. For latter group of objects it will just passed to generators and parsers as opaque value.
JACKSON-521 Add a mechanism to indicate that certain non-Collection/Map types be considered Collections, Maps, by framework (needed by Scala plug-in)
JACKSON-526: Add DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, which allows implicit conversions in case where JSON format is omitting JSON array surroinding a single value (sort of invalid structure produced by some XML-to-JSON converters)
JACKSON-527: Add HandlerInstantiator abstraction (to implement, register with ObjectMapper) to allow customizing details of how JsonDeserializer, JsonSerializer, TypeIdResolver instances (and any other handler types added in future) are constructed: useful for integrating with Dependency Injection frameworks, work around class loader issues.
Implemented features, Minor
JACKSON-142: Add JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS (non-standard) feature that allows parsing "NaN", "+INF"/"+Infinite", "-INF"/"-Infinite" as double values
JACKSON-358: JsonParser: optional support for accepting leading zeroes for numbers
JACKSON-459: Add mapper-level configuration to allow default ordering of serialized properties
JACKSON-487: Change DeserializationConfig.Feature.USE_ANNOTATIONS to fully block introspection of any annotations
JACKSON-502: Change mr Bean functionality be basic Module (to simplify registration)
JACKSON-512: Allow decorating InputStream/OutputStream (and other sources/destinations) when creating JsonParser, JsonGenerator
JACKSON-555: Add JsonParser.getInputSource(), JsonGenerator.getOutputTarget() to give access to raw stream/reader/writer objects.
Initially planned but deferred features
JACKSON-132 (note: high vote count): Allow inlining/unwrapping of child objects
JACKSON-275: Support multi-argument setters (to allow co-constraints)
JACKSON-279: Retain timezone information during serialization, deserialization
JACKSON-350: Resolve classloading issues (for eg. OSGi) without changing API
JACKSON-406: Allow injection of values during deserialization
Also: JACKSON-471: similarly, allow injection during serialization
JACKSON-453: Support for 'external type id'; and possibly related issues:
JACKSON-437: Support to set logical property with value of type id that was used for deserialization
JACKSON-490 Allow subclasses to "inherit" @JsonCreator annotation from superclass constructor
