1、JSON简介:
JSON: JavaScript Object Notation(javascript 对象表示法)
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 实例
{ "sites": [ { "name":"华中科技大学" , "url":"www.hust.edu.cn" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
1.1 什么是 JSON ?
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(php,JSP,.NET)编程语言都支持JSON。
- JSON 具有自我描述性,更易理解
1.2 JSON - 转换为 JavaScript 对象
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。
由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
2、JSON 语法
JSON 语法是 JavaScript 语法的子集。
2.1 JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
-
数据在名称/值对中
-
数据由逗号分隔
-
大括号保存对象
-
中括号保存数组
2.2 JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"name" : "华中科技大学" 等价于这条 JavaScript 语句:name = "菜鸟教程"
2.3 JSON 值
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
2.4 JSON 数字
JSON 数字可以是整型或者浮点型:{ "age":30 }
2.5 JSON 对象
JSON 对象在大括号({})中书写:
对象可以包含多个名称/值对:{ "name":"华中科技大学" , "url":"www.hust.edu.cn" }
2.6 JSON 数组
JSON 数组在中括号中书写:
数组可包含多个对象
{ "sites": [ { "name":"华中科技大学" , "url":"www.hust.edu.cn" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
2.7 JSON 布尔值
JSON 布尔值可以是 true 或者 false:{ "flag":true }
2.8 JSON null
JSON 可以设置 null 值:{ "root":null }
2.9 JSON 使用 JavaScript 语法
JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。
通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:
var sites = [ { "name":"华中科技大学" , "url":"www.hust.edu.cn" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ];
JavaScript 对象数组中的第一项(索引从 0 开始):
sites[0].name; 返回的内容是:华中科技大学
可以像这样修改数据: sites[0].name="清华大学";
2.10 JSON 文件
- JSON 文件的文件类型是 ".json"
- JSON 文本的 MIME 类型是 "application/json"
3 JSON 对象
语法实例:{ "name":"runoob", "alexa":10000, "site":null }
JSON 对象使用在大括号({})中书写。
对象可以包含多个 key/value(键/值)对。
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
key 和 value 中使用冒号(:)分割。
每个 key/value 对使用逗号(,)分割。
3.1访问对象值
使用点号(.)来访问对象的值:
1 <body>
2
3 <p>你可以使用点号(.)来访问 JSON 对象的值:</p>
4
5 <p id="demo"></p>
6
7 <script>
8
9 var myObj, x;
10 myObj = { "name":"runoob", "alexa":10000, "site":null };
11 x = myObj.name;
12 document.getElementById("demo").innerhtml = x;
13
14 </script>
15
16 </body>
使用中括号([])来访问对象的值:
<p>你也可以使用中括号([])来访问 JOSN 对象的值:</p>
<p id="demo"></p>
<script>
var myObj, x;
myObj = myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];
document.getElementById("demo").innerHTML = x;
</script>
3.2 循环对象
使用 for-in 来循环对象的属性:
1 var myObj = { "name":"runoob", "alexa":10000, "site":null };
2 for (x in myObj) {
3 document.getElementById("demo").innerHTML += x + "<br>";
4 }
for-in 循环对象的属性时,使用中括号([])来访问属性的值:
1 var myObj = { "name":"runoob", "alexa":10000, "site":null };
2 for (x in myObj) {
3 document.getElementById("demo").innerHTML += myObj[x] + "<br>";
4 }
3.3 嵌套 JSON 对象
JSON 对象中可以包含另外一个 JSON 对象:
1 myObj = {
2 "name":"runoob",
3 "alexa":10000,
4 "sites": {
5 "site1":"www.hust.edu.cn",
6 "site2":"m.hust.edu.cn",
7 "site3":"c.hust.edu.cn"
8 }
9 }
使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。
x = myObj.sites.site1;
// 或者
x = myObj.sites["site1"];
3.4 修改值
使用点号(.)来修改 JSON 对象的值:
myObj.sites.site1 = "www.google.com";
使用中括号([])来修改 JSON 对象的值:
myObj.sites["site1"] = "www.google.com";
3.5 删除对象属性
使用 delete 关键字来删除 JSON 对象的属性:
delete myObj.sites.site1;
使用中括号([])来删除 JSON 对象的属性:
delete myObj.sites["site1"]
3.6 json 对象和 json 字符串的区别:
json 对象
var str2 = { "name": "asan", "sex": "man" };
json字符串
var str1 = ‘{ "name": "deyuyi", "sex": "man" }‘;