ホームページ >ウェブフロントエンド >jsチュートリアル >JSON.stringify と JSON.parse を使用して ES6 マップをシリアル化および逆シリアル化するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。