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

如何通过JOLT实现JSON数组指定键保留与空数组补全

JOLT配置解决方案

输入JSON

{
  "data": [
    {
      "accessCriterias": [
        {
          "name": "level1",
          "id": "1234"
        }
      ],
      "userRoleGroups": [
        {
          "name": "all_grp",
          "id": "456"
        },
        {
          "name": "read_only_grp",
          "id": "234"
        }
      ],
      "firstName": "first_name_1"
    },
    {
      "accessCriterias": [],
      "userRoleGroups": [],
      "firstName": "first_name_2"
    },
    {
      "firstName": "first_name_3"
    }
  ],
  "next": true
}

期望输出JSON

{
  "data": [
    {
      "firstName": "first_name_1",
      "userRoleGroups": [
        {
          "name": "all_grp"
        },
        {
          "name": "read_only_grp"
        }
      ],
      "accessCriterias": [
        {
          "name": "level1"
        }
      ]
    },
    {
      "firstName": "first_name_2",
      "userRoleGroups": [],
      "accessCriterias": []
    },
    {
      "firstName": "first_name_3",
      "userRoleGroups": [],
      "accessCriterias": []
    }
  ],
  "next": true,
  "nextOffset": 50
}

转换规则

  • 若userRoleGroups和accessCriterias字段为空数组或不存在,输出中该字段需设为空数组[];
  • userRoleGroups和accessCriterias仅保留name字段,移除id字段。

原配置问题

原配置仅处理了字段存在性和数组保留,但未对数组内的对象做字段过滤,导致id字段被保留,不符合第二条规则。

正确JOLT配置

[
  {
    "operation": "modify-default-beta",
    "spec": {
      "data": {
        "*": {
          "userRoleGroups": [],
          "accessCriterias": []
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "firstName": "data[&1].firstName",
          "userRoleGroups": {
            "*": {
              "name": "data[&3].userRoleGroups[&1].name"
            }
          },
          "accessCriterias": {
            "*": {
              "name": "data[&3].accessCriterias[&1].name"
            }
          }
        }
      },
      "next": "next"
    }
  },
  {
    "operation": "default",
    "spec": {
      "nextOffset": 50
    }
  }
]

配置说明

  1. modify-default-beta:遍历data数组的每个元素,确保userRoleGroups和accessCriterias字段存在,不存在则设为空数组,满足第一条规则;
  2. shift:重新构造输出结构,针对userRoleGroups和accessCriterias数组内的每个对象,仅提取name字段并映射到对应位置,移除id字段;
  3. default:添加默认的nextOffset字段,值为50。

内容的提问来源于stack exchange,提问作者Avinash Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:43:12