Class StdContainerSerializer<T>

java.lang.Object
tools.jackson.databind.ValueSerializer<T>
tools.jackson.databind.ser.std.StdSerializer<T>
tools.jackson.databind.ser.std.StdContainerSerializer<T>
All Implemented Interfaces:
JsonFormatVisitable
Direct Known Subclasses:
ArraySerializerBase, AsArraySerializerBase, MapEntrySerializer, MapSerializer

public abstract class StdContainerSerializer<T> extends StdSerializer<T>
Intermediate base class for serializers used for serializing types that contain element(s) of other types, such as arrays, Collections (Lists, Sets etc) and Maps and iterable things (Iterators).
  • Field Details

    • _property

      protected final BeanProperty _property
      Property that contains values handled by this serializer, if known; `null` for root value serializers (ones directly called by ObjectMapper and ObjectWriter).
      Since:
      3.0
    • _dynamicValueSerializers

      protected PropertySerializerMap _dynamicValueSerializers
      If value type cannot be statically determined, mapping from runtime value types to serializers are stored in this object.
      Since:
      3.0 (in 2.x subtypes contained it)
  • Constructor Details

  • Method Details

    • withValueTypeSerializer

      public StdContainerSerializer<?> withValueTypeSerializer(TypeSerializer vts)
      Factory(-like) method that can be used to construct a new container serializer that uses specified TypeSerializer for decorating contained values with additional type information.
      Parameters:
      vts - Type serializer to use for contained values; can be null, in which case 'this' serializer is returned as is
      Returns:
      Serializer instance that uses given type serializer for values if that is possible (or if not, just 'this' serializer)
    • getContentType

      public abstract JavaType getContentType()
      Accessor for finding declared (static) element type for type this serializer is used for.
    • getContentSerializer

      public abstract ValueSerializer<?> getContentSerializer()
      Accessor for serializer used for serializing contents (List and array elements, Map values etc) of the container for which this serializer is used, if it is known statically. Note that for dynamic types this may return null; if so, caller has to instead use getContentType() and SerializationContext.findContentValueSerializer(tools.jackson.databind.JavaType, tools.jackson.databind.BeanProperty).
    • isEmpty

      public abstract boolean isEmpty(SerializationContext prov, T value)
      Description copied from class: ValueSerializer
      Method called to check whether given serializable value is considered "empty" value (for purposes of suppressing serialization of empty values).

      Default implementation will consider only null values to be empty.

      Overrides:
      isEmpty in class ValueSerializer<T>
    • hasSingleElement

      public abstract boolean hasSingleElement(T value)
      Method called to determine if the given value (of type handled by this serializer) contains exactly one element.

      Note: although it might seem sensible to instead define something like "getElementCount()" method, this would not work well for containers that do not keep track of size (like linked lists may not).

      Note, too, that this method is only called by serializer itself; and specifically is not used for non-array/collection types like Map or Map.Entry instances.

    • _withValueTypeSerializer

      protected abstract StdContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
      Method that needs to be implemented to allow construction of a new serializer object with given TypeSerializer, used when addition type information is to be embedded.
    • _findAndAddDynamic

      protected ValueSerializer<Object> _findAndAddDynamic(SerializationContext ctxt, Class<?> type)
      Since:
      3.0
    • _findAndAddDynamic

      protected ValueSerializer<Object> _findAndAddDynamic(SerializationContext ctxt, JavaType type)
      Since:
      3.0