Stringify JSON Circular

Beginner

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

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.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Como Stringificar JSON Circular

Para stringificar um objeto JSON que contém referências circulares, siga estes passos:

  1. Abra o Terminal/SSH e digite node para começar a praticar a codificação.
  2. Crie um WeakSet para armazenar e verificar os valores vistos usando WeakSet.prototype.add() e WeakSet.prototype.has().
  3. Use JSON.stringify() com uma função substituidora (replacer function) personalizada que omite valores já presentes em seen e adiciona novos valores, se necessário.
  4. ⚠️ 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.