Jackson Release 2.5

Tatu Saloranta edited this page May 17, 2016 · 40 revisions

Version 2.5.0 was released January 1st, 2015. It is a "minor" release following 2.4, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases.

Patches

Beyond initial 2.5.0 (described here), following patch releases have been made or are planned:

Branch is now closed, meaning that no further full patch releases are planned. Micro-patches for individual components are still possible, in case of uncovering critical flaws.

Changes: compatibility

No changes to JDK requirements or baseline requirements/supports for external platforms (like Android or Scala versions).

One accidental change is with serialization of Map.Entry (see #565 for details): before 2.5, serialization used default POJO approach, resulting in something like:

{ "key" : <key string>, "value" : <value object> }

but with #565 output was simplified to be:

{ <key string> : <value object> }

to support more natural serialization of things like List<Map.Entry>. It is worth noting that before 2.5 only serialization would work; deserialization was not supported. With 2.5, both serialization and deserialization work.

Changes, core

Core Annotations

  • #47: Add @JsonCreator.mode property to explicitly choose between delegating- and property-based creators
  • #48: Allow @JsonView for (method) parameters too (not used by Jackson itself, but requested by frameworks)
  • Added @JsonInclude.content to allow specifying inclusion criteria for java.util.Map entries separate from inclusion of Map values

Core Streaming

  • #47: Support @JsonValue for (Map) key serialization
  • #148: BytesToNameCanonicalizer can mishandle leading null byte(s).
  • #164: Add JsonGenerator.Feature.IGNORE_UNKNOWN (but support via individual data format modules)

Core Databind

  • #113: Problem deserializing polymorphic types with @JsonCreator
  • #165: Give custom Deserializers access to the resolved target Class of the currently deserialized object (via DeserializationContext.getContextualType() during createContextual() callback)
  • #421: @JsonCreator not used in case of multiple creators with parameter names
  • #521: Keep bundle annotations, prevent problems with recursive
  • #527: Add support for @JsonInclude(content=Include.NON_NULL) (and others) for Maps
  • #528: Add support for JsonType.As.EXISTING_PROPERTY
  • #539: Problem with post-procesing of "empty bean" serializer
  • #540: Support deserializing [] as null or empty collection when the java type is a not an object (aka "work around PHP issues")
  • #543: Problem resolving self-referential recursive types
  • #552: Improved handling for ISO-8601 (date) format
  • #560: @JsonCreator to deserialize BigInteger to Enum
  • #565: Add support for handling Map.Entry
  • #566: Add support for case-insensitive deserialization (MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)
  • #571: Add support in ObjectMapper for custom ObjectReader, ObjectWriter (sub-classes)
  • #607: Allow (re)config of JsonParser.Features via ObjectReader
  • #608: Allow (re)config of JsonGenerator.Features via ObjectWriter
  • #622: Support for non-scalar ObjectId Reference deserialization (like JSOG)
  • #631: Update current value of JsonParser, JsonGenerator from standard serializers, deserializers
  • #638: Add annotation-based method(s) for injecting properties during serialization (using @JsonAppend, VirtualBeanPropertyWriter)
  • #654: Add support for (re)configuring JsonGenerator.setRootValueSeparator() via ObjectWriter
  • #653: Added MapperFeature.USE_STD_BEAN_NAMING (by default, Jackson property name handling differs from std if 2 first chars are upper case)
  • #655: Add ObjectWriter.writeValues() for writing value sequences
  • #660 @JsonCreator-annotated factory method is ignored if constructor exists

Changes, Data Formats

CSV

  • #50: Support JsonGenerator.Feature.IGNORE_KNOWN for CSV, to ignoring extra columns
  • #53: Add a way to specify "null value" (String) for CsvGenerator to use when writing nulls (part of CsvSchema; method withNullValue())
  • #56: Support comments (either via CsvSchema, or using std `JsonParser.Feature.ALLOW_YAML_COMMENTS.
  • #57: Support simple array values
  • #61: Add a feature to always quote non-numeric values: CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS

YAML

  • #22: Add support for disabling use of YAML native Type Ids
  • #23: Add support for disabling use of YAML native Object Ids

Changes, other modules

JSON Schema

  • #32: Add support for Bean Validation (JSR-303) annotations
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.