Introduction
Dans ce laboratoire, nous allons explorer comment sérialiser un objet JSON qui contient des références circulaires à l'aide de JavaScript. Nous utiliserons une fonction de remplacement personnalisée et un WeakSet pour détecter et omettre les références circulaires. À la fin de ce laboratoire, vous aurez une meilleure compréhension de la manière de gérer les structures de données circulaires en JavaScript et de les sérialiser au format JSON.
Comment sérialiser un JSON circulaire
Pour sérialiser un objet JSON qui contient des références circulaires, suivez ces étapes :
- Ouvrez le Terminal/SSH et tapez
nodepour commencer à pratiquer la programmation. - Créez un
WeakSetpour stocker et vérifier les valeurs déjà vues en utilisantWeakSet.prototype.add()etWeakSet.prototype.has(). - Utilisez
JSON.stringify()avec une fonction de remplacement personnalisée qui ignore les valeurs déjà présentes dansseenet ajoute de nouvelles valeurs si nécessaire. - ⚠️ ATTENTION : Cette fonction trouve et supprime les références circulaires, ce qui entraîne une perte de données circulaires dans le JSON sérialisé.
Voici le code de la fonction stringifyCircularJSON :
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;
});
};
Pour tester la fonction, vous pouvez créer un objet avec une référence circulaire et appeler stringifyCircularJSON :
const obj = { n: 42 };
obj.obj = obj;
stringifyCircularJSON(obj); // '{"n": 42}'
Sommaire
Félicitations ! Vous avez terminé le laboratoire sur la sérialisation d'un JSON circulaire. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.