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

JOLT转换JSON数组匹配字符串赋值时字段缺失问题求解

问题原因

你的spec报错核心是Jolt层级引用计数错误,规则是从当前节点所在层级从0开始向上计数:

  • #true所在层级(当前):层级0
  • 匹配Yes/No的分支层级:层级1
  • living字段所在层级:层级2
  • familyMembers数组元素的下标层级:层级3
    你第一版用&1取到的是Yes/No的键值,路径匹配错误导致living字段丢失;第二版用[#]取到的是当前匹配分支的同级下标,导致两个布尔值都塞到了第一个数组元素的living字段中。

正确的Spec写法

写法1:单Shift操作(一步完成)

[
  {
    "operation": "shift",
    "spec": {
      "familyMembers": {
        "*": {
          "name": "familyMembers[&1].firstName",
          "living": {
            "Yes": {
              "#true": "familyMembers[&3].living"
            },
            "No": {
              "#false": "familyMembers[&3].living"
            }
          }
        }
      }
    }
  }
]

写法2:拆分操作(逻辑更清晰,易维护)

先完成字段重命名,再做值转换,避免层级引用错误:

[
  {
    "operation": "shift",
    "spec": {
      "familyMembers": {
        "*": {
          "name": "familyMembers[&1].firstName",
          "living": "familyMembers[&1].living"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "familyMembers": {
        "*": {
          "living": "=toString(@(1,living) == 'Yes' ? true : false)"
        }
      }
    }
  }
]

两种写法都可以输出你预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:03