Skip to content

Jackson Release 2.6

Tatu Saloranta edited this page Aug 11, 2015 · 40 revisions

Version 2.6.0 was released July 17th, 2015. It is a "minor" release following 2.5, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases.

Patches

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

Changes: compatibility

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

Changes, core

  • #43: Add @JsonFormat(with=Feature.xxx) to support things like DeserializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED on per-property basis.
  • #58: Add new properties for @JsonIgnoreProperties, "allowGetters", "allowSetters"
  • #60: Add new value type, OptBoolean, for "optional booleans", to support proper handling and usage of default values, not just explicit true/false.
  • #61: Add new property, @JsonProperty.access (and matching enum) to support read-only/write-only properties
  • #64: Add @Documented for @JsonPropertyDescription
  • #137: Allow filtering content read via JsonParser by specifying JsonPointer; uses new class com.fasterxml.jackson.core.filter.FilteringParserDelegate (and related, TokenFilter)
  • #177: Add a check so JsonGenerator.writeString() won't work if writeFieldName() expected.
  • #182: Inconsistent TextBuffer.getTextBuffer() behavior
  • #185: Allow filtering content written via JsonGenerator by specifying JsonPointer; uses new class com.fasterxml.jackson.core.filter.FilteringGeneratorDelegate (and related, TokenFilter)
  • #188: JsonParser.getValueAsString() should return field name for JsonToken.FIELD_NAME, not null
  • #189: Add JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING (default: true), which may be disabled to prevent use of ThreadLocal-based buffer recyling.
  • #195: Add JsonGenerator.getOutputBuffered() to find out amount of content buffered, not yet flushed.
  • #196: Add support for FormatFeature extension, for format-specifc Enum-backed parser/generator options
  • Other:
    • Minor improvement to construction of "default PrettyPrinter": now overridable by data format modules
    • Implement a new yet more optimized symbol table for byte-backed parsers
    • Add JsonParser.Feature.IGNORE_UNDEFINED, useful for data formats like protobuf
  • #77: Allow injection of 'transient' fields
  • #95: Allow read-only properties with @JsonIgnoreProperties(allowGetters=true)
  • #296: Serialization of transient fields with public getters (add MapperFeature.PROPAGATE_TRANSIENT_MARKER)
  • #312: Support Type Id mappings where two ids map to same Class
  • #348: ObjectMapper.valueToTree() does not work with @JsonRawValue
  • #504: Add DeserializationFeature.USE_LONG_FOR_INTS
  • #624: Allow setting external ClassLoader to use, via TypeFactory
  • #649: Make BeanDeserializer use new parser.nextFieldName() and .hasTokenId() methods
  • #664: Add DeserializationFeature.ACCEPT_FLOAT_AS_INT to prevent coercion of floating point numbers int int/long/Integer/Long
  • #677: Specifying Enum value serialization using @JsonProperty
  • #688: Provide a means for an ObjectMapper to discover mixin annotation classes on demand
  • #689: Add ObjectMapper.setDefaultPrettyPrinter(PrettyPrinter)
  • #696: Copy constructor does not preserve _injectableValues
  • #698: Add support for referential types (ReferenceType)
  • #700: Cannot Change Default Abstract Type Mapper from LinkedHashMap
  • #725: Auto-detect multi-argument constructor with implicit names if it is the only visible creator
  • #727: Improve ObjectWriter.forType() to avoid forcing base type for container types
  • #734: Add basic error-recovery for ObjectReader.readValues()
  • #737: Add support for writing raw values in TokenBuffer
  • #740: Ensure proper null (as empty) handling for AtomicReference
  • #743: Add RawValue helper type, for piping raw values through TokenBuffer
  • #756: Disabling SerializationFeature.FAIL_ON_EMPTY_BEANS does not affect canSerialize()
  • #762: Add ObjectWriter.withoutRootName(), ObjectReader.withoutRootName()
  • #777: Allow missing build method if its name is empty ("")
  • #781: Support handling of @JsonProperty.required for Creator methods
  • #787: Add ObjectMapper setFilterProvider(FilterProvider) to allow chaining
  • #790: Add JsonNode.equals(Comparator<JsonNode>, JsonNode) to support configurable/external equality comparison
  • #794: Add SerializationFeature.WRITE_DATES_WITH_ZONE_ID to allow inclusion/exclusion of timezone id for date/time values (as opposed to timezone offset)
  • #795: Converter annotation not honored for abstract types
  • #810: Force value coercion for java.util.Properties, so that values are Strings
  • #811: Add new option, JsonInclude.Include.NON_ABSENT (to support exclusion of JDK8/Guava Optionals)
  • #813: Add support for new property of @JsonProperty.access to support read-only/write-only use cases
  • #820: Add new method for ObjectReader, to bind from JSON Pointer position
  • #824: Contextual TimeZone changes don't take effect wrt java.util.Date, java.util.Calendar serialization
  • #827: Fix for polymorphic custom map key serializer
  • #840: Change semantics of @JsonPropertyOrder(alphabetic) to only count true value
  • #848: Custom serializer not used if POJO has @JsonValue
  • #849: Possible problem with NON_EMPTY exclusion, ints, Strings
  • #868: Annotations are lost in the case of duplicate methods

Changes, Data formats

  • #72: Recognize the configured "null value" (String) also in reader-infrastructure.
  • #74: Problems with ordering, @JsonPropertyOrder losing alphabetic ordering
  • #83: Serializing List with null values leads to corrupt CSV

The very first official release!

  • #35: Add YAMLGenerator.Feature.SPLIT_LINES to allow controlling whether SnakeYAML splits longer text blocks with line breaks or not
    • Also: upgrade to SnakeYAML 1.15

Changes, Jackson jr

  • #24: String/byte[] composers can not write POJOs (ObjectCodec not linked)
  • Other
    • Minor performance optimizations (+10-20% throughput), using new jackson-core 2.6 methods for reading, writing

Changes, JAX-RS

  • #39: Build alternate jars with qualifier "no-metainf-services", which do NOT include META-INF/services metadata for auto-registration
Clone this wiki locally