-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.20
Tatu Saloranta edited this page Aug 29, 2025
·
50 revisions
Jackson Version 2.20 was released on August 28, 2025. One release candidate (2.20.0-rc1) was released prior to final 2.20.0.
This wiki page gives a list of links to all changes (with brief descriptions) that were included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing).
Branch is open for patch releases.
- 2.20.1 (not yet released)
New datatype module added in jackson-datatype-hibernate:
Same as Jackson 2.19, SDK 26
Same as Jackson 2.19 (mostly Java 8) except:
-
jackson-annotations
now requires Java 8 (no more Java 6 baseline)
Same as Jackson 2.19?
-
jackson-annotations
no longer uses patch number: so we have version2.20
(instead of2.19.0
and so on)
Minimum supported Guava version now 22.0 (from 20.0 with 2.19 and prior) -- see guava#158
None
-
databind#5152: Support "iPhone" style capitalized properties (add
MapperFeature.FIX_FIELD_NAME_UPPER_CASE_PREFIX
)
-
#291: Add
optional
property for@JacksonInject
to allow optionally injected values - #293: Improve duplicate Id with different associated object error message
- #294: Drop patch number from version for 2.20 and later (no more 2.20.0)
- #296: Drop Java 6 compatibility for 2.20 (Java 8 baseline)
-
#1438:
ParserBase.close()
does not clear_currToken
-
#1441: Add
StreamReadFeature.CLEAR_CURRENT_TOKEN_ON_CLOSE
(default: true) -
#1448: Upgrade
FastDoubleParser
to 2.0.1 -
#1462: Deprecate
URL
-taking factory method ofJsonFactory
-
#2678:
@JacksonInject
added to property overrides value from the JSON even ifuseInput
isOptBoolean.TRUE
-
#2692: Should never call
set()
on setterless property during deserialization -
#3072: Allow specifying
@JacksonInject
does not fail when there's no corresponding value -
#4136: Drop deprecated (in 2.12)
PropertyNamingStrategy
implementations from 2.20 -
#4218: If
@JacksonInject
is specified for field and deserialized by the Creator, the inject process will be executed twice -
#4656:
DeserializationProblemHandler.handleUnexpectedToken()
cast Object to String -
#5103: Use
writeStartObject(Object forValue, int size)
forObjectNode
serialization -
#5151: Add new exception type,
MissingInjectValueException
, to be used for failed@JacksonInject
-
#5152: Support "iPhone" style capitalized properties (add
MapperFeature.FIX_FIELD_NAME_UPPER_CASE_PREFIX
) - #5192: Record types are broken on Android when using R8
-
#5194: Custom
Throwable
not serializable if usingJsonAutoDetect
settings that only detect Fields -
#5197: Add more informative exception for back-references with
record
type -
#5237: Failing
@JsonMerge
with a custom Map with a@JsonCreator
constructor -
#5238: Immutable classes with
@JsonIdentityInfo
can be deserialized; records cannot -
#5242: Support "binary vectors":
@JsonFormat(shape = Shape.BINARY)
forfloat[]
,double[]
-
#5257: Deprecate
URL
-takingreadValue()
methods inObjectMapper
,ObjectReader
-
#5271:
EnumDeserializer
fails to deserialize Enums with @JsonValue - uses table with name() key instead of @JsonValue key
-
#137: Allow exposing CBOR "undefined" value as
JsonToken.VALUE_EMBEDDED_OBJECT
(with embedded value ofnull
) -
#431: Negative
BigInteger
values not encoded/decoded correctly -
#587: Allow exposing CBOR Simple values as
JsonToken.VALUE_EMBEDDED_OBJECT
with a feature flag - #603: Add support for writing unsigned numbers to CBOR
-
#497:
UTF8Reader
throws "Need to move partially decoded character; buffer not modifiable" when read only one chinese char- NOTE: actual fix already merged in 2.19.0, marked as fixed in 2.20.0
-
#564:
CsvParser.getNumberValue()
, related, do not throw exception for non-numeric tokens
-
#497:
UTF8Reader
throws "Need to move partially decoded character; buffer not modifiable" when read only one chinese char- NOTE: TOML part fixed in 2.20, CSV part earlier (in 2.19.0)
-
768:
FromXmlParser
lacks extension point for passing customXmlTokenStream
-
#497:
UTF8Reader
throws "Need to move partially decoded character; buffer not modifiable" when read only one chinese char- NOTE: YAML part fixed in 2.20, CSV part earlier (in 2.19.0)
- #158: Increase minimum supported Guava from 20.x to 22.x for Jackson 2.20
-
#184: Add
jackson-datatype-hibernate7
module for Hibernate version 7 - #186: Update hibernate 6 code to avoid deprecated code
-
#92:
DateTime
serialization result is not same as Java 8ZonedDateTime
-
#146:
DateTime
can't be serialized with its own zone (WRITE_DATES_WITH_CONTEXT_TIME_ZONE
not respected)
- #967: Kotlin has been upgraded to 2.0.21.
- #969: Deprecated content has been cleaned up with the version upgrade.
-
#1018: Improved handling of
value class
has improved performance for both serialization and deserialization. - #1020: Exceptions thrown by the old StrictNullChecks are now the similar to the new StrictNullChecks.This means that the old StrictNullChecks will no longer throw MissingKotlinParameterException.
-
#1025: When a null is entered for a non-null parameter, the
KotlinInvalidNullException
is now thrown instead of the deprecatedMissingKotlinParameterException
. The new exception is a subclass ofInvalidNullException
. See #617 for information contained in this exception
- #758: Deprecate methods that take URL inputs