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,[&])会取出整个成员数组,后续遍历反而导致结构混乱。修正后的逻辑更直接:
- 第一层
*遍历所有分组(group1、group2等) - 第二层
*遍历每个分组下的成员 $(1)引用当前层级往上1级的键(即分组名称),赋值给groupId$引用当前成员的值,赋值给memberId[#2]基于第二层(成员遍历层)的迭代索引生成数组元素,确保每个成员对应独立对象
内容的提问来源于stack exchange,提问作者Praveen Kumar
相关产品推荐
相关产品推荐

