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

如何在Jolt转换中为数组的复杂元素添加默认值

为Jolt数组中每个元素的缺失属性设置null默认值

输入数据

{
  "INS-2000_loop": [
    {
      "HD-2300_loop": [
        {
          "COB-2320_loop": [
            {
              "COB_01": "11",
              "COB_02": "12",
              "COB_03": "13"
            },
            {
              "COB_01": "21",
              "COB_03": "23"
            },
            {
              "COB_01": "31",
              "COB_02": "32"
            },
            {
              "COB_02": "42",
              "COB_03": "43"
            }
          ]
        }
      ]
    }
  ]
}

当前Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "HD-2300_loop": {
            "*": {
              "COB-2320_loop": {
                "*": {
                  "COB_01": "L2320.[&1].x",
                  "COB_02": "L2320.[&1].y",
                  "COB_03": "L2320.[&1].z"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "L2320": [
        { "x": null, "y": null, "z": null }
      ]
    }
  }
]

当前执行结果

{
  "L2320": [
    {
      "x": "11",
      "y": "12",
      "z": "13"
    },
    {
      "x": "21",
      "z": "23"
    },
    {
      "x": "31",
      "y": "32"
    },
    {
      "y": "42",
      "z": "43"
    }
  ]
}

期望结果

{
  "L2320": [
    {
      "x": "11",
      "y": "12",
      "z": "13"
    },
    {
      "x": "21",
      "y": null,
      "z": "23"
    },
    {
      "x": "31",
      "y": "32",
      "z": null
    },
    {
      "x": null,
      "y": "42",
      "z": "43"
    }
  ]
}

解决方案

可以通过调整default操作的目标路径,针对数组中的每个元素设置默认值,而不是给整个数组设置默认元素。修改后的Jolt Spec如下:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "HD-2300_loop": {
            "*": {
              "COB-2320_loop": {
                "*": {
                  "COB_01": "L2320.[&1].x",
                  "COB_02": "L2320.[&1].y",
                  "COB_03": "L2320.[&1].z"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "L2320": {
        "*": {
          "x": null,
          "y": null,
          "z": null
        }
      }
    }
  }
]

说明

  • 原default操作的路径是"L2320": [{"x": null, ...}],这只会在L2320数组为空时添加一个默认元素,不会对已有的数组元素补全属性。
  • 修改后的路径"L2320": {"*": {"x": null, ...}}中,*表示匹配L2320数组里的每一个元素,会自动为每个缺失x/y/z属性的元素补上null值,完全符合期望结果,且适配任意数量的数组元素。

内容的提问来源于stack exchange,提问作者Abhai Raj Llewellyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:47:06