Class ContainerSerializer<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>
-
- All Implemented Interfaces:
JsonFormatVisitable
,SchemaAware
,java.io.Serializable
- Direct Known Subclasses:
ArraySerializerBase
,AsArraySerializerBase
,MapEntrySerializer
,MapSerializer
public abstract class ContainerSerializer<T> extends StdSerializer<T>
Intermediate base class for serializers used for serializing types that contain element(s) of other types, such as arrays,Collection
s (Lists
,Sets
etc) andMap
s and iterable things (Iterator
s).- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonSerializer
JsonSerializer.None
-
-
Field Summary
-
Fields inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer
_handledType
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ContainerSerializer(JavaType fullType)
protected
ContainerSerializer(ContainerSerializer<?> src)
protected
ContainerSerializer(java.lang.Class<?> t, boolean dummy)
Alternate constructor that is (alas!) needed to work around kinks of generic type handlingprotected
ContainerSerializer(java.lang.Class<T> t)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected abstract ContainerSerializer<?>
_withValueTypeSerializer(TypeSerializer vts)
Method that needs to be implemented to allow construction of a new serializer object with givenTypeSerializer
, used when addition type information is to be embedded.abstract JsonSerializer<?>
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.abstract JavaType
getContentType()
Accessor for finding declared (static) element type for type this serializer is used for.protected boolean
hasContentTypeAnnotation(SerializerProvider provider, BeanProperty property)
Deprecated.Since 2.7: should not be needed; should be enough to see if type has 'isStatic' modifierabstract boolean
hasSingleElement(T value)
Method called to determine if the given value (of type handled by this serializer) contains exactly one element.ContainerSerializer<?>
withValueTypeSerializer(TypeSerializer vts)
Factory(-like) method that can be used to construct a new container serializer that uses specifiedTypeSerializer
for decorating contained values with additional type information.-
Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer
_neitherNull, _nonEmpty, acceptJsonFormatVisitor, createSchemaNode, createSchemaNode, findAnnotatedContentSerializer, findContextualConvertingSerializer, findConvertingContentSerializer, findFormatFeature, findFormatOverrides, findIncludeOverrides, findPropertyFilter, getSchema, getSchema, handledType, isDefaultSerializer, serialize, visitArrayFormat, visitArrayFormat, visitFloatFormat, visitIntFormat, visitIntFormat, visitStringFormat, visitStringFormat, wrapAndThrow, wrapAndThrow
-
Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer
getDelegatee, isEmpty, isEmpty, isUnwrappingSerializer, properties, replaceDelegatee, serializeWithType, unwrappingSerializer, usesObjectId, withFilterId
-
-
-
-
Constructor Detail
-
ContainerSerializer
protected ContainerSerializer(java.lang.Class<T> t)
-
ContainerSerializer
protected ContainerSerializer(JavaType fullType)
- Since:
- 2.5
-
ContainerSerializer
protected ContainerSerializer(java.lang.Class<?> t, boolean dummy)
Alternate constructor that is (alas!) needed to work around kinks of generic type handling- Parameters:
t
-
-
ContainerSerializer
protected ContainerSerializer(ContainerSerializer<?> src)
-
-
Method Detail
-
withValueTypeSerializer
public ContainerSerializer<?> withValueTypeSerializer(TypeSerializer vts)
Factory(-like) method that can be used to construct a new container serializer that uses specifiedTypeSerializer
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 JsonSerializer<?> 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 usegetContentType()
andSerializerProvider.findContentValueSerializer(com.fasterxml.jackson.databind.JavaType, com.fasterxml.jackson.databind.BeanProperty)
.
-
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 as of now (2.9) this method is only called by serializer itself; and specifically is not used for non-array/collection types like
Map
orMap.Entry
instances.
-
_withValueTypeSerializer
protected abstract ContainerSerializer<?> _withValueTypeSerializer(TypeSerializer vts)
Method that needs to be implemented to allow construction of a new serializer object with givenTypeSerializer
, used when addition type information is to be embedded.
-
hasContentTypeAnnotation
@Deprecated protected boolean hasContentTypeAnnotation(SerializerProvider provider, BeanProperty property)
Deprecated.Since 2.7: should not be needed; should be enough to see if type has 'isStatic' modifierHelper method used to encapsulate logic for determining whether there is a property annotation that overrides element type; if so, we can and need to statically find the serializer.- Since:
- 2.1
-
-