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

Jolt转换需求:合并第7、8位值并生成目标JSON结构

Jolt JSON转换:分组拼接姓名与合并Session字段

需求说明

  • 将输入JSON数组中policy为Name的条目按前缀(PA/PP/PP1)分组,把对应姓名片段(FrstNm/MiNm/LastNm)按名+中间名+姓的顺序拼接为完整姓名字段(如PAfullnam)
  • 将policy为Other的Summer和Winter值合并为Session字段,用空格分隔
  • 最终输出为包含三组姓名对象和一组Session对象的数组

输入JSON

[
  {
    "policy": "Name",
    "PAFrstNm": "John"
  },
  {
    "PALastNm": "Jammy",
    "policy": "Name"
  },
  {
    "PAMiNm": "T",
    "policy": "Name"
  },
  {
    "policy": "Name",
    "PPFrstNm": "sam"
  },
  {
    "policy": "Name",
    "PPLastNm": "jim"
  },
  {
    "policy": "Name",
    "PPMiNm": "E"
  },
  {
    "policy": "Name",
    "PPFrstNm1": "jun"
  },
  {
    "policy": "Other",
    "Summer": "533A"
  },
  {
    "policy": "Other",
    "Winter": "588A"
  },
  {
    "PPLastNm1": "san",
    "policy": "Name"
  },
  {
    "PPMiNm1": "e",
    "policy": "Name"
  }
]

预期输出JSON

[
  {
    "PAfullnam": "John T Jammy",
    "policy": "Name"
  },
  {
    "PPfullnam": "sam E jim",
    "policy": "Name"
  },
  {
    "PPfullnam1": "jun e san",
    "policy": "Name"
  },
  {
    "Session": "533A 588A",
    "policy": "Other"
  }
]

现有Jolt规格问题分析

  • 字段匹配正则LastN|FrstN|MiN无法准确捕获完整字段名(如PALastNm里的LastNm)
  • 分组逻辑未按姓名前缀(PA/PP/PP1)正确归类
  • 拼接操作的路径和函数使用有误,未按指定顺序拼接姓名片段
  • Session字段的合并逻辑未正确关联policy为Other的条目

正确Jolt转换规格

[
  // 第一步:按policy和姓名前缀分组,收集姓名片段和Other字段
  {
    "operation": "shift",
    "spec": {
      "*": {
        "policy": "@1,policy.groupKey",
        // 处理Name组的姓名字段,提取前缀(PA/PP/PP1)和类型(FrstNm/MiNm/LastNm)
        "PAFrstNm": "Name.PA.frst",
        "PAMiNm": "Name.PA.mi",
        "PALastNm": "Name.PA.last",
        "PPFrstNm": "Name.PP.frst",
        "PPMiNm": "Name.PP.mi",
        "PPLastNm": "Name.PP.last",
        "PPFrstNm1": "Name.PP1.frst",
        "PPMiNm1": "Name.PP1.mi",
        "PPLastNm1": "Name.PP1.last",
        // 处理Other组的季节字段
        "Summer": "Other.Summer",
        "Winter": "Other.Winter"
      }
    }
  },
  // 第二步:拼接姓名片段为全名,合并Session字段
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Name": {
        "PA": "=join(' ', @(1,PA.frst), @(1,PA.mi), @(1,PA.last))",
        "PP": "=join(' ', @(1,PP.frst), @(1,PP.mi), @(1,PP.last))",
        "PP1": "=join(' ', @(1,PP1.frst), @(1,PP1.mi), @(1,PP1.last))"
      },
      "Other": "=join(' ', @(1,Other.Summer), @(1,Other.Winter))"
    }
  },
  // 第三步:转换为预期的数组结构,添加policy字段
  {
    "operation": "shift",
    "spec": {
      "Name": {
        "PA": {
          "@": "[0].PAfullnam",
          "$2": "[0].policy"
        },
        "PP": {
          "@": "[1].PPfullnam",
          "$2": "[1].policy"
        },
        "PP1": {
          "@": "[2].PPfullnam1",
          "$2": "[2].policy"
        }
      },
      "Other": {
        "@": "[3].Session",
        "$1": "[3].policy"
      }
    }
  },
  // 第四步:清理空值(如果有的话)
  {
    "operation": "remove",
    "spec": {
      "*": {
        "null": ""
      }
    }
  }
]

规格说明

  1. Shift操作(第一步):将原始数组中的条目按policy分组,同时把姓名字段按前缀拆分到对应子节点,方便后续拼接;Other组的季节字段单独收集。
  2. Modify操作(第二步):使用join函数按指定顺序拼接姓名片段,合并Summer和Winter为Session值。
  3. Shift操作(第三步):将分组后的结构转换为预期的数组格式,为每个对象添加对应的policy字段。
  4. Remove操作(第四步):清理转换过程中可能产生的空值(可选,确保输出整洁)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:47:19