AndBase开发框架  1.6
 全部  命名空间 文件 函数 变量 枚举值 
com.google.gson.TypeAdapter< T >类 参考abstract
类 com.google.gson.TypeAdapter< T > 继承关系图:
com.google.gson.TreeTypeAdapter< T > com.google.gson.TreeTypeAdapter< T >.SingleTypeFactory

详细描述

Converts Java objects to and from JSON.

Defining a type's JSON form

By default Gson converts application classes to JSON using its built-in type adapters. If Gson's default JSON conversion isn't appropriate for a type, extend this class to customize the conversion. Here's an example of a type adapter for an (X,Y) coordinate point:

public class PointAdapter extends TypeAdapter<Point> {
public Point read(JsonReader reader) throws IOException {
if (reader.peek() == JsonToken.NULL) {
reader.nextNull();
return null;
}
String xy = reader.nextString();
String[] parts = xy.split(",");
int x = Integer.parseInt(parts[0]);
int y = Integer.parseInt(parts[1]);
return new Point(x, y);
}
public void write(JsonWriter writer, Point value) throws IOException {
if (value == null) {
writer.nullValue();
return;
}
String xy = value.getX() + "," + value.getY();
writer.value(xy);
}
}

With this type adapter installed, Gson will convert

Points

to JSON as strings like

"5,8"

rather than objects like

{"x":5,"y":8}

. In this case the type adapter binds a rich Java class to a compact JSON value.

The read() method must read exactly one value and write() must write exactly one value. For primitive types this is means readers should make exactly one call to

nextBoolean()

,

nextDouble()

,

nextInt()

,

nextLong()

,

nextString()

or

nextNull()

. Writers should make exactly one call to one of value() or nullValue(). For arrays, type adapters should start with a call to

beginArray()

, convert all elements, and finish with a call to

endArray()

. For objects, they should start with

beginObject()

, convert the object, and finish with

endObject()

. Failing to convert a value or converting too many values may cause the application to crash.

Type adapters should be prepared to read null from the stream and write it to the stream. Alternatively, they should use nullSafe() method while registering the type adapter with Gson. If your

Gson

instance has been configured to GsonBuilder#serializeNulls(), these nulls will be written to the final document. Otherwise the value (and the corresponding name when writing to a JSON object) will be omitted automatically. In either case your type adapter must handle null.

To use a custom type adapter with Gson, you must register it with a GsonBuilder:

GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Point.class, new PointAdapter());
// if PointAdapter didn't check for nulls in its read/write methods, you should instead use
// builder.registerTypeAdapter(Point.class, new PointAdapter().nullSafe());
...
Gson gson = builder.create();
自从
2.1

该类的文档由以下文件生成: