首頁  >  文章  >  web前端  >  如何使用 JSON.stringify 和 JSON.parse 序列化和反序列化 ES6 映射?

如何使用 JSON.stringify 和 JSON.parse 序列化和反序列化 ES6 映射?

DDD
DDD原創
2024-11-23 15:28:17493瀏覽

How Can I Serialize and Deserialize ES6 Maps with JSON.stringify and JSON.parse?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn