2014-01-30 62 views
3

我想使用網站API將JSON對象發回給我的客戶端,並且出現以下錯誤。如何使用express.js傳遞API url JSON http.get res.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。一切正常。任何幫助理解甚至發生的事情都會有所幫助。我正在使用Express.js Node.js Angular.js堆棧。謝謝!

+0

您需要進入你正在從BIBLIA API回數據,並確保它是你期待什麼。 –

回答

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