在JavaScript开发中,JSON是常用的数据交换格式,但标准的JSON.stringify()方法无法正确处理函数和正则表达式。本文将介绍几种专业解决方案。
原生JSON方法存在以下限制:
function replacer(key, value) {
if (value instanceof RegExp) {
return {
__type: 'RegExp',
source: value.source,
flags: value.flags
};
}
if (typeof value === 'function') {
return {
__type: 'function',
body: value.toString()
};
}
return value;
}
function reviver(key, value) {
if (value?.__type === 'RegExp') {
return new RegExp(value.source, value.flags);
}
if (value?.__type === 'function') {
return new Function('return ' + value.body)();
}
return value;
}
const data = { regex: /test/i, func: function() { return 42; } };
const str = JSON.stringify(data, replacer);
const restored = JSON.parse(str, reviver);
推荐使用以下成熟库处理复杂对象序列化:
通过以上方法,开发者可以安全高效地处理包含函数和正则表达式的JSON数据,满足各种复杂业务场景需求。