-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 3.2
Tatu Saloranta edited this page Apr 8, 2026
·
104 revisions
Jackson Version 3.2 is under development as of February, 2026.
This wiki page gives a list of links to all changes (with brief descriptions) that will be included.
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.
No release yet.
Up to SDK 34 for all components (Jackson 3.1 had SDK 26 for jackson-core, 34 for jackson-databind).
Verified by "Animal Sniffer" plug-in.
Same as Jackson 3.1; Java 17.
Same as Jackson 3.1?
No changes.
-
#1329 -- External type property (
@JsonTypeInfo(include = As.EXTERNAL_PROPERTY)) deserialized even ifvisible = false-- fixed to now properly consider visibility- Fixes behavior but since wrong behavior has been in for a long time (since Jackson 2.7), a new
MapperFeature.EXTERNAL_TYPE_ID_ALWAYS_VISIBLE(default:false) was added: it can be enabled to change behavior back to pre-3.2. (i.e. External Type Id property always visible)
- Fixes behavior but since wrong behavior has been in for a long time (since Jackson 2.7), a new
-
#5734 -- "
DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVEStreats absent field same as explicitnull" -- changed handling so missing primitive values no longer fail unlessDeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIESis enabled
Issues with at least 5 thumbs-ups that were resolved in this version:
-
databind#1757: Regression in
JsonInclude.Include.NON_DEFAULTset as global default serialization inclusion (add newMapperFeature.USE_REAL_INCLUDE_NON_DEFAULT) -
dataformat-xml#247:
@JacksonXmlRootElementdoes not enforce the local name during deserialization (addXmlReadFeature.ENFORCE_ROOT_ELEMENT_NAME) -
dataformat-xml#306: Can not use
@JacksonXmlTextfor Creator property (creator parameter) -
dataformats-text#36: Allow emitting YAML comments (
YAMLGenerator.writeComment())
No separate 3.x versions released, uses jackson-annotations 2.22.
- #679: Number parsing should fail for trailing dot (period)
-
#1211: Add
JsonParser.willInternPropertyNames()to check whether property name interning is enabled -
#1544: Validate
read()parameters inMergedStreamandUTF32Reader - #1545: Increase Android baseline from 26 to 34 in Jackson 3.2
-
#1564: Add
SimpleStreamReadContext.rollbackValueRead()method -
#1575: Implement document length tracking for
DataInput-backed JSON parsers via subclass - #1576: Use Java 17 intrinstics for long multiplication
-
#1593: Add
JsonGenerator.writeComment(String),JsonGenerator.canWriteComments()
-
#639:
@JacksonInjectwith@JsonIdentityInfocauses deserialization failure (unresolved forward reference) -
#644: Allow skipping writing of type id if type to serialize is
defaultImpl -
#1075:
@JsonUnwrappedfields with matching@JsonIgnored getter in outer class are ignored -
#1281:
@JsonIgnorePropertiesshould work for "any getter" (for serialization) -
#1298: Writing ObjectId reference for
@JsonUnwrappedproperty fails with obscure error message -
#1329: External type property (
@JsonTypeInfo(include = As.EXTERNAL_PROPERTY)) deserialized even ifvisible = false -
#1410: Overlap between
@JsonTypeInfo.As.PROPERTYindicated type id and field with same name results inUnrecognizedPropertyException -
#1515:
@JsonSerialize(Typing.DYNAMIC)in some cases does not overrideMapperFeature.USE_STATIC_TYPING -
#1622: Failure to deserialize child object when using
@JsonIgnorePropertiesto break cycle -
#1706:
@JsonCreatornot working properly with@JsonIdentityInfowhen deserializing a collection of interfaces (immutables.io compatibility) -
#1755: Get NPE on deserializing values with recursive
@JsonIgnoreProperties -
#1757: Regression in
JsonInclude.Include.NON_DEFAULTset as global default serialization inclusion (add newMapperFeature.USE_REAL_INCLUDE_NON_DEFAULT) -
#2039:
@JsonUnwrappedandJsonTypeInfo.As.EXTERNAL_PROPERTYin the same bean doesn't work -
#2572: Can't deserialize inner class if default setter is
Nulls.AS_EMPTY -
#2780: Deserialization with Default Typing and
@JsonIdentityInfoin untyped collections fails -
#3030: Correctly deserialize forward
@JsonIdentityInforeferences when using@JsonCreator -
#3064:
@JsonPropertyOrder(alphabetic=true)is ignored in case indices are defined for@JsonProperty-- addMapperFeature.SORT_PROPERTIES_BY_INDEX -
#3083:
@JsonIncludePropertiescould be used like@JsonPropertyOrder -
#3166: Ability to sort
Sets before serialization (addSerializationFeature.ORDER_SET_ELEMENTS) -
#3194: Deserialization of 2-dimensional arrays of final types fails when using
DefaultTyping.NON_FINAL -
#3216: Delegating
@JsonCreatordoes not prevent unnecessary introspection of properties, leading to bogus failure - #3205: ConfigOverrides for merging are not applied for items inside containers
- #3229: Existing instance of a local/anonymous Class cannot be updated
-
#3316: Deserialization of a date with
@JsonFormatspecified with locale that is not a language tag - #3355: Deserialization fails depending on the order of deserialized objects with "Cannot construct instance (although at least one Creator exists)"
-
#3573: Inconsistent handling of nil
UUIDin property inclusion -
#3591: Ignored fields not consistently exposed via
BeanDescription.getIgnoredPropertyNames() -
#3604: Allow use of
JsonNodefield for@JsonAnyGetter -
#4014: No way to combine
@JsonTypeInfo(include = As.PROPERTY)and@JsonIdentityInfo(generator = PropertyGenerator.class) -
#4758:
ConfigOverrideusingNulls.AS_EMPTYdoes not work with@JsonManagedReference -
#4983:
JsonTypeInfo.Id.MINIMAL_CLASSgenerates invalid type on sub-package -
#5330:
@JsonPropertyon enum values with@JsonFormat(shape = JsonFormat.Shape.NUMBER)is ignored -
#5353: Preserve order of
@JsonAnySettercreator property arguments -
#5615: JsonMapper seems to be not thread-safe when using the polymorphic
JsonTypeInfo.As.PROPERTYdefinition (and@JsonIgnoreProperties) -
#5727:
VisibilityCheckeroverridesequals()without overridinghashCode() -
#5734:
DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVEStreats absent field same as explicitnull -
#5814: Enum deserialization does not respect
JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_VALUESoverride -
#5821: Fix dead code and side-effect bug in
BeanPropertyWriter.toString() -
#5851: Regression of
JsonTypeInfo.Id.MINIMAL_CLASSin the 3.x branch -
#5860: Add new extension point for
ObjectMapper,ObjectWriter: handlerGeneratorInitializercalled immediately afterJsonGeneratorcreated, before used -
#5861: Allow injecting
MissingNodefor "absent"JsonNodevia Creator (withJsonNodeFeature.MAP_ABSENT_TO_MISSING) -
#5872: ObjectId resolution with Builder fails for interface types (
UnresolvedForwardReference)
-
#611: Remove
IOExceptionfromAvroMapper.schemaFrom()method signatures
-
#9: Incorrect detection of
hasNextValue()for simple iteration withString[] -
#210: Quote strings with leading/trailing spaces in csv (
CsvWriteFeature.QUOTE_STRINGS_WITH_LEADING_TRAILING_WHITESPACE) -
#264:
CsvMapperapplies alphabetic Property Order for Java Records -
#327: Catch and report duplicate column names in header line (add
CsvReadFeature.FAIL_ON_DUPLICATE_HEADER_COLUMNS) -
#355: Allow mapping empty cells (columns) as "absent" properties (i.e. skip) by
CsvReadFeature.EMPTY_UNQUOTED_STRING_AS_MISSING - #368: Allow skipping csv rows with only empty values (line of commas)
-
#631: Add
CsvFactory.builder().maxQuoteCheckChars()for configuring heuristic quoting check -
#634: Support for
StreamReadConstraints.maxNameLengthfor CSV parsing -
#643:
CsvParserdoesn't handle whitespace outside of quoted values correctly -
#657: CSV header validation ignores
ACCEPT_CASE_INSENSITIVE_PROPERTIES: addCsvReadFeature.CASE_INSENSITIVE_HEADERS
-
#638: Support for
StreamReadConstraints.maxNameLengthandmaxStringLengthfor Properties parsing
-
#674: Smile parser does not update
StreamReadContextindex or entry count
-
#8: Serialization of
Listincorrect if property declared as plainjava.lang.Object -
#27:
@JacksonXmlElementWrapperconflicting getter/setter definitions for property -
#149:
@JacksonXmlElementWrapperas a@JsonCreator parameternot working - #192: Two wrapped lists with items of same name conflict
-
#247:
@JacksonXmlRootElementdoes not enforce the local name during deserialization (addXmlReadFeature.ENFORCE_ROOT_ELEMENT_NAME) -
#248:
@JacksonXmlPropertywith attributes raises an exception when used with@JsonIdentityInfo -
#299:
@JsonUnwrappedwith a@JacksonXmlElementWrapper(useWrapping=false)on a collection fails reading from XML -
#306: Can not use
@JacksonXmlTextfor Creator property (creator parameter) -
#334:
@JacksonXmlElementWrapper(useWrapping=false)fails when using aDeserializerModifierthat delegates -
#344: Unable to (de)serialize
nullin polymorphic Collection -- may need to usexsi:nilhandling? -
#358: Allow skipping attributes from the
http://www.w3.org/2001/XMLSchema-instancenamespace (with newXmlReadFeature.SKIP_UNKNOWN_XSI_ATTRIBUTES) -
#426:
InvalidTypeIdExceptionwhen parsing XML to POJO containing nestedList<>, customTypeIdResolver -
#448: Allow use of
@JsonRawValuewithout wrapping element - #449: Trouble dealing with JacksonXMLText if properties are present or if element is in a collection
- #455: Can't deserialize list in JsonSubtype when type property is visible
-
#496: Root name missing when root element has no attributes (add
FromXmlParser.getRootElementName()) -
#514: Deserialisation to polymorphic class using
JsonTypeInfo.Id.DEDUCTIONand@JacksonXmlElementWrapperannotation fails - #517: XML wrapper doesn't work with java records
- #525: Order of XML Properties trigger different behaviors with polymorphic nested objects
-
#565: Blank text is ignored in
@JacksonXmlText -
#561: Deserializing empty timestamp fields to
nullvalue doesn't work (instead becomes "empty", Epoch time) - #567: First element in unwrapped XML array is ignored during deserialization to base class
- #608: Jackson fails to instantiate class when only text node is present
-
#615: Deserialization of Xml with
@JacksonXmlTextusing@JsonCreator(intojava.util.Map) fails -
#627: Disabling wrapper on list (
defaultUseWrapper = false) does not serialize/deserializenulllists as expected -
#629:
@JsonAnySettermangles nested xml Elements and Attributes during serialization -
#665:
@JacksonXmlPropertyappears to behave differently than@JsonPropertywhen used on java records -
#735: Java Record with
@JacksonXmlTextstopped working with 2.18 -
#762: Unwrapping lists does not work inside
@JsonUnwrapped -
#767: Unwrapped lists cannot be deserialized when using
JsonTypeInfo.As.EXISTING_PROPERTY -
#795:
HttpHeaderobject (= ) is not wrapped by the XML<property>tag -
#802: Serialization with Polymorphisme and
EXTERNAL_PROPERTY= duplicate property -
#845: Implement
JsonGeneratormethodswriteComment()andcanWriteComments()
-
#22: YAML anchors don't seem to work with
@JsonCreator -
#25: YAML anchor error when
@JsonSubTypesused -
#36: Allow emitting YAML comments (
YAMLGenerator.writeComment()) -
#109:
YAMLMapperdoesn't close output file if an error occurs -
#214: Expose custom tags via
YAMLParser.getRawTag() -
#276: Support opting out of octal number interpretation (like "0444"); add
YAMLReadFeature.PARSE_OCTAL_NUMBERS -
#292: YAML anchor
UnresolvedForwardReferencewith builder - #623: Add support for YAML 1.2 non-finite (Infinite, -Infinite, NaN) numbers, Octal notation
-
#636: Support for
StreamReadConstraints.maxNameLengthandmaxStringLengthfor YAML parsing
-
#183: Bump
joda-timedependency to2.14.1
-
#314:
ObjectMapperwithjackson-module-afterburner:java.lang.IllegalStateException: Multiple definitions of method getBody found