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.


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.


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


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


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

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.


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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.