converting json google-chrome circular-reference

converting - Convirtiendo la estructura circular a JSON-¿Alguna manera de encontrar de qué campo se está quejando?



converting circular structure to json angular (2)

Perdónenme si esto es demasiado obvio. En el momento de escribir, no sé lo que has intentado.

insertar

console.log(the object);

reemplazando ''el objeto'' con el objeto que está pasando a JSON.stringify()

inserte esta línea antes de la llamada JSON.stringify

y busque en el registro de la consola (control de desplazamiento J) para el objeto. En el registro de la consola, el objeto se etiquetará con un símbolo ">" que se puede hacer clic para expandir a los campos.

Se queja de un objeto que tiene punteros en sí mismo, como este tipo de objeto:

A = []; A[0] = A; JSON.stringify(A); // circular error

Estoy tratando de codificar (...) un objeto en Chrome, y sigo recibiendo un mensaje de "Convertir la estructura circular en JSON", a pesar de que (hasta donde yo sé) no existe tal estructura.

He revisado el código una docena de veces y no puedo encontrar referencias circulares de ningún tipo. ¿Hay alguna manera de hacer que Chrome me diga de qué está maldiciendo más allá de este mensaje de error dolorosamente inútil?


Puede usar dojox.json.ref para encontrar referencias circulares. Este código imprime una representación json de su objectWithCircularReferences :

require(["dojox/json/ref"], function(){ console.log(dojox.json.ref.toJson(objectWithCircularReferences)); });

Cualquier aparición de la subcadena "$ ref" en su salida a la consola lo ayudará a localizar referencias circulares. Alternativamente, puede canalizar esta salida json a la variable global ZZZ de esta manera si lo desea:

require(["dojox/json/ref"], function(){ window.ZZZ = dojox.json.ref.toJson(objectWithCircularReferences); });

Y, por supuesto, debe incluir la biblioteca dojo de antemano. En un archivo html:

<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js"></script>

En la consola Firebug:

include("//yandex.st/dojo/1.9.1/dojo/dojo.js")

En la consola de Chrome:

SCRIPT = document.createElement(''script''); SCRIPT.src = ''//yandex.st/dojo/1.9.1/dojo/dojo.js''; document.body.appendChild(SCRIPT);