傻傻弄不清楚的JSON

5次阅读

共计 1399 个字符,预计需要花费 4 分钟才能阅读完成。

作为一名开发人员,我们时常跟 JSON 打交道,但对于 JSON 却有这不少的疑惑,但平常也就是停留在使用的角度上。今天我们就来走进 JSON。我们首先引入两个问题, 这两个问题将帮助我们理解 JSON。

  • 什么是 JSON?
  • 为什么需要 JSON 或者 JSON 能帮助我们做什么?

第一个问题的答案就隐藏在 JSON 的名字当中,JSON: JavaScript Object Notation. 我们重点关注 Notation 这个词,前两个词我们很熟悉。

Notation: 符号,记号,谱号。我们是否可以将 JSON 理解为 JavaScript 对象的符号形式呢?
带着这个疑问,我查看了 JSON 的官网: 

请注意标红的部分,这是关键。我们在强调一遍,一种轻量级的数据交换格式。

根据以上的求索,我们可以对 JSON 做出以下论断:

  • JSON 是 JavaScript 对象的表示形式
  • JSON 是一种轻量级的数据交换形式

从 JSON 的官网可以看到 JSON 有两种结构:

  • “名称 / 值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)

“ 名称 / 值 ” 对的集合,好怪的说法啊,JSON 脱胎于 JavaScript,简单的说,JSON 就是 JavaScript 的对象和数组。
那么 JSON 是 JavaScript 的对象吗?并不是,说 JSON 是 JavaScript 的对象和数组只是为了方便理解 JSON 而已,JavaScript Object Notation, JavaScript Object Notation, 我们强调两遍,Notaiton 在牛津字典的解释是 a system of signs or symbols used to represent information— 即一种代表某种信息的符号。叫 JavaScript Object Notation 的原因也许是 JSON 的作者道格拉斯同志在设计 JSON 时参考了 JavaScript Object 的对象语法而已。
JSON 的形式:

  • 对象是一个无序的“‘名称 / 值’对”集合。一个对象以 {左括号 开始,} 右括号 结束。每个“名称”后跟一个 : 冒号;“‘名称 / 值’对”之间使用 , 逗号 分隔。
  • 数组是值(value)的有序集合。一个数组以 [左中括号 开始,] 右中括号 结束。值之间使用 , 逗号 分隔。
  • 值(value)可以是双引号括起来的字符串(string)、数值 (number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。

接下来,我们从数据交换形式的角度来解释 JSON,数据交换是谁和谁做交换呢? web 客户端和服务端吧。在前后端分离的大势,JSON 是前段和后端的一种数据交换形式,不仅仅是前后端的一种数据交换形式,还是系统之间进行数据交换的一种形式。

为什么需要 JSON 呢?
那就要请出 XML 同志了,在没有 JSON 同志之前,都使用 XML 进行数据交换,但是 XML 并不简单,有着各种各样的数据约束,越搞越复杂,我们希望数据交换形式尽可能的简单一些,不想再去了解那些让人头痛的那一大堆的复杂规范。

正文完
 0