0

我要调用一个大型 JSON 数据集。它有多个项目,每个项目都有多条信息。我只想输出一个项目的单条信息。因此,我需要将信息过滤到仅一项或使用 SELECT 语句,例如您可能在 SQL 中使用的语句。我尝试了以下方法,但收到此错误:error: TypeError: Cannot find function filter in object [object Object]. (line 28, file "gwspidy api"). 我一生都无法弄清楚如何将数据归结为那一项。很难在 google 应用程序脚本中测试此代码。

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;  
}

另外,关于缓存服务的第二个问题。我问了一个先前的问题,我被引导使用缓存服务。不幸的是,它有数据大小限制。我如何才能仅使用 data_id 和 min_sale_unit_price 保存数组以降低数据集的大小。

提前感谢您的帮助!

4

2 回答 2

1

一个不错的选择是使用ScriptDb Services,但如果数据量很大,您会因服务配额限制的问题而运行得更快。

从您的示例中,以下工作:

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);
于 2013-08-07T16:04:48.310 回答
1

换线:

var jsonArray = JSON.parse(jsonString).result;

经过:

var jsonArray = JSON.parse(jsonString).results;
于 2013-08-07T17:55:12.920 回答