- All Implemented Interfaces:
Serializable
,Comparable<DeserializationFeature>
,Constable
,ConfigFeature
Note that features can be set both through
ObjectMapper
(as sort of defaults) and through
ObjectReader
.
In first case these defaults must follow "config-then-use" patterns
(i.e. defined once, not changed afterwards); all per-call
changes must be done using ObjectReader
.
Note that features that do not indicate version of inclusion were available in Jackson 3.0 (or earlier); only later additions indicate version of inclusion.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionFeature that can be enabled to allow empty JSON Array value (that is,[ ]
to be bound to POJOsnull
.Feature that can be enabled to allow JSON empty String value (""
) to be bound asnull
for POJOs and other structured values (Map
s,Collection
s).Feature that determines whether coercion from JSON floating point number (anything with command (`.`) or exponent portion (`e` / `E')) to an expected integral number (`int`, `long`, `java.lang.Integer`, `java.lang.Long`, `java.math.BigDecimal`) is allowed or not.Feature that determines whether it is acceptable to coerce non-array (in JSON) values to work with Java collection (arrays, java.util.Collection) types.Feature that determines whetherObjectReader
should try to eagerly fetch necessaryValueDeserializer
when possible.Feature that determines what happens when a property that has been explicitly marked as ignorable is encountered in input: if feature is enabled,DatabindException
is thrown; if false, property is quietly skipped.Feature that determines what happens when type of a polymorphic value (indicated for example byJsonTypeInfo
) cannot be found (missing) or resolved (invalid class name, non-mappable id); if enabled, an exception is thrown; if false, null value is used instead.Feature that determines what happens if one or more Creator properties (properties bound to parameters of Creator method (constructor or static factory method)) are missing value to bind to from content.Feature that determines what happens when a property annotated withJsonTypeInfo.As.EXTERNAL_PROPERTY
is missing, but associated type id is available.Feature that determines what happens if one or more Creator properties (properties bound to parameters of Creator method (constructor or static factory method)) are bound to null values - either from the JSON or as a default value.Feature that determines whether encountering of JSON null is an error when deserializing into Java primitive types (like 'int' or 'double').Feature that determines what happens when reading JSON content into tree (TreeNode
) and a duplicate key is encountered (property name that was already seen for the JSON Object).Feature that determines behavior when deserializing polymorphic types that use Class-based Type Id mechanism (eitherJsonTypeInfo.Id.CLASS
orJsonTypeInfo.Id.MINIMAL_CLASS
): If enabled, an exception will be thrown if a subtype (Class) is encountered that has not been explicitly registered (by callingMapperBuilder.registerSubtypes(java.lang.Class<?>...)
or using annotationJsonSubTypes
).Feature that determines behavior for data-binding after binding the root value.Feature that determines the handling of properties not included in the active JSON view during deserialization.Feature that determines the handling of injected properties during deserialization.Feature that determines whether encountering of unknown properties (ones that do not map to a property, and there is no "any setter" or handler that can handle it) should result in a failure (by throwing aDatabindException
) or not.Feature that determines what happens if an Object Id reference is encountered that does not refer to an actual Object with that id ("unresolved Object Id"): either an exceptionUnresolvedForwardReference
containing information aboutUnresolvedId
is thrown (true
), or a null object is used instead (false
).Feature to allow "unwrapping" root-level JSON value, to match setting ofSerializationFeature.WRAP_ROOT_VALUE
used for serialization.Feature that determines whether it is acceptable to coerce single value array (in JSON) values to the corresponding value type.Feature that determines whether JSON floating point numbers are to be deserialized intoBigDecimal
s if only generic type description (eitherObject
orNumber
, or within untypedMap
orCollection
context) is available.Feature that determines whether JSON integral (non-floating-point) numbers are to be deserialized intoBigInteger
s if only generic type description (eitherObject
orNumber
, or within untypedMap
orCollection
context) is available.Feature that determines whether JSON Array is mapped toObject[]
orList<Object>
when binding "untyped" objects (ones with nominal type ofjava.lang.Object
).Feature that determines how "small" JSON integral (non-floating-point) numbers -- ones that fit in 32-bit signed integer (`int`) -- are bound when target type is loosely typed asObject
orNumber
(or within untypedMap
orCollection
context). -
Method Summary
Modifier and TypeMethodDescriptionboolean
Accessor for checking whether this feature is enabled by default.boolean
enabledIn
(int flags) Convenience method for checking whether feature is enabled in given bitmaskint
getMask()
Returns bit mask for this feature instancestatic DeserializationFeature
Returns the enum constant of this class with the specified name.static DeserializationFeature[]
values()
Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
USE_BIG_DECIMAL_FOR_FLOATS
Feature that determines whether JSON floating point numbers are to be deserialized intoBigDecimal
s if only generic type description (eitherObject
orNumber
, or within untypedMap
orCollection
context) is available. If enabled such values will be deserialized asBigDecimal
s; if disabled, will be deserialized asDouble
s.NOTE: one related aspect of
BigDecimal
handling that may need configuring is whether trailing zeroes are trimmed:JsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES
is used for optionally enabling this forJsonNode
values.Feature is disabled by default, meaning that "untyped" floating point numbers will by default be deserialized as
Double
s (choice is for performance reason -- BigDecimals are slower than Doubles). -
USE_BIG_INTEGER_FOR_INTS
Feature that determines whether JSON integral (non-floating-point) numbers are to be deserialized intoBigInteger
s if only generic type description (eitherObject
orNumber
, or within untypedMap
orCollection
context) is available. If enabled such values will be deserialized asBigInteger
s; if disabled, will be deserialized as "smallest" available type, which is eitherInteger
,Long
orBigInteger
, depending on number of digits.Feature is disabled by default, meaning that "untyped" integral numbers will by default be deserialized using whatever is the most compact integral type, to optimize efficiency.
-
USE_LONG_FOR_INTS
Feature that determines how "small" JSON integral (non-floating-point) numbers -- ones that fit in 32-bit signed integer (`int`) -- are bound when target type is loosely typed asObject
orNumber
(or within untypedMap
orCollection
context). If enabled, such values will be deserialized asLong
; if disabled, they will be deserialized as "smallest" available type,Integer
.Note: if
USE_BIG_INTEGER_FOR_INTS
is enabled, it has precedence over this setting, forcing use ofBigInteger
for all integral values.Feature is disabled by default, meaning that "untyped" integral numbers will by default be deserialized using
Integer
if value fits. -
USE_JAVA_ARRAY_FOR_JSON_ARRAY
Feature that determines whether JSON Array is mapped toObject[]
orList<Object>
when binding "untyped" objects (ones with nominal type ofjava.lang.Object
). If true, binds asObject[]
; if false, asList<Object>
.Feature is disabled by default, meaning that JSON arrays are bound as
List
s. -
FAIL_ON_UNKNOWN_PROPERTIES
Feature that determines whether encountering of unknown properties (ones that do not map to a property, and there is no "any setter" or handler that can handle it) should result in a failure (by throwing aDatabindException
) or not. This setting only takes effect after all other handling methods for unknown properties have been tried, and property remains unhandled. Enabling this feature means that aDatabindException
will be thrown if an unknown property is encountered.Feature is disabled by default as of Jackson 3.0 (in 2.x it was enabled).
-
FAIL_ON_NULL_FOR_PRIMITIVES
Feature that determines whether encountering of JSON null is an error when deserializing into Java primitive types (like 'int' or 'double'). If it is, aDatabindException
is thrown to indicate this; if not, default value is used (0 for 'int', 0.0 for double, same defaulting as what JVM uses).Feature is enabled by default as of Jackson 3.0 (in 2.x it was disabled).
-
FAIL_ON_INVALID_SUBTYPE
Feature that determines what happens when type of a polymorphic value (indicated for example byJsonTypeInfo
) cannot be found (missing) or resolved (invalid class name, non-mappable id); if enabled, an exception is thrown; if false, null value is used instead.Feature is enabled by default so that exception is thrown for missing or invalid type information.
-
FAIL_ON_READING_DUP_TREE_KEY
Feature that determines what happens when reading JSON content into tree (TreeNode
) and a duplicate key is encountered (property name that was already seen for the JSON Object). If enabled,DatabindException
will be thrown; if disabled, no exception is thrown and the new (later) value overwrites the earlier value.Note that this property does NOT affect other aspects of data-binding; that is, no detection is done with respect to POJO properties or
Map
keys. New features may be added to control additional cases.Feature is disabled by default so that no exception is thrown.
-
FAIL_ON_IGNORED_PROPERTIES
Feature that determines what happens when a property that has been explicitly marked as ignorable is encountered in input: if feature is enabled,DatabindException
is thrown; if false, property is quietly skipped.Feature is disabled by default so that no exception is thrown.
-
FAIL_ON_UNRESOLVED_OBJECT_IDS
Feature that determines what happens if an Object Id reference is encountered that does not refer to an actual Object with that id ("unresolved Object Id"): either an exceptionUnresolvedForwardReference
containing information aboutUnresolvedId
is thrown (true
), or a null object is used instead (false
). Note that if this is set tofalse
, no further processing is done; specifically, if reference is defined via setter method, that method will NOT be called.Feature is enabled by default, so that unknown Object Ids will result in an exception being thrown, at the end of deserialization.
-
FAIL_ON_MISSING_CREATOR_PROPERTIES
Feature that determines what happens if one or more Creator properties (properties bound to parameters of Creator method (constructor or static factory method)) are missing value to bind to from content. If enabled, such missing values result in aDatabindException
being thrown with information on the first one (by index) of missing properties. If disabled, and if property is NOT marked as required, missing Creator properties are filled withnull values
provided by deserializer for the type of parameter (usually null for Object types, and default value for primitives; but redefinable via custom deserializers).Note that having an injectable value counts as "not missing".
Feature is disabled by default, so that no exception is thrown for missing creator property values, unless they are explicitly marked as `required`.
-
FAIL_ON_NULL_CREATOR_PROPERTIES
Feature that determines what happens if one or more Creator properties (properties bound to parameters of Creator method (constructor or static factory method)) are bound to null values - either from the JSON or as a default value. This is useful if you want to avoid nulls in your codebase, and particularly useful if you are using Java or ScalaOptional
s for non-mandatory fields. Feature is disabled by default, so that no exception is thrown for missing creator property values, unless they are explicitly marked as `required`. -
FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY
Feature that determines what happens when a property annotated withJsonTypeInfo.As.EXTERNAL_PROPERTY
is missing, but associated type id is available. If enabled, aDatabindException
is always thrown when property value is missing (if type id does exist); if disabled, exception is only thrown if property is marked asrequired
.Feature is enabled by default, so that exception is thrown when a subtype property is missing.
-
FAIL_ON_TRAILING_TOKENS
Feature that determines behavior for data-binding after binding the root value. If feature is enabled, one more call toJsonParser.nextToken()
is made to ensure that no more tokens are found (and if any is found,MismatchedInputException
is thrown); if disabled, no further checks are made.Feature could alternatively be called
READ_FULL_STREAM
, since it effectively verifies that input stream contains only as much data as is needed for binding the full value, and nothing more (except for possible ignorable white space or comments, if supported by data format).<<<<<<< HEAD:src/main/java/tools/jackson/databind/DeserializationFeature.java NOTE: this feature should usually be disabled when reading from
DataInput
, since it cannot detect end-of-input efficiently (but by throwing anIOException
). Disabling is NOT done automatically by Jackson: users are recommended to disable it.Feature is enabled by default as of Jackson 3.0 (in 2.x it was disabled). ======= Feature is disabled by default (so that no check is made for possible trailing token(s)) for backwards-compatibility reasons.
- Since:
- 2.9 >>>>>>> 2.x:src/main/java/com/fasterxml/jackson/databind/DeserializationFeature.java
-
FAIL_ON_SUBTYPE_CLASS_NOT_REGISTERED
Feature that determines behavior when deserializing polymorphic types that use Class-based Type Id mechanism (eitherJsonTypeInfo.Id.CLASS
orJsonTypeInfo.Id.MINIMAL_CLASS
): If enabled, an exception will be thrown if a subtype (Class) is encountered that has not been explicitly registered (by callingMapperBuilder.registerSubtypes(java.lang.Class<?>...)
or using annotationJsonSubTypes
).Note that for Type Name - based Type Id mechanism (
JsonTypeInfo.Id.NAME
) you already need to register the subtypes but with so this feature has no effect.Feature is disabled by default.
-
WRAP_EXCEPTIONS
Feature that determines whether Jackson code should catch and wrap non-JacksonException
s (but neverError
s!) to add additional information about location (within input) of problem or not. If enabled, most exceptions will be caught and re-thrown; this can be convenient both in that all exceptions will be checked and declared, and so there is more contextual information. However, sometimes calling application may just want "raw" unchecked exceptions passed as is.NOTE: most of the time exceptions that may or may not be wrapped are of type
RuntimeException
: as mentioned earlier,JacksonException
s) will always be passed as-is.Disabling this feature will mean that you will need to adjust your try/catch blocks to properly handle
RuntimeException
s. Failing to do so, may cause your application to crash due to unhandled exceptions.Feature is enabled by default.
-
FAIL_ON_UNEXPECTED_VIEW_PROPERTIES
Feature that determines the handling of properties not included in the active JSON view during deserialization.When enabled, if a property is encountered during deserialization that is not part of the active view (as defined by
JsonView
), an exception is thrown. If disabled, the property is simply ignored.This feature is particularly useful in scenarios where strict adherence to the specified view is required and any deviation, such as the presence of properties not belonging to the view, should be reported as an error. It can enhance the robustness of data binding by ensuring that only the properties relevant to the active view are considered during deserialization, thereby preventing unintended data from being processed.
Feature is disabled by default to maintain backward compatibility.
-
FAIL_ON_UNKNOWN_INJECT_VALUE
Feature that determines the handling of injected properties during deserialization.When enabled, if an injected property without matching value is encountered during deserialization, an exception is thrown. When disabled, no exception is thrown. See
JacksonInject.optional()
for per-property override of this setting.This feature is enabled by default to maintain backwards-compatibility.
- See Also:
-
ACCEPT_SINGLE_VALUE_AS_ARRAY
Feature that determines whether it is acceptable to coerce non-array (in JSON) values to work with Java collection (arrays, java.util.Collection) types. If enabled, collection deserializers will try to handle non-array values as if they had "implicit" surrounding JSON array. This feature is meant to be used for compatibility/interoperability reasons, to work with packages (such as XML-to-JSON converters) that leave out JSON array in cases where there is just a single element in array.Feature is disabled by default.
-
UNWRAP_SINGLE_VALUE_ARRAYS
Feature that determines whether it is acceptable to coerce single value array (in JSON) values to the corresponding value type. This is basically the opposite of theACCEPT_SINGLE_VALUE_AS_ARRAY
feature. If more than one value is found in the array, aDatabindException
is thrown.NOTE: only single wrapper Array is allowed: if multiple attempted, exception will be thrown.
Feature is disabled by default.
-
UNWRAP_ROOT_VALUE
Feature to allow "unwrapping" root-level JSON value, to match setting ofSerializationFeature.WRAP_ROOT_VALUE
used for serialization. Will verify that the root JSON value is a JSON Object, and that it has a single property with expected root name. If not, aDatabindException
is thrown; otherwise value of the wrapped property will be deserialized as if it was the root value.Feature is disabled by default.
-
ACCEPT_EMPTY_STRING_AS_NULL_OBJECT
Feature that can be enabled to allow JSON empty String value (""
) to be bound asnull
for POJOs and other structured values (Map
s,Collection
s). If disabled, standard POJOs can only be bound from JSONnull
or JSON Object (standard meaning that no custom deserializers or constructors are defined; both of which can add support for other kinds of JSON values); if enabled, empty JSON String can be taken to be equivalent of JSON null.NOTE: this does NOT apply to scalar values such as Strings, booleans, numbers and date/time types; whether these can be coerced depends on
MapperFeature.ALLOW_COERCION_OF_SCALARS
.Feature is disabled by default.
-
ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT
Feature that can be enabled to allow empty JSON Array value (that is,[ ]
to be bound to POJOsnull
. If disabled, standard POJOs can only be bound from JSONnull
or JSON Object (standard meaning that no custom deserializers or constructors are defined; both of which can add support for other kinds of JSON values); if enabled, empty JSON Array will be taken to be equivalent of JSONnull
.Feature is disabled by default.
-
ACCEPT_FLOAT_AS_INT
Feature that determines whether coercion from JSON floating point number (anything with command (`.`) or exponent portion (`e` / `E')) to an expected integral number (`int`, `long`, `java.lang.Integer`, `java.lang.Long`, `java.math.BigDecimal`) is allowed or not. If enabled, coercion truncates value; if disabled, aDatabindException
will be thrown.Feature is enabled by default.
-
EAGER_DESERIALIZER_FETCH
Feature that determines whetherObjectReader
should try to eagerly fetch necessaryValueDeserializer
when possible. This improves performance in cases where similarly configuredObjectReader
instance is used multiple times; and should not significantly affect single-use cases.Note that there should not be any need to normally disable this feature: only consider that if there are actual perceived problems.
Feature is enabled by default.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum class has no constant with the specified nameNullPointerException
- if the argument is null
-
enabledByDefault
public boolean enabledByDefault()Description copied from interface:ConfigFeature
Accessor for checking whether this feature is enabled by default.- Specified by:
enabledByDefault
in interfaceConfigFeature
-
getMask
public int getMask()Description copied from interface:ConfigFeature
Returns bit mask for this feature instance- Specified by:
getMask
in interfaceConfigFeature
-
enabledIn
public boolean enabledIn(int flags) Description copied from interface:ConfigFeature
Convenience method for checking whether feature is enabled in given bitmask- Specified by:
enabledIn
in interfaceConfigFeature
-