org.codehaus.jackson.map.ser
Class MapSerializer

java.lang.Object
  extended by org.codehaus.jackson.map.JsonSerializer<T>
      extended by org.codehaus.jackson.map.ser.SerializerBase<T>
          extended by org.codehaus.jackson.map.ser.ContainerSerializerBase<Map<?,?>>
              extended by org.codehaus.jackson.map.ser.MapSerializer
All Implemented Interfaces:
ResolvableSerializer, SchemaAware

public class MapSerializer
extends ContainerSerializerBase<Map<?,?>>
implements ResolvableSerializer

Standard serializer implementation for serializing {link java.util.Map} types.

Note: about the only configurable setting currently is ability to filter out entries with specified names.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.codehaus.jackson.map.JsonSerializer
JsonSerializer.None
 
Field Summary
protected  HashSet<String> _ignoredEntries
          Set of entries to omit during serialization, if any
protected  JsonSerializer<Object> _keySerializer
          Key serializer to use, if it can be statically determined
protected  JavaType _keyType
          Declared type of keys
protected  BeanProperty _property
          Map-valued property being serialized with this instance
protected  JsonSerializer<Object> _valueSerializer
          Value serializer to use, if it can be statically determined
protected  JavaType _valueType
          Declared type of contained values
protected  boolean _valueTypeIsStatic
          Whether static types should be used for serialization of values or not (if not, dynamic runtime type is used)
protected  TypeSerializer _valueTypeSerializer
          Type identifier serializer used for values, if any.
protected static JavaType UNSPECIFIED_TYPE
           
 
Fields inherited from class org.codehaus.jackson.map.ser.SerializerBase
_handledType
 
Constructor Summary
protected MapSerializer()
           
protected MapSerializer(HashSet<String> ignoredEntries, JavaType valueType, boolean valueTypeIsStatic, TypeSerializer vts)
          Deprecated. Use variant that takes Key type and property information
protected MapSerializer(HashSet<String> ignoredEntries, JavaType keyType, JavaType valueType, boolean valueTypeIsStatic, TypeSerializer vts, JsonSerializer<Object> keySerializer, BeanProperty property)
           
 
Method Summary
 ContainerSerializerBase<?> _withValueTypeSerializer(TypeSerializer vts)
           
static MapSerializer construct(String[] ignoredList, JavaType mapType, boolean staticValueType, TypeSerializer vts, BeanProperty property)
          Factory method used to construct Map serializers.
 JsonNode getSchema(SerializerProvider provider, Type typeHint)
          Get the representation of the schema to which this serializer will conform.
 void resolve(SerializerProvider provider)
          Need to get callback to resolve value serializer, if static typing is used (either being forced, or because value type is final)
 void serialize(Map<?,?> value, JsonGenerator jgen, SerializerProvider provider)
          Method that can be called to ask implementation to serialize values of type this serializer handles.
protected  void serializeFields(Map<?,?> value, JsonGenerator jgen, SerializerProvider provider)
          Method called to serialize fields, when the value type is not statically known.
protected  void serializeFieldsUsing(Map<?,?> value, JsonGenerator jgen, SerializerProvider provider, JsonSerializer<Object> ser)
          Method called to serialize fields, when the value type is statically known, so that value serializer is passed and does not need to be fetched from provider.
protected  void serializeTypedFields(Map<?,?> value, JsonGenerator jgen, SerializerProvider provider)
           
 void serializeWithType(Map<?,?> value, JsonGenerator jgen, 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 org.codehaus.jackson.map.ser.ContainerSerializerBase
withValueTypeSerializer
 
Methods inherited from class org.codehaus.jackson.map.ser.SerializerBase
createObjectNode, createSchemaNode, createSchemaNode, handledType, isDefaultSerializer, wrapAndThrow, wrapAndThrow, wrapAndThrow, wrapAndThrow
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UNSPECIFIED_TYPE

protected static final JavaType UNSPECIFIED_TYPE

_property

protected final BeanProperty _property
Map-valued property being serialized with this instance

Since:
1.7

_ignoredEntries

protected final HashSet<String> _ignoredEntries
Set of entries to omit during serialization, if any


_valueTypeIsStatic

protected final boolean _valueTypeIsStatic
Whether static types should be used for serialization of values or not (if not, dynamic runtime type is used)


_keyType

protected final JavaType _keyType
Declared type of keys

Since:
1.7

_valueType

protected final JavaType _valueType
Declared type of contained values


_keySerializer

protected JsonSerializer<Object> _keySerializer
Key serializer to use, if it can be statically determined

Since:
1.7

_valueSerializer

protected JsonSerializer<Object> _valueSerializer
Value serializer to use, if it can be statically determined

Since:
1.5

_valueTypeSerializer

protected final TypeSerializer _valueTypeSerializer
Type identifier serializer used for values, if any.

Constructor Detail

MapSerializer

protected MapSerializer()

MapSerializer

@Deprecated
protected MapSerializer(HashSet<String> ignoredEntries,
                                   JavaType valueType,
                                   boolean valueTypeIsStatic,
                                   TypeSerializer vts)
Deprecated. Use variant that takes Key type and property information

Legacy constructor (as of 1.7)


MapSerializer

protected MapSerializer(HashSet<String> ignoredEntries,
                        JavaType keyType,
                        JavaType valueType,
                        boolean valueTypeIsStatic,
                        TypeSerializer vts,
                        JsonSerializer<Object> keySerializer,
                        BeanProperty property)
Method Detail

_withValueTypeSerializer

public ContainerSerializerBase<?> _withValueTypeSerializer(TypeSerializer vts)
Specified by:
_withValueTypeSerializer in class ContainerSerializerBase<Map<?,?>>

construct

public static MapSerializer construct(String[] ignoredList,
                                      JavaType mapType,
                                      boolean staticValueType,
                                      TypeSerializer vts,
                                      BeanProperty property)
Factory method used to construct Map serializers.

Parameters:
ignoredList - Array of entry names that are to be filtered on serialization; null if none
mapType - Declared type information (needed for static typing)
staticValueType - Whether static typing should be used for the Map (which includes its contents)
vts - Type serializer to use for map entry values, if any

serialize

public void serialize(Map<?,?> value,
                      JsonGenerator jgen,
                      SerializerProvider provider)
               throws IOException,
                      JsonGenerationException
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 SerializerBase<Map<?,?>>
Parameters:
value - Value to serialize; can not be null.
jgen - Generator used to output resulting Json content
provider - Provider that can be used to get serializers for serializing Objects value contains, if any.
Throws:
IOException
JsonGenerationException

serializeWithType

public void serializeWithType(Map<?,?> value,
                              JsonGenerator jgen,
                              SerializerProvider provider,
                              TypeSerializer typeSer)
                       throws IOException,
                              JsonGenerationException
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 ignore serialization of type information, and just calls JsonSerializer.serialize(T, org.codehaus.jackson.JsonGenerator, org.codehaus.jackson.map.SerializerProvider): serializers that can embed type information should override this to implement actual handling. Most common such handling is done by something like:

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

Overrides:
serializeWithType in class JsonSerializer<Map<?,?>>
Parameters:
value - Value to serialize; can not be null.
jgen - 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:
IOException
JsonGenerationException

serializeFields

protected void serializeFields(Map<?,?> value,
                               JsonGenerator jgen,
                               SerializerProvider provider)
                        throws IOException,
                               JsonGenerationException
Method called to serialize fields, when the value type is not statically known.

Throws:
IOException
JsonGenerationException

serializeFieldsUsing

protected void serializeFieldsUsing(Map<?,?> value,
                                    JsonGenerator jgen,
                                    SerializerProvider provider,
                                    JsonSerializer<Object> ser)
                             throws IOException,
                                    JsonGenerationException
Method called to serialize fields, when the value type is statically known, so that value serializer is passed and does not need to be fetched from provider.

Throws:
IOException
JsonGenerationException

serializeTypedFields

protected void serializeTypedFields(Map<?,?> value,
                                    JsonGenerator jgen,
                                    SerializerProvider provider)
                             throws IOException,
                                    JsonGenerationException
Throws:
IOException
JsonGenerationException

getSchema

public JsonNode getSchema(SerializerProvider provider,
                          Type typeHint)
Description copied from interface: SchemaAware
Get the representation of the schema to which this serializer will conform.

Specified by:
getSchema in interface SchemaAware
Specified by:
getSchema in class SerializerBase<Map<?,?>>
Parameters:
provider - The serializer provider.
typeHint - A hint about the type.
Returns:
Json-schema for this serializer.

resolve

public void resolve(SerializerProvider provider)
             throws JsonMappingException
Need to get callback to resolve value serializer, if static typing is used (either being forced, or because value type is final)

Specified by:
resolve in interface ResolvableSerializer
Parameters:
provider - Provider that has constructed serializer this method is called on.
Throws:
JsonMappingException