Detaillierte Erläuterung zur Lösung des Zirkelreferenzproblems bei der Verwendung von JSON.stringify

Detaillierte Erläuterung zur Lösung des Zirkelreferenzproblems bei der Verwendung von JSON.stringify

Wenn Programmierer täglich TypeScript-/JavaScript-Entwicklung betreiben, müssen sie häufig komplexe JavaScript-Objekte über JSON.stringify in JSON-Strings serialisieren und diese für eine spätere spezifische Analyse lokal speichern.

Wenn das JavaScript-Objekt selbst jedoch zirkuläre Referenzen enthält, funktioniert JSON.stringify nicht ordnungsgemäß und es wird die folgende Fehlermeldung angezeigt:

VM415:1 Nicht abgefangener TypeError: Konvertierung der kreisförmigen Struktur in JSON

Die Lösung besteht darin, den folgenden Code von dieser Website zu verwenden, um ein globales Cache-Array zu definieren. Immer wenn die Eigenschaften des zu serialisierenden JavaScript-Objekts durchlaufen werden, wird der der Eigenschaft entsprechende Wert im Cache-Array gespeichert.

Wenn Sie während des Durchlaufs feststellen, dass ein Attributwert bereits im Cache-Array vorhanden ist, bedeutet dies, dass ein Zirkelverweis erkannt wurde. In diesem Fall können Sie einfach zurückkehren, um die Schleife zu verlassen.

var cache = [];
var str = JSON.stringify(o, Funktion(Schlüssel, Wert) {
  wenn (Typ des Wertes === 'Objekt' und Wert !== null) {
    wenn (cache.indexOf(Wert) !== -1) {
      // entfernen return;
    }
    // Alle Werte sammeln cache.push(value);
  }
  Rückgabewert;
});
cache = null; //Lösche die Variable, um die Garbage Collection zu erleichtern

Mit dieser Methode konnte ich ein JavaScript-Objekt mit einer zirkulären Referenz erfolgreich in einen String serialisieren.

Damit ist dieser Artikel zur Lösung des Zirkelverweisproblems bei der Verwendung von JSON.stringify abgeschlossen. Weitere Informationen zu Zirkelverweisen in JSON.stringify finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Zusammenfassung der Funktionsweise von JS auf Seiten innerhalb und außerhalb von Iframes
  • So führen Sie eine reibungslose if-Beurteilung in js durch
  • Implementierung einer vereinfachten Version von JSON.stringify und seine sechs Hauptfunktionen im Detail erklärt
  • Zusammenfassung der verschiedenen Verwendungsmöglichkeiten von JSON.stringify
  • Vue implementiert eine Online-Vorschau von PDF-Dateien (mithilfe von pdf.js/iframe/embed)
  • Zusammenfassung der Verwendung von JavaScript JSON.stringify()
  • Der Unterschied und die Verwendung von json.stringify() und json.parse()
  • Selenium+BeautifulSoup+json ruft die JSON-Daten im Script-Tag ab
  • Informationen zum Ausdruck „wenn Komma enthält“ in JavaScript

<<:  Detailliertes Tutorial zur Installation von mysql5.7.18 auf centos7.3

>>:  Hinweise zum Zeichengerätetreiber des Linux-Kernel-Gerätetreibers

Artikel empfehlen

So kapseln Sie Timerkomponenten in Vue3

Hintergrund Wenn Sie auf manchen Webseiten von Ei...

Schreiben Sie mit CSS in drei Schritten einen Coupon für eine Shopping-Card

Heute ist der 618. und alle großen Einkaufszentre...

So installieren Sie Nginx in CentOS7

Installieren Sie die erforderliche Umgebung 1. gc...

MySQL-Cursorfunktionen und -Verwendung

Inhaltsverzeichnis Definition Die Rolle des Curso...

Vue SPA-Lösung zur Optimierung des ersten Bildschirms

Inhaltsverzeichnis Vorwort Optimierung SSR Import...

Vue implementiert ein Beispiel für eine verschachtelte Routing-Methode

1. Verschachteltes Routing wird auch als Sub-Rout...

React implementiert dynamische Popup-Fensterkomponente

Wenn wir beim Schreiben einiger UI-Komponenten di...

Nginx-Anti-Crawler-Strategie, um UA am Crawlen von Websites zu hindern

Anti-Crawler-Richtliniendatei hinzugefügt: vim /u...

Lösung für das Datenasymmetrieproblem zwischen MySQL und Elasticsearch

Lösung für das Datenasymmetrieproblem zwischen My...

Detaillierte Erklärung, wie Zabbix den Master-Slave-Status von MySQL überwacht

Nach dem Einrichten des MySQL-Master-Slaves wisse...

Detaillierte Erklärung von MySQLs Seconds_Behind_Master

Inhaltsverzeichnis Sekunden_hinter_Master Ursprün...

Grundlegendes Tutorial zum WeChat-Miniprogramm: Verwendung von Echart

Vorwort Schauen wir uns zunächst den Endeffekt an...