数据在浏览器与服务器之间进行交换时只能是文本,JSON是一种具有特定格式的文本
JSON 类似 JavaScript 对象属性,名称(双引号)/值对由字段名构成
JSON和JS对象可以轻松实现相互转化,无需复杂的解析和转译
JSON 与 XML 的差异在于:
- JSON 不使用标签
- JSON 更短
- JSON 的读写速度更快
- JSON 可使用数组
- XML 必须使用 XML 解析器进行解析。而 JSON 可通过标准的 JavaScript 函数进行解析。
有效的数据类型
在 JSON 中,值必须是以下数据类型之一:
- 字符串
- 数字 (不能是NaN、Infinity、-Infinity)
- 对象(JSON 对象)
- 数组(JSON 数组)
- 布尔
- Null
JSON.parse()
JSON.parse() 函数的第二个参数,被称为 reviver。
这个 reviver 参数是函数,在返回值之前,它会检查每个属性。
实例
将字符串转换为日期,使用 reviver 函数:
var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';
var obj = JSON.parse(text, function (key, value) {
if (key == "birth") {
return new Date(value);
} else {
return value;
}});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
JSON.stringify()
参数1 目标对象
参数2 可选属性(数组/key,value回调函数)
参数3 生成缩进
toJSON 自定义stringify
限制
循环引用 不能使用
应用
- localStorage 的值
- 深拷贝