一、什么是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] ] }