Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. JavaScript ссылки на ошибки
  5. TypeError: cyclic object value

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

TypeError: cyclic object value

Сообщения

TypeError: циклическое значение объекта (Firefox)TypeError: преобразование круговой структуры в JSON (Chrome и Opera)TypeError: циклическая ссылка в аргументе значения не поддерживается (Edge)

Тип ошибки?

TypeError

Что не так?

Сам по себеJSON-формат не поддерживает ссылки на объекты (не смотря на то что существуетIETF, который позволяет значению JSON ссылаться на другое значение в JSON-документе), поэтомуJSON.stringify() не пытаеться их анализировать и терпит неудачу при попытке сделать это.

Примеры

В круговой структуре как эта

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

JSON.stringify() закончится неудачей

js
JSON.stringify(circularReference);// TypeError: циклическое значение объекта

Для сериализации циклических ссылок можно использовать библиотеку, которая их поддерживает (например, cycle.js) или самостоятельно реализовать решение, которое потребует поиска и замены (или удаления) циклических ссылок сериализуемыми значениями.

Во фрагменте кода ниже показано, как найти и отфильтровать циклическую ссылку (что приводит к потере данных) с помощью параметраreplacerJSON.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}

Смотрите также

  • JSON.stringify
  • cycle.js – вводит две функции, JSON.decycle и JSON.retrocycle, что даёт возможность кодирования и декодирования циклических структур и групп обеспечения доступности баз данных в расширенный и обратно совместимый формат JSON.

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp