node js - 我在使用JSON.parse()时遇到了一些麻烦

时间:2012-02-18 10:28:37

标签: node.js

我一直在使用youtube API和node.js,到目前为止,我已经能够从API和console.log获得响应到终端上。

当我尝试获取响应并使用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();

1 个答案:

答案 0 :(得分:14)

变量queryResponse设置为undefined,你在'data'envent处理程序中执行queryResponse += chunk,这意味着queryResponse = queryResponse + chunk所以你得到了

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

您可以通过将queryResponse实例化为空字符串var queryResponse = ''

来解决此问题