Node 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]
без дальнейших подробностей.
Это всегда раздражает отладку, поскольку я не могу исследовать фактическое значение.
Почему node
(или V8) реализует это? и есть ли какая-нибудь работа?
Спасибо.
EDIT:
Я получил предложение
console.log(JSON.stringify(obj));
Результат
{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}
Это вроде работает, но, очевидно, целое stringify
ed, и, вероятно, я не мог сделать это для вывода всех объектов при отладке. Не общий метод.
EDIT2:
решение:
console.log(util.inspect(obj,{ depth: null }));
выход:
{ foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }
круто. Это то, что я хочу!
Ответы
Ответ 1
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' } } } } } }
Ответ 2
Используйте JSON.stringify
:
var obj = {
foo:
{
foo:
{
foo:
{
foo:
{
foo:
{
foo: 'foo'
}
}
}
}
}
};
console.log(JSON.stringify(obj));
Результат:
{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}