我有一个javascript对象,它已经被JSON解析使用JSON。我现在想打印对象,这样我就可以调试它(函数出了问题)。当我做以下事情时……

for (property in obj) {
    output += property + ': ' + obj[property]+'; ';
}
console.log(output);

我得到了多个[object object]。我想知道我要如何打印这个才能查看内容?


当前回答

如果你想调试,为什么不使用控制台调试

window.console.debug(jsonObject);

其他回答

如果你想要一个漂亮的带缩进的多行JSON,那么你可以使用JSON。Stringify的第三个参数:

JSON。Stringify (value[, replace [, space]])

例如:

var obj = {a:1,b:2,c:{d:3, e:4}};

JSON.stringify(obj, null, "    ");

or

JSON.stringify(obj, null, 4);

会给你以下结果:

"{
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4
    }
}"

在浏览器中,console.log(obj)做得更好,但在shell控制台(node.js)中则不然。

下面的代码将在警报框中显示完整的json数据

var data= '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';

json = JSON.parse(data);
window.alert(JSON.stringify(json));

我不知道它是如何被正式制作的,但我已经添加了我自己的json方法到控制台对象,以便更容易打印字符串化日志:

在javascript中观察对象(非原语)有点像量子力学,你“测量”的可能不是真实的状态,它已经改变了。

控制台。Json =控制台。Json ||函数(参数){ arg (var = 0;Arg < arguments.length;+ +参数) console.log (JSON。Stringify(参数[arg], null, 4)) } //使用实例 控制台。Json ([1,'a', null, {a:1}], {a:[1,2]})

很多时候需要查看对象的字符串化版本,因为按原样打印(原始对象)将打印对象的“活动”版本,该版本会随着程序的进展而发生变化,并且不会反映对象在记录时间点的状态,例如:

var foo = {a:1, b:[1,2,3]}

// lets peek under the hood
console.log(foo) 

// program keeps doing things which affect the observed object
foo.a = 2
foo.b = null

很简单:

console.log("object: %O", obj)

你知道JSON代表什么吗?JavaScript对象符号。它为对象提供了很好的格式。

stringify(obj)将返回对象的字符串表示形式。