-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.21
Tatu Saloranta edited this page Feb 7, 2026
·
62 revisions
Jackson Version 2.21 was released on January 18, 2026. No release candidates were released prior to final 2.21.0.
This wiki page gives a list of links to all changes (with brief descriptions) that are included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing).
Branch is open for new patch releases.
It is designated as a Long-Term-Support (LTS) version.
- 2.21.1 (not yet released)
New datatype module added in jackson-modules-base:
- databind#5361 fixes CycloneDX SBOM publishing so it finally works.
Same as Jackson 2.20, SDK 26
Same as Jackson 2.20; mostly Java 8, with some modules requiring later JDKs:
-
jackson-datatype-hibernate: JDK 17 to build due to Hibernate7 requiring it -
jackson-jakarta-providers: JDK 11
Same as Jackson 2.20
No changes.
None.
-
#1381: Add a way to specify "inject-only" with
@JacksonInject
-
#314: Add
JsonInclude.Valueconvenience constants -
#315: Add
@JsonDeserializeAs -
#316: Make
JsonFormat.Featuresjava.io.Serializable -
#320: Add
radixproperty to@JsonFormatannotation- NOTE: supported only by Jackson 3.x (3.1+)
-
#324: Add
@JsonSerializeAs -
#326: Add
JsonTypeInfo.As.NOTHINGvalue
- #363: UTF-8 decoding should fail on Surrogate characters (0xD800 - 0xDFFF)
-
#708:
FilteringParserDelegatecannot deserialize empty list -
#1180:
JsonLocationoff for unrecognized tokens -
#1418:
TokenFilter#includeEmptyArray()causes an error in some cases where an object element is filtered -
#1470: Add method
copyCurrentStructureExact()toJsonGenerator -
#1477: Add
JsonGenerator.has(StreamWriteCapability)convenience method - #1500: Add checks for surrogate pairing for UTF-8 generation
-
#1512: Number-parsing fix for
UTF8DataInputJsonParser
-
#1381: Add a way to specify "inject-only" with
@JacksonInject(MOST WANTED) -
#1547: Un-deprecate
SerializationFeature.WRITE_EMPTY_JSON_ARRAYS -
#5045: If there is a no-parameter constructor marked as
JsonCreatorand a constructor reported asDefaultCreator, latter is incorrectly used -
#5203: Fix
nullhandling ofEnumSetDeserializer -
#5293: Fix minor typo in
PropertyBindingException.getMessageSuffix() -
#5313: Expose
getConverter()inStdDelegatingSerializerfor improved customizability - #5361: Fix Maven SBOM publishing
-
#5368: Optimize performance of
ObjectMapper.convertValue()whenTokenBufferpassed asfromValue -
#5398:
@JsonProperty.value+@JsonIgnoreon setter does not work anymore since 2.18.4 - #5413: Add/support forward reference resolution for array values
- #5429: Formatting and Parsing of Large ISO-8601 Dates is inconsistent
-
#5475: Support
@JsonDeserializeAsannotation -
#5476: Support
@JsonSerializeAsannotation -
#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
- #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
- Upgrade
avrolib dep to 1.11.5 (from 1.11.4)
- #599: Unable to deserialize stringref-enabled CBOR with ignored properties
- #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#10: Missing
nullwrites when writingObject[]values -
#479:
STRICT_CHECK_FOR_QUOTINGdoes not quote value that contains newline character
-
#623: (ion) Upgrade
ion-javadep to 1.11.11 (from 1.11.10) - #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
- #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
- #628: Uncommon parent pom dependency configuration in Jackson 2.20/3.0
-
#114:
XmlMapperdoes not supportStreamReadFeature.STRICT_DUPLICATE_DETECTION
-
#154: YAML file with no content throws
MismatchedInputExceptionwhen binding to Object type (POJO etc)
-
#198: Add support for
MutableSortedMap/ImmutableSortedMapdeserialization
-
#195: Add support for
RangeMapclass
-
#359:
InstantDeserializerdeserializes the nanosecond portion of fractional negative timestamps incorrectly:-1.000000001deserializes to1969-12-31T23:59:59.000000001Zinstead of1969-12-31T23:59:58.999999999Z -
#376: Allow specifying custom
DateTimeFormatterforOffsetDateTimeser/deser (new constructors?) -
#381: Fix a potential problem in
JavaTimeModule._findFactory()
-
#229: Add
jackson-module-spi-subtypesmodule
- #1039: Kotlin has been upgraded to 2.1.x.
- #1041: The deprecated MissingKotlinParameterException has been removed.
- #1042: The old StrictNullChecks backend has been removed. This improves the throughput of deserialization slightly.
- #1043: Deprecated content has been cleaned up with the version upgrade.
- #1085: The addMixIn extension function is now available in the generic MapperBuilder.