Jolt如何将列表外的属性添加到列表内的每个对象中
修正后的Jolt Spec
[ { "operation": "shift", "spec": { "*": { "offers": { "*": { "offerings": { "*": { "@(3,type.id)": "[&3].[&1].typeId", "id": "[&3].[&1].offerId" } } } } } } }, { "operation": "shift", "spec": { "*": { "*": "[]" } } } ]
修正逻辑说明
- 原有Spec的问题是
type.id的赋值路径和offerId的赋值路径没有一一对应:每个offer下有多个offering元素,原有逻辑仅为每个offer生成1个typeId,导致和多个offerId错位匹配 - 调整后将typeId的赋值逻辑放到
offerings数组的遍历层级中,使用@(3,type.id)向上回溯3层(当前offering对象 → offerings数组 → 父级offer对象),拿到对应父级offer的type.id值,保证每个offering元素都能注入正确的typeId - 第二个shift操作保持不变,作用是将中间生成的二维数组扁平化为预期的一维对象数组
内容的提问来源于stack exchange,提问作者Chethan
相关产品推荐
相关产品推荐

