JsonSerializable<T> Interface

Type Parameters

T

The type of the object that is JSON serializable.

public interface JsonSerializable

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 FIELD_NAME for the object. So, for objects calling out to other JsonSerializable<T> objects for deserialization, they'll pass the reader pointing to the token after the 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 Summary

Modifier and Type Method and Description
static T fromJson(JsonReader jsonReader)

Reads a JSON stream into an object.

abstract JsonWriter toJson(JsonWriter jsonWriter)

Writes the object to the passed JsonWriter.

Method Details

fromJson

public static T fromJson(JsonReader jsonReader)

Reads a JSON stream into an object.

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

Parameters:

jsonReader - The JsonReader being read.

Returns:

The object that the JSON stream represented, may return null.

Throws:

IOException

- If an object fails to be read from the jsonReader.

toJson

public abstract 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<T> objects for serialization, they'll write the field name only then pass the JsonWriter to the other JsonSerializable<T> 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.

Throws:

IOException

- If the object fails to be written to the jsonWriter.

Applies to