¿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.