请求使用Jolt将含对等数组的JSON拆分为多个独立JSON对象
Jolt转换:将等长数组元素按位置配对生成独立JSON对象
需求说明
现有JSON结构中,sourceNode和targetNode为长度相等的数组,需要通过Jolt转换,把两个数组中同位置的元素配对,生成多个独立的JSON对象,每个对象包含一组对应位置的sourceNode和targetNode值。
输入示例
{ "sourceNode" : [ "id:source-abc", "id:source-def" ], "targetNode" : [ "id:target-abc", "id:target-def" ] }
预期输出
{ "sourceNode" : "id:source-abc", "targetNode" : "id:target-abc" } { "sourceNode" : "id:source-def", "targetNode" : "id:target-def" }
Jolt转换规范
使用以下两步shift操作即可实现需求:
[ { "operation": "shift", "spec": { "sourceNode": { "*": { "@": "[&1].sourceNode" } }, "targetNode": { "*": { "@": "[&1].targetNode" } } } }, { "operation": "shift", "spec": { "*": "[]" } } ]
转换逻辑解释
- 第一步shift操作:通过
&1捕获数组元素的索引位置,将sourceNode和targetNode中同索引的元素映射到同一个对象下。比如索引0的两个元素会被放到键为[0]的对象里,形成{"sourceNode": "id:source-abc", "targetNode": "id:target-abc"}这样的结构。 - 第二步shift操作:将第一步生成的按索引分组的对象,展开为独立的JSON元素,最终得到预期的多个独立JSON对象。
内容的提问来源于stack exchange,提问作者priyanka
相关产品推荐
相关产品推荐

