-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.19
Tatu Saloranta edited this page Apr 5, 2025
·
88 revisions
Jackson Version 2.19 development is on-going in April, 2025.
This wiki page gives a list of links to all changes (with brief descriptions) that will be included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing).
Branch is under development.
No release yet
Two new datatype modules added in jackson-datatypes-misc:
-
jackson-datatype-javax-money
: support for basic Java Money (JSR-354) datatypes -
jackson-datatype-moneta
: support for extended Java Money datatypes JSR-354 RI, Moneta offers
Same as Jackson 2.18, SDK 26
Same as Jackson 2.18 -- mostly Java 8
- Handling of "orphan" tildes (
~
not part of~0
or~1
escape sequence) changed:-
#1361:
JsonPointer
parsing of '~' not followed by "0" or "1" unexpected - NOTE: use of such "orphan" tildes is not (well) covered by JSON Pointer specs so expected handling is not defined.
- Old behavior used
~
as "general escape", i.e. skipped~
and included following character - New behavior feels more expected: unpaired
~
will simply be included as-is
-
#1361:
-
#1467: Support
@JsonUnwrapped
with@JsonCreator
-
#280: Minor change to
module-info.java
: use "open module" - #281: [gradle-module-metadata-maven-plugin] update to version 1.0
-
#284: Add
OptBoolean
valued@JsonProperty.isRequired
to (eventually) replace@JsonProperty.required
-
#633: Allow skipping
RS
CTRL-CHAR to support JSON Text Sequences -
#1328: Optimize handling of
JsonPointer.head()
-
#1356: Make
JsonGenerator::writeTypePrefix
method to not write aWRAPPER_ARRAY
whentypeIdDef.id == null
-
#1361:
JsonPointer
parsing of '~' not followed by "0" or "1" unexpected -
#1394: Wrong/misleading error for "extra" close token (
]
or}
) when at root level - #1409: [gradle-module-metadata-maven-plugin] update to version 1.0
-
#1467: Support
@JsonUnwrapped
with@JsonCreator
-
#2145: Add
JsonNode.optional(String name)
andoptional(int index)
methods -
#2461: Nested
@JsonUnwrapped
property names not correctly handled -
#2951: Allow inverting
@JsonProperty(access=)
withMapperFeature.INVERSE_READ_WRITE_ACCESS
to work differently on server and client side -
#4388: Allow using
@JsonPropertyOrder
with "any" (@JsonAnyGetter
) properties -
#4650:
PrimitiveArrayDeserializers
should deal with single String value ifDeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY
enabled - #4674: Allow setting global enum naming strategy similar to property naming strategy
- #4676: Support other enum naming strategies than camelCase
-
#4680: Custom key deserialiser registered for
Object.class
in nested Map object is ignored when Map key type not defined -
#4771:
QName
(de)serialization ignores prefix -
#4772: Serialization and deserialization issue of sub-types used with
JsonTypeInfo.Id.DEDUCTION
where sub-types are Object and Array -
#4773:
SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS
should not apply to Maps with uncomparable keys -
#4801: Add
JsonNodeFeature.USE_BIG_DECIMAL_FOR_FLOATS
to allow overridingDeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS
- #4849: Not able to deserialize Enum with default typing after upgrading 2.15.4 -> 2.17.1
-
#4863: Add basic Stream support in
JsonNode
:valueStream()
,entryStream()
,forEachEntry()
-
#4867: Add
Optional<JsonNode> JsonNode.asOptional()
convenience method - #4896: Coercion shouldn't be necessary for Enums specifying an empty string
-
#4915: Cannot access attributes from
Converter
-
#4934:
DeserializationContext.readTreeAsValue()
handles null nodes differently fromObjectMapper.treeToValue()
-
#4938: Allow
@JsonCreator
annotated Creator to returnnull
- #4953: Allow clearing all caches to avoid classloader leaks
-
#4955: Add more remove methods for
ArrayNode
,ObjectNode
[STEP-3] -
#4959: Add explicit deserializer for
ThreadGroup
-
#4961: Serialization for
JsonFormat.Shape.ARRAY
does not work when there is@JsonAnyGetter
-
#4963: Serializing
Map.Entry
as Bean with@JsonFormat.shape = Shape.OBJECT
fails on JDK 17+ -
#4979: Allow default enums with
@JsonCreator
-
#4997:
ObjectNode
put methods should do null check for key -
#5006: Add
MapperFeature.REQUIRE_HANDLERS_FOR_JAVA8_OPTIONALS
to prevent failure ofjava.util.Optional
(de)serialization without Java 8 module -
#5014: Add
java.lang.Runnable
as unsafe base type inDefaultBaseTypeLimitingValidator
-
#5020: Support new
@JsonProperty.isRequired
for overridable definition of "required-ness" -
#5027: Add
DeserializationFeature.FAIL_ON_SUBTYPE_CLASS_NOT_REGISTERED
-
#5052: Minor bug in
FirstCharBasedValidator.forFirstNameRule()
: returnsnull
in non-default case -
#5069: Add copy-constructor for
MappingIterator
-
#308: Incorrect serialization for
LogicalType.Decimal
(JavaBigDecimal
) -
#388:
@JsonEnumDefaultValue
not supported when using AvroMapper to generate schema from Java class - #422: Avro generation failed with enums containing values with special characters
- #535: AvroSchemaGenerator: logicalType(s) never set for non-date classes
-
#536: Add Logical Type support for
java.util.UUID
-
#31: Header names seem to be trimmed (add
CsvParser.Feature.TRIM_HEADER_SPACES)
) -
#554: Enforce, document thread-safety of
CsvSchema
- #300: Floats are encoded with sign extension while doubles without
-
#502: Add an optional extended parser subclass (
YAMLAnchorReplayingFactory
) able to inline anchors - #537: Snakeyaml 2.4
-
#1: Add deserialization support for
Table<R, C, V>
-
#336: Optimize
InstantDeserializer
addInColonToOffsetIfMissing()
-
#337: Negative
Duration
does not round-trip properly withWRITE_DURATIONS_AS_TIMESTAMPS
enabled -
#342: Lenient deserialization of
LocalDate
,LocalDateTime
is not time-zone aware - #364: Deserialization of Month in ONE_BASED_MONTHS mode fails for value "12"
-
#285:
JacksonBlackbirdAccess
Class access exception with Groovy Script serialization usingBlackbirdModule
- #290: Update Paranamer dep from 2.8 to 2.8.3
- #835: Remove old SingletonSupport class and unified with KotlinFeature.SingletonSupport.
- #839: Remove useKotlinPropertyNameForGetter and unify with kotlinPropertyNameAsImplicitName.
- #858: Minor performance improvement of findDefaultCreator in edge cases.
- #200: Narrow types to format specific (e.g. CBORMapper) when resolving via JAX-RS Providers
- #36: Narrow types to format specific (e.g. CBORMapper) when resolving via JAX-RS Providers
-
#171: Add a
JSON.Feature.WRITE_RECORD_FIELDS_IN_DECLARATION_ORDER
for retaining Serialization order of Java Records (instead of alphabetic)