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

Jolt配置问题:如何将偏移值与默认值合并到同一子对象

Jolt JSON转换问题:默认值合并到子对象的错误分析与修正

问题原因分析

  • 第三个shift操作中,"*": "Data.Accounts.[&1].&"会将Accounts数组每个元素下的Account对象原样复制到目标路径,但后续@(3,Attribute)又尝试向Data.Accounts.[&1].Account.Attribute1写入值。Jolt处理同一路径下先有对象、后新增键值的场景时,错误地将Account转换为数组,把原对象和新生成的{Attribute1: "default"}拆分为数组元素。
  • 同时,default操作在根节点添加Attribute字段,后续@(3,Attribute)的层级定位不准确,进一步导致赋值逻辑混乱,无法正确将默认值合并到已有Account对象中。

修正方案

方案一:使用modify-default-beta操作(推荐)

先通过shift生成基础结构,再用modify-default-beta为每个Account对象添加默认属性,该操作会保留原有属性,仅补充缺失的默认值:

[
  {
    "operation": "shift",
    "spec": {
      "banking_account": {
        "accounts": {
          "*": {
            "accountId": "Data.Accounts.[&1].Account.Identification"
          }
        }
      }
    }
  },
  {
    "operation": "modify-default-beta",
    "spec": {
      "Data": {
        "Accounts": {
          "*": {
            "Account": {
              "Attribute1": "default"
            }
          }
        }
      }
    }
  }
]

方案二:单一shift操作完成转换

在同一个shift操作中,既映射原有字段,又直接通过常量赋值添加默认值,一步到位避免多步操作的结构问题:

[
  {
    "operation": "shift",
    "spec": {
      "banking_account": {
        "accounts": {
          "*": {
            "accountId": "Data.Accounts.[&1].Account.Identification",
            "#default": "Data.Accounts.[&1].Account.Attribute1"
          }
        }
      }
    }
  }
]

验证结果

两种方案均会输出预期的JSON结构:

{
  "Data": {
    "Accounts": [
      {
        "Account": {
          "Attribute1": "default",
          "Identification": "id1"
        }
      },
      {
        "Account": {
          "Attribute1": "default",
          "Identification": "id2"
        }
      }
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:10:33