使用Jolt基于查找映射替换数组值时Spec不生效问题
问题解决:Jolt根据查找映射替换数组值
你的Jolt Spec失效核心原因是:&在当前层级引用的是数组的索引数字,而非keys数组中当前元素的实际字符串值,导致无法匹配lookup对象里的键名。
正确的Jolt Shift Spec
[ { "operation": "shift", "spec": { "records": { "*": { "id": "data.records[&1].id", "keys": { "*": { "@(3,lookup.@)": "data.records[&3].vals[&1]" } } } } } } ]
关键逻辑说明
@:直接获取当前keys数组的元素值(例如ba2c89c3)@(3,lookup.@):向上回溯3层定位到根节点的lookup对象,再用当前元素值作为键,取出对应的映射值data.records[&3].vals[&1]:&3对应外层records数组的索引,&1对应当前keys数组的索引,保证映射后的值按原数组顺序存入vals数组
验证输出
执行上述Spec后,输出将完全符合预期:
{ "data": { "records": [ { "id": "1", "vals": [ "EE", "EL" ] } ] } }
内容的提问来源于stack exchange,提问作者Jobin Thomas
相关产品推荐
相关产品推荐

