跳到主要内容

序列化对象

  • 对象序列化(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 的值。
  • 可以序列化和恢复的值包括对象数组字符串有限数值truefalsenull
  • NaN、Infinity-Infinity 会被序列化为 null
  • 日期对象会被序列化为 ISO 格式的日期字符串(参见 Date.toJSON()函数),但 JSON.parse()会保持其字符串形式,不会恢复原始的目期对象。
  • 函数、RegExpError 对象以及 undefined 值不能被序列化或恢复。
  • JSON.stringify()只序列化对象的可枚举自有属性。
  • 如果属性值无法序列化,则该属性会从输出的字符串中删除。
  • JSON.stringify()JSON.parse()都接收可选的第二个参数,用于自定义序列化及恢复操作。
  • 例如,可以通过这个参数指定要序列化哪些属性,或者在序列化或字符串化过程中如何转换某些值。