com.fasterxml.jackson.databind

## Interface JsonSerializable

- All Known Implementing Classes:
    ArrayNode, ArrayType, BaseJsonNode, BigIntegerNode, BinaryNode, BooleanNode, CollectionLikeType, CollectionType, ContainerNode, DecimalNode, DoubleNode, FloatNode, IntNode, 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`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `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
    Modifier and Type | Method and Description
    --- | ---
    `void` | `serialize(JsonGenerator gen, SerializerProvider serializers)` Serialization method called when no additional type information is to be included in serialization.
    `void` | `serializeWithType(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(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(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`

Copyright © 2008–2020 FasterXML. All rights reserved.