Преобразование круговой структуры в JSON - Любой способ найти, в каком поле он жалуется?
Я пытаюсь стягивать (...) объект в Chrome, и я продолжаю получать сообщение "Преобразование круговой структуры в JSON", несмотря на то, что (насколько мне известно) такая структура не существует.
Я был над кодом десяток раз и не могу найти никаких круговых ссылок вообще. Есть ли способ заставить Chrome рассказать мне, что это заставляет за это мучительно бесполезное сообщение об ошибке?
Ответы
Ответ 1
Простите меня, если это слишком очевидно. На момент написания статьи я не знаю, что вы пробовали.
Вставить
console.log(the object);
заменив "объект" на объект, который вы передаете на JSON.stringify()
вставьте эту строку перед вызовом JSON.stringify
и загляните в консольный журнал (управление сдвигом J) для объекта. В журнале консоли объект будет помечен символом " > ", который можно щелкнуть, чтобы развернуть его.
Он жалуется на объект, который имеет указатели на себя, как этот тип объекта:
A = [];
A[0] = A;
JSON.stringify(A); // circular error
Ответ 2
Вы можете использовать dojox.json.ref
для поиска круговых ссылок. Этот код печатает json-представление вашего objectWithCircularReferences
:
require(["dojox/json/ref"], function(){
console.log(dojox.json.ref.toJson(objectWithCircularReferences));
});
Любое появление подстроки "$ ref" в своем выводе на консоль поможет найти локальные ссылки. Вы можете альтернативно транслировать этот вывод json на глобальную переменную ZZZ, если хотите:
require(["dojox/json/ref"], function(){
window.ZZZ = dojox.json.ref.toJson(objectWithCircularReferences);
});
И, конечно, вам нужно включить библиотеку dojo заранее. В html файле:
<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js"></script>
В консоли firebug:
include("//yandex.st/dojo/1.9.1/dojo/dojo.js")
В консоли Chrome:
SCRIPT = document.createElement('script');
SCRIPT.src = '//yandex.st/dojo/1.9.1/dojo/dojo.js';
document.body.appendChild(SCRIPT);