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 字符串。 |