ES6 Maps 的 JSON.stringify
从 JavaScript 对象迁移到 ES6 Maps 时,JSON.stringify 支持变得至关重要。本文解决了序列化 Maps 以进行 JSON 传输的挑战。
利用 JSON.stringify Replacer
JSON.stringify 提供了第二个参数,replacer,它可以增强其功能。定义处理 Map 对象的替换函数:
function replacer(key, value) { if(value instanceof Map) { return { dataType: 'Map', value: Array.from(value.entries()), }; } else { return value; } }
使用 JSON.parse Reviver 反序列化
同样,JSON.parse 也有一个 reviver 参数来自定义对象创建期间反序列化:
function reviver(key, value) { if(typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { return new Map(value.value); } } return value; }
用法
使用以下函数序列化和反序列化 ES6 Map:
const originalValue = new Map([['a', 1]]); const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
深度嵌套
替换者和reviver 可以处理包含数组、对象和映射的深层嵌套数据结构:
const originalValue = [ new Map([['a', { b: { c: new Map([['d', 'text']]) } }]]) ]; const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
以上是如何使用 JSON.stringify 和 JSON.parse 序列化和反序列化 ES6 映射?的详细内容。更多信息请关注PHP中文网其他相关文章!