JSON(JavaScript Object Notation)是表示值和对象的通用格式。
(一)JSON转换过程
1. 对象—>(JSON.stringify)
2. —>JSON字符串—>
(JSON 编码(JSON-encoded) 或 序列化(serialized) 或 字符串化(stringified) 或 编组化(marshalled) 的对象)
3. (JSON.parse)—>对象
(二)JSON.stringify 会跳过以下内容:
let user = {
sayHi() { // 被忽略
alert(“Hello”);
},
[Symbol(“id”)]: 123, // 被忽略
something: undefined // 被忽略
};
alert( JSON.stringify(user) ); // {}(空对象)
(三)排除和转换:replacer
(四)格式化:space
(五)自定义 “toJSON”
(六)限制
- 对象之间不得有循环引用 (指不得交叉引用对象)。
- let json =
{ "birthday": new Date(2000, 2, 3), }
;
错误:不允许使用 “new”,只能是裸值 - JSON 不支持注释。向 JSON 添加注释无效。
- JSON5 的格式,它允许未加引号的键,也允许注释等。但这是一个独立的库,不在语言的规范中。
(七)总结
JSON 是一种数据格式,具有自己的独立标准和大多数编程语言的库。
JSON 支持 object,array,string,number,boolean 和 null。
JavaScript 提供序列化(serialize)成 JSON 的方法 JSON.stringify 和解析 JSON 的方法 JSON.parse。
这两种方法都支持用于智能读/写的转换函数。
如果一个对象具有 toJSON,那么它会被 JSON.stringify 调用。