Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JSON(?)数组中选择或筛选_Json_Google Apps Script - Fatal编程技术网

从JSON(?)数组中选择或筛选

从JSON(?)数组中选择或筛选,json,google-apps-script,Json,Google Apps Script,我调用了一个大型JSON数据集。它有多个项目,每个项目都有多条信息。我只想输出一项的单个信息。因此,我需要将信息过滤到一个项目,或者使用SELECT语句,如SQL中的语句。我尝试了以下操作,但收到了此错误:error:TypeError:object[object]中找不到函数筛选器。(第28行,文件“gwspidy api”)。我一辈子都想不出如何将数据归结为这一项。很难在谷歌应用程序脚本中测试这段代码 function test3(itemID) { var myUrl = "http:

我调用了一个大型JSON数据集。它有多个项目,每个项目都有多条信息。我只想输出一项的单个信息。因此,我需要将信息过滤到一个项目,或者使用SELECT语句,如SQL中的语句。我尝试了以下操作,但收到了此错误:
error:TypeError:object[object]中找不到函数筛选器。(第28行,文件“gwspidy api”)
。我一辈子都想不出如何将数据归结为这一项。很难在谷歌应用程序脚本中测试这段代码

function test3(itemID) {
  var myUrl = "http://www.gw2spidy.com/api/v0.9/json/all-items/all";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var jsonArray = JSON.parse(jsonString).result;
  var jsonFilter = jsonArray.filter(function(itemID,jsonArray){if(jsonArray.data_id.match(itemID)) {return itemID;}});
  var adjustedValue = (jsonFilter.min_sale_unit_price / 100);
  return adjustedValue;  
}
另外,第二个问题涉及缓存服务。我问了前面的一个问题,我的目标是使用缓存服务。不幸的是,这有一个数据大小限制。如何仅使用数据id和最小销售单价来保存阵列以减小数据集的大小


提前感谢您的帮助

一个很好的选择是使用,但是如果数据量很大,您会因为服务配额的限制而运行得更快

从您的示例中可以看出,以下方法有效:

var json = JSON.parse('{"result": [{"id": 1, "value": "value1"}, {"id": 2, "value": "value2"}]}').result;

var items = json.filter(function(item) {
  if(item.id === 2) {
    return item;
  }
});

Logger.log(items);
换行:

var jsonArray = JSON.parse(jsonString).result;
作者:


这个数据调用大约有20000个条目,每个条目大约有15个条目。那么您是说在这个例子中,使用ScriptDb服务实际上会更好?我曾经尝试过类似的方法(
var jsonFilter=jsonArray.filter(函数(item,itemID){if(item.data_id==itemID){return item}}});
),但我一直得到一个错误:
TypeError:无法调用未定义的方法“filter”。(第27行,文件“gwspidy api”)
。我不知道如何解决这个问题。对于处理的数据量,考虑到服务施加的大小限制(配额),会出现某些问题。是否可以发布生成的JSON的示例?所有数据都来自这里:
http://www.gw2spidy.com/api/v0.9/json/all-items/all
。我不知道如何才能向您展示解析后的文本,主要是因为我甚至不知道自己如何才能看到它。这让测试很难说。啊,太好了,谢谢。现在我得到一个
溢出
错误。
var jsonArray = JSON.parse(jsonString).results;