11.md 4.6 KB
Newer Older
W
wizardforcel 已提交
1 2 3 4
# Gson 教程

> 原文: [https://howtodoinjava.com/learningpaths/gson/](https://howtodoinjava.com/learningpaths/gson/)

W
wizardforcel 已提交
5
通常,所有现代应用都从远程服务(例如 [REST](https://restfulapi.net) 或 SOAP)中获取数据。 数据大部分为 XML 或 JSON 格式。 Gson 自动(在必要时使用简单的`toJson()``fromJson()`方法手动或手动)帮助应用进行 *Java-JSON 序列化和反序列化*
W
wizardforcel 已提交
6 7 8

Gson 可以处理任意 Java 对象,包括我们没有源代码的现有对象。

W
wizardforcel 已提交
9
Gson 的最佳**好处是**,在我们为某些成员字段进行非常特定的操作之前,不必强制将注释添加到 Java 类中。
W
wizardforcel 已提交
10 11 12

请注意,`Gson`实例在调用 Json 操作时不会保持任何状态。 因此,您可以自由地将同一对象重用于多个 Json 序列化和反序列化操作。

W
wizardforcel 已提交
13
在本 *Gson 教程*中,我们将学习在我们的应用中有效地使用它。
W
wizardforcel 已提交
14 15 16 17 18 19 20

## 1\. Gson 基础知识

在第一部分中,我们将了解 Google Gson 库及其基本映射功能。

*   #### [安装](https://howtodoinjava.com/gson/gson-installation-maven-gradle-jar/)

W
wizardforcel 已提交
21
    学习使用诸如 maven,gradle 或简单的 jar 文件之类的构建工具在 Java 应用中包括 gson 依赖项。
W
wizardforcel 已提交
22 23 24 25 26

*   #### [简单序列化和反序列化](https://howtodoinjava.com/gson/gson-serialize-deserialize-json/)

    学习如何使用 GSON 将简单的 Java 对象序列化为 JSON 表示,并将 JSON 字符串反序列化为等效的 Java 对象。

W
wizardforcel 已提交
27
*   #### [JSON 输出格式紧凑型 VS 精美打印](https://howtodoinjava.com/gson/pretty-print-json-output/)
W
wizardforcel 已提交
28

W
wizardforcel 已提交
29
    Gson 提供的默认 JSON 输出是紧凑的 JSON 格式。 使用精美打印功能来格式化 JSON 以供读取。
W
wizardforcel 已提交
30 31 32 33 34 35 36

*   #### [数组和对象列表的映射](https://howtodoinjava.com/gson/gson-parse-json-array/)

    了解如何使用 Google GSON 库将包含 json 数组的 JSON 反序列化或解析为 Java 数组或 Java 列表对象。

*   #### [集的映射](https://howtodoinjava.com/gson/gson-serialize-deserialize-set/)

W
wizardforcel 已提交
37
    了解如何使用 Google GSON 库反序列化或解析 JSON 以在 Java 中进行设置(例如`HashSet`)。
W
wizardforcel 已提交
38 39 40

*   #### [地图的映射](https://howtodoinjava.com/gson/gson-serialize-deserialize-hashmap/)

W
wizardforcel 已提交
41
    学习使用 Google Gson 库序列化`HashMap`。 还应学习使用 Gson 将 JSON 字符串反序列化为包含自定义对象的`HashMap`,以便将字段值复制到适当的通用类型中。
W
wizardforcel 已提交
42 43 44 45 46

## 2.提前用法

第一部分中的基本示例足以应付默认用例。 我们可能需要自定义 Gson 的行为以支持特定要求。 了解如何执行此操作。

W
wizardforcel 已提交
47
*   #### [使用`GsonBuilder`自定义 Gson 对象](https://howtodoinjava.com/gson/gson-gsonbuilder-configuration/) 
W
wizardforcel 已提交
48 49 50 51 52 53 54 55 56

    对于简单的用例,使用`'Gson gson = new Gson();'`就足够了。 学习使用 GsonBuilder 通过自定义配置创建新的 Gson 实例。

*   #### [序列化空值](https://howtodoinjava.com/gson/serialize-null-values/)

    默认情况下,Gson 忽略空值。 学习在序列化和反序列化期间包括空值。

*   #### [版本支持](https://howtodoinjava.com/gson/gson-since-version-support/)

W
wizardforcel 已提交
57
    可以使用`@Since`注解维护同一对象的多个版本。 Gson 将忽略任何大于配置的版本号的字段/对象。
W
wizardforcel 已提交
58

W
wizardforcel 已提交
59
*   #### [使用`@SerializedName`的自定义字段名称](https://howtodoinjava.com/gson/gson-serializedname/)
W
wizardforcel 已提交
60 61 62 63 64 65 66

    了解如何使用 Google GSON 库将 Java 对象序列化为其 JSON 表示形式,以及将 JSON 字符串反序列化为等效的 Java 对象。

*   #### [从序列化和反序列化中排除字段](https://howtodoinjava.com/gson/gson-exclude-or-ignore-fields/)

    Gson 支持多种机制来排除顶级类,字段和字段类型。 了解如何使用它们。

W
wizardforcel 已提交
67
*   #### [`JsonReader` – 流式 JSON 解析器](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/) 
W
wizardforcel 已提交
68 69 70

    了解如何读取 JSON 字符串或文件作为 JSON 令牌流。

W
wizardforcel 已提交
71
*   #### [`JsonParser`,`JsonElement`和`JsonObject`](https://howtodoinjava.com/gson/gson-jsonparser/)
W
wizardforcel 已提交
72

W
wizardforcel 已提交
73
    学习将 JSON 字符串解析或流化为 Java 对象的树形结构并转换为`JsonElement`。
W
wizardforcel 已提交
74 75 76

*   #### [自定义序列化和反序列化](https://howtodoinjava.com/gson/custom-serialization-deserialization/)

W
wizardforcel 已提交
77
    学习将 JSON 字符串解析或流化为 Java 对象的树形结构并转换为`JsonElement`。
W
wizardforcel 已提交
78

W
wizardforcel 已提交
79
*   #### [Gson 教程 - 回顾](https://howtodoinjava.com/gson/google-gson-tutorial/)
W
wizardforcel 已提交
80 81 82 83 84 85 86 87 88 89

    让我们来回顾一下到目前为止我们已经学过的最重要的主题。

请把关于 **gson 教程**的问题交给我。

学习愉快!

参考文献:

[Github 上的 Google Gson](https://github.com/google/gson)