## com.fasterxml.jackson.databind
Interface JsonSerializable

All Known Implementing Classes:
  ArrayNode, ArrayType, BaseJsonNode, BigIntegerNode, BinaryNode, BooleanNode, CollectionLikeType, CollectionType, ContainerNode, DecimalNode, DoubleNode, IntNode, JSONPObject, JSONWrappedObject, LongNode, MapLikeType, MapType, MissingNode, NullNode, NumericNode, ObjectNode, POJONode, 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: Jackson 2.0 added another method (from former "JsonSerializableWithType"), which is required for proper handling of case where additional type information is needed.

Method Summary
`void` `serialize(JsonGenerator jgen, SerializerProvider provider)` Serialization method called when no additional type information is to be included in serialization.
`void` `serializeWithType(JsonGenerator jgen, SerializerProvider provider, 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(JsonGenerator jgen,
                   SerializerProvider provider)
                   throws IOException,
                          JsonProcessingException

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

  Throws:
    `IOException`
    `JsonProcessingException`

### serializeWithType

    void serializeWithType(JsonGenerator jgen,
                           SerializerProvider provider,
                           TypeSerializer typeSer)
                           throws IOException,
                                  JsonProcessingException

  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 one of methods in `TypeSerializer` (such as `TypeSerializer.writeTypePrefixForObject(Object, JsonGenerator)`) followed by serialization of contents, followed by another call to `TypeSerializer` (such as `TypeSerializer.writeTypeSuffixForObject(Object, JsonGenerator)`). Exact methods to call in `TypeSerializer` 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`
    `JsonProcessingException`

Copyright © 2012 FasterXML. All Rights Reserved.