求Jolt转换规则:将含scores列表的对象数组转为统一层级对象数组
Jolt转换方案:合并双scores列表为统一层级对象数组
假设你的输入JSON结构如下(若实际结构不同,可基于此逻辑调整):
[ { "scores": [ {"value": 10}, {"value": 20}, {"value": 25} ] }, { "scores": [ {"value": 30}, {"value": 40}, {"value": 50} ] } ]
期望输出为:
[ {"value1": 10, "value2": 30}, {"value1": 20, "value2": 40}, {"value1": 25, "value2": 50} ]
对应的Jolt Spec如下:
[ // 第一步:展开两个scores列表,为每个元素标记所属源索引 { "operation": "shift", "spec": { "*": { "scores": { "*": { "value": "[&1].value&(2,1)" // &(2,1)取外层数组索引(0/1),对应value1/value2 } } } } }, // 第二步:将同索引的value1和value2合并为单个对象 { "operation": "shift", "spec": { "*": "[]" } } ]
逻辑说明:
- 第一层Shift:遍历外层数组的两个对象,分别处理各自的scores列表。通过
[&1]保留scores元素的原始索引位置,用value&(2,1)将第一个对象的scores值命名为value1,第二个对象的命名为value2,最终得到按索引分组的键值对集合。 - 第二层Shift:将分组后的键值对直接存入数组,形成统一层级的对象数组。
如果输入结构有差异(比如scores内的键不是value、外层对象有其他标识),只需调整Spec中对应的键名即可适配。
内容的提问来源于stack exchange,提问作者janvit04
相关产品推荐
相关产品推荐

