Bagaimana Anda mencatat konten objek JSON di Node.js?

171

Apakah mungkin untuk mencetak konten objek misalnya metode dan atribut di Node.js?

Saat ini saya sedang mencoba untuk mencetak objek sesi dan mendapatkan yang berikut:

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

Mungkin dengan cara yang mirip dengan print_r (array) di PHP, atau menggunakan .toString di Jawa.

Mendongkrak
sumber
9
console.log("Session:" + util.inspect(session))
Raynos
1
Untuk keluaran objek yang lebih intuitif dan visual, lihat nodedump: github.com/ragamufin/nodedump
ragamufin

Jawaban:

271

Coba yang ini:

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

Jika objek dapat dikonversi menjadi JSON, itu akan berhasil.

Alexander Sulfrian
sumber
9
Saya mencoba melakukan ini untuk objek permintaan tetapi ini menunjukkan kesalahan TypeError: Konversi struktur melingkar ke JSON Apakah ada cara untuk membatasi kedalaman
Neil
lagi pula untuk cukup mencetak ini?
chovy
6
@chovy: sesuatu seperti ini mungkin berfungsi: console.log (JSON.stringify (json, null, 4));
Eric Brandel
1
ini bekerja untuk saya: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew
Bekerja untuk respons API json saya! Terima kasih
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 di MDN

ccgillett
sumber
1
sejauh ini jawaban terbaik +1!
decoder7283
33

Untuk memiliki output yang lebih mirip dengan yang console.log(obj)biasa saya gunakan console.log('Status: ' + util.inspect(obj))(JSON sedikit berbeda).

lapo
sumber
4
Ini memberi "util tidak didefinisikan". Anda harus `var util = need (" util ") terlebih dahulu. Juga, sub-objek masih berubah menjadi [Objek] dan bukan string JSON yang mewakili mereka.
juanpaco
13
Untuk menghapus batas kedalaman, gunakan:require('util').inspect(obj, {depth:null})
lapo
25

Ini akan bekerja dengan objek apa pun:

    var util = require("util");
    console.log(util.inspect(myObject, {showHidden: false, depth: null}));
Marwen Trabelsi
sumber
2
Ini berfungsi baik untuk objek kesalahan. Tak satu pun dari properti mereka muncul di solusi lain.
Chris
1
Ini hanya hang untuk saya. Saya pikir referensi melingkar dalam sebuah objek menabraknya
Richard
@Richard itu mungkin hang (ed) untuk Anda karena opsi kedalaman diatur ke null. Inspect memiliki perawatan bawaan untuk referensi melingkar.
2grit
6

console.dir () adalah cara yang paling langsung.

rainabba
sumber
console.dir (someJsonObject); masih menyisakan objek bersarang belum dicetak, bagi saya.
nyarasha
1
Saya pikir itu tidak akan mengebor objek melalui prototipe mereka dan tidak akan berurusan dengan rekursi tertentu. Anda harus melakukan sesuatu seperti console.log (JSON.stringify ()) atau sesuatu yang lebih spesifik untuk objek Anda jika .dir () tidak cukup. Jika Anda memiliki lebih banyak info tentang objek, mungkin saran yang lebih spesifik dapat diberikan.
rainabba
Itu dapat mengambil opsi yang sama seperti util.inspect. Tambahkan {depth: null}
nikc.org
0
console.log(obj);

Jalankan: node app.js> output.txt

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

Ini akan untuk sebagian besar objek untuk menghasilkan di konsol 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
sumber