【问题标题】:How do I take a # of JSON files and store them in a variable or an array如何获取一些 JSON 文件并将它们存储在变量或数组中
【发布时间】:2017-08-19 08:57:50
【问题描述】:

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 文件,我从站点 api 表中获取,它们输出不同类型的 json 数据,我只想知道有没有办法将这些文件存储到变量或数组中。

我的搭档这么说,但不知道他是什么意思,怎么做。我过滤了每个表的数据。

“所以我们现在知道的是,每个请求都会给我们一个表。您需要做的是,通过将 JSON 文件中给我们的变量存储在变量或数组中来存储这些变量。 在处理 JSON 时,您可以使用对 JSON 文件的引用来访问参数,然后使用 .运算符来访问 JSON 文件中的每个变量。 如果您可以打印存储在 JSON 文件中的那些值,那么这对于用户故事来说是非常成功的。这意味着我们可以访问这些值,并与用户拥有的内容以及表格中提供给我们的数据进行交叉比较。”

【问题讨论】:

  • 你写过代码吗?您还应该添加一个语言标签。
  • 是的,我发布了它,所以文件具有相同的代码但不同的 api 数据链接。所以它输出不同的数据。我想把这些文件变成一个变量或数组

标签: javascript json api http get


【解决方案1】:

嘿,根据我的理解,您需要三个不同的 api 结果在一个数组中。我建议您尝试创建一个调用 api 并以这种方式连接结果的通用函数,您只需将该函数传递给您需要的所有 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 或任何其他有用的节点库来读取文件,并将所有文件读入一个数组。我希望这能给你一个线索,甚至是一个答案!

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2016-09-23
    • 2016-11-27
    • 2013-12-14
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多