Enum ObjectMapper.DefaultTyping
- java.lang.Object
-
- java.lang.Enum<ObjectMapper.DefaultTyping>
-
- com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable<ObjectMapper.DefaultTyping>
- Enclosing class:
- ObjectMapper
public static enum ObjectMapper.DefaultTyping extends java.lang.Enum<ObjectMapper.DefaultTyping>
Enumeration used withObjectMapper.activateDefaultTyping(PolymorphicTypeValidator)
to specify what kind of types (classes) default typing should be used for. It will only be used if no explicit type information is found, but this enumeration further limits subset of those types.Since 2.4 there are special exceptions for JSON Tree model types (sub-types of
TreeNode
: default typing is never applied to them. Since 2.8(.4) additional checks are made to avoid attempts at default typing primitive-valued properties.NOTE: use of Default Typing can be a potential security risk if incoming content comes from untrusted sources, and it is recommended that this is either not done, or, if enabled, make sure to
activateDefaultTyping(...)
methods that takePolymorphicTypeValidator
that limits applicability to known trusted types.
-
-
Enum Constant Summary
Enum Constants Enum Constant Description EVERYTHING
Value that means that default typing will be used for all types, with exception of small number of "natural" types (String, Boolean, Integer, Double) that can be correctly inferred from JSON, and primitives (which can not be polymorphic either).JAVA_LANG_OBJECT
This value means that only properties that haveObject
as declared type (including generic types without explicit type) will use default typing.NON_CONCRETE_AND_ARRAYS
Value that means that default typing will be used for all types covered byOBJECT_AND_NON_CONCRETE
plus all array types for them.NON_FINAL
Value that means that default typing will be used for all non-final types, with exception of small number of "natural" types (String, Boolean, Integer, Double), which can be correctly inferred from JSON; as well as for all arrays of non-final types.OBJECT_AND_NON_CONCRETE
Value that means that default typing will be used for properties with declared type ofObject
or an abstract type (abstract class or interface).
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static ObjectMapper.DefaultTyping
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name.static ObjectMapper.DefaultTyping[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
JAVA_LANG_OBJECT
public static final ObjectMapper.DefaultTyping JAVA_LANG_OBJECT
This value means that only properties that haveObject
as declared type (including generic types without explicit type) will use default typing.
-
OBJECT_AND_NON_CONCRETE
public static final ObjectMapper.DefaultTyping OBJECT_AND_NON_CONCRETE
Value that means that default typing will be used for properties with declared type ofObject
or an abstract type (abstract class or interface). Note that this does not include array types.Since 2.4, this does NOT apply to
TreeNode
and its subtypes.
-
NON_CONCRETE_AND_ARRAYS
public static final ObjectMapper.DefaultTyping NON_CONCRETE_AND_ARRAYS
Value that means that default typing will be used for all types covered byOBJECT_AND_NON_CONCRETE
plus all array types for them.Since 2.4, this does NOT apply to
TreeNode
and its subtypes.
-
NON_FINAL
public static final ObjectMapper.DefaultTyping NON_FINAL
Value that means that default typing will be used for all non-final types, with exception of small number of "natural" types (String, Boolean, Integer, Double), which can be correctly inferred from JSON; as well as for all arrays of non-final types.Since 2.4, this does NOT apply to
TreeNode
and its subtypes.
-
EVERYTHING
public static final ObjectMapper.DefaultTyping EVERYTHING
Value that means that default typing will be used for all types, with exception of small number of "natural" types (String, Boolean, Integer, Double) that can be correctly inferred from JSON, and primitives (which can not be polymorphic either). Typing is also enabled for all array types.WARNING: most of the time this is NOT the setting you want as it tends to add Type Ids everywhere, even in cases where type can not be anything other than declared (for example if declared value type of a property is
final
-- for example, properties of typelong
(or wrapperLong
).Note that this is rarely the option you should use as it results in adding type information in many places where it should not be needed: make sure you understand its behavior. The only known use case for this setting is for serialization when passing instances of final class, and base type is not separately specified.
- Since:
- 2.10
-
-
Method Detail
-
values
public static ObjectMapper.DefaultTyping[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (ObjectMapper.DefaultTyping c : ObjectMapper.DefaultTyping.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static ObjectMapper.DefaultTyping valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (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:
java.lang.IllegalArgumentException
- if this enum type has no constant with the specified namejava.lang.NullPointerException
- if the argument is null
-
-