Google GSON 基础教程 - 简介
GSON 是 Google 提供的,开源的,用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符转成一个 Java 对象,或者将一个 Java 转化为 JSON 字符串。
Gson 可以处理任意 Java 对象,包括那些没有源代码存在的,已经编译成 .class
或 .jar
的对象
其实 Java JSON 库有很多,比如 Jackson 、JSON-lib、Flexjson 等等,所以,有一个疑问:
为什么我们要选择 Google GSON ?
站在 Google GSON 创建者的角度,它们认为 「 大多数 Java JSON 库都需要首先在类中添加 Java 注解 」,如果无法访问源代码,那么肯定凉凉,没办法给类添加注解。
站在 Java GSON 使用者的角度,因为 GSON 是 Google 出品啊.....
哈哈,客观一点,Google GSON 的设计目标是:
-
只提供简单的接口:
toJson()
用于将 Java 对象转换为 JSONfromJson()
用于将 JSON 转换为 Java 对象
-
允许将已经编译的、已经存在的不可修改对象转换为 JSON 和从 JSON 转换
-
支持泛型 - 它为泛型提供了广泛的支持
-
允许定制 Java 对象到 JSON 的结果
-
支持复杂的内部类 - 它支持具有深度继承层次结构的复杂对象
Google Gson 特点
好像,我也曾经被问到为什么不使用 Jackson 或者国人开发的那个库。
我能说出一些理由,比如下面这些,但它们看起来又不是理由
- 易于使用 - Gson API 提供了一个高级外观来简化常用的用例
- 无需创建映射 - Gson API 为大部分要序列化的对象提供了默认映射
- 性能优 - Gson 速度相当快,内存占用量低。 它适用于大型对象图或系统
- 干净JSON - Gson 创建一个干净而紧凑的 JSON 结果,它易于阅读
- 无依赖性— Gson 库不需要 JDK 以外的任何其他库
- 开源 - Gson 库是开源的; 它是免费提供的
Google JSON 处理 JSON 的几种方法
从简单到复杂,Google GSON 提供了三种处理 JSON 的方法:
-
数据绑定
这种方式使用属性访问器将 JSON 转换为 POJO ( 普通旧 Java对象 )并从中转换
Gson 使用数据类型适配器读取/写入 JSON
这是最为简单的一种方式,类似于 XML 的 JAXB 解析器
-
树模型
这种方式构建了一个
JsonObject
节点树,以内存树的方式来表示 JSON 文档这种方式,类似于 XML 的 DOM 解析器
-
流 ( Stream ) API
这些 API 将读取和写入 JSON 内容作为离散事件
提供了
JsonReader
和JsonWriter
类用于读取/写入一种称之为JsonToken
令牌的数据这是 Google GSON 提供的最为强大的处理方法,开销低、读取/写入速度快。
这种方式,有点类似于 XML 的 Stax 解析器。