¿Cómo se registra el contenido de un objeto JSON en Node.js?


171

¿Es posible imprimir el contenido de un objeto, por ejemplo, métodos y atributos en Node.js?

En este momento estoy intentando imprimir el objeto de sesión y obtener lo siguiente:

console.log("Session:" + session);
> Session:[object Object]

Tal vez de manera similar a print_r (array) en PHP, o usando .toString en Java.


9
console.log("Session:" + util.inspect(session))
Raynos

1
Para una salida más intuitiva y visual de los objetos, eche un vistazo a nodedump: github.com/ragamufin/nodedump
ragamufin

Respuestas:


271

Prueba este:

console.log("Session: %j", session);

Si el objeto se puede convertir a JSON, eso funcionará.


9
Estoy tratando de hacer esto para el objeto de solicitud, pero muestra el error TypeError: Convertir la estructura circular a JSON ¿Hay alguna forma de limitar la profundidad
Neil

de todos modos para imprimir esto bonito?
chovy

66
@chovy: algo como esto podría funcionar: console.log (JSON.stringify (json, null, 4));
Eric Brandel

1
esto funcionó para mí: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew

Trabajó para mi respuesta API json! Gracias
rodrigorf

130
function prettyJSON(obj) {
    console.log(JSON.stringify(obj, null, 2));
}

// obj -> value to convert to a JSON string
// null -> (do nothing)
// 2 -> 2 spaces per indent level

JSON.stringify en MDN


1
con mucho, la mejor respuesta +1!
decoder7283

33

Para tener una salida más similar a la sin console.log(obj)formato, generalmente uso console.log('Status: ' + util.inspect(obj))(JSON es ligeramente diferente).


44
Esto da "util no está definido". Debe `var util = require (" util ") primero. Además, los subobjetos aún resultan ser [Objeto] y no la cadena JSON que los representa.
juanpaco

13
Para eliminar el límite de profundidad, use:require('util').inspect(obj, {depth:null})
lapo

25

Esto funcionará con cualquier objeto:

    var util = require("util");
    console.log(util.inspect(myObject, {showHidden: false, depth: null}));

2
Esto funciona muy bien para objetos de error. Ninguna de sus propiedades se muestra en las otras soluciones.
Chris

1
Esto simplemente me cuelga. Creo que las referencias circulares en un objeto lo estrellan
Richard

@ Richard probablemente se cuelgue (ed) debido a la opción de profundidad establecida null. Inspeccionar tiene un tratamiento incorporado para referencias circulares.
2grit

6

console.dir () es la forma más directa.


console.dir (someJsonObject); todavía deja objetos anidados sin imprimir, para mí.
nyarasha

1
Creo que no perforará objetos a través de su prototipo y no tratará con cierta recursividad. Tendrá que hacer algo como console.log (JSON.stringify ()) o algo más específico para su objeto si .dir () no es suficiente. Si tiene más información sobre el objeto, quizás se le puedan dar consejos más específicos.
rainabba

Puede tomar las mismas opciones que util.inspect. Agregue {profundidad: nulo}
nikc.org


0

Esto será para la mayoría de los objetos para la salida en la consola de nodejs

var util = require('util')
function print (data){
  console.log(util.inspect(data,true,12,true))
  
}

print({name : "Your name" ,age : "Your age"})

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.