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

如何定义无需硬编码属性名的JOLT通用转换规则

通用JOLT转换规则

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          // 先复制原对象所有属性到输出数组对应位置
          "*": "[&1].&",
          // 再写入newVals的属性,同名字段会自动覆盖原属性值
          "@(3,newVals)": {
            "*": "[&2].&"
          }
        }
      }
    }
  }
]

规则说明

  • 仅需一层shift操作即可完成需求,无需额外处理步骤,核心逻辑是JOLT的shift操作中,同路径下后写入的字段会自动覆盖先写入的字段值
  • "*": "[&1].&" 遍历data数组每个对象的所有原生属性,原样输出到结果数组对应下标的对象中
  • @(3,newVals) 向上回溯3层拿到根节点的newVals对象,遍历它的所有属性写入到结果数组对应下标的同名属性,因为这一步执行在原属性复制之后,所以会自动覆盖原有的相同属性值,newVals中不存在的属性则保留原值

效果验证

这套规则完全不需要硬编码任何属性名,可适配任意属性名的输入:

  1. 第一个含B/C属性的输入样例执行后,输出结果和你预期的完全一致
  2. 第二个含E/F属性的输入样例执行后,输出结果如下:
[
  {
    "A": 1,
    "E": "new val",
    "F": 7
  }
]

备注:如果不需要新增newVals里存在但data原对象不存在的属性,可以在shift操作前增加过滤逻辑只保留共有的属性,如果你没有类似需求,上面的规则已经完全满足使用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:04