Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
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
TypeErrorQuel est le problème ?
Lorsqu'on appelle la méthodeJSON.stringify(), les structures de références cycliques ne peuvent pas être converties en chaîne de caractères carle format JSON ne prend pas en charge les références (bien qu'un brouillon IETF existe).
Exemples
Avec une structure circulaire comme la suivante :
var a = {};var b = {};a.child = b;b.child = a;JSON.stringify() échouera :
JSON.stringify(a);// TypeError: cyclic object valueIl est nécessaire de contrôler l'existence de cycles avant la conversion en chaîne de caractères. On peut par exemple fournir une fonction de remplacement comme deuxième argument de la fonctionJSON.stringify().
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 bibliothèque ou une fonction utilitaire pour ce scénario. commecycle.js.
Voir aussi
JSON.stringify- cycle.js qui introduit deux fonctions :
JSON.decycleet JSON.retrocyclequi permettent d'encoder et de décoder des structures cycliques en JSON.