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

如何编写Dynamic Jolt规范处理JSON嵌套数组的三种场景?

修复Jolt规范适配单元素/无元素数组场景

原Jolt规范仅在articleMainMaterial数组包含多元素时正常工作,单元素或无数组时失效,以下是修复后的规范及说明:

修改后的Jolt规范

[
  {
    "operation": "default",
    "spec": {
      "*": {
        "payload": {
          "articleSeason": {
            "articleMainMaterial": [{}]
          }
        }
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "*": {
        "payload": {
          "articleSeason": {
            "articleMainMaterial": "MANY"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "payload": {
          "articleSeason": {
            "articleMainMaterial": {
              "*": {
                "materialComposition": "[&1].materialComposition",
                "@(2,groupArticleNumber)": "[&1].groupArticleNumber",
                "@(2,seasonCode)": "[&1].seasonCode",
                "@(2,groupModelNumber)": "[&1].groupModelNumber",
                "@(2,salesLine)": "[&1].salesLine"
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "*": {
        "materialComposition": null
      }
    }
  }
]

修复逻辑说明

  1. 第一步Default操作:给无articleMainMaterial的输入默认添加一个含空对象的数组,确保后续处理有统一结构,避免因字段缺失导致流程中断。
  2. Cardinality操作:强制articleMainMaterial为数组类型,彻底解决单元素数组被解析为单个对象的问题,保证多元素、单元素场景的结构一致性。
  3. Shift操作:遍历articleMainMaterial数组的每个元素,将当前元素的materialComposition与上层基础字段(groupArticleNumber、seasonCode等)绑定到同一数组项中,[&1]表示使用当前元素的索引作为输出数组的索引。
  4. 最后一步Default操作:给未包含materialComposition的数组项(即原输入无articleMainMaterial的场景)设置该字段为null,符合预期输出要求。

验证效果

  • 多元素数组输入:生成与元素数量对应的多条记录,字段匹配正确。
  • 单元素数组输入:生成一条包含所有字段的记录。
  • 无数组输入:生成一条记录,materialComposition字段为null,其余基础字段正常保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:13:32