ArraySerializerBase
Date: 2016-12-04

com.fasterxml.jackson.databind.ser.std

## Class ArraySerializerBase<T>

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonSerializer<T>
  - - com.fasterxml.jackson.databind.ser.std.StdSerializer<T>
    - - com.fasterxml.jackson.databind.ser.ContainerSerializer<T>
      - - com.fasterxml.jackson.databind.ser.std.ArraySerializerBase<T>

- Type Parameters:
    `T` - Type of arrays serializer handles
  All Implemented Interfaces:
    JsonFormatVisitable, SchemaAware, ContextualSerializer, java.io.Serializable
  Direct Known Subclasses:
    ObjectArraySerializer, StdArraySerializers.BooleanArraySerializer, StdArraySerializers.DoubleArraySerializer, StdArraySerializers.IntArraySerializer, StdArraySerializers.TypedPrimitiveArraySerializer, StringArraySerializer

      public abstract class ArraySerializerBase<T>
      extends ContainerSerializer<T>
      implements ContextualSerializer

  Intermediate base class for serializers used for various Java arrays.
  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 BeanProperty` | `_property`
    `protected java.lang.Boolean` | `_unwrapSingle` Setting for specific local override for "unwrap single element arrays": true for enable unwrapping, false for preventing it, `null` for using global configuration.

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

      `_handledType`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ArraySerializerBase(ArraySerializerBase<?> src)`
    `protected` | `ArraySerializerBase(ArraySerializerBase<?> src, BeanProperty property)` Deprecated. Since 2.6
    `protected` | `ArraySerializerBase(ArraySerializerBase<?> src, BeanProperty property, java.lang.Boolean unwrapSingle)`
    `protected` | `ArraySerializerBase(java.lang.Class<T> cls)`
    `protected` | `ArraySerializerBase(java.lang.Class<T> cls, BeanProperty property)` Deprecated. Since 2.6

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract JsonSerializer<?>` | `_withResolved(BeanProperty prop, java.lang.Boolean unwrapSingle)`
    `JsonSerializer<?>` | `createContextual(SerializerProvider serializers, BeanProperty property)` Method called to see if a different (or differently configured) serializer is needed to serialize values of specified property.
    `void` | `serialize(T 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.
    `protected abstract void` | `serializeContents(T value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider)`
    `void` | `serializeWithType(T 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.ContainerSerializer

      `_withValueTypeSerializer, getContentSerializer, getContentType, hasContentTypeAnnotation, hasSingleElement, isEmpty, withValueTypeSerializer`

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

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

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

      `getDelegatee, 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

    - #### _property

          protected final BeanProperty _property

    - #### _unwrapSingle

          protected final java.lang.Boolean _unwrapSingle

      Setting for specific local override for "unwrap single element arrays": true for enable unwrapping, false for preventing it, `null` for using global configuration.
      Since:
        2.6

  - ### Constructor Detail

    - #### ArraySerializerBase

          protected ArraySerializerBase(java.lang.Class<T> cls)

    - #### ArraySerializerBase

          @Deprecated
          protected ArraySerializerBase(java.lang.Class<T> cls,
                                        BeanProperty property)

      Deprecated. Since 2.6
      Use either variant that just takes type (non-contextual), or, copy constructor that allows passing of property.

    - #### ArraySerializerBase

          protected ArraySerializerBase(ArraySerializerBase<?> src)

    - #### ArraySerializerBase

          protected ArraySerializerBase(ArraySerializerBase<?> src,
                             BeanProperty property,
                             java.lang.Boolean unwrapSingle)

      Since:
        2.6

    - #### ArraySerializerBase

          @Deprecated
          protected ArraySerializerBase(ArraySerializerBase<?> src,
                                        BeanProperty property)

      Deprecated. Since 2.6

  - ### Method Detail

    - #### _withResolved

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

      Since:
        2.6

    - #### createContextual

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

      Description copied from interface: `ContextualSerializer`
      Method called to see if a different (or differently configured) serializer is needed to serialize values of specified property. Note that instance that this method is called on is typically shared one and as a result method should NOT modify this instance but rather construct and return a new instance. This instance should only be returned as-is, in case it is already suitable for use.
      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`

    - #### serialize

          public void serialize(T 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<T>`
      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 final void serializeWithType(T 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<T>`
      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`

    - #### serializeContents

          protected abstract void serializeContents(T value,
                               com.fasterxml.jackson.core.JsonGenerator jgen,
                               SerializerProvider provider)
                                             throws java.io.IOException

      Throws:
        `java.io.IOException`