Jolt转换:嵌套列表迭代生成单列表时公共字段丢失问题求解
Jolt 嵌套列表公共字段丢失问题修复方案
问题原因
原有Spec的错误在于公共字段的绑定层级和索引逻辑不匹配,公共字段仅和Offers层级的索引绑定,没有关联到内层productOfferings的每个子项索引,导致同一个Offer下有多个productOfferings时,只有第一个子项能继承到公共字段。
修正后Jolt Spec
[ { "operation": "shift", "spec": { "*": { "success": { "*": { "Offers": { "*": { "productOfferings": { "*": { "@(2,name)": "[&3].typeName", "@(2,type.id)": "[&3].typeNameId", "@(2,type.name)": "[&3].typeNameValue", "id": "[&3].id", "name": "[&3].name" } } } } } } } } } ]
调整说明
- 把公共字段的赋值逻辑移动到
productOfferings的子项遍历层级内,通过@(2,xxx)向上回溯2层,获取当前子项所属Offer的公共字段值 - 所有字段均使用
[&3]作为输出数组的统一索引,保证每个productOffering子项都能生成独立的完整对象,不会出现字段缺失 - 简化了原有Spec的二次shift操作,单次转换即可得到目标单层数组
内容的提问来源于stack exchange,提问作者Chethan
相关产品推荐
相关产品推荐

