var realmStatus = "http://api.dol.gov/V1/Statistics/OES/OE_AREATYPE/?KEY=1ce7650d-b131-4fb7-91b3-b7761efc8cd4";
//"http://api.dol.gov/V1/WHPS/?KEY=1ce7650d-b131-4fb7-91b3-b7761efc8cd4";
//source: http://stackoverflow.com/questions/17811827/get-a-json-via-http-request-in-nodejs
var http = require("http");
var options = {
host: 'api.dol.gov',
path: realmStatus,
type: 'GET',
dataType: 'json',
headers: {'accept' : 'application/json'}
};
console.log("Start");
var x = http.request(options,function(res){
console.log("Connected");
res.on('data',function(data){
console.log(data.toString()+"\n");
});
});
x.end();
我有一堆json文件,我从一个输出不同类型的json数据的网站api表中获取,只是想知道有没有办法将这些文件存储到变量或数组中。
我的搭档说了这个,但不知道他的意思和怎么做。我过滤了每个表的数据。
“所以我们现在知道的是每个请求都会给我们一个表。你需要做的是,通过将它们存储在变量或数组中来存储从JSON文件中提供给我们的那些变量。 在处理JSON时,您可以使用对JSON文件的引用来访问参数,然后使用。运算符来访问JSON文件中的每个变量。 如果您可以只打印存储在JSON文件中的那些值,那么这对用户故事来说非常成功。这意味着我们可以访问这些值,并与用户拥有的内容以及从表中提供给我们的数据进行交叉比较。“
答案 0 :(得分:1)
嘿,根据我的理解,你想要一个数组中的三个不同的api结果。我建议你尝试创建一个调用api和concats结果的通用函数,这样你只需要传递你需要的所有api端点的函数,并从数组中获取所有结果。 better ways 以达到最终结果。
var realmStatus = "http://api.dol.gov/V1/Statistics/OES/OE_AREATYPE/?KEY=1ce7650d-b131-4fb7-91b3-b7761efc8cd4";
var http = require("http");
var options = {
host: 'api.dol.gov',
path: realmStatus,
type: 'GET',
dataType: 'json',
headers: {
'accept': 'application/json'
}
};
function getJson(endpoint) {
options.path = endpoint;
return new Promise((resolve, reject) => {
var x = http.request(options, function(res) {
res.on('data', function(data) {
resolve(JSON.parse(data));
})
});
x.end();
});
}
file1 = getJson(realmStatus);
file2 = getJson(realmStatus);
file3 = getJson(realmStatus);
Promise.all([file1, file3, file3]).then(values => {
console.log(values);
});
因此该函数采用一组api端点(这里我只是多次使用realmStatus),然后发出请求并使用promise来存储json响应。使用Promises.all然后你可以聚合promise,最终结果是来自不同api调用的json数组。
但是,如果您实际上从不同的节点脚本进行了三次api调用,并且您有三个json文件,则可以使用fs或任何其他有用的节点库来读取文件,并将所有文件读入数组。我希望这给你一个线索甚至答案!