Jolt转换需求:提取并重命名字段实现扁平化输出
解决Jolt转换问题:单次操作实现扁平化与字段重命名
正确的Jolt Spec(单次Shift操作)
[ { "operation": "shift", "spec": { "data": { "positions": { "positionEdge": { "*": { "position": { "ref": "[&2].ref", "catalogue": { "ref": "[&3].catalogueRef" } } } } } } } } ]
关键逻辑说明
*用于遍历positionEdge数组中的每一项,&2表示向上回溯2层的数组索引,用来定位结果数组的对应项[&2].ref直接将position.ref映射到结果数组对应项的ref字段[&3].catalogueRef里的&3向上回溯3层(从catalogue.ref到positionEdge的数组项),把catalogue.ref重命名为catalogueRef并放到对应数组项中- 该Spec会自动忽略
cursor、pageInfo这类不需要的字段,一次转换即可得到目标输出
原Spec问题分析
- 原Spec中
"@": "."的写法会把整个position对象复制到当前层级,后续处理catalogue.ref时层级映射逻辑混乱,导致部分字段丢失 - 额外的
remove操作完全冗余,单次Shift就能完成所有转换需求
内容的提问来源于stack exchange,提问作者eistropfen
相关产品推荐
相关产品推荐

