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.
Cómo serializar un JSON circular
Para serializar un objeto JSON que contiene referencias circulares, siga estos pasos:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Cree un
WeakSetpara almacenar y comprobar valores ya vistos utilizandoWeakSet.prototype.add()yWeakSet.prototype.has(). - Utilice
JSON.stringify()con una función reemplazadora personalizada que omita valores ya presentes enseeny agregue nuevos valores si es necesario. - ⚠️ 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.