概述
JSON
是JavaScript Object Notation
的缩写,它是一种数据交换格式。也是JavaScript
的一个子集,表示对象。JSON
是存储和交换文本信息的语法,类似于XML
,但是它比XML
更小,更快,更易解析。JSON
规定字符集必须是UTF-8
,字符串必须用双引号“”
,Object
的键也必须用双引号""
。- 因为
JSON
有着上面的规定,使得JSON
在其它编程语言也可以轻易解析。
JSON vs XML
- 相同之处:
JSON
和XML
数据都是 “自我描述” ,都易于理解。JSON
和XML
数据都是有层次的结构JSON
和XML
数据可以被大多数编程语言使用
- 不同之处:
JSON
不需要结束标签JSON
更加简短JSON
读写速度更快JSON
可以使用数组
语法
语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
JSON 名称/值对
JSON数据的书写格式是:
key : value
名称/值包括字段名称(在双引号中), 后面写一个冒号,然后是值:
"name" : "wtping"
JSON 值
JSON 值可以是:
-
数字(整数
1
或浮点数1.0
){ "age" : 20 }
-
字符串(在双引号中
""
){ "name" : "baidu" }
-
逻辑值(
true
或false
){ "flag" : true }
-
数组(在中括号中
[]
)[ { key1 : value1-1 , key2:value1-2 }, { key1 : value2-1 , key2:value2-2 }, { key1 : value3-1 , key2:value3-2 }, ... { keyN : valueN-1 , keyN:valueN-2 }, ] { "sites": [ { "name":"菜鸟教程" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
-
对象(在大括号中
{}
){ key1 : value1, key2 : value2, ... keyN : valueN } { "age" : 20 , "name" : "lisi" }
-
null
{ "value" : null }
JSON对象
实例:
{ "name":"baidu", "num":10000, "site":null }
JSON
对象使用在大括号({}
)中书写。- 对象可以包含多个
key/value
(键/值)对。 key
必须是字符串,value
可以是合法的JSON
数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。key
和value
中使用冒号(:
)分割。- 每个
key/value
对使用逗号(,
)分割。
嵌套对象
{
"name":"runoob",
"alexa":10000,
"sites": {
"site1":"www.runoob.com",
"site2":"m.runoob.com",
"site3":"c.runoob.com"
}
}
JSON数组
数组对象
实例:
[ "Google", "Runoob", "Taobao" ]
-
JSON 数组在中括号中书写。
-
JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
对象中的数组
对象属性的值可以是一个数组: 实例:
{
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}
嵌套数组
JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象: 实例:
{
"name":"网站",
"num":3,
"sites": [
{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },
{ "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] },
{ "name":"Taobao", "info":[ "淘宝", "网购" ] }
]
}