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

Jolt转换字段填充异常:基于mobile存在性的嵌套条件映射问题

Jolt JSON转换解决方案

需求回顾

  • 仅当code与number拼接生成的mobile字段非空时,才填充eventData.Records下的mobile、status、country、pukcode字段
  • pukcode仅在输入有有效值(非null、非空字符串)时才填充,不能出现null值

正确的Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "code": "temp.code",
      "number": "temp.number",
      "status": "temp.status",
      "country": "temp.country",
      "pukcode": {
        // 仅保留非空的pukcode
        "*": "temp.pukcode"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "temp": {
        "mobile": "=concat(@(1.code), @(1.number))"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "temp": {
        "mobile": {
          // 仅当mobile非空时,才映射Records下的字段
          "*": {
            "@(2.mobile)": "eventData.Records.mobile",
            "@(2.status)": "eventData.Records.status",
            "@(2.country)": "eventData.Records.country",
            "@(2.pukcode)": "eventData.Records.pukcode"
          }
        }
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "temp": ""
    }
  }
]

测试用例验证

测试用例1:输入含有效pukcode

输入

{
  "code": "+86",
  "number": "13800138000",
  "status": "ACTIVE",
  "country": "CN",
  "pukcode": "12345678"
}

预期输出

{
  "eventData": {
    "Records": {
      "mobile": "+8613800138000",
      "status": "ACTIVE",
      "country": "CN",
      "pukcode": "12345678"
    }
  }
}

测试用例2:输入pukcode为null/空

输入

{
  "code": "+86",
  "number": "13800138000",
  "status": "ACTIVE",
  "country": "CN",
  "pukcode": null
}

预期输出

{
  "eventData": {
    "Records": {
      "mobile": "+8613800138000",
      "status": "ACTIVE",
      "country": "CN"
    }
  }
}

测试用例3:mobile拼接后为空(code或number为空)

输入

{
  "code": "",
  "number": "",
  "status": "ACTIVE",
  "country": "CN",
  "pukcode": "12345678"
}

预期输出

{}

关键逻辑说明

  1. 第一步Shift:先把需要的字段暂存到temp节点,同时通过"*": "temp.pukcode"过滤掉null/空的pukcode(如果pukcode是null,这个规则不会匹配,也就不会存入temp)
  2. 第二步Modify:拼接生成mobile字段
  3. 第三步Shift:通过mobile的"*"匹配规则(仅当mobile非空时触发),将temp中的字段映射到eventData.Records下,此时pukcode只有在有效时才会被映射
  4. 第四步Remove:清理临时的temp节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:43:25