JSON 语法是 JavaScript 对象表示语法的子集
- 数据在名称/值对中 例 "name":"zhangsan"
- 数据由逗号分隔 例 "name":"zhangsan", "age":18
- 大括号保存对象 例 "school":{ "name":"Test School" ,"address":"Street A Road B"}
- 中括号保存数组 例 "schools":[{ "name":"Test SchoolA" ,"address":"Street A Road B"},{ "name":"Test SchoolB" ,"address":"Street C Road D"}]
JSON 值可以是
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
对象
JSON 对象使用在大括号({})中书写。
对象可以包含多个 key/value(键/值)对。
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
key 和 value 中使用冒号(:)分割。
每个 key/value 对使用逗号(,)分割。
1、访问对象的值
(1)使用点号(.)来访问对象的值
例:var test, x; //定义对象test、x
test= { "name":"water","price":"2"}; //给test赋值
x = test.name; //通过.调用name属性,可以通过document.getElementById("xxxxxxx").innerHTML = x;打印x值
(2)使用中括号([])来访问对象的值
例:var test, x; //定义对象test、x
test= { "name":"water","price":"2"}; //给test赋值
x = test[name]; //通过[]调用name属性,可以通过document.getElementById("xxxxxxx").innerHTML = x;打印x值
2、循环对象的值
(1)使用 for-in 来循环对象的属性
var test= { "name":"water","price":"2" }; //定义对象test并给赋值
for (x in test) { //使用for in循环
document.getElementById("XXXXX").innerHTML += x + "<br>"; //打印对象属性值
}
(2)在 for-in 循环对象的属性时,使用中括号([])来访问属性的值
var test= { "name":"water","price":"2" }; //定义对象test并给赋值
for (x in test) { //使用for in循环
document.getElementById("demo").innerHTML += test[x] + "<br>"; //打印对象属性值
}
3、JSON 对象中可以包含另外一个 JSON 对象
school= {
"name":"TestA",
"address":"Street A Road B",
"classes": {
"class1":"room1",
"class2":"room2",
"class3":"room3"
}
}
使用点号(.)或(([])来修改 JSON 对象的值
school.classes.class1 = "room4";
使用 delete 关键字来删除 JSON 对象的属性
delete school.classes["class2"]
使用点号(.)或者中括号([])来访问嵌套的 JSON 对象
x = school.classes.class1; // 或者 x = school.classes["class1"];
使用for遍历时,只能通过 school[x] 来获取相应属性的值,而不能使用 school.x
数组
JSON 数组在中括号中书写。
JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined
1、对象属性的值可以是一个数组,可以使用索引值来访问数组
var school, x;
school= {
"name":"班级",
"num":3,
"classes":[ "class1", "class2", "class3" ]
}
x = school.classes[0]; //使用索引值来访问数组
document.getElementById("XXXXX").innerHTML = x; //打印X
2、使用 for-in 来访问数组
var school, i, x = "";
school= {
"name":"班级",
"num":3,
"classes":[ "class1", "class2", "class3" ]
};
for (i in school.classes) {
x += school.classess[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;
3、JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象,可以使用 for-in 来循环访问每个数组
var school, i, j, x = "";
school = {
"name":"班级",
"num":3,
"classes": [
{ "name":"class1", "info":[ "学生A", "学生B", "学生C" ] },
{ "name":"class2", "info":[ "学生D", "学生E", "学生F" ] },
{ "name":"class3", "info":[ "学生G", "学生H", "学生I" ] }
]
}
for (i in school.classes) {
x += "<h1>" + school.classes[i].name + "</h1>";
for (j in school.classes[i].info) {
x += school.classes[i].info[j] + "<br>";
}
}
document.getElementById("XXXXX").innerHTML = x;
使用索引值来修改数组值
school.classes[0] = "class4";
使用 delete 关键字来删除数组元素
delete school.classes[1];
读取值
document.write(school.classes[1].name);