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

JOLT转换多嵌套JSON数组时供应商银行数据错位问题

错位原因

银行数据和供应商匹配错位,核心是JOLT shift操作中&通配符的层级索引取值错误,两个数组下标写反了位置。
从配置BankKey映射规则的层级开始向上数,各层&n对应的实际值如下:

  • &1:向上1层是BankDetailSet.results下的遍历*,对应单条银行记录在所属供应商银行数组内的下标
  • &4:向上4层是d.results下的遍历*,对应单条供应商在主供应商数组内的下标

原有Spec中银行字段的写入路径为vendors[&1].Bank[&4].bsb,相当于用银行的下标定位供应商,用供应商的下标定位银行位置,处理时就会出现:第一个供应商的第2条银行被写到第二个供应商条目下,第二个供应商的第1条银行被写到第一个供应商条目下,正好形成你看到的交叉错位结果。

正确JOLT Spec
[
  {
    "operation": "shift",
    "spec": {
      "d": {
        "results": {
          "*": {
            "VendorNumber": "vendors.[&1].name",
            "VendorName": "vendors.[&1].VendorName",
            "BankDetailSet": {
              "results": {
                "*": {
                  "BankKey": "vendors[&4].Bank[&1].bsb",
                  "BankAccount": "vendors[&4].Bank[&1].account_number"
                }
              }
            }
          }
        }
      }
    }
  }
]

修正逻辑为调换两个下标的位置:用&4定位供应商数组位置,用&1定位当前供应商下银行数组的位置,就能保证银行数据不会跨供应商串位,转换结果和期望输出完全一致。

实用技巧:后续编写JOLT shift规则计算&n索引时,从当前配置字段的层级开始,每向外退一层嵌套大括号,n值加1,直到数到目标数组对应的*遍历层,就能拿到正确的索引值,避免这类下标错位问题。

内容的提问来源于stack exchange,提问作者Athar Iqbal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:19:28