Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. JavaScript エラーリファレンス
  5. TypeError: cyclic object value

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

TypeError: cyclic object value

JavaScript の例外 "cyclic object value" は、JSON の中にオブジェクトの参照が見つかったときに発生します。JSON.stringify() はこれを解決しようとせず、これによって失敗します。

メッセージ

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

エラーの種類

TypeError

エラーの原因

JSON 形式はオブジェクト参照に対応していません (IETF の草案はありますが)。したがってJSON.stringify() はこれを解決しようとせず、これによって失敗します。

循環参照

次のような循環構造体では、

js
var circularReference = { otherData: 123 };circularReference.myself = circularReference;

JSON.stringify() は失敗します。

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

循環参照をシリアライズするには、それに対応したライブラリ (例えばcycle.js) を使用したり、自分自身で循環参照を探してシリアライズ可能な値に置き換える (または削除する) ことを求める解決策を実装することもできます。

次のスニペットは、JSON.stringify()replacer 引数を使用して循環参照を検索してフィルタリングする方法を示しています (これによりデータ損失が発生します)。

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}

関連情報

  • JSON.stringify
  • cycle.jsJSON.decycleJSON.retrocycle という 2 つの関数を導入し、循環構造と dag を JSON でエンコードしてからリカバリーできます。

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp