javascript - 需要在 JSON 格式的 API 输出中搜索值并打印整个数组内容

标签 javascript node.js json google-sheets

我有 googlesheets 函数,可以解析 json 并导入到工作表中,您可以在 ImportJson 文件中找到该函数的代码。

function IMPORTJSON(url,xpath){

  try{
    // /rates/EUR
    var res = UrlFetchApp.fetch(url);
    var content = res.getContentText();
    var json = JSON.parse(content);

    var patharray = xpath.split("/");
    //Logger.log(patharray);

    for(var i=0;i<patharray.length;i++){
      json = json[patharray[i]];
    }

    //Logger.log(typeof(json));

    if(typeof(json) === "undefined"){
      return "Node Not Available";
    } else if(typeof(json) === "object"){
      var tempArr = [];

      for(var obj in json){
        tempArr.push([obj,json[obj]]);
      }
      return tempArr;
    } else if(typeof(json) !== "object") {
      return json;
    }
  }
  catch(err){
      return "Error getting data";  
  }

}

这些功能非常简单且不言自明。披露我从这里得到了这个功能。 “https://www.youtube.com/watch?v=EXKhVQU37WM

我有一些此函数无法满足的附加要求。需要在 JSON 格式的 API 输出中搜索值并打印整个数组内容。

例如,我有一个 JSON 输出,如下所示。

{
  "symbol" : "AAPL",
  "historicalDCF" : [ {
    "date" : "2019-03-30",
    "Stock Price" : 190.5064,
    "DCF" : 199.51439324614452
  }, {
    "date" : "2018-12-29",
    "Stock Price" : 156.4638,
    "DCF" : 165.25974241335186
  }, {
    "date" : "2018-09-29",
    "Stock Price" : 224.6375,
    "DCF" : 233.0488839004929
  }, {
    "date" : "2018-06-30",
    "Stock Price" : 184.3734,
    "DCF" : 192.36145120758877
  }, {
    "date" : "2018-03-31",
    "Stock Price" : 163.5502,
    "DCF" : 172.0839412239145
  }, {
    "date" : "2017-12-30",
    "Stock Price" : 168.339,
    "DCF" : 178.05212237708827
  }, {
    "date" : "2017-09-30",
    "Stock Price" : 149.7705,
    "DCF" : 160.23613044781487
  }, {
    "date" : "2017-07-01",
    "Stock Price" : 139.1847,
    "DCF" : 150.3852802404117
  }, {
    "date" : "2017-04-01",
    "Stock Price" : 138.8057,
    "DCF" : 148.7456306248566
  }, {
    "date" : "2016-12-31",
    "Stock Price" : 111.7097,
    "DCF" : 120.02897160465633
  }, {
    "date" : "2016-09-24",
    "Stock Price" : 108.0101,
    "DCF" : 116.70616209306208
  }
   ] 
    }

您还可以在此链接“https://financialmodelingprep.com/api/v3/company/historical-discounted-cash-flow/AAPL?period=quarter”上查看此 API 的实时版本

要获取“2019-03-30”的 DCF 值,我可以简单地使用如下函数:

=IMPORTJSON("https://financialmodelingprep.com/api/v3/company/historical-discounted-cash-flow/AAPL?period=quarter","historicalDCF/0/DCF")

如果我需要搜索日期并获取股票价格,该怎么办?例如,我需要获取该日期“2017-09-30”的股票价格和 DCF 的值。在不知道数组位置的情况下我该如何做到这一点?

因此,为此我需要帮助,通过创建新函数或修改现有函数来获得此功能。

非常感谢您的帮助,并提前感谢所有的专家。

最佳答案

json.historicalDCF.filter((el) => el.date === "2017-07-01") 将返回与该日期匹配的对象。

您可以获得如下返回:


function findByDate(dateParam) {
  return json.historicalDCF.filter((el) => el.date === dateParam)

}

var theInfoIWantVariable = findByDate("2017-1-1-make-sure-this-is-a-string")

关于javascript - 需要在 JSON 格式的 API 输出中搜索值并打印整个数组内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59762379/

相关文章:

angularjs - 系统异常 : Call to Node module failed with error: Error: URLs requested via Http on the server must be absolute

读取 Hive 表中的 JSON 数据

javascript - 如何以递归方式将 XML 列表显示为以前的 ASP :MENU did?

javascript - HTML5-WebRTC如何记录

javascript - 在视口(viewport)中按比例调整 DIV 的大小

node.js - 使用咖啡运行我的应用程序与编译它和作为 JavaScript 运行它有什么区别?

javascript - 面向对象的 JavaScript 共享方法变量

Node.js Crypto,AES 的默认填充是什么?

php - 在php中将json响应写入mysql数据库

json - 如何在 ng-click 的上下文中显示嵌套 JSON 的数据(Angular、JSON)