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
Mary-Kate OlsenOriginal
2024-11-20 13:00:22295Durchsuche

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;
  }
}
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!

Stellungnahme:
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