Heim > Web-Frontend > js-Tutorial > Wie serialisiere und deserialisiere ich ES6-Karten mit JSON.stringify und JSON.parse?

Wie serialisiere und deserialisiere ich ES6-Karten mit JSON.stringify und JSON.parse?

Mary-Kate Olsen
Freigeben: 2024-11-20 13:00:22
Original
287 Leute haben es durchsucht

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

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;
  }
}
Nach dem Login kopieren
function reviver(key, value) {
  if (typeof value === 'object' && value !== null) {
    if (value.dataType === 'Map') {
      return new Map(value.value);
    }
  }
  return value;
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage