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

兼容有无materialMovements数组的通用Jolt转换规范编写

Jolt规范兼容有无materialMovements数组两类输入的调整方案

场景说明

  • 需求:编写通用Jolt转换规范,将不同结构的输入统一输出为扁平化JSON
  • 两类输入差异:除输入1携带materialMovements数组、输入2无该数组外,其余字段结构完全一致
  • 现状:现有Jolt规范可正常处理带materialMovements数组的输入1,但无法兼容无该数组的输入2,调整时需保留所有原有JSON字段定义、Jolt语法、代码结构,不得改动原有已生效的处理逻辑。

调整方法

核心原因是现有规范默认强制匹配materialMovements路径,当输入不存在该节点时会触发路径匹配失败,仅需做极小改动即可兼容,完全不影响原有输入1的转换结果:

  1. 在原有Jolt规范的最开头新增一个default操作,为不存在的materialMovements节点设置空数组兜底:
{
  "operation": "default",
  "spec": {
    "materialMovements": []
  }
}

default操作的生效逻辑是仅当输入中不存在对应节点时才会写入默认值,不会覆盖输入1中原本携带的materialMovements数组内容,原有转换逻辑对输入1的处理结果和调整前完全一致。

  1. 如果原有规范中存在针对materialMovements的cardinality、modify类操作,给对应匹配键前增加?存在性判定标识即可,例如原规则"materialMovements": "ONE"修改为"?materialMovements": "ONE",规则会在节点存在时正常执行,节点不存在时直接跳过,不会抛出匹配异常。

调整完成后,将原有已经写好的可正常处理输入1的Jolt规范原封不动接在新增的default操作后面,组成完整的Jolt spec数组即可同时适配两类输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:21:18