Node.js'de bir JSON nesnesinin içeriğini nasıl günlüğe kaydedersiniz?


171

Node.js'de bir nesne içeriğini, örneğin yöntemleri ve öznitelikleri yazdırmak mümkün mü?

Şu anda oturum nesnesini yazdırmaya ve aşağıdakileri almaya çalışıyorum:

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

Belki PHP'de print_r (dizi) veya Java'da .toString kullanarak benzer şekilde.


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

1
Nesnelerin daha sezgisel ve görsel çıktıları için nodedump'a bir göz atın: github.com/ragamufin/nodedump
ragamufin

Yanıtlar:


271

Bunu dene:

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

Nesne JSON'a dönüştürülebilirse, bu işe yarayacaktır.


9
İstek nesnesi için bunu yapmaya çalışıyorum ama hata gösterir TypeError: dairesel yapı JSON dönüştürme Derinliği sınırlamak için herhangi bir yolu var mı
Neil

Yine de güzel yazdırmak için?
chovy

6
@ chovy: bunun gibi bir şey işe yarayabilir: console.log (JSON.stringify (json, null, 4));
Eric Brandel

1
Bu benim için çalıştı: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew

Benim json API yanıt için çalıştı! Teşekkürler
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

MDN'de JSON.stringify


1
açık ara en iyi cevap +1!
decoder7283

33

Ham çıktıya daha benzer bir çıktıya sahip olmak için console.log(obj)genellikle kullanıyorum console.log('Status: ' + util.inspect(obj))(JSON biraz farklıdır).


4
Bu "util tanımlanmadı" verir. Önce `var varil = requir (" util ") gerekir. Ayrıca, alt nesneler kendilerini temsil eden JSON dizesi olarak değil, yine de [Nesne] olarak görünür.
juanpaco

13
Derinlik sınırını kaldırmak için şunu kullanın:require('util').inspect(obj, {depth:null})
lapo

25

Bu, herhangi bir nesne ile çalışır:

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

2
Bu hata nesneleri için harika çalışır. Özelliklerinin hiçbiri diğer çözümlerde görünmemektedir.
Chris

1
Bu sadece benim için asılı. Bence bir cisimdeki dairesel referanslar çöküyor
Richard

@Richard, derinlik seçeneği olarak ayarlandığından muhtemelen sizin için asılır (düzenlenir) null. Inspect, dairesel referanslar için yerleşik tedaviye sahiptir.
2grit

6

console.dir () en doğrudan yoldur.


console.dir (someJsonObject); iç içe geçmiş nesneleri hala benim için yazdırmıyor.
nyarasha

1
Bence prototipleri ile nesnelere girmeyecek ve belirli bir özyineleme ile uğraşmayacak. Konsol.log (JSON.stringify ()) gibi bir şey ya da .dir () yeterli değilse nesnenize daha özel bir şey yapmanız gerekecektir. Nesne hakkında daha fazla bilgiye sahipseniz, belki de daha spesifik tavsiyeler verilebilir.
rainabba

Util.inspect ile aynı seçenekleri alabilir. {Derinlik: null}
nikc.org


0

Bu, nodejs konsolunda çıktılanacak nesnelerin çoğu için olacaktır

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

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.