Gson类作为serialize, deserialize json的context, 主要用到的是fromJson(...) 及toJson()两个方法。进行实例化的时候调用new Gson(), 但其默认的constructor 为:
public Gson() {
this(Excluder.DEFAULT, FieldNamingPolicy.IDENTITY,
Collections.<Type, InstanceCreator<?>> emptyMap(), DEFAULT_SERIALIZE_NULLS,
DEFAULT_COMPLEX_MAP_KEYS, DEFAULT_JSON_NON_EXECUTABLE, DEFAULT_ESCAPE_HTML,
DEFAULT_PRETTY_PRINT, DEFAULT_LENIENT, DEFAULT_SPECIALIZE_FLOAT_VALUES, LongSerializationPolicy.DEFAULT,Collections.<TypeAdapterFactory> emptyList());
}
也可以使用GsonBuilder来创建Gson实例, 它包含了各种configuration, 如版本控制, pretty printing, 自定义JsonSerializer, JsonDeserializer, InstanceCreateor, TypeAdapter, TypeAdapterFactory.
在创建Gson实例的同时,TypeAdapterFactory也被加载,用于getAdapter(TypeToken<T> type) 时, 返回相应的TypeAdapter.
List<TypeAdapterFactory> factories = new ArrayList<TypeAdapterFactory>();
TypeAdapters 通过工厂模式返回不同的 TypeAdapterFactory
在Gson.getAdapter(TypeToken<T> type)中循环读取factories, return TypeAdapter.
使用策略模式, 创建不同的TypeAdapter。