一、什么是JSON?
JSON 是用于存储和传输数据的一种数据格式。
1、JSON 是纯文本(字符串)
2、JSON 具有"自我描述性"(人类可读)
3、JSON 具有层级结构(值中存在值)
4、JSON 可通过 JavaScript 进行解析
5、JSON 数据可使用 AJAX 进行传输
二、JSON的语法
1、数据在 名称/值 对中
2、数据由逗号分隔
3、大括号 {} 保存对象
4、中括号 [] 保存数组,数组可以包含多个对象
5、JSON 规定字符集是UTF-8,字符串必须使用双引号"",Object 的键也必须使用双引号""
6、数组或对象的最后一个成员,不能加 逗号
7、JSON键值对的 值 在有些情况下不需要加引号,例如:
—— 数字
—— 布尔值true/false
—— null
—— {}
—— []
示例:
{
"status": "0000",
"state": 200,
"message": "success",
"test": true,
"test2": null,
"data": {
"title": {
"id": "001",
"name": "白菜"
},
"content": [
{
"id": "001",
"value": "你好 白菜"
},
{
"id": "002",
"value": "你好 萝卜"
}
]
}
}
三、JSON对象
{ "name":"runoob", "alexa":10000, "site":null }
JSON 对象使用在大括号{}中书写。
对象可以包含多个 key/value(键/值)对。
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
key 和 value 中使用冒号(:)分割。
每个 key/value 对使用逗号(,)分割。
myObj = {
"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)。
JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined。
{
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}
myObj = {
"name":"网站",
"num":3,
"sites": [
{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },
{ "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] },
{ "name":"Taobao", "info":[ "淘宝", "网购" ] }
]
}
五、JSON对象和JSON数据的嵌套
1、 一个JSON对象中可以嵌套一个或多个JSON数组
2、 一个JSON数组中也可以嵌套一个或多个JSON对象
3、 JSON对象或JSON数组中也可以嵌套一个或多个“自己”
如下是一个完美的例子:
{
"name": "yinghui",
"age": 20,
"man": true,
"money": null,
"data1": {
"d1": [1,2,3],
"d2": [2,3,4]
},
"data2": {
"d3": 100,
"d4": 200
},
"data3": [
{
"d5": 300,
"d6": 400
},
{
"d7": 500,
"d8": 600
}
],
"data4": [
[4,5,6],
["hello","world"],
["000",true,null]
]
}