如何获取一组JSON文件并将它们存储在变量或数组中

时间:2017-03-26 18:48:48

标签: javascript json api http get

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文件中的那些值,那么这对用户故事来说非常成功。这意味着我们可以访问这些值,并与用户拥有的内容以及从表中提供给我们的数据进行交叉比较。“

1 个答案:

答案 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或任何其他有用的节点库来读取文件,并将所有文件读入数组。我希望这给你一个线索甚至答案!