Sérialiser un JSON circulaire

Beginner

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

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.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 100%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

Comment sérialiser un JSON circulaire

Pour sérialiser un objet JSON qui contient des références circulaires, suivez ces étapes :

  1. Ouvrez le Terminal/SSH et tapez node pour commencer à pratiquer la programmation.
  2. Créez un WeakSet pour stocker et vérifier les valeurs déjà vues en utilisant WeakSet.prototype.add() et WeakSet.prototype.has().
  3. Utilisez JSON.stringify() avec une fonction de remplacement personnalisée qui ignore les valeurs déjà présentes dans seen et ajoute de nouvelles valeurs si nécessaire.
  4. ⚠️ 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.