Zirkuläre JSON-Daten in einen String umwandeln

JavaScriptJavaScriptBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir untersuchen, wie man ein JSON-Objekt, das zirkuläre Referenzen enthält, mit JavaScript serialisiert. Wir werden eine benutzerdefinierte Ersetzungsmethode und einen WeakSet verwenden, um zirkuläre Referenzen zu erkennen und auszulassen. Am Ende dieses Labs werden Sie ein besseres Verständnis dafür haben, wie man zirkuläre Datenstrukturen in JavaScript behandelt und wie man sie in das JSON-Format serialisiert.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 100% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Wie man zirkuläre JSON-Daten in einen String umwandelt

Um ein JSON-Objekt, das zirkuläre Referenzen enthält, in einen String umzuwandeln, folgen Sie diesen Schritten:

  1. Öffnen Sie das Terminal/SSH und geben Sie node ein, um mit der Codeausführung zu beginnen.
  2. Erstellen Sie einen WeakSet, um bereits besuchte Werte zu speichern und zu überprüfen, indem Sie WeakSet.prototype.add() und WeakSet.prototype.has() verwenden.
  3. Verwenden Sie JSON.stringify() mit einer benutzerdefinierten Ersetzungsmethode, die Werte, die bereits in seen vorhanden sind, überspringt und neue Werte gegebenenfalls hinzufügt.
  4. ⚠️ ACHTUNG: Diese Funktion findet und entfernt zirkuläre Referenzen, was zu einem Datenverlust zirkulärer Daten im serialisierten JSON führt.

Hier ist der Code für die stringifyCircularJSON-Funktion:

const stringifyCircularJSON = (obj) => {
  const seen = new WeakSet();
  return JSON.stringify(obj, (key, value) => {
    if (value !== null && typeof value === "object") {
      if (seen.has(value)) return;
      seen.add(value);
    }
    return value;
  });
};

Um die Funktion zu testen, können Sie ein Objekt mit einer zirkulären Referenz erstellen und stringifyCircularJSON aufrufen:

const obj = { n: 42 };
obj.obj = obj;
stringifyCircularJSON(obj); // '{"n": 42}'

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab "Stringify Circular JSON" abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.