Top Description Fields Constructors Methods
tools.jackson.databind

public final Enum SerializationFeature

extends Enum<SerializationFeature>
implements ConfigFeature
Class Inheritance
All Implemented Interfaces
tools.jackson.databind.cfg.ConfigFeature
Imports
tools.jackson.databind.cfg.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 through ObjectWriter. 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 ObjectWriter.

Field Summary

Modifier and TypeField and Description
private final boolean
private final int
public static final SerializationFeature
CLOSE_CLOSEABLE

Feature that determines whether close() method of serialized root level objects (ones for which ObjectMapper's (and ObjectWriter's) writeValue() (or equivalent) method is called) that implement java.lang.AutoCloseable is called after serialization or not.

public static final SerializationFeature
EAGER_SERIALIZER_FETCH

Feature that determines whether ObjectWriter should try to eagerly fetch necessary ValueSerializer when possible.

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).

public static final SerializationFeature
FAIL_ON_ORDER_MAP_BY_INCOMPARABLE_KEY

Feature that determines whether to intentionally fail when the mapper attempts to order map entries with incomparable keys by accessing the first key of the map.

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 a DatabindException is thrown (if true), or reference is normally processed (false).

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 with com.fasterxml.jackson.annotation.JsonUnwrapped.

public static final SerializationFeature
FLUSH_AFTER_WRITE_VALUE

Feature that determines whether JsonGenerator.flush() is called after writeValue() method that takes JsonGenerator as an argument completes (i.e. does NOT affect methods that use other destinations); same for methods in ObjectWriter.

public static final SerializationFeature
INDENT_OUTPUT

Feature that allows enabling (or disabling) indentation for the underlying generator, using the default pretty printer configured for ObjectMapper (and ObjectWriters created from mapper).

public static final SerializationFeature
ORDER_MAP_ENTRIES_BY_KEYS

Feature that determines whether java.util.Map entries are first sorted by key before serialization or not: if enabled, additional sorting step is performed if necessary (not necessary for java.util.SortedMaps), if disabled, no additional sorting is needed.

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.

public static final SerializationFeature
WRAP_EXCEPTIONS

Feature that determines whether Jackson code should catch and wrap Exceptions (but never Errors!) to add additional information about location (within input) of problem or not.

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.

public static final SerializationFeature
WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS

Feature that determines how type char[] 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).

public static final SerializationFeature
WRITE_EMPTY_JSON_ARRAYS

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).

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).

public static final SerializationFeature
WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED

Feature added for inter-operability (originally to work with oddities of so-called "BadgerFish" convention).

Constructor Summary

AccessConstructor and Description
private
SerializationFeature(boolean defaultState)

Method Summary

Modifier and TypeMethod and Description
public boolean
enabledByDefault()

Implements tools.jackson.databind.cfg.ConfigFeature.enabledByDefault.

Accessor for checking whether this feature is enabled by default.

public boolean
enabledIn(int flags)

Implements tools.jackson.databind.cfg.ConfigFeature.enabledIn.

Convenience method for checking whether feature is enabled in given bitmask

public int
getMask()

Implements tools.jackson.databind.cfg.ConfigFeature.getMask.

Returns bit mask for this feature instance

public static SerializationFeature
public static SerializationFeature[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

_defaultStateback to summary
private final boolean _defaultState
_maskback to summary
private final int _mask
CLOSE_CLOSEABLEback to summary
public static final SerializationFeature CLOSE_CLOSEABLE

Feature that determines whether close() method of serialized root level objects (ones for which ObjectMapper's (and ObjectWriter's) writeValue() (or equivalent) method is called) that implement java.lang.AutoCloseable is called after serialization or not. If enabled, close() will be called after serialization completes (whether successfully, 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.

Note

in Jackson 2.x this used to only apply to java.io.Closeables, but now it also applies to java.lang.AutoCloseables as well (as of Jackson 3.0).

Feature is disabled by default.

EAGER_SERIALIZER_FETCHback to summary
public static final SerializationFeature EAGER_SERIALIZER_FETCH

Feature that determines whether ObjectWriter should try to eagerly fetch necessary ValueSerializer when possible. This improves performance in cases where similarly configured ObjectWriter 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.

FAIL_ON_EMPTY_BEANSback to summary
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 disabled by default as of Jackson 3.0 (in 2.x it was enabled).

FAIL_ON_ORDER_MAP_BY_INCOMPARABLE_KEYback to summary
public static final SerializationFeature FAIL_ON_ORDER_MAP_BY_INCOMPARABLE_KEY

Feature that determines whether to intentionally fail when the mapper attempts to order map entries with incomparable keys by accessing the first key of the map. So depending on the Map implementation, this may not be the same key every time.

If enabled, will simply fail by throwing an exception. If disabled, will not throw an exception and instead simply return the original map.

Note that this feature will apply only when configured to order map entries by keys, either through annotation or enabling ORDER_MAP_ENTRIES_BY_KEYS.

Feature is disabled by default.

FAIL_ON_SELF_REFERENCESback to summary
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 a DatabindException is thrown (if true), or reference is normally processed (false).

Feature is enabled by default.

FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERSback to summary
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 with com.fasterxml.jackson.annotation.JsonUnwrapped. 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.

FLUSH_AFTER_WRITE_VALUEback to summary
public static final SerializationFeature FLUSH_AFTER_WRITE_VALUE

Feature that determines whether JsonGenerator.flush() is called after writeValue() method that takes JsonGenerator as an argument completes (i.e. does NOT affect methods that use other destinations); same for methods in ObjectWriter. 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.

INDENT_OUTPUTback to summary
public static final SerializationFeature INDENT_OUTPUT

Feature that allows enabling (or disabling) indentation for the underlying generator, using the default pretty printer configured for ObjectMapper (and ObjectWriters created from mapper).

Note that the default pretty printer is only used if no explicit tools.jackson.core.PrettyPrinter has been configured for the generator or ObjectWriter.

Feature is disabled by default.

ORDER_MAP_ENTRIES_BY_KEYSback to summary
public static final SerializationFeature ORDER_MAP_ENTRIES_BY_KEYS

Feature that determines whether java.util.Map entries are first sorted by key before serialization or not: if enabled, additional sorting step is performed if necessary (not necessary for java.util.SortedMaps), if disabled, no additional sorting is needed.

Feature is disabled by default.

USE_EQUALITY_FOR_OBJECT_IDback to summary
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 for Objects to match (to be considered "same") it is also necessary to ensure that Object#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()

WRAP_EXCEPTIONSback to summary
public static final SerializationFeature WRAP_EXCEPTIONS

Feature that determines whether Jackson code should catch and wrap Exceptions (but never Errors!) 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 that java.io.IOExceptions 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.

WRAP_ROOT_VALUEback to summary
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.

WRITE_CHAR_ARRAYS_AS_JSON_ARRAYSback to summary
public static final SerializationFeature WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS

Feature that determines how type char[] 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_EMPTY_JSON_ARRAYSback to summary
public static final SerializationFeature WRITE_EMPTY_JSON_ARRAYS

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 java.util.Maps, or "Collection-like" types.

Note

unlike other SerializationFeatures, this feature cannot be dynamically changed on per-call basis, because its effect is considered during construction of serializers and property handlers.

Note

Since 2.8 there are better mechanism for specifying filtering; specifically using com.fasterxml.jackson.annotation.JsonInclude or configuration overrides. This feature was deprecated from 2.8 through to 2.20 but no longer deprecated since 2.21 / 3.0.

Feature is enabled by default.

WRITE_SELF_REFERENCES_AS_NULLback to summary
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 if SerializationFeature#FAIL_ON_SELF_REFERENCES is enabled. this property is ignored.

Feature is disabled by default.

WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPEDback to summary
public static final SerializationFeature WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED

Feature added for inter-operability (originally to work with oddities of so-called "BadgerFish" convention). Feature determines handling of single element java.util.Collections and arrays: if enabled, java.util.Collections 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.

Constructor Detail

SerializationFeatureback to summary
private SerializationFeature(boolean defaultState)

Method Detail

enabledByDefaultback to summary
public boolean enabledByDefault()

Implements tools.jackson.databind.cfg.ConfigFeature.enabledByDefault.

Doc from tools.jackson.databind.cfg.ConfigFeature.enabledByDefault.

Accessor for checking whether this feature is enabled by default.

Annotations
@Override
enabledInback to summary
public boolean enabledIn(int flags)

Implements tools.jackson.databind.cfg.ConfigFeature.enabledIn.

Doc from tools.jackson.databind.cfg.ConfigFeature.enabledIn.

Convenience method for checking whether feature is enabled in given bitmask

Annotations
@Override
getMaskback to summary
public int getMask()

Implements tools.jackson.databind.cfg.ConfigFeature.getMask.

Doc from tools.jackson.databind.cfg.ConfigFeature.getMask.

Returns bit mask for this feature instance

Annotations
@Override
valueOfback to summary
public static SerializationFeature valueOf(String name)
valuesback to summary
public static SerializationFeature[] values()