JavaScript对象序列化与反序列化详解:JSON.stringify与JSON.parse的使用

作者:青柠

时间:2026-10-28

浏览:112

本文介绍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()方法;若存在该方法,则调用它并将返回值作为序列化结果;若不存在,则采用默认的序列化策略处理对象属性。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章