使用传递给函数的参数调用Json对象

时间:2018-10-27 16:13:01

标签: javascript arrays json google-apps-script logic

我遇到了一个有趣的难题-我想编写一个函数,给定几个参数,该函数将根据另一个值返回JSON响应中的对象/参数。

片段1显示了一种可以通过简单的案例检查来做到这一点的方法:

function callf() {
  return f("name", "project_id", "sampleName");
}

function f(Where, Return, Is) {
  var options = {
    "option1": "asdf",
    "option2": "asdf"
  }
  var url = "..."
  var response = UrlFetchApp.fetch(url, options);
  var jsonResponse = JSON.parse(response.getContentText());
  for (i in jsonResponse) {
    if (Where == "object1") {
      //Instead of dynamically calling the object, use case testing to call the desired object.
      if (jsonResponse[i].object1 == Is) {
        if (Return = "returnValue1") {
          return jsonResponse[i].returnValue1;
        } else if (Return = "returnValue2") {
          return jsonResponse[i].returnValue2;
        }
      }
    } else if (Where == "object2") {
      if (jsonResponse[i].object2 == Is) {
        if (Return = "returnValue1") {
          return jsonResponse[i].returnValue1;
        } else if (Return = "returnValue2") {
          return jsonResponse[i].returnValue2;
        }
      }

    }
  }

但是,按照上面的方法,我不得不考虑json响应包含的每个可能的对象,这很痛苦。我想找到一个替代方法,我可以简单地传递一个字符串,该字符串表示要从下面的代码片段之类的函数返回的对象:

function callf(){
  return f("name","project_id","sampleName");
}

function f(Where,Return,Is){
  var options = {
    "option1":"asdf",
    "option2":"asdf"
  }
  var url = "..."
  var response = UrlFetchApp.fetch(url,options);
  var jsonResponse = JSON.parse(response.getContentText());
  for(i in jsonResponse){
    if(jsonResponse[i].(Where)==Is){
      return jsonResponse[i].(Return);
    }
  }
}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

就像您使用方括号将i变量作为键访问json一样,

for(var i in jsonResponse){
  if(jsonResponse[i][Where]==Is){
    return jsonResponse[i][Return];
  }
}