- Type Parameters:
T- type for which the serializer is being registered. It is possible that a serializer may be asked to serialize a specific generic type of the T.
GsonBuilder.registerTypeAdapter(Type, Object).
Let us look at example where defining a serializer will be useful. The Id class
defined below has two fields: clazz and value.
public class Id<T> {
private final Class<T> clazz;
private final long value;
public Id(Class<T> clazz, long value) {
this.clazz = clazz;
this.value = value;
}
public long getValue() {
return value;
}
}
The default serialization of Id(com.foo.MyObject.class, 20L) will be
{"clazz":"com.foo.MyObject","value":20}. Suppose, you just want the output to be the value
instead, which is 20 in this case. You can achieve that by writing a custom serializer:
class IdSerializer implements JsonSerializer<Id> {
public JsonElement serialize(Id id, Type typeOfId, JsonSerializationContext context) {
return new JsonPrimitive(id.getValue());
}
}
You will also need to register IdSerializer with Gson as follows:
Gson gson = new GsonBuilder().registerTypeAdapter(Id.class, new IdSerializer()).create();
Serializers should be stateless and thread-safe, otherwise the thread-safety guarantees of
Gson might not apply.
New applications should prefer TypeAdapter, whose streaming API is more efficient than
this interface's tree API.
- Author:
- Inderjeet Singh, Joel Leitch
-
Method Summary
Modifier and TypeMethodDescriptionserialize(T src, Type typeOfSrc, JsonSerializationContext context) Gson invokes this call-back method during serialization when it encounters a field of the specified type.
-
Method Details
-
serialize
Gson invokes this call-back method during serialization when it encounters a field of the specified type.In the implementation of this call-back method, you should consider invoking
JsonSerializationContext.serialize(Object, Type)method to create JsonElements for any non-trivial field of thesrcobject. However, you should never invoke it on thesrcobject itself since that will cause an infinite loop (Gson will call your call-back method again).- Parameters:
src- the object that needs to be converted to Json.typeOfSrc- the actual type (fully genericized version) of the source object.- Returns:
- a JsonElement corresponding to the specified object.
-