EnumSerializer
Date: 2016-12-04

com.fasterxml.jackson.databind.ser.std

## Class EnumSerializer

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonSerializer<T>
  - - com.fasterxml.jackson.databind.ser.std.StdSerializer<T>
    - - com.fasterxml.jackson.databind.ser.std.StdScalarSerializer<java.lang.Enum<?>>
      - - com.fasterxml.jackson.databind.ser.std.EnumSerializer

- All Implemented Interfaces:
    JsonFormatVisitable, SchemaAware, ContextualSerializer, java.io.Serializable

      public class EnumSerializer
      extends StdScalarSerializer<java.lang.Enum<?>>
      implements ContextualSerializer

  Standard serializer used for `Enum` types.

  Based on `StdScalarSerializer` since the JSON value is scalar (String).

  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonSerializer

      `JsonSerializer.None`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.Boolean` | `_serializeAsIndex` Flag that is set if we statically know serialization choice between index and textual format (null if it needs to be dynamically checked).
    `protected EnumValues` | `_values` This map contains pre-resolved values (since there are ways to customize actual String constants to use) to use as serializations.

    - ### Fields inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer

      `_handledType`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EnumSerializer(EnumValues v)` Deprecated. Since 2.1
    `EnumSerializer(EnumValues v, java.lang.Boolean serializeAsIndex)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected static java.lang.Boolean` | `_isShapeWrittenUsingIndex(java.lang.Class<?> enumClass, com.fasterxml.jackson.annotation.JsonFormat.Value format, boolean fromClass)` Helper method called to check whether
    `protected boolean` | `_serializeAsIndex(SerializerProvider serializers)`
    `void` | `acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)` Default implementation specifies no format.
    `static EnumSerializer` | `construct(java.lang.Class<?> enumClass, SerializationConfig config, BeanDescription beanDesc, com.fasterxml.jackson.annotation.JsonFormat.Value format)` Factory method used by `BasicSerializerFactory` for constructing serializer instance of Enum types.
    `JsonSerializer<?>` | `createContextual(SerializerProvider serializers, BeanProperty property)` To support some level of per-property configuration, we will need to make things contextual.
    `EnumValues` | `getEnumValues()`
    `JsonNode` | `getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint)` Default implementation simply claims type is "string"; usually overriden by custom serializers.
    `void` | `serialize(java.lang.Enum<?> en, com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider serializers)` Method that can be called to ask implementation to serialize values of type this serializer handles.

    - ### Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdScalarSerializer

      `serializeWithType`

    - ### Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer

      `createObjectNode, createSchemaNode, createSchemaNode, findAnnotatedContentSerializer, findConvertingContentSerializer, findFormatFeature, findFormatOverrides, findIncludeOverrides, findPropertyFilter, getSchema, handledType, isDefaultSerializer, visitArrayFormat, visitArrayFormat, visitFloatFormat, visitIntFormat, visitIntFormat, visitStringFormat, visitStringFormat, wrapAndThrow, wrapAndThrow`

    - ### Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer

      `getDelegatee, isEmpty, isEmpty, isUnwrappingSerializer, properties, replaceDelegatee, unwrappingSerializer, usesObjectId, withFilterId`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _values

          protected final EnumValues _values

      This map contains pre-resolved values (since there are ways to customize actual String constants to use) to use as serializations.

    - #### _serializeAsIndex

          protected final java.lang.Boolean _serializeAsIndex

      Flag that is set if we statically know serialization choice between index and textual format (null if it needs to be dynamically checked).
      Since:
        2.1

  - ### Constructor Detail

    - #### EnumSerializer

          @Deprecated
          public EnumSerializer(EnumValues v)

      Deprecated. Since 2.1

    - #### EnumSerializer

          public EnumSerializer(EnumValues v,
                        java.lang.Boolean serializeAsIndex)

  - ### Method Detail

    - #### construct

          public static EnumSerializer construct(java.lang.Class<?> enumClass,
                                 SerializationConfig config,
                                 BeanDescription beanDesc,
                                 com.fasterxml.jackson.annotation.JsonFormat.Value format)

      Factory method used by `BasicSerializerFactory` for constructing serializer instance of Enum types.
      Since:
        2.1

    - #### createContextual

          public JsonSerializer<?> createContextual(SerializerProvider serializers,
                                           BeanProperty property)
                                             throws JsonMappingException

      To support some level of per-property configuration, we will need to make things contextual. We are limited to "textual vs index" choice here, however.
      Specified by:
        `createContextual` in interface `ContextualSerializer`
      Parameters:
        `serializers` - Serializer provider to use for accessing config, other serializers
        `property` - Method or field that represents the property (and is used to access value to serialize). Should be available; but there may be cases where caller can not provide it and null is passed instead (in which case impls usually pass 'this' serializer as is)
      Returns:
        Serializer to use for serializing values of specified property; may be this instance or a new instance.
      Throws:
        `JsonMappingException`

    - #### getEnumValues

          public EnumValues getEnumValues()

    - #### serialize

          public final void serialize(java.lang.Enum<?> en,
                       com.fasterxml.jackson.core.JsonGenerator gen,
                       SerializerProvider serializers)
                               throws java.io.IOException

      Description copied from class: `JsonSerializer`
      Method that can be called to ask implementation to serialize values of type this serializer handles.
      Specified by:
        `serialize` in class `StdSerializer<java.lang.Enum<?>>`
      Parameters:
        `en` - Value to serialize; can not be null.
        `gen` - Generator used to output resulting Json content
        `serializers` - Provider that can be used to get serializers for serializing Objects value contains, if any.
      Throws:
        `java.io.IOException`

    - #### getSchema

          public JsonNode getSchema(SerializerProvider provider,
                           java.lang.reflect.Type typeHint)

      Description copied from class: `StdSerializer`
      Default implementation simply claims type is "string"; usually overriden by custom serializers.
      Specified by:
        `getSchema` in interface `SchemaAware`
      Overrides:
        `getSchema` in class `StdScalarSerializer<java.lang.Enum<?>>`
      Parameters:
        `provider` - The serializer provider.
        `typeHint` - A hint about the type.
      Returns:
        Json-schema for this serializer.

    - #### acceptJsonFormatVisitor

          public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor,
                                     JavaType typeHint)
                                       throws JsonMappingException

      Description copied from class: `StdSerializer`
      Default implementation specifies no format. This behavior is usually overriden by custom serializers.
      Specified by:
        `acceptJsonFormatVisitor` in interface `JsonFormatVisitable`
      Overrides:
        `acceptJsonFormatVisitor` in class `StdScalarSerializer<java.lang.Enum<?>>`
        `typeHint` - Type of element (entity like property) being visited
      Throws:
        `JsonMappingException`

    - #### _serializeAsIndex

          protected final boolean _serializeAsIndex(SerializerProvider serializers)

    - #### _isShapeWrittenUsingIndex

          protected static java.lang.Boolean _isShapeWrittenUsingIndex(java.lang.Class<?> enumClass,
                                                    com.fasterxml.jackson.annotation.JsonFormat.Value format,
                                                    boolean fromClass)

      Helper method called to check whether