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中文網其他相關文章!