当我使用JSON.parse并通过require
模块注销一些获取的数据时,嵌套对象将被记录[Object]
。这是一个示例(当前使用Node版本10.15):
const request = require("request");
const url = "https://www.reddit.com/r/javascript.json";
request(url, (error, response) => {
const data = JSON.parse(response.body);
console.log(data)
});
{ kind: 'Listing',
data:
{ modhash: '',
dist: 26,
children:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
after: 't3_bf4cl6',
before: null } }
我在看这个问题:JSON.parse returns [object] from JSON
问的人很好奇,为什么在JSON.parse之后,对象被记录为[Object]
。最高答案指出JSON.parse隐藏数据的原因是为了提高可读性。但是答案并不能说明一种替代默认行为的方法。
如何获取JSON.parse记录完整数据?有没有办法覆盖默认行为?
答案 0 :(得分:5)
如果直接记录response.body
的格式没有达到您喜欢的格式,这就是为什么要进行JSON.parse
的原因,那么记录完整格式的对象
console.log(JSON.stringify(JSON.parse(response.body), null, 2))
答案 1 :(得分:2)
那不是JSON.parse,而是console.log对嵌套对象的默认行为。您可以使用节点的T
进行深度记录
util.inspect
或作为功能
const {inspect} = require('util');
console.log(inspect(obj, false, null, true));