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.public interface JsonSerializer<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();
 New applications should prefer TypeAdapter, whose streaming API is
 more efficient than this interface's tree API.
| Modifier and Type | Method and Description | 
|---|---|
| JsonElement | serialize(T src,
         Type typeOfSrc,
         JsonSerializationContext context)Gson invokes this call-back method during serialization when it encounters a
 field of the specified type. | 
JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context)
 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 the src object. However,
 you should never invoke it on the src object itself since that will
 cause an infinite loop (Gson will call your call-back method again).
 
src - the object that needs to be converted to Json.typeOfSrc - the actual type (fully genericized version) of the source
                  object.