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

如何使用JOLT提取JSON数组中的每个元素

使用JOLT将多数组字段展开为单条记录数组

输入JSON

{
  "CNPJ_PSSA_JUDC": "00000000",
  "NOME_PSSA_JUDC": "EMPRESA DE CNPJ 00000000 LTDA",
  "DOCT_SCIO": [
    "11111111111",
    "00000000000"
  ],
  "NOME_SCIO": [
    "PESSOA DE CPF 11111111111",
    "PESSOA DE CPF 00000000000"
  ],
  "DCRC_CRGO": [
    "Sócio",
    "Sócio-Administrador"
  ]
}

目标输出

[
  {
    "CNPJ_PSSA_JUDC": "00000000",
    "NOME_PSSA_JUDC": "EMPRESA DE CNPJ 00000000 LTDA",
    "DOCT_SCIO": "11111111111",
    "NOME_SCIO": "PESSOA DE CPF 11111111111",
    "DCRC_CRGO": "Sócio"
  },
  {
    "CNPJ_PSSA_JUDC": "00000000",
    "NOME_PSSA_JUDC": "EMPRESA DE CNPJ 00000000 LTDA",
    "DOCT_SCIO": "00000000000",
    "NOME_SCIO": "PESSOA DE CPF 00000000000",
    "DCRC_CRGO": "Sócio-Administrador"
  }
]

JOLT转换规范

通过shift操作结合数组索引关联对应元素,同时复制非数组字段到每条记录:

[
  {
    "operation": "shift",
    "spec": {
      "DOCT_SCIO": {
        "*": {
          "@(2,CNPJ_PSSA_JUDC)": "[&1].CNPJ_PSSA_JUDC",
          "@(2,NOME_PSSA_JUDC)": "[&1].NOME_PSSA_JUDC",
          "@": "[&1].DOCT_SCIO",
          "@(2,NOME_SCIO[&1])": "[&1].NOME_SCIO",
          "@(2,DCRC_CRGO[&1])": "[&1].DCRC_CRGO"
        }
      }
    }
  }
]

核心逻辑说明

  1. 遍历基准:选择DOCT_SCIO数组作为遍历入口,*匹配数组的每个元素索引(0、1...)。
  2. 复制全局字段:@(2,CNPJ_PSSA_JUDC)表示向上回溯2层(跳出当前数组元素的层级),获取根节点的全局字段值,赋值给对应索引的记录。
  3. 关联同索引元素:&1代表当前遍历的索引值,用它获取NOME_SCIO、DCRC_CRGO数组中同位置的元素,确保每条记录的字段对应正确。
  4. 当前元素赋值:@直接引用当前DOCT_SCIO数组的元素值,赋值给对应字段。

注意点

  • 必须保证所有数组字段的长度一致,否则会出现数据不匹配或缺失。
  • 如果数组长度不一致,可额外添加default操作补充默认值,或者更换遍历基准数组。

内容的提问来源于stack exchange,提问作者Mateus Costa Luz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:43:20