Interface JsonSerializable<T extends JsonSerializable<T>>

Type Parameters:
T - The type of the object that is JSON capable.

public interface JsonSerializable<T extends JsonSerializable<T>>
Indicates that the implementing class can be serialized to and deserialized from JSON.

Since deserialization needs to work without an instance of the class, implementing this interface it's assumed the class has a static method fromJson(JsonReader) that deserializes an instance of that class. The contract for reading JSON from JsonReader is that the initial state of the reader on call will either be a null JsonToken or be the JsonToken after the JsonToken.FIELD_NAME for the object. So, for objects calling out to other JsonSerializable objects for deserialization, they'll pass the reader pointing to the token after the JsonToken.FIELD_NAME. This way objects reading JSON will be self-encapsulated for reading properly formatted JSON. And, if an error occurs during deserialization an IllegalStateException should be thrown.

  • Method Details

    • toJson

      JsonWriter toJson(JsonWriter jsonWriter)
      Writes the object to the passed JsonWriter.

      The contract for writing JSON to JsonWriter is that the object being written will handle opening and closing its own JSON object. So, for objects calling out to other JsonSerializable objects for serialization, they'll write the field name only then pass the JsonWriter to the other JsonSerializable object. This way objects writing JSON will be self-encapsulated for writing properly formatted JSON.

      Parameters:
      jsonWriter - Where the object's JSON will be written.
      Returns:
      The JsonWriter where the JSON was written.
    • fromJson

      static <T extends JsonSerializable<T>> T fromJson(JsonReader jsonReader)
      Reads a JSON stream into an object.

      Implementations of JsonSerializable must define this method, otherwise an UnsupportedOperationException will be thrown.

      Type Parameters:
      T - The type of the object.
      Parameters:
      jsonReader - The JsonReader being read.
      Returns:
      The object that the JSON stream represented, may return null.