Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js StackOverflow API未返回JSON_Node.js_Stackexchange Api - Fatal编程技术网

Node.js StackOverflow API未返回JSON

Node.js StackOverflow API未返回JSON,node.js,stackexchange-api,Node.js,Stackexchange Api,我正在使用Node.js脚本从StackOverflow收集数据。我知道所有的响应都是gzip的,所以我在其中添加了代码,应该可以解决这个问题。我的脚本如下: var request = require('request'); var zlib = require('zlib'); function getStackOverflowResponse(url, callback){ request(url, {encoding: null}, function(err, response,

我正在使用Node.js脚本从StackOverflow收集数据。我知道所有的响应都是gzip的,所以我在其中添加了代码,应该可以解决这个问题。我的脚本如下:

var request = require('request');
var zlib = require('zlib');

function getStackOverflowResponse(url, callback){
  request(url, {encoding: null}, function(err, response, body){
      if(response.headers['content-encoding'] == 'gzip'){
          zlib.gunzip(body, function(err, dezipped) {
          callback(dezipped);
          });
      } else {
          callback(body);
      }
  });
}

var url = "https://api.stackexchange.com/docs/questions#pagesize=2&order=desc&min=2014-01-04&max=2014-02-02&sort=activity&tagged=apigee&filter=default&site=stackoverflow&run=true";

getStackOverflowResponse(url, function(questions) {
  console.log(questions);
});
我得到的不是JSON输出,而是以下响应:

Buffer 0d 0a 0d 0a 0d 0a 0d 0a 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 3e 0d 0a 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 65 6e 22 3e 0d 0a 3c 68 65 61 64 3e 20 0d ...
答案被放在开始和结束的尖括号里,我把它去掉,这样它就会出现在这里

而不是
回调(dezipped)我尝试了
回调(JSON.parse(dezipped))
回调(JSON.parse(dezipped.toString())


我似乎什么都没用。不管我做什么,我仍然会得到缓冲区结果。如果您能提供帮助,我们将不胜感激。

乔的解决方案是正确的-
请求
返回缓冲流;使用
toString()
将其转换将解决此问题

不过,看起来您实际上并没有调用JSON端点(您调用的是HTML文档页面?)

试试这个:

var request = require('request');
var zlib = require('zlib');

function getStackOverflowResponse(url, callback) {
    request(url, {
        encoding: null
    }, function (err, response, body) {
        if (response.headers['content-encoding'] == 'gzip') {
            zlib.gunzip(body, function (err, dezipped) {
                callback(dezipped);
            });
        } else {
            callback(body);
        }
    });
}

var url = "https://api.stackexchange.com/2.1/questions?pagesize=2&order=desc&min=2014-01-04&max=2014-02-02&sort=activity&tagged=apigee&filter=default&site=stackoverflow&run=true";

getStackOverflowResponse(url, function (questions) {
    console.log(JSON.parse(questions.toString()));
});

Joe的解决方案是正确的-
请求
返回缓冲流;使用
toString()
将其转换将解决此问题

不过,看起来您实际上并没有调用JSON端点(您调用的是HTML文档页面?)

试试这个:

var request = require('request');
var zlib = require('zlib');

function getStackOverflowResponse(url, callback) {
    request(url, {
        encoding: null
    }, function (err, response, body) {
        if (response.headers['content-encoding'] == 'gzip') {
            zlib.gunzip(body, function (err, dezipped) {
                callback(dezipped);
            });
        } else {
            callback(body);
        }
    });
}

var url = "https://api.stackexchange.com/2.1/questions?pagesize=2&order=desc&min=2014-01-04&max=2014-02-02&sort=activity&tagged=apigee&filter=default&site=stackoverflow&run=true";

getStackOverflowResponse(url, function (questions) {
    console.log(JSON.parse(questions.toString()));
});

Joe的解决方案是正确的-
请求
返回缓冲流;使用
toString()
将其转换将解决此问题

不过,看起来您实际上并没有调用JSON端点(您调用的是HTML文档页面?)

试试这个:

var request = require('request');
var zlib = require('zlib');

function getStackOverflowResponse(url, callback) {
    request(url, {
        encoding: null
    }, function (err, response, body) {
        if (response.headers['content-encoding'] == 'gzip') {
            zlib.gunzip(body, function (err, dezipped) {
                callback(dezipped);
            });
        } else {
            callback(body);
        }
    });
}

var url = "https://api.stackexchange.com/2.1/questions?pagesize=2&order=desc&min=2014-01-04&max=2014-02-02&sort=activity&tagged=apigee&filter=default&site=stackoverflow&run=true";

getStackOverflowResponse(url, function (questions) {
    console.log(JSON.parse(questions.toString()));
});

Joe的解决方案是正确的-
请求
返回缓冲流;使用
toString()
将其转换将解决此问题

不过,看起来您实际上并没有调用JSON端点(您调用的是HTML文档页面?)

试试这个:

var request = require('request');
var zlib = require('zlib');

function getStackOverflowResponse(url, callback) {
    request(url, {
        encoding: null
    }, function (err, response, body) {
        if (response.headers['content-encoding'] == 'gzip') {
            zlib.gunzip(body, function (err, dezipped) {
                callback(dezipped);
            });
        } else {
            callback(body);
        }
    });
}

var url = "https://api.stackexchange.com/2.1/questions?pagesize=2&order=desc&min=2014-01-04&max=2014-02-02&sort=activity&tagged=apigee&filter=default&site=stackoverflow&run=true";

getStackOverflowResponse(url, function (questions) {
    console.log(JSON.parse(questions.toString()));
});

如果使用
问题.toString()
?如果使用
问题.toString()
?如果使用
问题.toString()
?如果使用
问题.toString()
?如果使用
问题.toString()怎么办?