Skip to content

Jackson Release 2.4

Tatu Saloranta edited this page Apr 26, 2020 · 28 revisions

Version 2.4.0 was released in June 2014. It is a "minor" release following 2.3, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases.

Status

Branch is closed for all new releases (including micro-patches)

Patches

Beyond initial 2.4.0 (described here), following patch releases were made:

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).

Changes, core

  • #31: Allow use of @JsonPropertyOrder for properties (not just classes)
  • #32: Add @JsonProperty.index for indicating optional numeric index of the property.
  • Add JsonFormat.Value#timeZoneAsString (needed by Joda module)
  • Add @JsonRootName.namespace to allow specifying of namespace with standard Jackson annotations (not just XML-specific ones that dataformat-xml provides)
  • #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
  • #138: Add support for using char[] as input source; optimize handling of String input as well.
  • #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
  • #351: ObjectId does not properly handle forward references during deserialization
  • #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

  • #26: Inconsistent quoting of headers, values; add CsvGenerator.Feature.STRICT_CHECK_FOR_QUOTING to allow more optimal checks.
  • #32: Allow disabling of quoteChar (suggested by Jason D)
  • #40: Allow (re)ordering of columns of Schema, using CsvSchema.sortedBy(...)
  • #45: Change outputting behavior to include final commas even if values are missing; also add CsvGenerator.OMIT_MISSING_TAIL_COLUMNS
  • #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