com.fasterxml.jackson.databind

## Interface JsonSerializable

All Known Implementing Classes:
  ArrayNode, ArrayType, BaseJsonNode, BigIntegerNode, BinaryNode, BooleanNode, CollectionLikeType, CollectionType, ContainerNode, DecimalNode, DoubleNode, FloatNode, IntNode, IterationType, JsonNode, JSONPObject, JsonSerializable.Base, JSONWrappedObject, LongNode, MapLikeType, MapType, MissingNode, NullNode, NumericNode, ObjectNode, PlaceholderForType, POJONode, RawValue, ReferenceType, ResolvedRecursiveType, ShortNode, SimpleType, TextNode, TypeBase, ValueNode

    public interface JsonSerializable

Interface that can be implemented by objects that know how to serialize themselves to JSON, using `JsonGenerator` (and `SerializerProvider` if necessary).

Note that implementing this interface binds implementing object closely to Jackson API, and that it is often not necessary to do so -- if class is a bean, it can be serialized without implementing this interface.

Note that while it is possible to just directly implement `JsonSerializable`, actual implementations are strongly recommended to instead extend `JsonSerializable.Base`.

NOTE: in Jackson 3.x this class will be renamed as `JacksonSerializable`

### Nested Class Summary

Nested Classes
`static class` `JsonSerializable.Base` Base class with minimal implementation, as well as couple of extension methods that core Jackson databinding makes use of.

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `serialize(com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider serializers)` Serialization method called when no additional type information is to be included in serialization.
`void` `serializeWithType(com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer)` Serialization method called when additional type information is expected to be included in serialization, for deserialization to use.

### Method Detail

#### serialize

    void serialize(com.fasterxml.jackson.core.JsonGenerator gen,
                   SerializerProvider serializers)
            throws IOException

Serialization method called when no additional type information is to be included in serialization.

Throws:
  `IOException`

#### serializeWithType

    void serializeWithType(com.fasterxml.jackson.core.JsonGenerator gen,
                           SerializerProvider serializers,
                           TypeSerializer typeSer)
                    throws IOException

Serialization method called when additional type information is expected to be included in serialization, for deserialization to use.

Usually implementation consists of a call to `TypeSerializer.writeTypePrefix(com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.core.type.WritableTypeId)` followed by serialization of contents, followed by a call to `TypeSerializer.writeTypeSuffix(com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.core.type.WritableTypeId)`). Details of the type id argument to pass depend on shape of JSON Object used (Array, Object or scalar like String/Number/Boolean).

Note that some types (most notably, "natural" types: String, Integer, Double and Boolean) never include type information.

Throws:
  `IOException`