Skip to content

Jackson Release 2.5

Tatu Saloranta edited this page Apr 26, 2020 · 42 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.

Status

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

Patches

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

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

  • #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
  • #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)
  • #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

  • #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
  • #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

  • #32: Add support for Bean Validation (JSR-303) annotations
Clone this wiki locally