ホームページ > ウェブフロントエンド > jsチュートリアル > JSON.stringify と JSON.parse を使用して ES6 マップをシリアル化および逆シリアル化するにはどうすればよいですか?

JSON.stringify と JSON.parse を使用して ES6 マップをシリアル化および逆シリアル化するにはどうすればよいですか?

DDD
リリース: 2024-11-23 15:28:17
オリジナル
558 人が閲覧しました

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

ES6 マップの JSON.stringify

JavaScript オブジェクトから ES6 マップに移行する場合、JSON.stringify のサポートが不可欠になります。この記事では、JSON 送信用にマップをシリアル化するという課題について説明します。

JSON.stringify Replacer の使用

JSON.stringify には、機能を強化できる 2 番目の引数 replacer が用意されています。 。 Map オブジェクトを処理する replacer 関数を定義します。

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 マップをシリアル化および逆シリアル化するには:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート