1、json定义
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
作用
数据标记,存储,传输
2、特点
- 读写速度快
- 解析简单
- 轻量级
- 独立于语言,平台
- 具有自我描叙性
3、json解析

4、JSON建构于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象
(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),
有键列表(keyed list),或者关联数组 (associative array)。 - 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式
在同样基于这些结构的编程语言之间交换成为可能。
5、JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后
跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

{
"name": "英语",
"score": 78.3
}
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用
“,”(逗号)分隔。

"courses": [
{
"name": "英语",
"score": 78.3
}
]
值(value)可以是双引号括起来的字符串(string)、数值(number)、 true 、 false 、 null 、对象
(object)或者数组(array)。这些结构可以嵌套。

6、Gson原理
在这个序列化和反序列化的过程中,Gson充当的了一个解析器的角色

7、json 分析
编写一个JSON解析器实际上就是一个方法,它的输入是一个表示JSON的字符串,输出是结构化的对应到语言本身的数据结构
一般来说,解析过程包括词法分析和语法分析两个阶段

8、json 词法分析
- BEGIN_OBJECT({)
- END_OBJECT(})
- BEGIN_ARRAY([)
- END_ARRAY(])
- NULL(null)
- NUMBER(数字)
- STRING(字符串)
- BOOLEAN(true/false)
- SEP_COLON(:)
- SEP_COMMA(,)
9、Gson-JsonElement

10、JSON的JsonObject对象
JsonObject对象可以看成 name/values的集合,而这写values就是一个个JsonElement,他们的结构可以用如下图表示

11、json-流程简图

12、Gson-JsonDeserializer的工作原理


13、Gson-TypeAdapter的工作原理


14、JSON-适配器模式



15、json-整体流程

网友评论