Introdução
Neste laboratório, exploraremos como serializar um objeto JSON que contém referências circulares usando JavaScript. Usaremos uma função substituidora (replacer function) personalizada e um WeakSet para detectar e omitir referências circulares. Ao final deste laboratório, você terá uma melhor compreensão de como lidar com estruturas de dados circulares em JavaScript e como serializá-las em formato JSON.
Como Stringificar JSON Circular
Para stringificar um objeto JSON que contém referências circulares, siga estes passos:
- Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação. - Crie um
WeakSetpara armazenar e verificar os valores vistos usandoWeakSet.prototype.add()eWeakSet.prototype.has(). - Use
JSON.stringify()com uma função substituidora (replacer function) personalizada que omite valores já presentes emseene adiciona novos valores, se necessário. - ⚠️ AVISO: Esta função encontra e remove referências circulares, o que causa perda de dados circulares no JSON serializado.
Aqui está o código para a função 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 testar a função, você pode criar um objeto com uma referência circular e chamar stringifyCircularJSON:
const obj = { n: 42 };
obj.obj = obj;
stringifyCircularJSON(obj); // '{"n": 42}'
Resumo
Parabéns! Você concluiu o laboratório Stringify Circular JSON. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.