JSON数据格式
JSON的概念
JSON全称JavaScript Object Notation,通过键值对存储数据。JSON不是Javascript的子集,比如
JSON可以包含U+2028和U+2029,JS字符串不能。
JSON数据格式的特点
- 以
{
起始,}
结束的键值对或数组 - 双引号包裹键名
- JSON字符串中不可添加注释
JSON数据格式的优势
- 数据结构更加简化,不需要成对标记
- 对象查找方式比DOM结构化查找快速
- JSON支持更丰富的数据类型
JS中如何使用JSON数据
- JSON数据本质上是以个字符串
- 可以通过eval,JSON.parse等方式转换为对象
- 注意使用try catch
其他语言中如何使用JSON数据
- 很多语言都内置了JSON的包,模块或函数
- 从数据库/缓存等数据源中取出JSON数据格式
- 转化为可用的对象或直接使用
JSON对象
JSON对象的特点
- 仅有两个方法parse和stringify
- parse方法和stringify方法调用时注意try catch
- IE8支持,兼容性很好
JSON对象的方法
- JSON.parse():将参数字符串转化为对象或值
// 第二个参数接受一个解析函数
// 注意去除尾逗号
console.log(JSON.parse('{"data": 1}')); // {data: 1}
console.log(JSON.parse('null')); // null
console.log(JSON.parse('"abc"')); // abc
console.log(JSON.parse('{"data": 1},')); // Throw Error,不能有尾逗号
// 第二个参数的解析函数是深度优先遍历
var str = '{"a":1,"b":{"c":5}}';
console.log(JSON.parse(str, function (k, v) {
console.log(k);
if(k === ''){
return v
}
if(typeof v === 'number'){
return v * 100;
}
return v;
}));
// a
// c 注意这里是深度优先遍历,所以c会先显示出来
// b
// {a: 100, b: {c: 500}}
- JSON.stringify():将值或对象转换为JSON数据格式
// 第二个参数接受一个替换函数
// 第三个参数接受一个缩进格式
var obj = {"data":1,"a":{"b":5}};
var str = "abc";
var arr = [1,2,3];
console.log(JSON.stringify(obj));
// {"data":1,"a":{"b":5}}
console.log(JSON.stringify(str));
// "abc"
console.log(JSON.stringify(arr));
// [1,2,3]
console.log(
JSON.stringify(arr,function(k,v){
if(v === 3){
return 5;
}
return v;
})
);
//[1,2,5]
console.log(
JSON.stringify(arr,function(k,v){
if(v === 3){
return 5;
}
return v;
},2)
);
// [
// 1,
// 2,
// 5
// ]
console.log(JSON.stringify(obj,null,'--'));
// {
// --"data": 1,
// --"a": {
// ----"b": 5
// --}
// }
网友评论