在下面的代码中(在 Node JS 上运行)我试图使用 JSON.stringify
打印从外部 API 获得的对象,这会导致错误:
TypeError: Converting circular structure to JSON
我已经查看了有关此主题的问题,但没有任何帮助。有人可以建议吗:
a) 如何从 res
对象中获取 country
值?
b) 如何打印整个对象本身?
http.get('http://ip-api.com/json', (res) => {
console.log(`Got response: ${res.statusCode}`);
console.log(res.country) // *** Results in Undefined
console.log(JSON.stringify(res)); // *** Resulting in a TypeError: Converting circular structure to JSON
res.resume();
}).on('error', (e) => {
console.log(`Got error: ${e.message}`);
});
最佳答案
基本 console.log
不会遍历又长又复杂的对象,可能决定只打印 [Object]
。
在 node.js 中防止这种情况的一个好方法是使用 util.inspect
:
'use strict';
const util = require('util'),
obj = /*Long and complex object*/;
console.log(util.inspect(obj, {depth: null}));
//depth: null tell util.inspect to open everything until it get to a circular reference, the result can be quite long however.
编辑:在紧要关头(例如在 REPL 中),第二个选项是 JSON.stringify
。不需要 require
它,但它会在循环引用时中断,而不是打印存在引用的事实。
关于javascript - 如何在 Node JS 中打印对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38768567/