架构
Gson 架构:
Gson
🔽
TypeAdapter
🔽
JsonWriter / JsonReader
JsonElement 架构:
JsonElement
🔽
Streams
🔽
TypeAdapters.JSON_ELEMENT
🔽
JsonWriter / JsonReader
🔽
String
源码结构
以 2.8.9 为例,源码结构如下:
src/main
├── java
│ ├── com
│ │ └── google
│ │ └── gson
│ │ ├── ExclusionStrategy.java
│ │ ├── FieldAttributes.java
│ │ ├── FieldNamingPolicy.java
│ │ ├── FieldNamingStrategy.java
│ │ ├── Gson.java
│ │ ├── GsonBuilder.java
│ │ ├── InstanceCreator.java
│ │ ├── JsonArray.java
│ │ ├── JsonDeserializationContext.java
│ │ ├── JsonDeserializer.java
│ │ ├── JsonElement.java
│ │ ├── JsonIOException.java
│ │ ├── JsonNull.java
│ │ ├── JsonObject.java
│ │ ├── JsonParseException.java
│ │ ├── JsonParser.java
│ │ ├── JsonPrimitive.java
│ │ ├── JsonSerializationContext.java
│ │ ├── JsonSerializer.java
│ │ ├── JsonStreamParser.java
│ │ ├── JsonSyntaxException.java
│ │ ├── LongSerializationPolicy.java
│ │ ├── ToNumberPolicy.java
│ │ ├── ToNumberStrategy.java
│ │ ├── TypeAdapter.java
│ │ ├── TypeAdapterFactory.java
│ │ ├── annotations
│ │ │ ├── Expose.java
│ │ │ ├── JsonAdapter.java
│ │ │ ├── SerializedName.java
│ │ │ ├── Since.java
│ │ │ ├── Until.java
│ │ │ └── package-info.java
│ │ ├── internal
│ │ │ ├── $Gson$Preconditions.java
│ │ │ ├── $Gson$Types.java
│ │ │ ├── ConstructorConstructor.java
│ │ │ ├── Excluder.java
│ │ │ ├── GsonBuildConfig.java
│ │ │ ├── JavaVersion.java
│ │ │ ├── JsonReaderInternalAccess.java
│ │ │ ├── LazilyParsedNumber.java
│ │ │ ├── LinkedHashTreeMap.java
│ │ │ ├── LinkedTreeMap.java
│ │ │ ├── ObjectConstructor.java
│ │ │ ├── PreJava9DateFormatProvider.java
│ │ │ ├── Primitives.java
│ │ │ ├── Streams.java
│ │ │ ├── UnsafeAllocator.java
│ │ │ ├── bind
│ │ │ │ ├── ArrayTypeAdapter.java
│ │ │ │ ├── CollectionTypeAdapterFactory.java
│ │ │ │ ├── DateTypeAdapter.java
│ │ │ │ ├── DefaultDateTypeAdapter.java
│ │ │ │ ├── JsonAdapterAnnotationTypeAdapterFactory.java
│ │ │ │ ├── JsonTreeReader.java
│ │ │ │ ├── JsonTreeWriter.java
│ │ │ │ ├── MapTypeAdapterFactory.java
│ │ │ │ ├── NumberTypeAdapter.java
│ │ │ │ ├── ObjectTypeAdapter.java
│ │ │ │ ├── ReflectiveTypeAdapterFactory.java
│ │ │ │ ├── TreeTypeAdapter.java
│ │ │ │ ├── TypeAdapterRuntimeTypeWrapper.java
│ │ │ │ ├── TypeAdapters.java
│ │ │ │ └── util
│ │ │ │ └── ISO8601Utils.java
│ │ │ ├── package-info.java
│ │ │ ├── reflect
│ │ │ │ ├── PreJava9ReflectionAccessor.java
│ │ │ │ ├── ReflectionAccessor.java
│ │ │ │ └── UnsafeReflectionAccessor.java
│ │ │ └── sql
│ │ │ ├── SqlDateTypeAdapter.java
│ │ │ ├── SqlTimeTypeAdapter.java
│ │ │ ├── SqlTimestampTypeAdapter.java
│ │ │ └── SqlTypesSupport.java
│ │ ├── package-info.java
│ │ ├── reflect
│ │ │ ├── TypeToken.java
│ │ │ └── package-info.java
│ │ └── stream
│ │ ├── JsonReader.java
│ │ ├── JsonScope.java
│ │ ├── JsonToken.java
│ │ ├── JsonWriter.java
│ │ └── MalformedJsonException.java
│ └── module-info.java
└── resources
└── META-INF
└── MANIFEST.MF
接口 com.google.gson.TypeAdapterFactory
TypeAdapter 工厂,用于生成 TypeAdapter 类。
抽象类 com.google.gson.TypeAdapter
类型适配器,用于 JSON 的序列化和反序列化。
有多种实现,不同形式的 JSON ,会对应不同的 TypeAdapter ,也可以自定义。