2012-02-18 8 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

+0

端末にログすると、[this](http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json)が表示されます。 EDIT:読みやすいバージョン - http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json&prettyprint=true – user1215653

答えて

14

変数queryResponseundefinedに設定され、あなたがあるさ'データ'エベントハンドラのにqueryResponse += chunkを実行すると、

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

あなたはそれを解析しようとする前に、queryResponseの値は何でしょうか。空の文字列var queryResponse = ''

+0

ああ!私はそれが何かシンプルだったことを知っていた...ありがとう! – user1215653

+0

解析するために渡す前に、データのタイプをチェックするのが良い方法です。 –

+0

おかげでミスター、これは本当に簡単に修正することができます、あなたは何が起こっているのポイントをピンする必要があります。 – SKYnine

関連する問題