[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value [Back]  [Original]

TypeError: cyclic object value - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

TypeError: cyclic object value

Message

TypeError: cyclic object value (Firefox)
TypeError: Converting circular structure to JSON (Chrome and Opera)
TypeError: Circular reference in value argument not supported (Edge)

Dans cet article

Type d'erreur

TypeError

Quel est le problme ?

Lorsqu'on appelle la mthode JSON.stringify(), les structures de rfrences cycliques ne peuvent pas tre converties en chane de caractres car le format JSON ne prend pas en charge les rfrences (bien qu'un brouillon IETF existe).

Exemples

Avec une structure circulaire comme la suivante :

js
var a = {};
var b = {};
a.child = b;
b.child = a;

JSON.stringify() chouera :

js
JSON.stringify(a);
// TypeError: cyclic object value

Il est ncessaire de contrler l'existence de cycles avant la conversion en chane de caractres. On peut par exemple fournir une fonction de remplacement comme deuxime argument de la fonction JSON.stringify().

js
const getCircularReplacer = () => {
  const seen = new WeakSet();
  return (key, value) => {
    if (typeof value === "object" && value !== null) {
      if (seen.has(value)) {
        return;
      }
      seen.add(value);
    }
    return value;
  };
};

JSON.stringify(circularReference, getCircularReplacer());
// {"otherData":123}

On peut galement utiliser une bibliothque ou une fonction utilitaire pour ce scnario. comme cycle.js.

Voir aussi

  • JSON.stringify
  • cycle.js qui introduit deux fonctions : JSON.decycle et JSON.retrocycle qui permettent d'encoder et de dcoder des structures cycliques en JSON.

Web Proxy Viewer  |  New URL  |  Original Page