Skip to content

Jackson Release 3.3

Tatu Saloranta edited this page Aug 22, 2026 · 39 revisions

Jackson Version 3.3 is under development as of June, 2026.

This wiki page gives a list of links to all changes (with brief descriptions) that will be included.

Status

Version is under development (under branch 3.x).

It will likely not be designated as Long-Term-Support (LTS) since 3.1 is an LTS.

Patches

No release yet.

Documentation

Articles, Blog posts

Changes, compatibility

Android

Up to SDK 34 for all components (Jackson 3.2 had SDK 26 for jackson-core, 34 for jackson-databind). Verified by "Animal Sniffer" plug-in.

JDK

Same as Jackson 3.2; Java 17.

Kotlin

Minimum supported Kotlin has been upgraded to 2.2.

Compatibility: datatype modules

No changes.

Changes, behavior

None


Major focus area(s)

Most wanted Issues resolved

Issues with at least 5 thumbs-ups that were resolved in this version:

None so far


Full Change list

Changes, core

No separate 3.x versions released, uses jackson-annotations 2.22.

  • #1637: Add JsonPointer.startsWith() method
  • #1646: Non-blocking ByteBuffer parser releaseBuffered() can write already-consumed bytes
  • #1664: UTF-8 byte-backed parsers report raw byte instead of decoded character for invalid root-value separator
  • #1127: @JsonTypeInfo with EXTERNAL_PROPERTY doesn't handle arrays of polymorphic types
  • #1803: TreeTraversingParser should allow passing of parent context
  • #3182: Support value deduplication for enumeration like values: add StringCanonicalizingConverter
  • #3947: Multiple suitable annotated Creator factory methods to be used as the Key deserializer when using record as key in Map
  • #4762: @JsonValue ignores annotations on annotated field (particularly @JsonInclude)
  • #6068: 3.x ObjectMapper.convertValue() stop throwing java.lang.IllegalArgumentException
  • #6113: Fix DOMSerializer to support polymorphic serialization
  • #6114: Fix QName object deserialization to reject non-String namespaceURI/prefix
  • #6120: Use per-node-type Type Ids for DOM values, reconstruct via DOM factory instead of always parsing a Document
  • #6128: Fail explicitly on POJO that has both @JsonFormat(shape=ARRAY) and @JsonFilter
  • #6142: SerializerCacheread-only lookup is not invalidated when replacing typed serializers
  • #6151: Add DateTimeFeature.ALWAYS_WRITE_SUBSECOND_DIGITS

Changes, data formats

CBOR

  • #624: Use more efficient (in JDK 17) String construction wrt "Compact Strings"
  • #752: Use varhandle for array access in CBORGenerator

CSV

  • #699: Add ability to modify columns in CsvSchema.Builder by name

Smile

  • #750: SmileGenerator: avoid String allocation in SmileGenerator.writeString(char[],int,int)
  • #757: Use SWAR in SmileParser
  • #759: Use more efficient String construction wrt "Compact Strings" for Smile "long" text values
  • #873: Fix handling of @JsonApplyView
  • #878: Re-apply entity/DTD hardening after JDK deserialization of XmlFactory
  • #879: Use Locale.ROOT for case folding in CaseInsensitiveNameSet
  • #882: Translate base64 name-decode errors to StreamReadException
  • #883: Translate XMLStreamReader creation errors to StreamReadException
  • #886: Escape names already starting with prefix in Base64NameProcessor
  • #887: Apply XmlNameProcessor to unwrapped ObjectNode root element name
  • #888: Honor xsi:nil in any attribute position and xs:boolean form
  • #890: Update token on 19-digit long coercion in isExpectedNumberIntToken
  • #893: Decode element name before matching virtual wrapper in _initStartElement
  • #895: Fix leading digit in AlwaysOnBase64NameProcessor encoded names
  • #899: Return null from nextStringValue() at end of input

Changes, data types

  • #85: Update Hibernate version to 7.4.1.Final

Clone this wiki locally