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

基于多条件拼接两列的Jolt Spec实现问题求助

Jolt多条件拼接A/B列生成C列解决方案

需求场景

  • A="M-L"、B="S-L" → C="M-L,S-L"
  • A为空、B="S-L" → C="S-L"
  • A="M-L"、B为空 → C="M-L"
  • A、B均为空 → C=""

解决方案1:简洁链式处理Spec

这种方式通过字符串替换一步覆盖所有场景,避免复杂的条件分支:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "C": [
        "${A},${B}",
        "=replaceAll(@, '^,|,$', '')",
        "=default('', '')"
      ]
    }
  }
]

逻辑说明

  1. 先拼接A和B,得到包含冗余逗号的临时结果(比如,S-L、M-L,、,)
  2. 用正则替换去掉开头或结尾的逗号,自动处理单字段非空的场景
  3. 最后确保当A、B都为空时,C保持空字符串

解决方案2:显式条件分支Spec

如果需要更清晰的条件判断逻辑,可按优先级顺序定义分支(优先级从高到低,避免分支覆盖):

[
  {
    "operation": "shift",
    "spec": {
      "@": "&",
      // 场景1:A、B均非空
      "A": {
        "*": {
          "@2,B": {
            "*": {
              "#${A},${B}": "C"
            }
          }
        }
      },
      // 场景2:A空、B非空
      "B": {
        "*": {
          "@2,A": {
            "": {
              "#${B}": "C"
            }
          }
        }
      },
      // 场景3:B空、A非空
      "A": {
        "*": {
          "@2,B": {
            "": {
              "#${A}": "C"
            }
          }
        }
      },
      // 场景4:A、B均为空
      "A": {
        "": {
          "@2,B": {
            "": {
              "#": "C"
            }
          }
        }
      }
    }
  }
]

逻辑说明

按场景优先级依次匹配:先处理A、B都有值的情况,再处理单一字段非空的情况,最后处理都为空的场景。之前else分支不生效,大概率是条件顺序错误或层级定义不当,导致高优先级分支覆盖了低优先级分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:42:29