以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
144. 序列化和反序列化JSON不支持的数据类型
实现该功能的方法是通过JSON.stringify()函数的第二个参数,在其中添加一个自定义的replacer函数,对需要序列化的数据进行处理,再将处理后的结果传给JSON.parse()进行反序列化。
下面给出代码实现:
function serialize(obj) { return JSON.stringify(obj, (key, value) => { // 处理 BigInt 类型 if (typeof value === 'bigint') { return value.toString() + 'n'; } // 处理 undefined 和 NaN if (value === undefined || Number.isNaN(value)) { return '__' + String(value); } // 其他数据类型直接返回 return value; });}function deserialize(str) { return JSON.parse(str, (key, value) => { // 判断是否是 BigInt 类型 if (typeof value === 'string' && /^-?\d+n$/.test(value)) { return BigInt(value.slice(0, -1)); } // 判断是否是 undefined 或 NaN if (typeof value === 'string' && value.slice(0, 2) === '__') { return (value === '__undefined') ? undefined : NaN; } // 其他数据类型直接返回 return value; });}
该函数可以成功实现对BigInt、undefined和NaN的序列化和反序列化,满足题目要求。