JSON.stringify() 的 隐藏陷阱
循环引用、BigInt、undefined、函数、Symbol、Date、特殊字符。序列化不是万能的,生产环境踩坑实录。
陷阱 1:循环引用直接报错
const obj = { name: 'test' };
obj.self = obj; // 循环引用
JSON.stringify(obj);
// TypeError: Converting circular structure to JSON
修复:
// 方法 1:忽略循环路径
JSON.stringify(obj, (key, value) => {
if (key === 'self') return '[Circular]';
return value;
});
// 方法 2:使用库
const { stringify } = require('flatted');
stringify(obj); // 自动处理循环引用

浙公网安备 33010602011771号