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

Jolt规则:基于外部字段值条件映射数组内字段

Jolt条件映射解决方案

完整Jolt规则

[
  {
    "operation": "shift",
    "spec": {
      "event": {
        "id": "event.id"
      },
      "message": {
        "id": "message.idNbr",
        "conditionCode": "message.conditionCd",
        "data": {
          "*": {
            "id": "message.data[&1].idNbr",
            "field3": "message.data[&1].directField",
            // 根据上层conditionCode判断映射字段
            "@(2,conditionCode)": {
              "AA": {
                "@(2,field1)": "message.data[&3].conditionalField"
              },
              "BB": {
                "@(2,field2)": "message.data[&3].conditionalField"
              }
            }
          }
        }
      }
    }
  }
]

关键逻辑说明

  • 回溯获取上层字段:用@(2,conditionCode)向上回溯2层,从message节点拿到conditionCode的值(当前节点在data[*]的子层级,向上1层是数组元素,再向上1层就是message)。
  • 条件分支映射:根据conditionCode的取值,分别将数组元素的field1或field2映射到conditionalField。其中@(2,field1)用于获取当前数组元素的field1值,&3保持数组索引的对应关系(从AA/BB节点向上回溯3层到data[*],引用原数组的索引位置)。
  • 保留原有字段映射:延续了原有规则中conditionCode→conditionCd、id→idNbr、field3→directField的重命名逻辑。

验证结果

输入JSON 1(conditionCode=AA)

{
  "event": {
    "id": "12345678"
  },
  "message": {
    "id": "1001",
    "conditionCode": "AA",
    "location": "US",
    "data": [
      {
        "id": "1",
        "field1": "value1",
        "field2": "value2",
        "field3": "value3"
      },
      {
        "id": "2",
        "field1": "value4",
        "field2": "value5",
        "field3": "value6"
      }
    ]
  }
}

输出JSON 1

{
  "event": {
    "id": "12345678"
  },
  "message": {
    "idNbr": "1001",
    "conditionCd": "AA",
    "data": [
      {
        "idNbr": "1",
        "directField": "value3",
        "conditionalField": "value1"
      },
      {
        "idNbr": "2",
        "directField": "value6",
        "conditionalField": "value4"
      }
    ]
  }
}

输入JSON 2(conditionCode=BB)

{
  "event": {
    "id": "12345678"
  },
  "message": {
    "id": "1001",
    "conditionCode": "BB",
    "location": "US",
    "data": [
      {
        "id": "1",
        "field1": "value1",
        "field2": "value2",
        "field3": "value3"
      },
      {
        "id": "2",
        "field1": "value4",
        "field2": "value5",
        "field3": "value6"
      }
    ]
  }
}

输出JSON 2

{
  "event": {
    "id": "12345678"
  },
  "message": {
    "idNbr": "1001",
    "conditionCd": "BB",
    "data": [
      {
        "idNbr": "1",
        "directField": "value3",
        "conditionalField": "value2"
      },
      {
        "idNbr": "2",
        "directField": "value6",
        "conditionalField": "value5"
      }
    ]
  }
}

内容的提问来源于stack exchange,提问作者Jobin Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:06:28