Обход 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 в консоли браузера.