-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 3.1
Tatu Saloranta edited this page Jan 12, 2026
·
62 revisions
Jackson Version 3.1 is being developed, as of October 2025.
This wiki page gives a list of links to all changes (with brief descriptions) that will eventually be included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing).
Version is under development (under branch 3.x)
No release yet.
- With databind#5361: CycloneDX SBOM publishing works again
Same as Jackson 3.0, SDK 34
Same as Jackson 3.0: JDK 17
Same as Jackson 3.0?
With databind#5350 -- addition of DeserializationFeature.USE_NULL_FOR_MISSING_REFERENCE_VALUES -- the default deserialization behavior of AtomicReference<T> changes to same as that of Optional<T>:
- If value is missing (absent) from incoming JSON AND
AtomicReferenceis passed through Constructor, "empty" value (new AtomicReference<>(null)) will be deserialized instead ofnull(as previously). - Change necessary to add configurability, improves consistency.
- databind#1196: Add support for collecting multiple deserialization failures during processing, not just the first one
-
#1497: Allow skipping
@JsonUnwrappedvalues if no properties matched,DeserializationFeature.USE_NULL_FOR_EMPTY_UNWRAPPEDenabled -
databind#1516: Problem with multi-argument Creator with
@JsonBackReferenceproperty -
databind#1981: Add method
remove(JsonPointer)inContainerNode
No separate 3.x versions released, uses jackson-annotations 2.21.
- #784: Optional leading plus sign not included in textual value of any integral nor all floating-point numbers
- #1506: Non-blocking parser parses numbers eagerly; does not report error with missing space
- #1514: Additional configuration to closer match Jackson 2 behavior
-
#1527:
TokenStreamFactory.createNonBlockingByteBufferParser()return type wrong
- #221: Support alternate radixes when writing numeric values as strings
-
#650:
@JsonUnwrappedprevents checks forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES - #1196: Add support for collecting multiple deserialization failures during processing, not just first one
-
#1419:
JsonFormat.Shape.POJOdoes not work forMap.Entryvia property annotation -
#1497: Allow skipping
@JsonUnwrappedvalues if no properties matched,DeserializationFeature.USE_NULL_FOR_EMPTY_UNWRAPPEDenabled -
#1516: Problem with multi-argument Creator with
@JsonBackReferenceproperty -
#1649:
@JsonInclude(content=)not working forMap-valued properties via POJO class annotation -
#1654:
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)override on property is ignored -
#1981: Add method
remove(JsonPointer)inContainerNode -
#2124: Allow coercion of '[ ]' into empty/null String with
ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT - #2438: Prevent use of setter/field in case Creator property already exists, duplicate value seen
-
#2686:
@JsonBackReferencedoes not work with a builder - #3964: Deserialization issue: MismatchedInputException, Bean not yet resolved
-
#4118: Deserialization of a certain kinds of parametrized properties fail to resolve
?into expected bounds, resulting inLinkedHashMap -
#4157: Add
MapperFeature.INFER_RECORD_GETTERS_FROM_COMPONENTS_ONLYto ignore getter method auto-detection for Records -
#4277: Deserialization
@JsonFormat(shape = JsonFormat.Shape.ARRAY)POJO withJsonTypeInfo.As.EXTERNAL_PROPERTYdoes not work -
#4629:
@JsonIncludePropertiesand@JsonIgnorePropertiesignored when deserializing Records - #4690: InvalidDefinitionException "No fallback setter/field defined for creator property" when deserializing JSON with dup property to single-property Record
-
#4708:
JsonTypeInfo.Id.DEDUCTIONshould blocks signatures for non-instantiable types (abstract classes, interfaces) -
#5115:
@JsonUnwrappedRecord deserialization can't handle name collision -
#5184:
@JsonIgnoreon record method applied to record matching field at deserialization -
#5188: Prevent use of unsupported
@JsonManagedReference/@JsonBackReferencefor Record-valued properties -
#5350: Add
DeserializationFeature.USE_NULL_FOR_MISSING_REFERENCE_VALUESfor selectingnullvs "empty/absent" value when deserializing missingOptionalvalue - #5361: Fix Maven SBOM publishing (worked in 3.0.0-rc4 but not in rc5 or later)
-
#5369: Support
@JsonInclude.contentforCollections (withSerializationFeature.APPLY_JSON_INCLUDE_FOR_CONTAINERS) -
#5405:
@JsonFormat(shape = Shape.POJO)does not work forjava.util.Mapserialization via property annotation - #5413: Add/support forward reference resolution for array values
-
#5442: Make
JsonMapper/ObjectMapperfully proxyable by CGLIB -
#5456: Additional configuration (
JsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES: true) toMapperBuilder#configureForJackson2to closer match Jackson 2 behavior -
#5475: Support
@JsonDeserializeAsannotation -
#5476: Support
@JsonSerializeAsannotation -
#5515: Support
@JsonInclude.contentfor Arrays -
#5519: Add 2 new
JavaTimeFeatures: (TRUNCATE_TO_MSECS_ON_WRITE,TRUNCATE_TO_MSECS_ON_READ) for truncatingjava.timevalues before serialization, after deserialization -
#5522:
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)doesn't work on custom Collection subclass -
#5528:
TreeBuildingGenerator#writeNumber(String)writes Number as String -
#5537: Add missing
@JsonIdentityInfohandling for implicitCollections withDeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY -
#5541: Add missing
@JsonIdentityInfohandling for implicit arrays withDeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY -
#5542:
ObjectReader.readValue()does not fail whenDeserializationFeature.FAIL_ON_UNRESOLVED_OBJECT_IDSenabled -
date-time#359:
InstantDeserializerdeserializes the nanosecond portion of fractional negative timestamps incorrectly- NOTE: ported over to embedded Java 8 Date/Time functionality
-
#619: Add
isEnabled()methods for format-specific features to mappers - #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#619: Add
isEnabled()methods for format-specific features to mappers - #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#479:
STRICT_CHECK_FOR_QUOTINGdoes not quote value that contains newline character -
#581: Add
isEnabled()methods for format-specific features to mappers
-
#619: Add
isEnabled()methods for format-specific features to mappers -
#623: Upgrade
ion-javadep to 1.11.11 (from 1.11.10) - #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#629: Unnecessary
IOExceptioninIonObjectMappermethod signatures
- #598: Protobuf parser state handling wrong for implicit close (END_OBJECT)
- #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#619: Add
isEnabled()methods for format-specific features to mappers - #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#581: Add
isEnabled()methods for format-specific features to mappers
-
#780: Add
isEnabled()methods for format-specific features to mappers
- #568: YAML - ScannerException on block scalar "\n"
-
#581: Add
isEnabled()methods for format-specific features to mappers - #590: Upgrade to the latest version of SnakeYAML Engine (3.0.1)
-
#596: Port
YAMLAnchorReplayingFactoryfrom 2.x and improve it to handle nested anchors
-
-
#581: Add field-level amount representation for Joda-Money (
@JodaMoneyannotation)
-
#581: Add field-level amount representation for Joda-Money (
- #317: Update byte-buddy to latest (1.17.8) from 1.15.1
- #317: Update byte-buddy to latest (1.17.8) from 1.15.1
-
#320: Remove
byte-buddyshading from 3.1 MrBean
-
#226: Add constructor accepting
JsonMapperConfiguratortoJackson(Jaxb)JsonProvider
-
#63: Add constructors accepting
[Format]MapperConfiguratorto providers
N/A