So serialisieren Sie ES6-Karten für die JSON-Verarbeitung
Beim Wechsel von ES6-Objekten zu Karten besteht die Unfähigkeit, JSON.stringify direkt zu erstellen Karte kann ein Hindernis sein. Dieser Artikel befasst sich mit einer Lösung für diese Herausforderung unter Verwendung des zweiten Arguments von JSON.stringify und JSON.parse, replacementer bzw. reviver.
Benutzerdefinierte Ersetzungs- und Reviver-Funktionen
Um Unterstützung für Karten hinzuzufügen, können benutzerdefinierte Ersetzungs- und Reviver-Funktionen erstellt werden. Diese Funktionen übernehmen die Konvertierung in und von JSON:
function replacer(key, value) { if (value instanceof Map) { return { dataType: 'Map', value: Array.from(value.entries()), // or with spread: value: [...value] }; } else { return value; } }
function reviver(key, value) { if (typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { return new Map(value.value); } } return value; }
Verwendung
Mit den vorhandenen benutzerdefinierten Funktionen wird das Serialisieren und Deserialisieren von Maps unkompliziert:
const originalValue = new Map([['a', 1]]); const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
Tiefe Verschachtelung
Die Technik erstreckt sich auf tief verschachtelte Strukturen, die aus Karten, Arrays und Objekten bestehen:
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 serialisiere und deserialisiere ich ES6-Karten mit JSON.stringify und JSON.parse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!