Comment consignez-vous le contenu d'un objet JSON dans Node.js?

171

Est-il possible d'imprimer un contenu d'objets, par exemple des méthodes et des attributs dans Node.js?

Pour le moment, j'essaye d'imprimer l'objet de session et d'obtenir ce qui suit:

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

Peut-être d'une manière similaire à print_r (array) en PHP, ou en utilisant .toString en Java.

Jack
la source
9
console.log("Session:" + util.inspect(session))
Raynos
1
Pour une sortie plus intuitive et visuelle des objets, jetez un œil à nodedump: github.com/ragamufin/nodedump
ragamufin

Réponses:

271

Essaye celui-là:

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

Si l'objet peut être converti en JSON, cela fonctionnera.

Alexandre Sulfrian
la source
9
J'essaie de le faire pour l'objet de requête mais cela montre une erreur TypeError: Conversion de la structure circulaire en JSON Existe-t-il un moyen de limiter la profondeur
Neil
quoi qu'il en soit d'imprimer ça?
chovy
6
@chovy: quelque chose comme ça pourrait fonctionner: console.log (JSON.stringify (json, null, 4));
Eric Brandel
1
cela a fonctionné pour moi: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew
A travaillé pour ma réponse API json! Merci
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 sur MDN

ccgillett
la source
1
de loin la meilleure réponse +1!
decoder7283
33

Pour avoir une sortie plus similaire au brut, console.log(obj)j'utilise habituellement console.log('Status: ' + util.inspect(obj))(JSON est légèrement différent).

lapo
la source
4
Cela donne "util n'est pas défini". Vous devez d'abord `var util = require (" util "). De plus, les sous-objets se présentent toujours comme [Object] et non comme la chaîne JSON qui les représente.
juanpaco
13
Pour supprimer la limite de profondeur, utilisez:require('util').inspect(obj, {depth:null})
lapo
25

Cela fonctionnera avec n'importe quel objet:

    var util = require("util");
    console.log(util.inspect(myObject, {showHidden: false, depth: null}));
Marwen Trabelsi
la source
2
Cela fonctionne très bien pour les objets d'erreur. Aucune de leurs propriétés n'apparaît dans les autres solutions.
Chris
1
Cela ne tient que pour moi. Je pense que les références circulaires dans un objet le plantent
Richard
@Richard il est probablement suspendu pour vous en raison de l'option de profondeur définie sur null. Inspect a un traitement intégré pour les références circulaires.
2grit
6

console.dir () est le moyen le plus direct.

Rainabba
la source
console.dir (someJsonObject); laisse toujours les objets imbriqués non imprimés, pour moi.
nyarasha
1
Je pense que cela ne forera pas les objets à travers leur prototype et que cela ne traitera pas certaines récursions. Vous devrez soit faire quelque chose comme console.log (JSON.stringify ()) ou quelque chose de plus spécifique à votre objet si .dir () n'est pas suffisant. Si vous avez plus d'informations sur l'objet, des conseils plus spécifiques peuvent peut-être être donnés.
rainabba
Il peut prendre les mêmes options que util.inspect. Ajouter {depth: null}
nikc.org
0
console.log(obj);

Exécutez: node app.js> output.txt

Ростислав Борніцький
la source
0

Ce sera pour la plupart des objets pour la sortie dans la console nodejs

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

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

Manoj Kumar
la source