JSON语法
JSON 键/值对
JSON键/值对由键和值组成,键必须是字符串,值可以是字符串(string)、数值(number) 、对象(object)、数组(array)、true、false、null。如图 1‑1所示:
图1-1 JSON的值
在定义JSON键/值时,先是键名,后面写一个冒号,然后是值。如:
"github": "https://github.com/"
这就等价于这条 JavaScript 语句:
github = "https://github.com/"
JSON 字符串
JSON 的字符串(string)跟C或者Java的字符串非常相似,是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。如图 1‑2所示:
图1-2 JSON字符串
由于JSON 字符串不能使用单引号,因此一个字符(character)就是一个单独的字符串(character string)。
JSON 数值
JSON 数值(number)与C或者Java的数值非常相似,支持整型、浮点型,浮点型也可以用指数表示。如图 1‑3所示:
图1-3 JSON数值
JSON不支持八进制和十六进制, 数值必须以十进制表示,且不能使用NaN和Infinity。以下是合法的JSON数值:
{ "age": 30 }
JSON 对象
JSON 对象是一个无序的key/value对的集合。一个对象以 '{' 开始,以 '}' 结束;每个key 和 value 中使用冒号分隔;每个 key/value 对之间使用逗号分隔。如图 1‑4所示:
图1-4 JSON对象
JSON 对象语法:
- JSON 对象在大括号({})中书写。
- 对象可以包含多个key/value(键/值)对。
- key是字符串,必须放在双引号里面。value 可以是合法的 JSON 数据类型(字符串, 数值, 对象, 数组, 布尔值或 null)。
- 一个 key/value 对内部,key 和 value使用冒号(:)分隔。
- key/value 对之间,使用逗号(,)分隔。
- JSON 对象可以嵌套
下面就是一个合法的JSON 对象:
{
"weibo": "https://weibo.com/" ,
"github": "https://github.com/" ,
"qq": {
"number": "376601179",
"email": "[email protected]"
}
-
}
JSON 数组
JSON数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。如图 1‑5所示:
图1-5 JSON数组
JSON 数组:
- JSON 数组在中括号中书写。
- JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数值, 对象, 数组, 布尔值或 null),也可以是 JavaScript 的表达式,包括函数、日期、undefined。
对象的属性值也可以是一个JSON数组。如,以下对象的 sites 属性值是一个包含三个元素的数组:
{
"name": "网站",
"num": 3,
"sites": [ "Google.com", "Taobao.com", "Waibo.wang" ]
}
使用索引值来访问数组的元素。如:
x = myObj.sites[2]; // "Waibo.wang"
JSON数组的元素也可以是对象。如,以下对象 "employees" 是包含三个对象的数组,每个对象代表一条关于某人(有姓和名)的记录:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
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 上开源。