节点console.log / util.inspect嵌套对象/数组
对于嵌套的对象或数组
var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(obj); util.debug(obj); util.debug(util.inspect(obj));
console.log
或util.debug
+ util.inspect
{ foo: { foo: { foo: [Object] } } } DEBUG: [object Object] DEBUG: { foo: { foo: { foo: [Object] } } }
在一定的深度下,它只显示了[Object]
,没有更多的细节。
由于我无法调查实际的值,所以在debugging时总是烦人的。
为什么node
(或V8)像这样实现? 有什么解决办法?
谢谢。
编辑:我收到了一个build议
console.log(JSON.stringify(obj));
结果
{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}
这种工作,但显然是整体被stringify
,可能我不能这样做的所有对象输出debugging。 不是通用的方法。
EDIT2:
解:
console.log(util.inspect(obj,{ depth: null }));
输出:
{ foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }
凉。 这就是我要的!
util.inspect()
采用第二个options
参数,您可以在其中指定depth
。 默认值是2。
http://nodejs.org/api/util.html#util_util_inspect_object_options
所以:
util = require('util'); var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(util.inspect(obj, {depth:12}));
收益率:
{ foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }
使用JSON.stringify
:
var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(JSON.stringify(obj));
结果:
{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}