AndBase开发框架  1.6
 全部  命名空间 文件 函数 变量 枚举值 
Public 成员函数 | 所有成员列表
com.google.gson.JsonSerializer< T >接口 参考
类 com.google.gson.JsonSerializer< T > 继承关系图:
com.google.gson.DefaultDateTypeAdapter

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

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.

作者
Inderjeet Singh
Joel Leitch
参数
<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 ( 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

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).

参数
srcthe object that needs to be converted to Json.
typeOfSrcthe actual type (fully genericized version) of the source object.
返回
a JsonElement corresponding to the specified object.

该接口的文档由以下文件生成: