2012-02-18 90 views
9

一些麻煩我一直在玩弄youtube API和node.js,到目前爲止我已經能夠得到API的響應,並且console.log它到終端上。節點js - 我遇到了一些JSON.parse()

當我嘗試獲得響應,並使用JSON.parse,我得到一個奇怪的錯誤:

Got response: 200 

undefined:1 
http://www.w3.or 
^ 
SyntaxError: Unexpected token u 
    at Object.parse (native) 
    at IncomingMessage.<anonymous> (/home/ubuntu/node_temp4/index.js:19:10) 
    at IncomingMessage.emit (events.js:88:20) 
    at HTTPParser.onMessageComplete (http.js:137:23) 
    at Socket.ondata (http.js:1137:24) 
    at TCP.onread (net.js:354:27) 

這是我的腳本:

var http = require("http"); 

var searchQuery = "cats"; 
var queryResponse; 

var options = { 
    host: 'gdata.youtube.com', 
    path: "/feeds/api/videos?q=" + searchQuery + "&max-results=1&v=2&alt=json" 
}; 

http.get(options, function(response) { 
    console.log("Got response: " + response.statusCode); 

    response.on('data', function(chunk){ 
    queryResponse += chunk; 
    }); 

    response.on('end', function(){ 
    JSON.parse(queryResponse); 
    console.log('end'); 
    }); 
}).end(); 
+2

你嘗試分析它之前有什麼queryResponse的價值修復它? – Dogbert 2012-02-18 10:32:56

+0

它會在終端上打印[this](http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json)。 編輯:一個更可讀的版本 - http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json&prettyprint=true – user1215653 2012-02-18 10:34:43

回答

14

變量queryResponse設置爲undefined,你在'data'envent處理程序中執行queryResponse += chunk,這意味着queryResponse = queryResponse + chunk因此您將獲得

undefined{"youtube":["Api", "response"]} 

你可以通過實例queryResponse爲空字符串var queryResponse = ''

+0

哦!我知道這很簡單......謝謝! – user1215653 2012-02-18 10:42:52

+0

在將它傳遞給解析之前,檢查數據的類型是一個很好的慣例。 – 2016-01-21 18:01:47

+0

謝謝先生,這真的很容易解決,你只需要指出發生了什麼。 – SKYnine 2016-07-13 16:58:48

相關問題