Heim > Web-Frontend > js-Tutorial > Wie kann ich ES6-Karten mit JSON.stringify() und JSON.parse() serialisieren und deserialisieren?

Wie kann ich ES6-Karten mit JSON.stringify() und JSON.parse() serialisieren und deserialisieren?

Barbara Streisand
Freigeben: 2024-11-21 03:13:14
Original
188 Leute haben es durchsucht

How Can I Serialize and Deserialize ES6 Maps Using JSON.stringify() and JSON.parse()?

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

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

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

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

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!

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