Node.js StackOverflow API未返回JSON
我正在使用Node.js脚本从StackOverflow收集数据。我知道所有的响应都是gzip的,所以我在其中添加了代码,应该可以解决这个问题。我的脚本如下: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,
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()怎么办?