| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value | [Back] [Original] |
Get to know MDN better
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 (Firefox) TypeError: Converting circular structure to JSON (Chrome and Opera) TypeError: Circular reference in value argument not supported (Edge)
TypeError
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).
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 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().
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.
JSON.stringifyJSON.decycle et JSON.retrocycle qui permettent d'encoder et de dcoder des structures cycliques en JSON.Cette page a t modifie le 17 dc. 2024 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |