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

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

DDD
發布: 2024-11-23 15:28:17
原創
577 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板