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.
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:
- Öffnen Sie das Terminal/SSH und geben Sie
nodeein, um mit der Codeausführung zu beginnen. - Erstellen Sie einen
WeakSet, um bereits besuchte Werte zu speichern und zu überprüfen, indem SieWeakSet.prototype.add()undWeakSet.prototype.has()verwenden. - Verwenden Sie
JSON.stringify()mit einer benutzerdefinierten Ersetzungsmethode, die Werte, die bereits inseenvorhanden sind, überspringt und neue Werte gegebenenfalls hinzufügt. - ⚠️ 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.