JOLT转换问题:如何将id字段移入user_roles数组的每个元素
问题:将顶层
id字段移入user_roles数组的每个元素中 我尝试把输入数据里的顶层id字段添加到user_roles数组的每个元素内,但使用的JOLT规格未达到预期效果,需要修正。
输入数据
{ "id": "657a9dc588b19", "user_roles": [ { "role": 2, "status": 1, "is_owner": true }, { "role": 5, "status": 1, "is_owner": true }, { "role": 3, "status": 1, "is_owner": true } ] }
原JOLT规格(无效)
[ { "operation": "shift", "spec": { "user_roles": { "*": { "_id": "user_roles[&0]._id", "*": "user_roles[&1].&" } } } } ]
预期结果
{ "user_roles": [ { "id": "657a9dc588b19", "role": 2, "status": 1, "is_owner": true }, { "id": "657a9dc588b19", "role": 5, "status": 1, "is_owner": true }, { "id": "657a9dc588b19", "role": 3, "status": 1, "is_owner": true } ] }
原规格的问题分析
- 错误引用了不存在的
_id字段,输入里实际是顶层的id - 未正确捕获顶层的
id值,没有从顶层节点向下映射到数组元素 - 数组索引
&0使用错误,导致字段映射位置出错
正确的JOLT规格
[ { "operation": "shift", "spec": { "user_roles": { "*": { "@2,id": "user_roles[&1].id", "*": "user_roles[&1].&" } } } } ]
规格解释
@2,id:通过@引用上层节点,2表示向上跳转两层(从当前数组元素→user_roles→顶层),获取顶层的id值&1:代表当前遍历的user_roles数组的索引,确保每个数组元素都能正确绑定id"*": "user_roles[&1].&":保留数组元素原有的所有字段,&表示沿用原字段名
内容的提问来源于stack exchange,提问作者hoa.le
相关产品推荐
相关产品推荐

