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

请求基于公共键合并JSON数组的JOLT转换规则

JOLT转换方案:将候选人员合并至对应工地

输入示例

[
  {
    "worksite_candidates": {
      "worksite_id": "12345",
      "worker": {
        "id": "1232",
        "managerId": "09"
      },
      "openDate": "2022-10-14",
      "finalDate": "2022-12-16"
    }
  },
  {
    "worksite_candidates": {
      "worksite_id": "12345",
      "worker": {
        "id": "1233",
        "managerId": "08"
      },
      "openDate": "",
      "finalDate": ""
    }
  },
  {
    "worksite_candidates": {
      "worksite_id": "12347",
      "worker": {
        "id": "1234",
        "managerId": "09"
      },
      "openDate": "2022-11-10",
      "finalDate": "2022-11-12"
    }
  },
  {
    "worksite": {
      "id": "12345",
      "status": "2",
      "dayid": "2",
      "vacancys": "1",
      "countryid": "2",
      "arenaid": "8"
    }
  },
  {
    "worksite": {
      "id": "12347",
      "status": "2",
      "dayid": "2",
      "vacancys": "1",
      "countryid": "2",
      "arenaid": "8"
    }
  }
]

期望输出

[
  {
    "worksite": {
      "id": "12345",
      "status": "2",
      "dayid": "2",
      "vacancys": "1",
      "countryid": "2",
      "arenaid": "8",
      "Candidates": [
        {
          "worker": {
            "id": "1232",
            "managerId": "09"
          },
          "openDate": "2022-10-14",
          "finalDate": "2022-12-16"
        },
        {
          "worker": {
            "id": "1233",
            "managerId": "08"
          },
          "openDate": "",
          "finalDate": ""
        }
      ]
    }
  },
  {
    "worksite": {
      "id": "12347",
      "status": "2",
      "dayid": "2",
      "vacancys": "1",
      "countryid": "2",
      "arenaid": "8",
      "Candidates": [
        {
          "worker": {
            "id": "1234",
            "managerId": "09"
          },
          "openDate": "2022-11-10",
          "finalDate": "2022-11-12"
        }
      ]
    }
  }
]

JOLT转换规则

[
  // 第一步:按worksite_id分组,关联工地与对应候选人员
  {
    "operation": "shift",
    "spec": {
      "*": {
        "worksite": {
          "id": "grouped.&1.id",
          "*": "grouped.&1.&"
        },
        "worksite_candidates": {
          "worksite_id": {
            "@(2,worker)": "grouped.&1.Candidates[#2].worker",
            "@(2,openDate)": "grouped.&1.Candidates[#2].openDate",
            "@(2,finalDate)": "grouped.&1.Candidates[#2].finalDate"
          }
        }
      }
    }
  },
  // 第二步:将分组结构整理为目标数组格式
  {
    "operation": "shift",
    "spec": {
      "grouped": {
        "*": {
          "id": "[#2].worksite.id",
          "*": "[#2].worksite.&",
          "Candidates": "[#2].worksite.Candidates"
        }
      }
    }
  },
  // 第三步:确保Candidates始终为数组(避免单个候选时转为对象)
  {
    "operation": "cardinality",
    "spec": {
      "*": {
        "worksite": {
          "Candidates": "MANY"
        }
      }
    }
  }
]

规则说明

  • 第一步(shift):把工地和候选人员按worksite_id(工地用自身id,候选用worksite_id)归类到grouped对象下,同时提取候选的核心字段存入对应ID的Candidates数组。
  • 第二步(shift):将grouped下的键值对转换为数组元素,每个元素包裹完整的worksite对象,并嵌套对应的Candidates数组。
  • 第三步(cardinality):强制Candidates保持数组类型,避免单个候选时结构异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:45:37