【问题标题】:How to pass API url JSON http.get res.json(data) using express.js如何使用 express.js 传递 API url JSON http.get res.json(data)
【发布时间】:2014-01-31 05:27:45
【问题描述】:

我正在尝试使用网站 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 对象 {"test":"test"} 替换 data。一切正常。任何有助于理解甚至发生的事情都会有所帮助。我正在使用 Express.js Node.js Angular.js 堆栈。谢谢!

【问题讨论】:

  • 您应该记录您从 biblia api 返回的数据,并确保它是您所期望的。

标签: json node.js http express


【解决方案1】:

回调中的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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多