Enum SerializationFeature
- java.lang.Object
-
- java.lang.Enum<SerializationFeature>
-
- com.fasterxml.jackson.databind.SerializationFeature
-
- All Implemented Interfaces:
ConfigFeature
,java.io.Serializable
,java.lang.Comparable<SerializationFeature>
public enum SerializationFeature extends java.lang.Enum<SerializationFeature> implements ConfigFeature
Enumeration that defines simple on/off features that affect the way Java objects are serialized.Note that features can be set both through
ObjectMapper
(as sort of defaults) and throughObjectWriter
. 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 usingObjectWriter
.
-
-
Enum Constant Summary
Enum Constants Enum Constant Description CLOSE_CLOSEABLE
Feature that determines whetherclose
method of serialized root level objects (ones for whichObjectMapper
's writeValue() (or equivalent) method is called) that implementCloseable
is called after serialization or not.EAGER_SERIALIZER_FETCH
Feature that determines whetherObjectWriter
should try to eagerly fetch necessaryJsonSerializer
when possible.FAIL_ON_EMPTY_BEANS
Feature that determines what happens when no accessors are found for a type (and there are no annotations to indicate it is meant to be serialized).FAIL_ON_SELF_REFERENCES
Feature that determines what happens when a direct self-reference is detected by a POJO (and no Object Id handling is enabled for it): either aJsonMappingException
is thrown (if true), or reference is normally processed (false).FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS
Feature that determines what happens when an object which normally has type information included by Jackson is used in conjunction withJsonUnwrapped
.FLUSH_AFTER_WRITE_VALUE
Feature that determines whetherJsonGenerator.flush()
is called afterwriteValue()
method that takes JsonGenerator as an argument completes (i.e.INDENT_OUTPUT
Feature that allows enabling (or disabling) indentation for the underlying generator, using the default pretty printer configured forObjectMapper
(andObjectWriter
s created from mapper).ORDER_MAP_ENTRIES_BY_KEYS
Feature that determines whetherMap
entries are first sorted by key before serialization or not: if enabled, additional sorting step is performed if necessary (not necessary forSortedMap
s), if disabled, no additional sorting is needed.USE_EQUALITY_FOR_OBJECT_ID
Feature that determines whether Object Identity is compared using true JVM-level identity of Object (false); or,equals()
method.WRAP_EXCEPTIONS
Feature that determines whether Jackson code should catch and wrapException
s (but neverError
s!) to add additional information about location (within input) of problem or not.WRAP_ROOT_VALUE
Feature that can be enabled to make root value (usually JSON Object but can be any type) wrapped within a single property JSON object, where key as the "root name", as determined by annotation introspector (esp.WRITE_BIGDECIMAL_AS_PLAIN
Deprecated.Since 2.5: useJsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN
instead (usingObjectWriter.with(com.fasterxml.jackson.core.JsonGenerator.Feature)
).WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS
Feature that determines how typechar[]
is serialized: when enabled, will be serialized as an explict JSON array (with single-character Strings as values); when disabled, defaults to serializing them as Strings (which is more compact).WRITE_DATE_KEYS_AS_TIMESTAMPS
Feature that determines whetherDate
s (and sub-types) used asMap
keys are serialized as time stamps or not (if not, will be serialized as textual values).WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
Feature that controls whether numeric timestamp values are to be written using nanosecond timestamps (enabled) or not (disabled); if and only if datatype supports such resolution.WRITE_DATES_AS_TIMESTAMPS
Feature that determines whether Date (and date/time) values (and Date-based things likeCalendar
s) are to be serialized as numeric time stamps (true; the default), or as something else (usually textual representation).WRITE_DATES_WITH_CONTEXT_TIME_ZONE
Feature that determines whether timezone/offset included in zoned date/time values (note: does NOTDate
will be overridden if there is an explicitly set context time zone.WRITE_DATES_WITH_ZONE_ID
Feature that determines whether date/date-time values should be serialized so that they include timezone id, in cases where type itself contains timezone information.WRITE_DURATIONS_AS_TIMESTAMPS
Feature that determines whether time values that represents time periods (durations, periods, ranges) are to be serialized by default using a numeric (true) or textual (false) representations.WRITE_EMPTY_JSON_ARRAYS
Deprecated.Since 2.8 there are better mechanism for specifying filtering; specifically usingJsonInclude
or configuration overrides.WRITE_ENUM_KEYS_USING_INDEX
Feature that determines whether {link Enum}s used asMap
keys are serialized as usingEnum.ordinal()
or not.WRITE_ENUMS_USING_INDEX
Feature that determines whether Java Enum values are serialized as numbers (true), or textual values (false).WRITE_ENUMS_USING_TO_STRING
Feature that determines standard serialization mechanism used for Enum values: if enabled, return value ofEnum.toString()
is used; if disabled, return value ofEnum.name()
is used.WRITE_NULL_MAP_VALUES
Deprecated.Since 2.9 there are better mechanism for specifying filtering; specifically usingJsonInclude
or configuration overrides (seeObjectMapper.configOverride(Class)
}).WRITE_SELF_REFERENCES_AS_NULL
Feature that determines what happens when a direct self-reference is detected by a POJO (and no Object Id handling is enabled for it): if enabled write that reference as null; if disabled, default behavior is used (which will try to serialize usually resulting in exception).WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED
Feature added for interoperability, to work with oddities of so-called "BadgerFish" convention.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
enabledByDefault()
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 SerializationFeature
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name.static SerializationFeature[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
WRAP_ROOT_VALUE
public static final SerializationFeature WRAP_ROOT_VALUE
Feature that can be enabled to make root value (usually JSON Object but can be any type) wrapped within a single property JSON object, where key as the "root name", as determined by annotation introspector (esp. for JAXB that uses@XmlRootElement.name
) or fallback (non-qualified class name). Feature is mostly intended for JAXB compatibility.Feature is disabled by default.
-
INDENT_OUTPUT
public static final SerializationFeature INDENT_OUTPUT
Feature that allows enabling (or disabling) indentation for the underlying generator, using the default pretty printer configured forObjectMapper
(andObjectWriter
s created from mapper).Note that the default pretty printer is only used if no explicit
PrettyPrinter
has been configured for the generator orObjectWriter
.Feature is disabled by default.
-
FAIL_ON_EMPTY_BEANS
public static final SerializationFeature FAIL_ON_EMPTY_BEANS
Feature that determines what happens when no accessors are found for a type (and there are no annotations to indicate it is meant to be serialized). If enabled (default), an exception is thrown to indicate these as non-serializable types; if disabled, they are serialized as empty Objects, i.e. without any properties.Note that empty types that this feature has only effect on those "empty" beans that do not have any recognized annotations (like
@JsonSerialize
): ones that do have annotations do not result in an exception being thrown.Feature is enabled by default.
-
FAIL_ON_SELF_REFERENCES
public static final SerializationFeature FAIL_ON_SELF_REFERENCES
Feature that determines what happens when a direct self-reference is detected by a POJO (and no Object Id handling is enabled for it): either aJsonMappingException
is thrown (if true), or reference is normally processed (false).Feature is enabled by default.
- Since:
- 2.4
-
WRAP_EXCEPTIONS
public static final SerializationFeature WRAP_EXCEPTIONS
Feature that determines whether Jackson code should catch and wrapException
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 (exception specifically being thatIOException
s may be passed as is, since they are declared as throwable); 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.Feature is enabled by default.
-
FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS
public static final SerializationFeature FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS
Feature that determines what happens when an object which normally has type information included by Jackson is used in conjunction withJsonUnwrapped
. In the default (enabled) state, an error will be thrown when an unwrapped object has type information. When disabled, the object will be unwrapped and the type information discarded.Feature is enabled by default.
- Since:
- 2.4
-
WRITE_SELF_REFERENCES_AS_NULL
public static final SerializationFeature WRITE_SELF_REFERENCES_AS_NULL
Feature that determines what happens when a direct self-reference is detected by a POJO (and no Object Id handling is enabled for it): if enabled write that reference as null; if disabled, default behavior is used (which will try to serialize usually resulting in exception). But ifFAIL_ON_SELF_REFERENCES
is enabled. this property is ignored.Feature is disabled by default.
- Since:
- 2.11
-
CLOSE_CLOSEABLE
public static final SerializationFeature CLOSE_CLOSEABLE
Feature that determines whetherclose
method of serialized root level objects (ones for whichObjectMapper
's writeValue() (or equivalent) method is called) that implementCloseable
is called after serialization or not. If enabled, close() will be called after serialization completes (whether succesfully, or due to an error manifested by an exception being thrown). You can think of this as sort of "finally" processing.NOTE: only affects behavior with root objects, and not other objects reachable from the root object. Put another way, only one call will be made for each 'writeValue' call.
Feature is disabled by default.
-
FLUSH_AFTER_WRITE_VALUE
public static final SerializationFeature FLUSH_AFTER_WRITE_VALUE
Feature that determines whetherJsonGenerator.flush()
is called afterwriteValue()
method that takes JsonGenerator as an argument completes (i.e. does NOT affect methods that use other destinations); same for methods inObjectWriter
. This usually makes sense; but there are cases where flushing should not be forced: for example when underlying stream is compressing and flush() causes compression state to be flushed (which occurs with some compression codecs).Feature is enabled by default.
-
WRITE_DATES_AS_TIMESTAMPS
public static final SerializationFeature WRITE_DATES_AS_TIMESTAMPS
Feature that determines whether Date (and date/time) values (and Date-based things likeCalendar
s) are to be serialized as numeric time stamps (true; the default), or as something else (usually textual representation). If textual representation is used, the actual format depends on configuration settings including possible per-property use of@JsonFormat
annotation, globally configuredDateFormat
.For "classic" JDK date types (
Date
,Calendar
) the default formatting is provided byStdDateFormat
, and corresponds to format String of "yyyy-MM-dd'T'HH:mm:ss.SSSX" (seeDateFormat
for details of format Strings). Whether this feature affects handling of other date-related types depend on handlers of those types, although ideally they should use this featureNote: whether
Map
keys are serialized as Strings or not is controlled usingWRITE_DATE_KEYS_AS_TIMESTAMPS
instead of this feature.Feature is enabled by default, so that date/time are by default serialized as time stamps.
-
WRITE_DATE_KEYS_AS_TIMESTAMPS
public static final SerializationFeature WRITE_DATE_KEYS_AS_TIMESTAMPS
Feature that determines whetherDate
s (and sub-types) used asMap
keys are serialized as time stamps or not (if not, will be serialized as textual values).Default value is 'false', meaning that Date-valued Map keys are serialized as textual (ISO-8601) values.
Feature is disabled by default.
-
WRITE_DATES_WITH_ZONE_ID
public static final SerializationFeature WRITE_DATES_WITH_ZONE_ID
Feature that determines whether date/date-time values should be serialized so that they include timezone id, in cases where type itself contains timezone information. Including this information may lead to compatibility issues because ISO-8601 specification does not define formats that include such information.If enabled, Timezone id should be included using format specified with Java 8
DateTimeFormatter#ISO_ZONED_DATE_TIME
definition (for example, '2011-12-03T10:15:30+01:00[Europe/Paris]').Note: setting has no relevance if date/time values are serialized as timestamps.
Feature is disabled by default, so that zone id is NOT included; rather, timezone offset is used for ISO-8601 compatibility (if any timezone information is included in value).
- Since:
- 2.6
-
WRITE_DATES_WITH_CONTEXT_TIME_ZONE
public static final SerializationFeature WRITE_DATES_WITH_CONTEXT_TIME_ZONE
Feature that determines whether timezone/offset included in zoned date/time values (note: does NOTDate
will be overridden if there is an explicitly set context time zone. If disabled, timezone/offset value is used-is; if enabled, context time zone is used instead.Note that this setting only affects "Zoned" date/time values of
Java 8 date/time
types -- it will have no effect on oldjava.util
value handling (of whichDate
has no timezone information and must use contextual timezone, implicit or explicit; andCalendar
which will always use timezone Calendar value has). Setting is also ignored by Joda date/time values.Featured is enabled by default for backwards-compatibility purposes (in Jackson 2.12 override was always done if there was explicitly defined timezone).
- Since:
- 2.13
-
WRITE_DURATIONS_AS_TIMESTAMPS
public static final SerializationFeature WRITE_DURATIONS_AS_TIMESTAMPS
Feature that determines whether time values that represents time periods (durations, periods, ranges) are to be serialized by default using a numeric (true) or textual (false) representations. Note that numeric representation may mean either simple number, or an array of numbers, depending on type.Note: whether
Map
keys are serialized as Strings or not is controlled usingWRITE_DATE_KEYS_AS_TIMESTAMPS
.Feature is enabled by default, so that period/duration are by default serialized as timestamps.
- Since:
- 2.5
-
WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS
public static final SerializationFeature WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS
Feature that determines how typechar[]
is serialized: when enabled, will be serialized as an explict JSON array (with single-character Strings as values); when disabled, defaults to serializing them as Strings (which is more compact).Feature is disabled by default.
-
WRITE_ENUMS_USING_TO_STRING
public static final SerializationFeature WRITE_ENUMS_USING_TO_STRING
Feature that determines standard serialization mechanism used for Enum values: if enabled, return value ofEnum.toString()
is used; if disabled, return value ofEnum.name()
is used.Note: this feature should usually have same value as
DeserializationFeature.READ_ENUMS_USING_TO_STRING
.Feature is disabled by default.
-
WRITE_ENUMS_USING_INDEX
public static final SerializationFeature WRITE_ENUMS_USING_INDEX
Feature that determines whether Java Enum values are serialized as numbers (true), or textual values (false). If textual values are used, other settings are also considered. If this feature is enabled, return value ofEnum.ordinal()
(an integer) will be used as the serialization.Note that this feature has precedence over
WRITE_ENUMS_USING_TO_STRING
, which is only considered if this feature is set to false.Note that since 2.10, this does NOT apply to
Enum
s written as keys ofMap
values, which has separate setting,WRITE_ENUM_KEYS_USING_INDEX
.Feature is disabled by default.
-
WRITE_ENUM_KEYS_USING_INDEX
public static final SerializationFeature WRITE_ENUM_KEYS_USING_INDEX
Feature that determines whether {link Enum}s used asMap
keys are serialized as usingEnum.ordinal()
or not. Similar toWRITE_ENUMS_USING_INDEX
used when writingEnum
s as regular values.Feature is disabled by default.
- Since:
- 2.10
-
WRITE_NULL_MAP_VALUES
@Deprecated public static final SerializationFeature WRITE_NULL_MAP_VALUES
Deprecated.Since 2.9 there are better mechanism for specifying filtering; specifically usingJsonInclude
or configuration overrides (seeObjectMapper.configOverride(Class)
}).Feature that determines whether Map entries with null values are to be serialized (true) or not (false).NOTE: unlike other
SerializationFeature
s, this feature cannot be dynamically changed on per-call basis, because its effect is considered during construction of serializers and property handlers.Feature is enabled by default.
-
WRITE_EMPTY_JSON_ARRAYS
@Deprecated public static final SerializationFeature WRITE_EMPTY_JSON_ARRAYS
Deprecated.Since 2.8 there are better mechanism for specifying filtering; specifically usingJsonInclude
or configuration overrides.Feature that determines whether Container properties (POJO properties with declared value of Collection or array; i.e. things that produce JSON arrays) that are empty (have no elements) will be serialized as empty JSON arrays (true), or suppressed from output (false).Note that this does not change behavior of
Map
s, or "Collection-like" types.NOTE: unlike other
SerializationFeature
s, this feature cannot be dynamically changed on per-call basis, because its effect is considered during construction of serializers and property handlers.Feature is enabled by default.
-
WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED
public static final SerializationFeature WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED
Feature added for interoperability, to work with oddities of so-called "BadgerFish" convention. Feature determines handling of single elementCollection
s and arrays: if enabled,Collection
s and arrays that contain exactly one element will be serialized as if that element itself was serialized.When enabled, a POJO with array that normally looks like this:
{ "arrayProperty" : [ 1 ] }
will instead be serialized as{ "arrayProperty" : 1 }
Note that this feature is counterpart to
DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY
(that is, usually both are enabled, or neither is).Feature is disabled by default, so that no special handling is done.
-
WRITE_BIGDECIMAL_AS_PLAIN
@Deprecated public static final SerializationFeature WRITE_BIGDECIMAL_AS_PLAIN
Deprecated.Since 2.5: useJsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN
instead (usingObjectWriter.with(com.fasterxml.jackson.core.JsonGenerator.Feature)
).Feature that determines whetherBigDecimal
entries are serialized usingBigDecimal.toPlainString()
to prevent values to be written using scientific notation.NOTE: since this feature typically requires use of
JsonGenerator.writeNumber(String)
it may cause compatibility problems since not allJsonGenerator
implementations support such mode of output: usually only text-based formats support it.Feature is disabled by default.
-
WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
public static final SerializationFeature WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
Feature that controls whether numeric timestamp values are to be written using nanosecond timestamps (enabled) or not (disabled); if and only if datatype supports such resolution. Only newer datatypes (such as Java8 Date/Time) support such resolution -- older types (pre-Java8 java.util.Date etc) and Joda do not -- and this setting has no effect on such types.If disabled, standard millisecond timestamps are assumed. This is the counterpart to
DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS
.Feature is enabled by default, to support most accurate time values possible.
- Since:
- 2.2
-
ORDER_MAP_ENTRIES_BY_KEYS
public static final SerializationFeature ORDER_MAP_ENTRIES_BY_KEYS
Feature that determines whetherMap
entries are first sorted by key before serialization or not: if enabled, additional sorting step is performed if necessary (not necessary forSortedMap
s), if disabled, no additional sorting is needed.Feature is disabled by default.
-
EAGER_SERIALIZER_FETCH
public static final SerializationFeature EAGER_SERIALIZER_FETCH
Feature that determines whetherObjectWriter
should try to eagerly fetch necessaryJsonSerializer
when possible. This improves performance in cases where similarly configuredObjectWriter
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.
- Since:
- 2.1
-
USE_EQUALITY_FOR_OBJECT_ID
public static final SerializationFeature USE_EQUALITY_FOR_OBJECT_ID
Feature that determines whether Object Identity is compared using true JVM-level identity of Object (false); or,equals()
method. Latter is sometimes useful when dealing with Database-bound objects with ORM libraries (like Hibernate). Note that Object itself is actually compared, and NOT Object Id; naming of this feature is somewhat confusing, so it is important that Object for which identity is to be preserved are considered equal, above and beyond ids (which are always compared using equality anyway).NOTE: due to the way functionality is implemented, it is very important that in addition to overriding
Object.equals(java.lang.Object)
for Objects to match (to be considered "same") it is also necessary to ensure thatObject.hashCode()
is overridden to produce the exact same value for equal instances.Feature is disabled by default; meaning that strict identity is used, not
equals()
- Since:
- 2.3
-
-
Method Detail
-
values
public static SerializationFeature[] 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 (SerializationFeature c : SerializationFeature.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static SerializationFeature 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
-
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
-
-