2012-12-03 30 views
0

我在寫一個簡單的程序,它向reddit發出一個請求,並以JSON格式返回頁面。我通過將'.json'附加到reddit網址的末尾來完成此操作。例如,如果我想讓我的個人資料頁面,我會做「www.reddit.com/user/stebon24.json」。在node.js中使用JSON.parse時出錯

這是我的程序到目前爲止。我將記錄並描述下面的錯誤。

var http = require('http'); 
var options = { 
    host: 'www.reddit.com', 
    path: '' 
}; 

module.exports = function(username) { 

    console.log(username); 

    options.path = '/user/' + username + '.json'; 

    var userData; 

    http.get(options, function(res) { 

     res.on('data', function(data) { 
      userData += data; 
      console.log(userData); 
     }); 

     res.on('end', function() { 
      userData = JSON.parse(userData); 
      console.log(userData); 
     }); 
    }); 
}; 

至於錯誤,當它發生的程序獲取到它需要運行JSON.parse()來點。我知道這一點,因爲我可以看到它從「數據」事件記錄結果時輸出原始JSON。然後這個錯誤是輸出...

undefined:1 
undefined{"kind": "Listing", "data": {"modhash": "", "children": [{"kind": "t1 
^ 
SyntaxError: Unexpected token u 
    at Object.parse (native) 
    at IncomingMessage.module.exports (/home/stephen/Desktop/karmacrawler/engine/crawlUser.js:23:20) 
    at IncomingMessage.EventEmitter.emit (events.js:126:20) 
    at IncomingMessage._emitEnd (http.js:366:10) 
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23) 
    at Socket.socketOnData [as ondata] (http.js:1367:20) 
    at TCP.onread (net.js:403:27) 

回答

1

記住爲userData設置一個初始值,以便它不會初始化爲「未定義」:

var userData = '';