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

Jolt转换:空对象场景下保留JSON结构的方案问询

Jolt规则修改:处理空arrival对象时保留attributes结构

问题场景

现有Jolt Shift规则可正确转换含非空arrival属性的JSON,但当arrival为空对象时,输出会丢失attributes结构。需要调整规则,实现:

  • 非空arrival:正常执行原有转换
  • 空arrival对象:保留attributes的空结构

示例输入与原有问题

输入1(非空arrival)

{
  "arrival": {
    "attributes": {
      "key1": "value1",
      "key2": "value2"
    }
  }
}

输入2(空arrival对象)

{
  "arrival": {}
}

原有问题规则(示例)

[
  {
    "operation": "shift",
    "spec": {
      "arrival": {
        "attributes": "attributes"
      }
    }
  }
]
  • 处理输入1:得到正确结果{"attributes": {"key1": "value1", "key2": "value2"}}
  • 处理输入2:输出{},丢失attributes结构

解决方案

方案1:结合default与shift操作

通过default操作预先兜底attributes的空结构,再执行原有转换:

[
  {
    "operation": "default",
    "spec": {
      "arrival": {
        "attributes": {}
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "arrival": {
        "attributes": "attributes"
      }
    }
  }
]

效果

  • 输入1转换结果:
{
  "attributes": {
    "key1": "value1",
    "key2": "value2"
  }
}
  • 输入2转换结果:
{
  "attributes": {}
}

方案2:纯Shift规则兜底

无需额外操作,直接在Shift规则中通过层级引用处理空对象场景:

[
  {
    "operation": "shift",
    "spec": {
      "arrival": {
        "attributes": "attributes",
        "*": {
          "@(2,arrival.attributes)": "attributes"
        }
      }
    }
  }
]

说明

当arrival为空对象时,*匹配不到任何子键,此时通过@(2,arrival.attributes)引用arrival下的attributes(默认空结构),从而保留attributes键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:16:03