## com.fasterxml.jackson.databind.jsontype
Class TypeSerializer

    java.lang.Object
      com.fasterxml.jackson.databind.jsontype.TypeSerializer

Direct Known Subclasses:
  TypeSerializerBase

    public abstract class TypeSerializer

extends Object

Interface for serializing type information regarding instances of specified base type (super class), so that exact subtype can be properly deserialized later on. These instances are to be called by regular `JsonSerializer`s using proper contextual calls, to add type information using mechanism type serializer was configured with.

Author:
  tatu

Constructor Summary
`TypeSerializer()`

Method Summary
`abstract TypeSerializer` `forProperty(BeanProperty prop)` Method called to create contextual version, to be used for values of given property.
`abstract String` `getPropertyName()` Name of property that contains type information, if property-based inclusion is used.
`abstract TypeIdResolver` `getTypeIdResolver()` Accessor for object that handles conversions between types and matching type ids.
`abstract JsonTypeInfo.As` `getTypeInclusion()` Accessor for type information inclusion method that serializer uses; indicates how type information is embedded in resulting JSON.
`abstract void` `writeCustomTypePrefixForArray(Object value, JsonGenerator jgen, String typeId)`
`abstract void` `writeCustomTypePrefixForObject(Object value, JsonGenerator jgen, String typeId)` Method called to write initial part of type information for given value, when it will be output as JSON Object value (not as JSON Array or scalar), using specified custom type id instead of calling `TypeIdResolver`.
`abstract void` `writeCustomTypePrefixForScalar(Object value, JsonGenerator jgen, String typeId)` Method called to write initial part of type information for given value, when it will be output as scalar JSON value (not as JSON Object or Array), using specified custom type id instead of calling `TypeIdResolver`.
`abstract void` `writeCustomTypeSuffixForArray(Object value, JsonGenerator jgen, String typeId)`
`abstract void` `writeCustomTypeSuffixForObject(Object value, JsonGenerator jgen, String typeId)`
`abstract void` `writeCustomTypeSuffixForScalar(Object value, JsonGenerator jgen, String typeId)`
`abstract void` `writeTypePrefixForArray(Object value, JsonGenerator jgen)` Method called to write initial part of type information for given value, when it will be output as JSON Array value (not as JSON Object or scalar).
`void` `writeTypePrefixForArray(Object value, JsonGenerator jgen, Class<?> type)` Alternative version of the prefix-for-array method, which is given actual type to use (instead of using exact type of the value); typically a super type of actual value type
`abstract void` `writeTypePrefixForObject(Object value, JsonGenerator jgen)` Method called to write initial part of type information for given value, when it will be output as JSON Object value (not as JSON Array or scalar).
`void` `writeTypePrefixForObject(Object value, JsonGenerator jgen, Class<?> type)` Alternative version of the prefix-for-object method, which is given actual type to use (instead of using exact type of the value); typically a super type of actual value type
`abstract void` `writeTypePrefixForScalar(Object value, JsonGenerator jgen)` Method called to write initial part of type information for given value, when it will be output as scalar JSON value (not as JSON Object or Array).
`void` `writeTypePrefixForScalar(Object value, JsonGenerator jgen, Class<?> type)` Alternative version of the prefix-for-scalar method, which is given actual type to use (instead of using exact type of the value); typically a super type of actual value type
`abstract void` `writeTypeSuffixForArray(Object value, JsonGenerator jgen)` Method called after value has been serialized, to close any scopes opened by earlier matching call to `writeTypeSuffixForScalar(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)`.
`abstract void` `writeTypeSuffixForObject(Object value, JsonGenerator jgen)` Method called after value has been serialized, to close any scopes opened by earlier matching call to `writeTypePrefixForObject(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)`.
`abstract void` `writeTypeSuffixForScalar(Object value, JsonGenerator jgen)` Method called after value has been serialized, to close any scopes opened by earlier matching call to `writeTypePrefixForScalar(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TypeSerializer

    public TypeSerializer()

Method Detail

### forProperty

    public abstract TypeSerializer forProperty(BeanProperty prop)

  Method called to create contextual version, to be used for values of given property. This may be the type itself (as is the case for bean properties), or values contained (for `Collection` or `Map` valued properties).

  Since:
    2.0

### getTypeInclusion

    public abstract JsonTypeInfo.As getTypeInclusion()

  Accessor for type information inclusion method that serializer uses; indicates how type information is embedded in resulting JSON.

### getPropertyName

    public abstract String getPropertyName()

  Name of property that contains type information, if property-based inclusion is used.

### getTypeIdResolver

    public abstract TypeIdResolver getTypeIdResolver()

  Accessor for object that handles conversions between types and matching type ids.

### writeTypePrefixForScalar

    public abstract void writeTypePrefixForScalar(Object value,
                                                  JsonGenerator jgen)
                                           throws IOException,
                                                  JsonProcessingException

  Method called to write initial part of type information for given value, when it will be output as scalar JSON value (not as JSON Object or Array). This means that the context after call can not be that of JSON Object; it may be Array or root context.

  Parameters:
    `value` - Value that will be serialized, for which type information is to be written
    `jgen` - Generator to use for writing type information
  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypePrefixForObject

    public abstract void writeTypePrefixForObject(Object value,
                                                  JsonGenerator jgen)
                                           throws IOException,
                                                  JsonProcessingException

  Method called to write initial part of type information for given value, when it will be output as JSON Object value (not as JSON Array or scalar). This means that context after call must be JSON Object, meaning that caller can then proceed to output field entries.

  Parameters:
    `value` - Value that will be serialized, for which type information is to be written
    `jgen` - Generator to use for writing type information
  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypePrefixForArray

    public abstract void writeTypePrefixForArray(Object value,
                                                 JsonGenerator jgen)
                                          throws IOException,
                                                 JsonProcessingException

  Method called to write initial part of type information for given value, when it will be output as JSON Array value (not as JSON Object or scalar). This means that context after call must be JSON Array, that is, there must be an open START_ARRAY to write contents in.

  Parameters:
    `value` - Value that will be serialized, for which type information is to be written
    `jgen` - Generator to use for writing type information
  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypeSuffixForScalar

    public abstract void writeTypeSuffixForScalar(Object value,
                                                  JsonGenerator jgen)
                                           throws IOException,
                                                  JsonProcessingException

  Method called after value has been serialized, to close any scopes opened by earlier matching call to `writeTypePrefixForScalar(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)`. Actual action to take may depend on various factors, but has to match with action `writeTypePrefixForScalar(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)` did (close array or object; or do nothing).

  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypeSuffixForObject

    public abstract void writeTypeSuffixForObject(Object value,
                                                  JsonGenerator jgen)
                                           throws IOException,
                                                  JsonProcessingException

  Method called after value has been serialized, to close any scopes opened by earlier matching call to `writeTypePrefixForObject(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)`. It needs to write closing END_OBJECT marker, and any other decoration that needs to be matched.

  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypeSuffixForArray

    public abstract void writeTypeSuffixForArray(Object value,
                                                 JsonGenerator jgen)
                                          throws IOException,
                                                 JsonProcessingException

  Method called after value has been serialized, to close any scopes opened by earlier matching call to `writeTypeSuffixForScalar(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)`. It needs to write closing END_ARRAY marker, and any other decoration that needs to be matched.

  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypePrefixForScalar

    public void writeTypePrefixForScalar(Object value,
                                         JsonGenerator jgen,
                                         Class<?> type)
                                  throws IOException,
                                         JsonProcessingException

  Alternative version of the prefix-for-scalar method, which is given actual type to use (instead of using exact type of the value); typically a super type of actual value type

  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypePrefixForObject

    public void writeTypePrefixForObject(Object value,
                                         JsonGenerator jgen,
                                         Class<?> type)
                                  throws IOException,
                                         JsonProcessingException

  Alternative version of the prefix-for-object method, which is given actual type to use (instead of using exact type of the value); typically a super type of actual value type

  Throws:
    `IOException`
    `JsonProcessingException`

### writeTypePrefixForArray

    public void writeTypePrefixForArray(Object value,
                                        JsonGenerator jgen,
                                        Class<?> type)
                                 throws IOException,
                                        JsonProcessingException

  Alternative version of the prefix-for-array method, which is given actual type to use (instead of using exact type of the value); typically a super type of actual value type

  Throws:
    `IOException`
    `JsonProcessingException`

### writeCustomTypePrefixForScalar

    public abstract void writeCustomTypePrefixForScalar(Object value,
                                                        JsonGenerator jgen,
                                                        String typeId)
                                                 throws IOException,
                                                        JsonProcessingException

  Method called to write initial part of type information for given value, when it will be output as scalar JSON value (not as JSON Object or Array), using specified custom type id instead of calling `TypeIdResolver`. This means that the context after call can not be that of JSON Object; it may be Array or root context.

  Parameters:
    `value` - Value that will be serialized, for which type information is to be written
    `jgen` - Generator to use for writing type information
    `typeId` - Exact type id to use
  Throws:
    `IOException`
    `JsonProcessingException`

### writeCustomTypePrefixForObject

    public abstract void writeCustomTypePrefixForObject(Object value,
                                                        JsonGenerator jgen,
                                                        String typeId)
                                                 throws IOException,
                                                        JsonProcessingException

  Method called to write initial part of type information for given value, when it will be output as JSON Object value (not as JSON Array or scalar), using specified custom type id instead of calling `TypeIdResolver`. This means that context after call must be JSON Object, meaning that caller can then proceed to output field entries.

  Parameters:
    `value` - Value that will be serialized, for which type information is to be written
    `jgen` - Generator to use for writing type information
    `typeId` - Exact type id to use
  Throws:
    `IOException`
    `JsonProcessingException`

### writeCustomTypePrefixForArray

    public abstract void writeCustomTypePrefixForArray(Object value,
                                                       JsonGenerator jgen,
                                                       String typeId)
                                                throws IOException,
                                                       JsonProcessingException

  Throws:
    `IOException`
    `JsonProcessingException`

### writeCustomTypeSuffixForScalar

    public abstract void writeCustomTypeSuffixForScalar(Object value,
                                                        JsonGenerator jgen,
                                                        String typeId)
                                                 throws IOException,
                                                        JsonProcessingException

  Throws:
    `IOException`
    `JsonProcessingException`

### writeCustomTypeSuffixForObject

    public abstract void writeCustomTypeSuffixForObject(Object value,
                                                        JsonGenerator jgen,
                                                        String typeId)
                                                 throws IOException,
                                                        JsonProcessingException

  Throws:
    `IOException`
    `JsonProcessingException`

### writeCustomTypeSuffixForArray

    public abstract void writeCustomTypeSuffixForArray(Object value,
                                                       JsonGenerator jgen,
                                                       String typeId)
                                                throws IOException,
                                                       JsonProcessingException

  Throws:
    `IOException`
    `JsonProcessingException`

Copyright © 2012 FasterXML. All Rights Reserved.