node console.log / util.inspect 用于嵌套对象/数组。

6 浏览
0 Comments

node console.log / util.inspect 用于嵌套对象/数组。

这个问题已经有答案了:

如何在Node.js的console.log()中获得完整的对象,而不是“[Object]”?

针对嵌套的对象或数组

var obj = {
  foo:
  {
    foo:
    {
      foo:
      {
        foo:
        {
          foo:
          {
            foo: 'foo'
          }
        }
      }
    }
  }
};
console.log(obj);
util.debug(obj);
util.debug(util.inspect(obj));

console.logutil.debug + util.inspect

{ foo: { foo: { foo: [Object] } } }
DEBUG: [object Object]
DEBUG: { foo: { foo: { foo: [Object] } } }

在一定深度以下,它仅显示[Object],没有更多的细节。

这通常在调试时很麻烦,因为我无法调查实际值。

为什么node(或V8)这样实现?有没有任何解决方法?

谢谢。


编辑:

console.log(JSON.stringify(obj));

结果:

{\"foo\":{\"foo\":{\"foo\":{\"foo\":{\"foo\":{\"foo\":\"foo\"}}}}}}

它有点奏效,但显然整个是stringify,而且可能我不能在调试时对所有对象输出执行此操作。不是通用的方法。


编辑2:

解决方法:

console.log(util.inspect(obj,{ depth: null }));

输出:

{ foo: { foo: { foo: { foo: { foo: { foo: \'foo\' } } } } } }

酷!这正是我想要的!

admin 更改状态以发布 2023年5月23日
0
0 Comments

使用 JSON.stringify :\n

var obj = {
  foo:
  {
    foo:
    {
      foo:
      {
        foo:
        {
          foo:
          {
            foo: 'foo'
          }
        }
      }
    }
  }
};
console.log(JSON.stringify(obj));

\n结果:\n

{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}

0
0 Comments

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' } } } } } }

0