Lingua-e
JavaScript

¿Qué significa Referencia circular en JSON?

← Errores

JSON.stringify() lanza un TypeError cuando el grafo de objetos contiene una referencia circular, lo que significa que un objeto hace referencia a sí mismo (directa o indirectamente). JSON es un formato de árbol y no puede representar ciclos.

Por qué ocurre

  • Un objeto tiene una propiedad que apunta de vuelta a sí mismo o a un ancestro en el grafo.
  • Los nodos DOM a menudo tienen referencias circulares (parentNode, ownerDocument).
  • Los objetos request/response de Express contienen referencias circulares.
  • Un modelo de datos con relaciones bidireccionales (padre referenciando a hijo e hijo referenciando a padre).

Ejemplos

JavaScript

Código que causa el error

const a = {};
const b = { ref: a };
a.ref = b; // circular

JSON.stringify(a);

Error en la terminal

TypeError: Converting circular structure to JSON

Cómo solucionarlo

Usa una función replacer en JSON.stringify() para detectar y romper los ciclos. Librerías como flatted o json-stringify-safe manejan las referencias circulares automáticamente. Considera usar structuredClone() para copias profundas en lugar de round-tripping con JSON.

Código corregido

function safeStringify(obj) {
  const seen = new WeakSet();
  return JSON.stringify(obj, (key, value) => {
    if (typeof value === "object" && value !== null) {
      if (seen.has(value)) return "[Circular]";
      seen.add(value);
    }
    return value;
  });
}

Errores relacionados

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis