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

如何在Jolt中根据type字段提取元素并设置typeBFlag标志?

Jolt 处理对象列表的解决方案

核心思路

  • 用shift操作精准定位并提取type="B"的元素,同时设置typeBFlag:true,仅在匹配成功时执行该逻辑
  • 用default操作兜底,当未匹配到type="B"时,自动设置typeBFlag:false
  • 全程避免遍历列表时重复设置标志位,彻底防止标志位变为数组的问题

Jolt 转换规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "type": {
          "B": {
            "@(2)": "", // 提取当前type="B"的完整对象
            "#true": "typeBFlag" // 标志位设为true
          }
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "typeBFlag": false // 未匹配到type="B"时的默认值
    }
  }
]

示例验证

情况1:输入包含type="B"的元素

输入:

[
  {"type": "A", "value": "a1"},
  {"type": "B", "value": "b1"},
  {"type": "C", "value": "c1"}
]

输出:

{
  "type": "B",
  "value": "b1",
  "typeBFlag": true
}

情况2:输入不包含type="B"的元素

输入:

[
  {"type": "A", "value": "a1"},
  {"type": "C", "value": "c1"}
]

输出:

{
  "typeBFlag": false
}

关键细节说明

  • shift操作中通过"*"."type"."B"的嵌套匹配,仅对type为B的元素执行提取和标志位设置,不会触发其他元素的处理逻辑
  • default操作的优先级低于shift,只有当typeBFlag字段不存在时才会生效,确保匹配成功时的true值不会被覆盖
  • 这种方案没有在遍历列表时全局设置标志位,从根源上避免了标志位因多次赋值变成数组的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:57:23