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

请求实现一对多关系的Jolt转换(含规则与示例)

实现指定规则的Jolt转换

转换规则

  • 若条目tierId与自身sourceNodeID匹配(至少存在一个这类条目):
    1. 将该条目的name字段重命名为sourceNodename
    2. 用该条目的targetNodeID匹配整个输入数组中所有tierId与之相等的条目,建立一对多关联,将匹配到的条目name作为targetNodename补充到结果中

输入示例

[
  {
    "name": "account-management--1",
    "tierId": 206183,
    "sourceNodeID": "206183",
    "targetNodeID": "206184"
  },
  {
    "name": "biz-loan-services--1",
    "tierId": 206184,
    "sourceNodeID": "206183",
    "targetNodeID": "206184"
  },
  {
    "name": "biz-loan-services--2",
    "tierId": 206184,
    "sourceNodeID": "206183",
    "targetNodeID": "206184"
  }
]

期望输出

[
  {
    "sourceNodename": "account-management--1",
    "tierId": 206183,
    "sourceNodeID": "206183",
    "targetNodeID": "206184",
    "targetNodename": "biz-loan-services--1"
  },
  {
    "sourceNodename": "account-management--1",
    "tierId": 206183,
    "sourceNodeID": "206183",
    "targetNodeID": "206184",
    "targetNodename": "biz-loan-services--2"
  }
]

Jolt转换规范

[
  // 按tierId分组,存储每个tierId对应的所有name,方便后续匹配targetNodename
  {
    "operation": "shift",
    "spec": {
      "*": {
        "tierId": "tierMap.&",
        "name": "tierMap.&[]"
      }
    }
  },
  // 保留原始数组,同时合并分组后的tierMap
  {
    "operation": "shift",
    "spec": {
      "tierMap": "tierMap",
      "0": "originalArray"
    }
  },
  // 筛选出tierId等于sourceNodeID的源节点,关联对应的targetNodename列表
  {
    "operation": "shift",
    "spec": {
      "originalArray": {
        "*": {
          "tierId": {
            "@(2,sourceNodeID)": {
              "@(2,tierId)": "result[#2].tierId",
              "@(2,sourceNodeID)": "result[#2].sourceNodeID",
              "@(2,targetNodeID)": "result[#2].targetNodeID",
              "@(2,name)": "result[#2].sourceNodename",
              "@(3,tierMap.@(2,targetNodeID))": "result[#2].targetNodename[]"
            }
          }
        }
      }
    }
  },
  // 将targetNodename数组展开,形成一对多结构
  {
    "operation": "shift",
    "spec": {
      "result": {
        "*": {
          "targetNodename": {
            "*": {
              "@2,tierId": "[#3].tierId",
              "@2,sourceNodeID": "[#3].sourceNodeID",
              "@2,targetNodeID": "[#3].targetNodeID",
              "@2,sourceNodename": "[#3].sourceNodename",
              "@": "[#3].targetNodename"
            }
          }
        }
      }
    }
  }
]

转换说明

  1. 分组映射:把所有条目按tierId归类,收集对应tierId的所有name到tierMap,后续可快速通过targetNodeID获取目标节点名称列表。
  2. 筛选源节点:从原始数组中挑出tierId与自身sourceNodeID匹配的条目,搭建结果基础结构并关联目标节点名称列表。
  3. 展开一对多:将每个源节点对应的目标名称列表展开,生成多条结果条目,完成一对多关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:23:11