Skip to content

Jackson Release 2.4

Tatu Saloranta edited this page May 20, 2014 · 28 revisions

Version 2.4[.0] is currently being developed, as of March 2014. It will be 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.4.0 (described here), following patch releases have been made or are planned:

(none yet)

Changes: compatibility

Support for oldest Android versions (2.x) will not be continued, as Jackson modules may use full feature set of JDK 1.6.

Scala module will only support Scala 2.10 and above (and will support 2.11 for the first time)

Changes: functional, high-level

The biggest improvement with 2.4 is the ability to finally resolve so-called Object Id Forward References between objects: that is, declaration of an Object Id need not come before reference in document order (or be directly reference from within same object).

Resolution of property name conflicts has been improved: "cleaved" properties are not considered to be conflicts, as long there are no ambiguities in renaming (with 2.3 and earlier some cases with alternate names are considered errors even if intent can be decuded and there is no actual ambiguity). Part of the fix includes distinguishing between implicit and explicit names for parameters as well, in cases where implicit names can be introspector (using Paranameter, or JDK8 feature).

Other planned high-level improvements include:

  • Improved support for value conversions that include JsonNode values.

Changes, core

  • #31: Allow use of @JsonPropertyOrder for properties (not just classes)
  • #32: Add @JsonProperty.index for indicating optional numeric index of the property.
  • #121: Increase size of low-level byte[]/char[] input/output buffers (from 4k->8k for bytes, 2k->4k for chars)
  • #127: Add JsonGenerator.writeStartArray(int size) for binary formats
  • #88: Prevent use of type information for JsonNode via default typing
  • #149: Allow use of "stringified" indexes for Enum values
  • #176: Allow use external Object Id resolver (to use with @JsonIdentityInfo etc)
  • #335: Allow use of @JsonPropertyOrder(alphabetic=true) for Map properties
  • #353: Problems with polymorphic types, JsonNode (related to #88)
  • #359: Converted object not using explicitly annotated serializer
  • #369: Incorrect comparison for renaming in POJOPropertyBuilder
  • #375: Add readValue()/readPropertyValue() methods in DeserializationContext
  • #381: Allow inlining/unwrapping of value from single-component JSON array
  • #390: Change order in which managed/back references are resolved (now back-ref first, then forward)
  • #407: Properly use null handlers for value types when serializer Collection and array types
  • #428: PropertyNamingStrategy will rename even explicit name from @JsonProperty
  • #434: Ensure that DecimalNodes with mathematically equal values are equal

Changes, Data Formats

  • #76: UnrecognizedPropertyException when containing object is a Collection
  • #83: Add support for @JsonUnwrapped
  • #99: Problem with DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Lists
  • #108: Unwrapped list ignore attributes if 2 lists in sequence
  • #111: Make vanilla JaxbAnnotationIntrospector work, without having to use XmlJaxbAnnotationIntrospector

Changes, Data Types

  • #43: Add support for HostAndPort
  • #53: When JPA annotations are not used, collections are always loaded (added Hibernate4Module.Feature.REQUIRE_EXPLICIT_LAZY_LOADING_MARKER with default value of false)

The very first official release:

  • Supports java.nio.file.Path

Changes, JAX-RS

  • #49: Add JaxRSFeature.ALLOW_EMPTY_INPUT, disabling of which can prevent mapping of empty input into Java null value

Changes, Jackson jr

The very first official release!

Changes, Other modules

Parameter Names (JDK8 only)

The very first official release!

  • Support discovery of parameter names for JSON Creator methods.
Clone this wiki locally