-
Notifications
You must be signed in to change notification settings - Fork 3
JSTEP 2
(Back to JSTEP page)
Tatu Saloranta (@cowtowncoder)
- 2024-07-20:
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESdefault changed - 2024-06-06:
DeserializationFeature.READ_ENUMS_USING_TO_STRING,SerializationFeature.WRITE_ENUMS_USING_TO_STRINGdefaults changed - 2024-05-31:
MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORSdefault changed - 2024-03-01: minor update on default changes
- 2022-09-18: add proposed default change to Date/Times-as-timestamps
DeserializationFeatures - 2019-02-10: create first version from earlier notes
Work-in-progress as of Jackson 2.18 (and will remain until 3.0.0 release)
During Jackson 2.x development, certain default settings have proven either problematic by development team, or non-intuitive/non-optimal by users: latter indicated both by filed issues and comments on mailing list discussions. Since default settings and behavior are important part of the public API, changes have had to wait until major version change in most cases.
This document details proposed/planned as well as implemented changes.
No changes
-
JsonWriteFeature.ESCAPE_FORWARD_SLASHESnow defaults totrue(see core#1200)
-
DEFAULT_MAX_DEPTHto 500 (from 1,000) (see core#1233)
-
DEFAULT_MAX_DEPTHto 500 (from 1,000) (see core#1233)
-
USE_FAST_DOUBLE_PARSER: enabled by default in 3.0 (see core#1231) -
USE_FAST_BIG_NUMBER_PARSER: enabled by default in 3.0 (see core#1231)
-
USE_FAST_DOUBLE_WRITER: enabled by default in 3.0 (see core#1231)
First, following deprecated features are to be removed from 3.0:
-
USE_STD_BEAN_NAMING: should always be enabled, no need for old slightly differing algorithm -
AUTO_DETECT_xxx: old limited settings superceded by more granular settings -- frees up 5 features
And defaults to following features have been changed:
-
ALLOW_FINAL_FIELDS_AS_MUTATORS: default tofalse-- while enabling may be useful sometimes, it confuses users in general and is unlikely to even work with future JDKs/JVMs -
USE_GETTERS_AS_SETTERS: default tofalse-- earlier default was based on JAXB but is quite confusing for users -
SORT_PROPERTIES_ALPHABETICALLY: default totrue(falsereally doesn't make much sense since it is unstable, and arbitrary based on JVM/JDK)
Changes completed:
-
FAIL_ON_UNEXPECTED_VIEW_PROPERTIES: default totrue(as per databind#437) -
FAIL_ON_UNKNOWN_PROPERTIES: default tofalse(TOP REQUEST by users) databind#493 -
READ_ENUMS_USING_TO_STRING: default totrue(instead offalsethat relies onname()) databind#4566
Changes proposed:
Other changes, potential:
- Although all features still make sense, would make sense to try to combine some, and/or create new type of configuration to use instead of feature -- for example
-
FAIL_xxxare all kind of similar.DeserializationFail, or "check" or... ? -
READ_xxx_as_yyy, similarly -
ACCEPT_xxx_as_yyy, similarly
-
Changes completed:
-
WRITE_ENUMS_USING_TO_STRING: default totrue(to keep symmetry between itsDeserializationFeature.READ_ENUMS_USING_TO_STRINGcounterpart) databind#4567
Changes proposed:
-
FAIL_ON_EMPTY_BEANS: default tofalse - Writing date/time values as ISO-8601 Strings instead of (Java style) timestamps
-
WRITE_DATES_AS_TIMESTAMPS: change default tofalseto serialize as ISO-8601 String -
WRITE_DATE_KEYS_AS_TIMESTAMPS: RETAIN default offalse-- no change -
WRITE_DURATIONS_AS_TIMESTAMPS: change default tofalseto serialize as ISO-8601 String
-
Other changes, potential:
- Most if not all features seem to make sense, but there are groups that could use unification of some kind
FAIL_ON_xxxWRITE_xxx_as_yyy
Changes to defaults completed:
- none yet
Changes to defaults proposed:
- Disable
lenientsetting (that is: default to "strict") - Check defaults of date/time handling
-
DecimalNodecreation viaJsonNodeFactory: default to NOT truncating trailing zeroes (minimal trimming), becauseJsonNodeshould by default expose content as close to way it came.