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.


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.


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


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


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}));

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.


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

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"})

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.