-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.15
Jackson Version 2.15 is being developed as of January 2023.
There is tentative goal of getting the first Release Candidate out by March 2023.
This wiki page gives a list of links to all changes (with brief descriptions) that will be included, as well as about some of the active plans for changes and fixes to include.
Branch is under active development as of January 2023; the first release is expected around March 2023.
No release yet
None written yet.
None yet
Same as Jackson 2.14 except:
- jackson-core is now a Multi-Release jar to support more optimal handling for newer JDKs wrt number parsing.
- Hibernate module build now requires JDK 11 (due to Hibernate 6 module)
2.15 adds maximum token limits for different tokens as described below. All limits are:
- Expressed in input units --
bytes orchars -- depending on input source - Defined as longest allowed length, but not necessarily imposed at 100% accuracy: that is, if maximum allowed length is specified as 1000 units, something with length of, say 1003 may not cause exception (but 1500 would)
- Defined in new
StreamReadConstraintsclass, configurable on per-JsonFactorybasis
Implementation of jackson-core#827 sets up upper limit on maximum length of numeric tokens read from input. Default limit is:
- Maximum 1000 for both integral and floating-point numbers.
Note that dataformat modules need to add support for enforcing the limits so coverage may vary: as usual, JSON parser will have the widest coverage initially.
Implementation of jackson-core#863 sets up upper limit on maximum length of String values read from input. Default limit is:
- Maximum of 1_000_000 (1 million) input units (bytes/chars depending on input source)
Changes to be included in the release.
-
#211: Add
JsonFormat.Features: READ_UNKNOWN_ENUM_VALUES_AS_NULL, READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE
-
#827: Add numeric value size limits via
StreamReadConstraints(fixessonatype-2022-6438) -
#851: Add
StreamReadFeature.USE_FAST_BIG_NUMBER_PARSERto enable fasterBigDecimal,BigIntegerparsing -
#863: Add
StreamReadConstraintslimit for longest textual value to allow (default: 1M) - #865: Optimize parsing 19 digit longs
-
#898: Possible flaw in
TokenFilterContext#skipParentChecks() -
#902: Add
Object JsonParser.getNumberValueDeferred()method to allow for deferred decoding in some cases - Build uses package type "jar" but still produces valid OSGi bundle (changed needed to keep class timestamps with Reproducible Build)
-
#2536: Add
EnumFeature.READ_ENUM_KEYS_USING_INDEXto work with existing "WRITE_ENUM_KEYS_USING_INDEX" -
#2974: Null coercion with
@JsonSetterdoes not work withjava.lang.Record - #2992: Properties naming strategy do not work with Record
-
#3053: Allow serializing enums to lowercase (
EnumFeature.WRITE_ENUMS_TO_LOWERCASE) -
#3180: Support
@JsonCreatorannotation on record classes -
#3262:
InvalidDefinitionExceptionwhen callingmapper.createObjectNode().putPOJO -
#3297:
@JsonDeserialize(converter = ...)does not work with Records -
#3342:
JsonTypeInfo.As.EXTERNAL_PROPERTYdoes not work with record wrappers -
#3637: Add enum features into
@JsonFormat.Feature -
#3651: Deprecate "exact values" setting from
JsonNodeFactory, replace withJsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES -
#3654: Infer
@JsonCreator(mode = Mode.DELEGATING)from use of@JsonValue) -
#3676: Allow use of
@JsonCreator(mode = Mode.PROPERTIES)creator for POJOs with "empty String" coercion - #3680: Timestamp in classes inside jar showing 02/01/1980
-
#3682: Transient
Fields are not ignored as Mutators if there is visible Getter - #3690: Incorrect target type for arrays when disabling coercion
-
#3708: Seems like
java.nio.file.Pathis safe for Android API level 26 - #3736: Try to avoid auto-detecting Fields for Record types
-
#3742: schemaType of
LongSerializeris wrong -
#3745: Deprecate classes in package
com.fasterxml.jackson.databind.jsonschema -
#3748:
DelegatingDeserializermissing override ofgetAbsentValue()(and couple of other methods)
-
#347: Add support for CBOR stringref extension (
CBORGenerator.Feature.STRINGREF) -
#356: Add
CBORGenerat.Feature.WRITE_MINIMAL_DOUBLESfor writingdoubles asfloats if safe to do so
-
#542:
XmlMapperdoes not find no-argument record constructor for deserialization of empty XML - #547: Parsing empty tags without default no-arguments constructor fails in 2.14
-
#373: Positive numbers with plus sign not quoted correctly with
ALWAYS_QUOTE_NUMBERS_AS_STRINGS
-
#158: Add
jackson-datatype-hibernate6for Hibernate 6
- #259: Wrong module auto-registered when using JPMS
- #190: Filter annotated by JsonInclude.Include.CUSTOM does not get called if the field is null with Afterburner/Blackbird module registered
- #560: Lazy load UNIT_TYPE