-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.19
Tatu Saloranta edited this page Apr 11, 2025
·
95 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).
Development closing to release: 2.19.0-rc2 being released on 07-Apr-2025.
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~0or~1escape sequence) changed:-
#1361:
JsonPointerparsing 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
@JsonUnwrappedwith@JsonCreator
-
#280: Minor change to
module-info.java: use "open module" - #281: [gradle-module-metadata-maven-plugin] update to version 1.0
-
#284: Add
OptBooleanvalued@JsonProperty.isRequiredto (eventually) replace@JsonProperty.required
-
#633: Allow skipping
RSCTRL-CHAR to support JSON Text Sequences -
#1144:
FilteringParserDelegatecan go into an infinite loop if underlying parser is non-blocking -
#1328: Optimize handling of
JsonPointer.head() -
#1356: Make
JsonGenerator::writeTypePrefixmethod to not write aWRAPPER_ARRAYwhentypeIdDef.id == null -
#1361:
JsonPointerparsing 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
@JsonUnwrappedwith@JsonCreator -
#2145: Add
JsonNode.optional(String name)andoptional(int index)methods -
#2461: Nested
@JsonUnwrappedproperty names not correctly handled -
#2951: Allow inverting
@JsonProperty(access=)withMapperFeature.INVERSE_READ_WRITE_ACCESSto work differently on server and client side -
#3343: Allow BeanPropertyWriter Sub-classes to Override
get()(removefinal) -
#4388: Allow using
@JsonPropertyOrderwith "any" (@JsonAnyGetter) properties -
#4650:
PrimitiveArrayDeserializersshould deal with single String value ifDeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAYenabled - #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.classin 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.DEDUCTIONwhere sub-types are Object and Array -
#4773:
SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYSshould not apply to Maps with uncomparable keys -
#4801: Add
JsonNodeFeature.USE_BIG_DECIMAL_FOR_FLOATSto 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
@JsonCreatorannotated 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.ARRAYdoes not work when there is@JsonAnyGetter -
#4963: Serializing
Map.Entryas Bean with@JsonFormat.shape = Shape.OBJECTfails on JDK 17+ -
#4979: Allow default enums with
@JsonCreator -
#4997:
ObjectNodeput methods should do null check for key -
#5006: Add
MapperFeature.REQUIRE_HANDLERS_FOR_JAVA8_OPTIONALSto prevent failure ofjava.util.Optional(de)serialization without Java 8 module -
#5014: Add
java.lang.Runnableas unsafe base type inDefaultBaseTypeLimitingValidator -
#5020: Support new
@JsonProperty.isRequiredfor overridable definition of "required-ness" -
#5027: Add
DeserializationFeature.FAIL_ON_SUBTYPE_CLASS_NOT_REGISTERED -
#5052: Minor bug in
FirstCharBasedValidator.forFirstNameRule(): returnsnullin non-default case -
#5063:
SimpleModulenot registered due togetTypeId()returning an empty string -
#5069: Add copy-constructor for
MappingIterator
-
#308: Incorrect serialization for
LogicalType.Decimal(JavaBigDecimal) -
#388:
@JsonEnumDefaultValuenot 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
-
#568: Improve ASCII decoding performance for
CBORParser
-
#31: Header names seem to be trimmed (add
CsvParser.Feature.TRIM_HEADER_SPACES)) -
#554: Enforce, document thread-safety of
CsvSchema
-
#571: Unable to deserialize a pojo with
IonStruct
- #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
InstantDeserializeraddInColonToOffsetIfMissing() -
#337: Negative
Durationdoes not round-trip properly withWRITE_DURATIONS_AS_TIMESTAMPSenabled -
#342: Lenient deserialization of
LocalDate,LocalDateTimeis not time-zone aware - #364: Deserialization of Month in ONE_BASED_MONTHS mode fails for value "12"
-
#285:
JacksonBlackbirdAccessClass 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_ORDERfor retaining Serialization order of Java Records (instead of alphabetic)