# Gson 教程

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

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

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

Gson 的最佳**好处是**，在我们为某些成员字段进行非常特定的操作之前，不必强制将注释添加到 Java 类中。

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

在本 *Gson 教程*中，我们将学习在我们的应用中有效地使用它。

## 1\. Gson 基础知识

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

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

    学习使用诸如 maven，gradle 或简单的 jar 文件之类的构建工具在 Java 应用中包括 gson 依赖项。

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

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

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

    Gson 提供的默认 JSON 输出是紧凑的 JSON 格式。 使用精美打印功能来格式化 JSON 以供读取。

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

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

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

    了解如何使用 Google GSON 库反序列化或解析 JSON 以在 Java 中进行设置（例如`HashSet`）。

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

    学习使用 Google Gson 库序列化`HashMap`。 还应学习使用 Gson 将 JSON 字符串反序列化为包含自定义对象的`HashMap`，以便将字段值复制到适当的通用类型中。

## 2.提前用法

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

*   #### [使用`GsonBuilder`自定义 Gson 对象](https://howtodoinjava.com/gson/gson-gsonbuilder-configuration/) 

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

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

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

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

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

*   #### [使用`@SerializedName`的自定义字段名称](https://howtodoinjava.com/gson/gson-serializedname/)

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

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

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

*   #### [`JsonReader` – 流式 JSON 解析器](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/) 

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

*   #### [`JsonParser`，`JsonElement`和`JsonObject`](https://howtodoinjava.com/gson/gson-jsonparser/)

    学习将 JSON 字符串解析或流化为 Java 对象的树形结构并转换为`JsonElement`。

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

    学习将 JSON 字符串解析或流化为 Java 对象的树形结构并转换为`JsonElement`。

*   #### [Gson 教程 - 回顾](https://howtodoinjava.com/gson/google-gson-tutorial/)

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

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

学习愉快！

参考文献：

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