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

如何通过JOLT转换为缺失acceptId的对象分配acceptIds值?

JOLT转换实现缺失acceptId字段的填充需求

问题描述

需要通过JOLT转换处理JSON数据,满足以下要求:

  • 数据源包含acceptIds数组和phoneNumbers对象数组
  • 仅为phoneNumbers中包含accept对象但缺失acceptId字段的条目,按顺序分配acceptIds中的值
  • 保留原有数据的其他结构,无accept对象的条目保持不变
  • acceptIds的元素数量与缺失acceptId的accept对象数量完全匹配

示例输入

{
  "acceptIds": [
    "23"
  ],
  "phoneNumbers": [
    {
      "phoneNumber": "123",
      "accept": {
        "acceptId": "1",
        "acceptName": "phone"
      }
    },
    {
      "phoneNumber": "456"
    },
    {
      "phoneNumber": "789",
      "accept": {
        "acceptName": "phone"
      }
    }
  ]
}

预期输出

{
  "phoneNumbers": [
    {
      "phoneNumber": "123",
      "accept": {
        "acceptId": "1",
        "acceptName": "phone"
      }
    },
    {
      "phoneNumber": "456"
    },
    {
      "phoneNumber": "789",
      "accept": {
        "acceptId": "23",
        "acceptName": "phone"
      }
    }
  ]
}

JOLT转换规则

[
  {
    "operation": "shift",
    "spec": {
      "phoneNumbers": {
        "*": {
          "@": "phoneNumbers[&1]",
          "accept": {
            "acceptId": {
              "*": {
                "@(2,accept)": "phoneNumbers[&3].accept"
              }
            },
            "*": {
              "@(1)": "phoneNumbers[&3].accept",
              "#true": "needsFill[&3]"
            }
          }
        }
      },
      "acceptIds": "acceptIds"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "phoneNumbers": {
        "*": {
          "needsFill": {
            "true": {
              "@(3,acceptIds[#2])": "phoneNumbers[&3].accept.acceptId",
              "@(2,accept)": "phoneNumbers[&3].accept"
            },
            "*": {
              "@(2)": "phoneNumbers[&3]"
            }
          },
          "*": {
            "@(1)": "phoneNumbers[&2].&"
          }
        }
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "needsFill": "",
      "acceptIds": ""
    }
  }
]

规则说明

  • 第一步(shift操作):
    • 保留phoneNumbers的所有原始结构
    • 为缺失acceptId的accept对象添加needsFill标记,同时保留已有acceptId的对象结构
    • 暂存acceptIds数组用于后续填充
  • 第二步(shift操作):
    • 遍历phoneNumbers,对带有needsFill=true的条目,按顺序从acceptIds中取出对应ID填充到accept.acceptId字段
    • 无标记或已有acceptId的条目直接保留原有数据
  • 第三步(remove操作):清理临时生成的needsFill标记和原acceptIds数组,得到最终结构

内容的提问来源于stack exchange,提问作者Madhavi kurabalakota

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:38:23