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

Jolt技术求助:将字符串数组转换为独立对象

问题描述

我正在尝试将字符串数组转换为对象,但结果未达预期,恳请协助。我在将数组项拆分为独立对象时遇到瓶颈,部分项仍以数组形式保留。

输入JSON

{
  "GroupMembers": {
    "group1": [
      "member1",
      "member2",
      "member3"
    ],
    "group2": [
      "member1",
      "member4",
      "member6",
      "member8"
    ],
    "group3": [
      "member2",
      "member6"
    ]
  }
}

当前使用的Spec文件

[
  {
    "operation": "shift",
    "spec": {
      "GroupMembers": {
        "*": {
          "*": {
            "@(1,[&])": {
              "*": {
                "$(3)": "GroupMembers[#4].groupId",
                "$": "GroupMembers[#4].memberId"
              }
            }
          }
        }
      }
    }
  }
]

预期输出

{
  "GroupMembers": [
    {
      "groupId": "group1",
      "memberId": "member1"
    },
    {
      "groupId": "group1",
      "memberId": "member2"
    },
    {
      "groupId": "group1",
      "memberId": "member3"
    },
    {
      "groupId": "group2",
      "memberId": "member1"
    },
    {
      "groupId": "group2",
      "memberId": "member4"
    },
    {
      "groupId": "group2",
      "memberId": "member6"
    },
    {
      "groupId": "group2",
      "memberId": "member8"
    },
    {
      "groupId": "group3",
      "memberId": "member2"
    },
    {
      "groupId": "group3",
      "memberId": "member6"
    }
  ]
}

修正后的Spec文件

[
  {
    "operation": "shift",
    "spec": {
      "GroupMembers": {
        "*": {
          "*": {
            "$(1)": "GroupMembers[#2].groupId",
            "$": "GroupMembers[#2].memberId"
          }
        }
      }
    }
  }
]

说明

原Spec嵌套层级冗余,@(1,[&])会取出整个成员数组,后续遍历反而导致结构混乱。修正后的逻辑更直接:

  1. 第一层*遍历所有分组(group1、group2等)
  2. 第二层*遍历每个分组下的成员
  3. $(1)引用当前层级往上1级的键(即分组名称),赋值给groupId
  4. $引用当前成员的值,赋值给memberId
  5. [#2]基于第二层(成员遍历层)的迭代索引生成数组元素,确保每个成员对应独立对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:05:19