序列化对象
- 对象序列化(
serialization)是把对象的状态转换为字符串的过程,之后可以从中恢复对象的状态。 - 函数
JSON.stringify()和JSON.parse()用于序列化和恢复JavaScript对象。 - 这两个函数使用 JSON 数据交换格式。
let o = { x: 1, y: { z: [false, null, ''] } }
let s = JSON.stringify(o)
let p = JSON.parse(s)
console.log(s) // {"x":1,"y":{"z":[false,null,""]}}
console.log(p) // Object对象 { x: 1, y: { z: [false, null, ""] } }
JSON语法是JavaScript语法的子集,不能表示所有JavaScript的值。- 可以序列化和恢复的值包括
对象、数组、字符串、有限数值、true、false和null。 - NaN、
Infinity和-Infinity会被 序列化为null。 - 日期对象会被序列化为 ISO 格式的日期字符串(参见
Date.toJSON()函数),但JSON.parse()会保持其字符串形式,不会恢复原始的目期对象。 - 函数、
RegExp和Error对象以及undefined值不能被序列化或恢复。 JSON.stringify()只序列化对象的可枚举自有属性。- 如果属性值无法序列化,则该属性会从输出的字符串中删除。
JSON.stringify()和JSON.parse()都接收可选的第二个参数,用于自定义序列化及恢复操作。- 例如,可以通过这个参数指定要序列化哪些属性,或者在序列化或字符串化过程中如何转换某些值。