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

Jolt规范编写求助:将单个或多个Score统一转换为Scores数组

解决Jolt中单个Score转Scores数组的问题

我来帮你搞定这个转换需求!核心目标是把每个Team里的Score(不管是单个对象还是数组)统一转成Scores数组,同时保留Team的其他字段,并添加指定的默认字段。

问题分析

你之前的Jolt规范主要有两个问题:

  1. 没有正确保留Team成员的原有字段(比如HV、ID这些)
  2. 没有处理单个Score对象转数组的场景,导致单个Score无法变成数组格式

正确的Jolt规范

我们可以通过Shift + Cardinality + Default三个操作组合来实现需求:

[
  // 第一步:提取需要的字段,并重命名Score为Scores
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ScoreInfo": {
          "Team": {
            "*": {
              // 保留当前Team成员的所有原有字段(除了Score)
              "@": "ScoreInfo.Team.&1",
              // 将Score字段的值映射到Scores字段
              "Score": {
                "@": "ScoreInfo.Team.&2.Scores"
              }
            }
          }
        }
      }
    }
  },
  // 第二步:强制将Scores转为数组(关键!处理单个Score的情况)
  {
    "operation": "cardinality",
    "spec": {
      "ScoreInfo": {
        "Team": {
          "*": {
            "Scores": "MANY"
          }
        }
      }
    }
  },
  // 第三步:添加默认字段
  {
    "operation": "default",
    "spec": {
      "Type": "ScoreInfo",
      "Datasource": "Vendor"
    }
  }
]

每一步的作用解释

  1. Shift操作:

    • 遍历输入数组中的元素,只提取ScoreInfo下的Team字段(符合你的期望输出,丢弃了StadiumID等不需要的字段)
    • 对每个Team成员,保留其原有字段(比如HV、ID、NameS等),同时把Score字段的值映射到新的Scores字段
  2. Cardinality操作:

    • 使用MANY规则强制将Scores字段转为数组。这一步是核心:如果原来的Score是单个对象,会自动包裹成数组;如果已经是数组,则保持不变,完美统一格式
  3. Default操作:

    • 为输出添加指定的默认字段Type和Datasource

测试结果

用你的输入数据测试这个规范,就能得到完全符合你要求的输出:单个Score被转为数组,多个Score的数组保持原样,同时保留了所有需要的字段和默认字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:37:34