IndexedStringListSerializer
Date: 2016-12-04

com.fasterxml.jackson.databind.ser.impl

## Class IndexedStringListSerializer

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonSerializer<T>
  - - com.fasterxml.jackson.databind.ser.std.StdSerializer<T>
    - - com.fasterxml.jackson.databind.ser.std.StaticListSerializerBase<java.util.List<java.lang.String>>
      - - com.fasterxml.jackson.databind.ser.impl.IndexedStringListSerializer

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

      public final class IndexedStringListSerializer
      extends StaticListSerializerBase<java.util.List<java.lang.String>>

  Efficient implement for serializing `List`s that contains Strings and are random-accessible. The only complexity is due to possibility that serializer for `String` may be overridde; because of this, logic is needed to ensure that the default serializer is in use to use fastest mode, or if not, to defer to custom String serializer.
  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
    --- | ---
    `static IndexedStringListSerializer` | `instance`

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

      `_serializer, _unwrapSingle`

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

      `_handledType`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `IndexedStringListSerializer()`
    `` | `IndexedStringListSerializer(IndexedStringListSerializer src, JsonSerializer<?> ser, java.lang.Boolean unwrapSingle)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `JsonSerializer<?>` | `_withResolved(BeanProperty prop, JsonSerializer<?> ser, java.lang.Boolean unwrapSingle)`
    `protected void` | `acceptContentVisitor(JsonArrayFormatVisitor visitor)`
    `protected JsonNode` | `contentSchema()`
    `void` | `serialize(java.util.List<java.lang.String> value, com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider provider)` Method that can be called to ask implementation to serialize values of type this serializer handles.
    `void` | `serializeWithType(java.util.List<java.lang.String> value, com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider provider, TypeSerializer typeSer)` Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.

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

      `acceptJsonFormatVisitor, createContextual, getSchema, isEmpty, isEmpty`

    - ### 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, 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

    - #### instance

          public static final IndexedStringListSerializer instance

  - ### Constructor Detail

    - #### IndexedStringListSerializer

          protected IndexedStringListSerializer()

    - #### IndexedStringListSerializer

          public IndexedStringListSerializer(IndexedStringListSerializer src,
                                     JsonSerializer<?> ser,
                                     java.lang.Boolean unwrapSingle)

  - ### Method Detail

    - #### _withResolved

          public JsonSerializer<?> _withResolved(BeanProperty prop,
                                        JsonSerializer<?> ser,
                                        java.lang.Boolean unwrapSingle)

      Specified by:
        `_withResolved` in class `StaticListSerializerBase<java.util.List<java.lang.String>>`

    - #### contentSchema

          protected JsonNode contentSchema()

      Specified by:
        `contentSchema` in class `StaticListSerializerBase<java.util.List<java.lang.String>>`

    - #### acceptContentVisitor

          protected void acceptContentVisitor(JsonArrayFormatVisitor visitor)
                                       throws JsonMappingException

      Specified by:
        `acceptContentVisitor` in class `StaticListSerializerBase<java.util.List<java.lang.String>>`
      Throws:
        `JsonMappingException`

    - #### serialize

          public void serialize(java.util.List<java.lang.String> value,
                       com.fasterxml.jackson.core.JsonGenerator gen,
                       SerializerProvider provider)
                         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.util.List<java.lang.String>>`
      Parameters:
        `value` - Value to serialize; can not be null.
        `gen` - Generator used to output resulting Json content
        `provider` - Provider that can be used to get serializers for serializing Objects value contains, if any.
      Throws:
        `java.io.IOException`

    - #### serializeWithType

          public void serializeWithType(java.util.List<java.lang.String> value,
                               com.fasterxml.jackson.core.JsonGenerator gen,
                               SerializerProvider provider,
                               TypeSerializer typeSer)
                                 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, using specified type serializer for embedding necessary type information.

      Default implementation will throw `UnsupportedOperationException` to indicate that proper type handling needs to be implemented.

      For simple datatypes written as a single scalar value (JSON String, Number, Boolean), implementation would look like:

            // note: method to call depends on whether this type is serialized as JSON scalar, object or Array!
            typeSer.writeTypePrefixForScalar(value, gen);
            serialize(value, gen, provider);
            typeSer.writeTypeSuffixForScalar(value, gen);

      and implementations for type serialized as JSON Arrays or Objects would differ slightly, as `START-ARRAY`/`END-ARRAY` and `START-OBJECT`/`END-OBJECT` pairs need to be properly handled with respect to serializing of contents.
      Overrides:
        `serializeWithType` in class `JsonSerializer<java.util.List<java.lang.String>>`
      Parameters:
        `value` - Value to serialize; can not be null.
        `gen` - Generator used to output resulting Json content
        `provider` - Provider that can be used to get serializers for serializing Objects value contains, if any.
        `typeSer` - Type serializer to use for including type information
      Throws:
        `java.io.IOException`