JavaScript对象序列化与反序列化详解:JSON.stringify与JSON.parse的使用
本文介绍JavaScript中通过JSON.stringify()和JSON.parse()实现对象序列化与反序列化的方法。涵盖ECMAScript 5标准用法、ES3兼容方案json2.js,以及NaN、Date等特殊类型的处理规则,并解析toJSON()自定义序列化逻辑。
JavaScript对象序列化基础
与Java语言类似,JavaScript也支持对象的序列化和反序列化操作,用于数据的持久化保存。在ECMAScript 5标准中,JavaScript利用JSON.stringify()方法完成对象到JSON字符串的序列化过程,而反序列化则通过JSON.parse()方法将JSON字符串还原为JavaScript对象。
具体实现代码如下:
var o = {x:1, y:29, z:42};
var s = JSON.stringify(o);
console.log(s);//{"x":1,"y":29,"z":42}
var c = JSON.parse(s);
console.log(c);//Object {x=1, y=29, z=42}
旧版浏览器兼容性处理
对于仅支持ECMAScript 3标准的旧版浏览器,可以引入Douglas Crockford编写的json2.js库(https://github.com/douglascrockford/JSON-js)以提供兼容性支持。
特殊数据类型序列化规则
在序列化过程中,数值NaN、Infinity和-Infinity会被转换为字符串"null"。Date对象会被序列化为表示时间的字符串,但在使用JSON.parse()进行反序列化时,该时间字符串仅作为普通字符串保留,不会自动重建为Date对象实例。
自定义序列化与属性过滤
使用JSON.stringify()序列化对象时,默认仅处理对象自身(Own)的可枚举(enumerable)属性。在序列化执行期间,JavaScript引擎会检查待序列化对象是否包含toJSON()方法;若存在该方法,则调用它并将返回值作为序列化结果;若不存在,则采用默认的序列化策略处理对象属性。
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
