Come si registra il contenuto di un oggetto JSON in Node.js?


171

È possibile stampare il contenuto di un oggetto, ad esempio metodi e attributi in Node.js?

Al momento sto provando a stampare l'oggetto sessione e ottenere quanto segue:

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

Forse in modo simile a print_r (array) in PHP o usando .toString in Java.


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

1
Per un output più intuitivo e visivo degli oggetti, dai un'occhiata a nodedump: github.com/ragamufin/nodedump
ragamufin,

Risposte:


271

Prova questo:

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

Se l'oggetto potesse essere convertito in JSON, funzionerà.


9
Sto provando a fare questo per l'oggetto richiesta ma mostra errore TypeError: conversione della struttura circolare in JSON Esiste un modo per limitare la profondità
Neil

comunque per stampare piuttosto?
amorevole

6
@chovy: qualcosa del genere potrebbe funzionare: console.log (JSON.stringify (json, null, 4));
Eric Brandel,

1
questo ha funzionato per me: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew

Ha funzionato per la mia risposta API json! Grazie
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 su MDN


1
di gran lunga la migliore risposta +1!
decoder7283,

33

Per avere un output più simile al raw di console.log(obj)solito uso console.log('Status: ' + util.inspect(obj))(JSON è leggermente diverso).


4
Questo dà "util non definito". È necessario prima var `util = request (" util "). Inoltre, gli oggetti secondari vengono comunque visualizzati come [Oggetto] e non come stringa JSON che li rappresenta.
juanpaco,

13
Per rimuovere il limite di profondità, utilizzare:require('util').inspect(obj, {depth:null})
lapo

25

Questo funzionerà con qualsiasi oggetto:

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

2
Funziona alla grande con oggetti di errore. Nessuna delle loro proprietà si presenta nelle altre soluzioni.
Chris,

1
Questo è solo per me. Penso che i riferimenti circolari in un oggetto lo blocchino
Richard,

@Richard probabilmente si blocca (ed) per te a causa dell'opzione di profondità impostata su null. Inspect ha un trattamento integrato per riferimenti circolari.
2grit

6

console.dir () è il modo più diretto.


console.dir (someJsonObject); lascia ancora oggetti nidificati non stampati, per me.
nyarasha,

1
Penso che non perforerà gli oggetti attraverso il loro prototipo e non gestirà una certa ricorsione. O dovrai fare qualcosa come console.log (JSON.stringify ()) o qualcosa di più specifico per il tuo oggetto se .dir () non è sufficiente. Se hai più informazioni sull'oggetto, forse potresti dare consigli più specifici.
Rainabba,

Può richiedere le stesse opzioni di util.inspect. Aggiungi {depth: null}
nikc.org il


0

Questo sarà per la maggior parte degli oggetti per l'output nella console nodejs

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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.