我正在尝试使用网站API将JSON对象发送回我的客户端,并收到以下错误。
var body = JSON.stringify(obj, replacer, spaces);
TypeError: Converting circular structure to JSON
at Object,stringify (native)
这是我的代码
app.get('/api/test', function(req, res){
http.get('http://api.biblia.com/v1/bible/content/LEB.txt.json?passage=John3.16&key=fd37d8f28e95d3be8cb4fbc37e15e18e', function(data) {
res.json(data);
});
});
如果我用简单的JSON对象替换data
{“test”:“test”}。一切正常。任何帮助理解甚至发生的事情都会有所帮助。我正在使用Express.js Node.js Angular.js堆栈。谢谢!
答案 0 :(得分:0)
回调中的data
变量实际上是http.IncomingMessage的一个实例,它比数据复杂得多。你得到的错误是因为它有循环引用,所以你需要将其过滤掉。 an answer here使用以下代码概述了此过程:
var cache = [];
JSON.stringify(o, function(key, value) {
if (typeof value === 'object' && value !== null) {
if (cache.indexOf(value) !== -1) {
// Circular reference found, discard key
return;
}
// Store value in our collection
cache.push(value);
}
return value;
});
cache = null; // Enable garbage collection