2011-03-23 7 views
13

Para la depuración, deseo serializar objetos JavaScript con JSON.stringify (myobject). Pero esto da:circumvent ERROR ¿Cómo convertir la estructura circular a JSON al hacer JSON.stringify()?

TypeError: Converting circular structure to JSON 

¿Hay alguna forma de evitar esto, por ejemplo, podando el árbol de salida?

Algunos más antecedentes:

Quiero recoger algunos datos sobre diferentes objetos y ver lo que está pasando, y por qué una característica que funciona para una situación, pero no para otro. Al comparar los resultados, espero poder encontrar diferencias que expliquen por qué no funciona en "otra" situación. Estoy usando jquery y mi caballo de depuración se llama Chrome. Si hay mejores alternativas para realizar este tipo de actividades de depuración, ¡también estoy muy interesado!

Cheers, jeroen.

Respuesta

9

JSON.stringify (obj) no admite referencias circulares, tales como:

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

Sin embargo dojox.json.ref hace referencia apoyar circular, si desea explorar otra opción.

Sin embargo, si sus propósitos son estrictamente para depuración, le sugiero que utilice el depurador de navegador integrado, como Chrome, IE o Firebug (para Firefox).

7

Puede usar console.log() y la consola de depuración de chrome javascript, que le permitirá inspeccionar felizmente su objeto incluso si tiene referencias cíclicas.

2

Para node.js json-ref es una buena alternativa ligera a la función dojox.json.ref sugerida por Mike Lewis.

2

Ahora puede utilizar JSON stringify plug-in de Douglas Crockford:

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

Esto tiene una opción decycle en el archivo de descarga cycle.js. También puede usar console.log() e inspeccionar el JSON en la consola de su navegador.

Cuestiones relacionadas