JSON.stringify() und ES6 Maps
ES6 Maps bieten eine leistungsstarke Alternative zu JavaScript-Objekten, aber ihre Serialisierung erfolgt mit JSON.stringify( ) kann eine Herausforderung sein. Um dieses Hindernis zu überwinden, können Sie die Ersetzungsfunktion in JSON.stringify() und ihr Gegenstück reviver in JSON.parse() nutzen.
Benutzerdefinierte Serialisierung mit Ersetzung
Mit der Ersetzungsfunktion können Sie anpassen, wie Objekte serialisiert werden. In diesem Fall können Sie es ändern, um Kartenobjekte zu verarbeiten:
function replacer(key, value) { if(value instanceof Map) { return { dataType: 'Map', value: Array.from(value.entries()), // or with spread: value: [...value] }; } else { return value; } }
Benutzerdefinierte Deserialisierung mit Reviver
In ähnlicher Weise können Sie mit der Reviver-Funktion ändern, wie Objekte deserialisiert werden . Sie können es verwenden, um Kartenobjekte wiederherzustellen:
function reviver(key, value) { if(typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { return new Map(value.value); } } return value; }
Verwendung
Mit diesen definierten Funktionen können Sie jetzt effektiv JSON.stringify() und JSON.parse( ) Kartenobjekte:
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 bereitgestellten Lösungen unterstützen die tiefe Verschachtelung von Arrays, Objekten und Karten, wie unten gezeigt:
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!