如何使用express.js传递API url JSON http.get res.json(data)

时间:2014-01-30 20:34:02

标签: json node.js http express

我正在尝试使用网站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堆栈。谢谢!

1 个答案:

答案 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