基于mapId匹配从数组提取steps的Jolt转换实现咨询
Jolt实现匹配mapId提取steps的方案
当然可以用Jolt实现这个转换,核心思路是通过shift操作,匹配根节点mapId与mappings数组元素的mapId,提取对应steps的同时保留原有name和mapId字段。
输入数据
{ "name": "New LMO", "mapId": "3100", "mappings": [ { "mapId": "9002", "steps": [ { "label": "0AA2", "order": 1 } ] }, { "mapId": "3100", "steps": [ { "label": "0CA4", "order": 1 }, { "label": "0CA5", "order": 2 } ] } ] }
Jolt转换规范
[ { "operation": "shift", "spec": { "name": "name", "mapId": "mapId", "mappings": { "*": { "mapId": { "@(3,mapId)": { "@(2,steps)": "steps" } } } } } } ]
输出结果
{ "name": "New LMO", "mapId": "3100", "steps": [ { "label": "0CA4", "order": 1 }, { "label": "0CA5", "order": 2 } ] }
关键逻辑说明
@(3,mapId):从当前mappings数组元素的mapId位置向上3层,获取根节点的mapId值,完成匹配判断。@(2,steps):匹配成功后,从当前位置向上2层提取该元素的steps数组,映射到根节点的steps字段。- 原有
name和mapId字段直接保留,无需额外处理。
内容的提问来源于stack exchange,提问作者Antonio Flores
相关产品推荐
相关产品推荐

