Serializar JSON circular

Beginner

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

Introducción

En este laboratorio, exploraremos cómo serializar un objeto JSON que contiene referencias circulares utilizando JavaScript. Utilizaremos una función reemplazadora personalizada y un WeakSet para detectar y omitir referencias circulares. Al final de este laboratorio, tendrás una mejor comprensión de cómo manejar estructuras de datos circulares en JavaScript y cómo serializarlas en formato JSON.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Cómo serializar un JSON circular

Para serializar un objeto JSON que contiene referencias circulares, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.
  2. Cree un WeakSet para almacenar y comprobar valores ya vistos utilizando WeakSet.prototype.add() y WeakSet.prototype.has().
  3. Utilice JSON.stringify() con una función reemplazadora personalizada que omita valores ya presentes en seen y agregue nuevos valores si es necesario.
  4. ⚠️ AVISO: Esta función encuentra y elimina referencias circulares, lo que causa la pérdida de datos circulares en el JSON serializado.

Aquí está el código para la función 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;
  });
};

Para probar la función, puede crear un objeto con una referencia circular y llamar a stringifyCircularJSON:

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

Resumen

¡Felicitaciones! Has completado el laboratorio de serialización de JSON circular. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.