本节视频中我们会看到一个JSON数据的演示 JSON即 Java Script Object Notation JSON即 Java Script Object Notation 它是一种数据格式 以简单易懂的方式呈现数据对象 在不同程序之间进行数据交换时非常有用 在不同程序之间进行数据交换时非常有用 并且它很灵活 可以呈现和整理半结构化数据 JSON的基本结构 JSON的基本结构 包括诸如整数和字符串之类的基元值 包括诸如整数和字符串之类的基元值 还包括两种复合元素:对象和阵列 还包括两种复合元素:对象和阵列 对象是一套 标签-数值对组 的集合;阵列就是一串排列好的元素 对象是一套 标签-数值对组 的集合;阵列就是一串排列好的元素 在这个演示中,我们会更详细地解释 JSON的基本结构 JSON的语法 我们也将演示该数据模型的灵活性 我们也将演示该数据模型的灵活性 最后我们会简要了解一下JSON数据库的结构纲目 最后我们会简要了解一下JSON数据库的结构纲目 虽然JSON结构纲目尚未被广泛使用 但仍然是个有趣的话题 我们会看到 怎样利用一个结构纲目来验证JSON数据 屏幕上显示的 就是本节演示将要使用的JSON数据 与上一节《JSON简介》中所用的例子是一样的 与上一节《JSON简介》中所用的例子是一样的 不过现在我们要 详细分析这段数据的组成部分 另外,这个例子与我们之前学习XML时 所用的例子相同,只不过 转化成了与JSON相匹配的格式 转化成了与JSON相匹配的格式 你可以直接对比这两个例子 在我们的网站上 可以下载这些文件 我强烈建议你们 下载这些文件 以便仔细观察学习 以便仔细观察学习 好了 下面我们来看 屏幕上显示的是一个JSON编辑器 屏幕上显示的是一个JSON编辑器 我用的是Eclipse 我用的是Eclipse 在我们编辑这个文件之前 先来看看它是怎样构成的 先来看看它是怎样构成的 这是一段用来描述书本和杂志的JSON数据 这是一段用来描述书本和杂志的JSON数据 我们可以对书本和杂志添加很多信息 我们可以对书本和杂志添加很多信息 在最外层 这个大括号表明该段数据是一个JSON对象 提示一下,对象就是一套 标签-数值对组 的集合 所谓对象就是一套 标签-数值对组 的集合 不同的对组之间以逗号分隔 在这个JSON对象中 第一个元素就是以 Books 为标签 冒号之后是与books标签匹配的一大串数值 冒号之后是与books标签匹配的一大串数值 这个JSON对象只包含两个这样的 标签-数值对组 这个JSON对象只包含两个这样的 标签-数值对组 第二个对组就是“Magazines”标签和下面一大串数值 我们先来看看Magazines对组 “Magazine”是标签 对应的数值囊括在方括号之中 对应的数值囊括在方括号之中 说明这些数值组成了一个阵列 所谓阵列 也就是一串排列好的元素 这个阵列中有两个元素 每一个都是复合数值 因为每个元素 都在大括号中,代表一个对象 也就是一个 标签-数值对组 的集合 注意,这些对象 的标签(比如“Title”)有时也称做 属性 现在我们继续分析 Magazines的数值中 作为阵列元素的这两个对象 Magazines的数值中 作为阵列元素的这两个对象 每个对象 都包含3个标签和3个数值 终于在这里找到了基元值(不可再分割) 终于在这里找到了基元值(不可再分割) “Title”标签对应着字符串“National Geographic” “Month”标签对应着“January”,也是字符串 “Year”对应着2009,一个整数 接下来又是一个对象 代表另外一本杂志,有着不同的Title和Month 然而Year恰好是同一年 这两个 杂志 对象的结构完全相同 这两个 杂志 对象的结构完全相同 但其实它们的结构也可以不同 稍后我们编辑这个文件的时候就能看到 在开始编辑之前 我们再来看看 Books 我们再来看看 Books 它也是这个JSON数据对象中的一个 标签-数值对组 它也是这个JSON数据对象中的一个 标签-数值对组 Books是标签 与之匹配的数值同样是个阵列 Books是标签 与之匹配的数值同样是个阵列 而这个阵列同样包含两个元素 分别代表两本书 而这个阵列同样包含两个元素 分别代表两本书 每本书看起来比杂志要复杂 但其实也不过是一个对象 即 一些标签-数值对组的集合 在 书 这个对象里,我们有ISBN 有price, 有eddtition, 有title 这些标签所对应的数值 不是整数就是字符串 接下来我们看到 Authors标签 它对应的数值则是一个阵列(方括号内) 它对应的数值则是一个阵列(方括号内) 它对应的数值则是一个阵列(方括号内) 在Author的数值阵列中 有两个元素 即两位作者 每一位作者又有 姓 和 名 每一位作者又有 姓 和 名 但其实这些对组的格式不必尽然相同 但其实这些对组的格式不必尽然相同