JSON语法

JSON 键/值对

JSON键/值对由键和值组成,键必须是字符串,值可以是字符串(string)、数值(number) 、对象(object)、数组(array)、true、false、null。如图 1‑1所示:

JSON语法

图1-1 JSON的值

在定义JSON键/值时,先是键名,后面写一个冒号,然后是值。如:

  1. "github": "https://github.com/"

这就等价于这条 JavaScript 语句:

  1. github = "https://github.com/"

JSON 字符串

JSON 的字符串(string)跟C或者Java的字符串非常相似,是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。如图 1‑2所示:

JSON语法

图1-2 JSON字符串

由于JSON 字符串不能使用单引号,因此一个字符(character)就是一个单独的字符串(character string)。

JSON 数值

JSON 数值(number)与C或者Java的数值非常相似,支持整型、浮点型,浮点型也可以用指数表示。如图 1‑3所示:

JSON语法

图1-3 JSON数值

JSON不支持八进制和十六进制, 数值必须以十进制表示,且不能使用NaN和Infinity。以下是合法的JSON数值:

{ "age": 30 } 

JSON 对象

JSON 对象是一个无序的key/value对的集合。一个对象以 '{' 开始,以 '}' 结束;每个key 和 value 中使用冒号分隔;每个 key/value 对之间使用逗号分隔。如图 1‑4所示:

JSON语法

图1-4 JSON对象

JSON 对象语法:

  • JSON 对象在大括号({})中书写。
  • 对象可以包含多个key/value(键/值)对。
  • key是字符串,必须放在双引号里面。value 可以是合法的 JSON 数据类型(字符串, 数值, 对象, 数组, 布尔值或 null)。
  • 一个 key/value 对内部,key 和 value使用冒号(:)分隔。
  • key/value 对之间,使用逗号(,)分隔。
  • JSON 对象可以嵌套

下面就是一个合法的JSON 对象:

  1. {
  2.   "weibo": "https://weibo.com/" ,
  3.   "github": "https://github.com/" ,
  4.   "qq": {
  5.     "number": "376601179",
  6.     "email": "[email protected]"
  7.   }
  8. } 

JSON 数组

JSON数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。如图 1‑5所示:

JSON语法

图1-5 JSON数组

JSON 数组:

  • JSON 数组在中括号中书写。
  • JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数值, 对象, 数组, 布尔值或 null),也可以是 JavaScript 的表达式,包括函数、日期、undefined。

对象的属性值也可以是一个JSON数组。如,以下对象的 sites 属性值是一个包含三个元素的数组:

  1. {
  2.   "name": "网站",
  3.   "num": 3,
  4.   "sites": [ "Google.com", "Taobao.com", "Waibo.wang" ]
  5. }

使用索引值来访问数组的元素。如:

  1. x = myObj.sites[2];   // "Waibo.wang"

JSON数组的元素也可以是对象。如,以下对象 "employees" 是包含三个对象的数组,每个对象代表一条关于某人(有姓和名)的记录:

  1. {
  2. "employees": [
  3. { "firstName":"John" , "lastName":"Doe" },
  4. { "firstName":"Anna" , "lastName":"Smith" },
  5. { "firstName":"Peter" , "lastName":"Jones" }
  6. ]
  7. }

JSON 布尔值

JSON 布尔值可以是 true 或者 false。如:

{ "flag":true }

JSON null

JSON 可以设置 null 值。如:

{ "zhihu":null }

JSON 文件

  • JSON 文件的文件类型是 ".json"
  • JSON 文本的 MIME 类型是 "application/json"

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。