Como você registra o conteúdo de um objeto JSON no Node.js?

171

É possível imprimir o conteúdo de um objeto, por exemplo, métodos e atributos no Node.js.

No momento, estou tentando imprimir o objeto de sessão e obter o seguinte:

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

Talvez de maneira semelhante a print_r (array) em PHP, ou usando .toString em Java.

Jack
fonte
9
console.log("Session:" + util.inspect(session))
Raynos 15/09/11
1
Para uma saída mais intuitiva e visual de objetos dar uma olhada em nodedump: github.com/ragamufin/nodedump
ragamufin

Respostas:

271

Tente este:

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

Se o objeto puder ser convertido em JSON, isso funcionará.

Alexander Sulfrian
fonte
9
Eu estou tentando fazer isso para o objeto de solicitação mas mostra TypeError erro: Convertendo estrutura circular para JSON Existe alguma maneira para limitar a profundidade
Neil
de qualquer maneira para bastante imprimir isso?
Chovy
6
@ chovy: algo assim pode funcionar: console.log (JSON.stringify (json, null, 4));
Eric Brandel 03/09
1
isso funcionou para mim: console.log("Session: %O", session); developer.mozilla.org/pt-BR/docs/Web/API/…
JP Lew
Trabalhei para minha resposta da API json! Graças
rodrigorf
129
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 no MDN

ccgillett
fonte
1
de longe a melhor resposta +1!
decoder7283
33

Para ter uma saída mais semelhante à bruta, console.log(obj)eu costumo usar console.log('Status: ' + util.inspect(obj))(JSON é um pouco diferente).

lapo
fonte
4
Isso fornece "util não está definido". Você deve `var util = require (" util ") primeiro. Além disso, os subobjetos ainda se mostram como [Object] e não a string JSON que os representa.
Juanpaco #
13
Para remover o limite de profundidade, use:require('util').inspect(obj, {depth:null})
lapo
25

Isso funcionará com qualquer objeto:

    var util = require("util");
    console.log(util.inspect(myObject, {showHidden: false, depth: null}));
Marwen Trabelsi
fonte
2
Isso funciona muito bem para objetos de erro. Nenhuma de suas propriedades aparece nas outras soluções.
22615 Chris
1
Isso só depende de mim. Acho referências circulares em um objeto bate-lo
Richard
@ Richard provavelmente trava (ed) para você devido à opção de profundidade que está sendo definida como null. Inspecione possui tratamento interno para referências circulares.
2grit
6

console.dir () é a maneira mais direta.

rainabba
fonte
console.dir (someJsonObject); ainda deixa objetos aninhados sem impressão, para mim.
Nyarasha
1
Eu acho que não vai perfurar objetos através de seu protótipo e não lida com certa recursão. Você precisará fazer algo como console.log (JSON.stringify ()) ou algo mais específico para o seu objeto se .dir () não for suficiente. Se você tiver mais informações sobre o objeto, talvez conselhos mais específicos possam ser dados.
rainabba
Pode ter as mesmas opções que util.inspect. Adicione {depth: null}
nikc.org 26/02
0
console.log(obj);

Execute: node app.js> output.txt

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

Isso será feito para a maioria dos objetos para saída no console do 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
fonte