Обход ERROR Преобразование круговой структуры в JSON при выполнении JSON.stringify()?

Для отладки я хочу сериализовать javascript-объекты с помощью JSON.stringify(myobject). Но это дает:

TypeError: Converting circular structure to JSON

Есть ли способ предотвратить это, например, обрезая дерево вывода?

Еще немного фона:

Я хочу собрать некоторые данные о разных объектах и ​​посмотреть, что происходит, и почему функция работает для одной ситуации, но не для другой. Сравнивая результаты, я надеюсь найти различия, которые объясняют, почему он не работает в "другой" ситуации. Я использую jquery, а моя отладочная лошадь называется хром. Если для этого типа отладочных действий есть лучшие альтернативы, я также очень заинтересован!

Cheers, Йерун.

Ответы

Ответ 1

JSON.stringify(obj) не поддерживает циклические ссылки, такие как:

var car = {}
car.myself = car;
JSON.stringify(car);

Однако dojox.json.ref поддерживает циклические ссылки, если вы хотите изучить другой вариант.

Однако, если ваши цели строго отлаживаются, я бы предложил использовать встроенный отладчик браузера, такой как Chrome, IE или Firebug (для firefox).

Ответ 2

Вы можете использовать console.log() и консоль отладки chrome javascript, которая с радостью позволит вам проверить ваш объект, даже если он имеет циклические ссылки.

Ответ 3

Для node.js json-ref - приятная легкая альтернатива функции dojox.json.ref, предложенной Майком Льюисом.

Ответ 4

Теперь вы можете использовать плагин Douglas Crockford JSON Stringify:

https://github.com/douglascrockford/JSON-js

В файле загрузки cycle.js имеется опция decycle. Вы также можете использовать console.log() и проверить JSON в консоли браузера.