这是一个全新的问题,我正在尝试学习JavaScript和node.js.我正在尝试使用请求从api中获取信息,然后将信息存储在我可以操作的数组中。
到目前为止,这是我的代码:
max_execution_time = 90
但是,const request = require('request');
var url = "https://www.predictit.org/api/marketdata/ticker/CHINA.INAUGURAL.2017";
var info = request(url, function(err, res, body){
var json = JSON.parse(body);
return json;
})
变量似乎只存储了我认为与info
调用相关的内容,但我不确定。如果我用request
替换return json
,那么它会立即打印出数组,但我无法将其存储起来。
我想告诉节点console.log(json)
并让它返回info['ID']
答案 0 :(得分:1)
节点不能像这样工作。节点是异步的。 你可以试试这个,
var info;
request(url, function(err, res, body){
info = JSON.parse(body);
});
答案 1 :(得分:1)
看起来像你'从该URL请求xml文件。您可以通过键入npm install xml2js为nodejs安装xml2js库,并让它为您解析xml。之后
var parseString = require('xml2js').parseString;
var url = "https://www.predictit.org/api/marketdata/tick /CHINA.INAUGURAL.2017";
var info = request(url, function(err, res, body){
parseString(body, function (err, result) {
info = JSON.parse(JSON.stringify(result));
});
return info;
})
答案 2 :(得分:0)
我希望这个应该有效,
request('https://www.predictit.org/api/marketdata/ticker/CHINA.INAUGURAL.2017',
function (err, res) {
if (err) {
console.log('ERROR: Something went wrong');
}
else {
parseString(responce.body, function (err, result) {
res.json(result);
});
}
});
答案 3 :(得分:0)
我认为数据存储在' info'变量,但您在存储数据之前使用它。 这里API调用需要一些时间来处理和获取数据。然后它将被存储到' info'变量。超时5秒然后尝试console.log(info [1])并返回预期值。 这是由于nodejs的异步性质。在这里,您的代码可能在API调用设置之前执行info [1]。