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

Jolt规则编写问题:拆分字符串为CA、C0开头的两个数组

Jolt规格修正:拆分并分类smartCode-ids字符串

输入数据

{"smartCode-ids": "CA_2629,CA_2621,CA_1691,C0_2628,C0_2621,C0_1691"}

当前错误的Jolt规格

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "smartCode-ids": "=split(',',@(1,smartCode-ids))"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "smartCode-ids": {
          "CA*": {
            "@(2,smartCode-ids)": "CA[]"
          }
        },
        "C0*": {
          "@(2,smartCode-ids)": "C0[]"
        }
      }
    }
  }
]

预期输出

{"CA":["CA_2629","CA_2621","CA_1691"],"C0":["C0_2628","C0_2621","C0_1691"]}

问题分析与修正后的Jolt规格

原shift操作的层级结构错误,且引用值的方式不对,导致返回null。修正后的规格如下:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "smartCode-ids": "=split(',',@(1,smartCode-ids))"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "smartCode-ids": {
        "*": {
          "CA*": {
            "@": "CA[]"
          },
          "C0*": {
            "@": "C0[]"
          }
        }
      }
    }
  }
]

解释

  1. modify-overwrite-beta:这一步逻辑正确,成功将逗号分隔的字符串拆分为数组。
  2. shift:
    • 直接定位到smartCode-ids数组,用*遍历数组中的每个元素。
    • 对每个元素,判断前缀:以CA开头的,用@引用当前元素的值,将其加入CA数组;以C0开头的同理加入C0数组。
    • 移除了原规格中多余的外层*,避免层级匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:32:15