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.


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


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


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


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

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.


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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.