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

求Jolt Spec:计算列表中指定键对应重复值的总和

Jolt转换方案:计算特定类型调整金额总和

需求说明

遍历输入列表中的每个对象,针对其中的returnItemAdjustments数组,筛选出returnAdjustmentTypeId等于RET_SALES_TAX_ADJ的条目,将这些条目的amount字段求和,最终输出包含原对象returnId和求和结果returnTax的对象列表。

输入示例

[
  {
    "returnId": "10051",
    "returnItemAdjustments": [
      {
        "returnItemSeqId": "00001",
        "amount": 28.64,
        "returnAdjustmentTypeId": "RET_SALES_TAX_ADJ",
        "description": "Return Sales Tax",
        "createdDate": null,
        "returnId": "10051",
        "returnAdjustmentId": "10051",
        "comments": "Return Sales Tax",
        "shipGroupSeqId": null
      },
      {
        "returnItemSeqId": "00001",
        "amount": 58.64,
        "returnAdjustmentTypeId": "RET_SALES_TAX_ADJ",
        "description": "Return Sales Tax",
        "createdDate": null,
        "returnId": "10051",
        "returnAdjustmentId": "10051",
        "comments": "Return Sales Tax",
        "shipGroupSeqId": null
      }
    ]
  },
  {
    "returnId": "10051",
    "returnItemAdjustments": [
      {
        "returnItemSeqId": "00002",
        "amount": 38.64,
        "returnAdjustmentTypeId": "RET_SALES_TAX_ADJ",
        "description": "Return Sales Tax",
        "createdDate": null,
        "returnId": "10051",
        "returnAdjustmentId": "10051",
        "comments": "Return Sales Tax",
        "shipGroupSeqId": null
      }
    ]
  }
]

预期输出

[
  {
    "returnId": "10051",
    "returnTax": 87.28
  },
  {
    "returnId": "10051",
    "returnTax": 38.64
  }
]

Jolt转换Spec

[
  // 提取每个return对象的returnId及符合条件的金额
  {
    "operation": "shift",
    "spec": {
      "*": {
        "returnId": "[&1].returnId",
        "returnItemAdjustments": {
          "*": {
            "returnAdjustmentTypeId": {
              "RET_SALES_TAX_ADJ": {
                "@(2,amount)": "[&4].taxAmounts[]"
              }
            }
          }
        }
      }
    }
  },
  // 对金额数组求和得到returnTax
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "returnTax": "=sum(@(1,taxAmounts))"
      }
    }
  },
  // 移除临时字段,整理最终结构
  {
    "operation": "shift",
    "spec": {
      "*": {
        "returnId": "[&1].returnId",
        "returnTax": "[&1].returnTax"
      }
    }
  }
]

转换步骤解释

  • 第一步(Shift):遍历输入列表的每个元素,保留returnId;同时筛选returnItemAdjustments中类型为RET_SALES_TAX_ADJ的条目,将对应amount存入临时数组taxAmounts,确保金额与原returnId正确关联。
  • 第二步(Modify):使用Jolt内置的sum函数,对每个对象的taxAmounts数组求和,结果存入returnTax字段。
  • 第三步(Shift):移除临时的taxAmounts字段,仅保留returnId和returnTax,生成符合预期的输出结构。

内容的提问来源于stack exchange,提问作者Gurveen Kaur Bagga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:25:31