JSON.stringify für ES6 Maps
Bei der Migration von JavaScript-Objekten zu ES6 Maps ist die Unterstützung von JSON.stringify unerlässlich. Dieser Artikel befasst sich mit der Herausforderung der Serialisierung von Karten für die JSON-Übertragung.
Verwendung des JSON.stringify-Ersatzers
JSON.stringify bietet ein zweites Argument, den Ersatz, der seine Funktionalität verbessern kann . Definieren Sie eine Ersetzungsfunktion, die Kartenobjekte verarbeitet:
function replacer(key, value) { if(value instanceof Map) { return { dataType: 'Map', value: Array.from(value.entries()), }; } else { return value; } }
Deserialisierung mit JSON.parse Reviver
Ebenso verfügt JSON.parse auch über ein Reviver-Argument, um die Objekterstellung anzupassen während Deserialisierung:
function reviver(key, value) { if(typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { return new Map(value.value); } } return value; }
Verwendung
So serialisieren und deserialisieren Sie eine ES6-Karte mit diesen Funktionen:
const originalValue = new Map([['a', 1]]); const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
Deep Nesting
Der Ersetzer und der Reviver können tief verschachtelte Datenstrukturen verarbeiten, die enthalten Arrays, Objekte und Karten:
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);
Das obige ist der detaillierte Inhalt vonWie kann ich ES6-Karten mit JSON.stringify und JSON.parse serialisieren und deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!