Public 成员函数 | |
| JsonElement | serialize (T src, Type typeOfSrc, JsonSerializationContext context) |
Interface representing a custom serializer for Json. You should write a custom serializer, if you are not happy with the default serialization done by Gson. You will also need to register this serializer through com.google.gson.GsonBuilder#registerTypeAdapter(Type, Object).
Let us look at example where defining a serializer will be useful. The
class defined below has two fields:
and
.
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
will be {"clazz":com.foo.MyObject,"value":20}. Suppose, you just want the output to be the value instead, which is
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
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.
| <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. |
| JsonElement com.google.gson.JsonSerializer< T >.serialize | ( | T | src, |
| Type | typeOfSrc, | ||
| JsonSerializationContext | context | ||
| ) |
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 the
object. However, you should never invoke it on the
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. |
1.8.8