You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析JSON Web API数据并通过responseToRows()函数转换为行数据

Fixing the responseToRows() Function for Parsing Your JSON Data

我来帮你搞定这个解析函数的问题!你的思路方向是对的,只是几个细节没处理到位,主要是没正确引用JSON对象里的属性,还有遍历的数据源搞错了。咱们来一步步修正:

修正后的完整函数代码

function responseToRows(requestedFields, parsedResponse) {
  // Transform parsed data and filter for requested fields
  return parsedResponse.map(function(item) { // 遍历解析后的JSON数组,item对应每个{CODE,PRICE,QTY}对象
    var row = [];
    requestedFields.asArray().forEach(function (field) {
      switch (field.getId()) {
        case 'CODE':
          row.push(item.CODE); // 引用当前对象的CODE属性值
          break; // 用break终止当前case,避免forEach提前结束
        case 'PRICE':
          row.push(item.PRICE);
          break;
        case 'QTY':
          row.push(item.QTY);
          break;
        default:
          row.push('');
          break;
      }
    });
    return { values: row };
  });
}

关键改动说明

  1. 遍历正确的数据源:把原代码里的response.map改成parsedResponse.map——毕竟parsedResponse才是你从API拿到并解析后的目标JSON数组,每个循环的item就是数组里的单个业务对象。
  2. 正确引用对象属性:在switch的每个case里,不能直接写CODE这种变量名,要写成item.CODE,这样才能精准获取当前对象里的对应字段值。
  3. 用break代替return:原代码里的return row.push(...)会直接终止forEach循环,导致后面的字段无法被处理,换成break才能让switch正常走完所有字段的判断逻辑。

简单使用示例

假设你已经拿到了解析后的JSON数据,调用方式大概是这样:

// 示例:从API解析后的JSON数据
const parsedResponse = [
  { CODE: 'NPM_PACKAGE_001', PRICE: 15, QTY: 42 },
  { CODE: 'NPM_PACKAGE_002', PRICE: 28, QTY: 19 }
];

// 传入请求字段集合和解析后的数据,得到行结构
const resultRows = responseToRows(requestedFields, parsedResponse);
Logger.log(resultRows); // 现在就能看到符合要求的行数据了

这样修改后,函数就能把你的JSON数组转换成目标行数据结构,每个{ values: row }对应一行,row里的元素顺序会和requestedFields的顺序保持一致。

内容的提问来源于stack exchange,提问作者KUAN CHUNG LIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:49:31