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:
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:
|
<<: Detailliertes Tutorial zur Installation von mysql5.7.18 auf centos7.3
>>: Hinweise zum Zeichengerätetreiber des Linux-Kernel-Gerätetreibers
In einigen Szenarien müssen wir unsere Felder vom...
1) Geltungsbereich: schreibgeschützt: Eingabe [Typ...
Voraussetzung: content="width=750" <...
1. Problembeschreibung Aus Sicherheitsgründen öff...
Vorwort Der Dienst wird seit mehreren Monaten auf...
Nachdem ich einige Artikel gelesen hatte, habe ic...
Einführung Die Docker-Community hat viele Open-So...
Inhaltsverzeichnis Stile in uni-app Zusammenfasse...
1. Benutzerdefinierte Textauswahl ::Auswahl { Hin...
1. Trash oder Klassiker? Die Webtechnologie aktua...
Basierend auf täglichen Entwicklungserfahrungen u...
Inhaltsverzeichnis Objekt.prototype.valueOf() Obj...
Was ist der Eingabetyp="Datei"? Ich glau...
【1】Kennen Sie die Breite und Höhe des zentrierten...
Inhaltsverzeichnis 1. Gespeicherte Prozedur 1.1. ...