java - GSON内部工作

标签 java android json gson

我在当前的项目中使用 GSON,我很惊讶地看到它的强大功能,并且想知道它在内部是如何工作的。 GSON 对象如何将 any 对象更改为 JSON,反之亦然。我确实阅读了谷歌用户指南,但没有提到他们的内部工作。谁能解释一下。此外,这个问题可能不会吸引某些人,但我是 android 编程的新手,正在探索一些东西。虽然我成功地使用了 gson。但我确实想知道它的工作方法。谁能解释一下。 非常感谢。

最佳答案

Gson 的内部构造基于三种核心类型:

  • JsonReader从流中读取 JSON 文档中的元素。
  • JsonWriter将 JSON 文档中的元素写入流。
  • TypeAdapter将单个 JSON 元素转换为单个对象,反之亦然。

一个关键模式是 TypeAdapter 是递归实现的。例如,TypeAdapter<FoodDelivery>可以委托(delegate)给 TypeAdapter<Address>和一个 TypeAdapter<MenuItem> . TypeAdapterFactory接口(interface)使得为任意类型构建类型适配器变得容易。

另一个关键模式是 Gson包括一些默认内置的很棒的类型适配器。有用于基元、字符串、集合的类型适配器。加上一个特殊类型的适配器,它接受任意 Java 类并将其逐字段转换为 JSON 对象。

关于java - GSON内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146188/

相关文章:

java - Integer.toString() 和 String.valueOf() 之间的性能差异?

java - 获取哈希表上一对整数(键值)的值

json - 对于 JSON,在键名中使用像 "-"这样的标点符号是不是很糟糕?

android - JSONException - 没有成功的值(value) - JsonParser - Android

java - Swing:GridBagLayout动态复选框位置

java - 尝试获取包括使用 AsciiDoc Java 接口(interface)

android - 在ContentResolver上实现JOIN操作?

java - 如何在 mainActivity 布局的工具栏中删除这个箭头?

java - 安卓/Eclipse : How to create a new project without appcompat_v7

jquery - 基于 GUI 或基于 Web 的 JSON 编辑器,类似于属性浏览器