1、JSON 语法
JSON 格式在语法上与创建 JavaScript 对象代码是相同的。由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。
JSON示例:
// 键值对的集合,值的有序列表
{"name":"Levi", "like":["编程", "轮滑", "游戏"]};
//数组
[
{
"name": "cjavapy",
"type": "site"
},
{
"name": "levi",
"type": "person"
}
]
语法规则:
1)数据为 键/值 对
示例中 "name": "cjavapy"
就是键值对,name
是key
,cjavapy
是value
。
2)数据由逗号分隔
3)大括号保存对象
4)方括号保存数组
2、JSON对象和JSON字符串的转换
使用JSON.stringify()
可以将JSON对象转成字符串,也可以通过JSON.parse()
将JSON字符串转成JSON对象,
例如,
// 键值对的集合,值的有序列表
var JsonObj = {"name":"Levi", "like":["编程", "轮滑", "游戏"]};
var jsonstr = JSON.stringify(JsonObj);
console.log(jsonstr);
var jsonObject= JSON.parse(jsonstr);
console.log(jsonObject);
注意:JSON.stringify()
方法的可选参数space
,可以指定缩进用的空白字符串,用于美化输出(pretty-print)space
参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数没有提供(或者为null
)将没有空格。
例如,
// replacer 分隔符 space 缩进
JSON.stringify(value[, replacer [, space]])
var formatJsonStr=JSON.stringify(jsonObject,undefined, 2);
3、遍历JSON对象和JSON数组
// 遍历JSON对象
var packJson = {
"name":"levi",
"password":"123"
};
for(var k in packJson ){ //遍历packJson 对象的每个key/value对,k为key
console.log(k + " " + packJson[k]);
}
// 遍历JSON数组
var packJson = [
{
"name":"javascript",
"password":"123"
},
{
"name":"levi",
"password":"456"
}
];
for(var i in packJson){ //遍历packJson 数组时,i为索引
console.log(packJson[i].name + " " + packJson[i].password);
}
4、递归遍历JSON
对于嵌套的JSON对象数据,我们需要使用递归来遍历。
例如,
var array = [{
"type": "people",
"name": "levi",
"sex": "男",
"age": 30,
"objects": [{
"type": "people",
"name": "cjavapy",
"sex": "男",
"age": 31
}, {
"type": "people",
"name": "python",
"sex": "男",
"age": 32
}]
}, {
"type": "people",
"name": "java",
"sex": "男",
"age": 33,
}, {
"type": "people",
"name": "liang",
"sex": "男",
"age": 34,
"objects": [{
"type": "people",
"name": "linux",
"sex": "男",
"age": 35
}]
}];
var ageAll = [];
var findAge = function(arr) {
arr.forEach(function(item) {
if (item.age) {
ageAll.push(item.age);
}
if (item.objects && item.objects.length > 0) {
findAge(item.objects);
}
});
}
findAge(array);
console.log(ageAll);
5、相关函数
函数 | 描述 |
JSON.parse() | 用于将一个 JSON 字符串转换为 JavaScript 对象。 |
JSON.stringify() | 用于将 JavaScript 值转换为 JSON 字符串。 |