使用JOLT按dataKey匹配映射表头与行数据的实现方案
正确JOLT Spec实现方案
[ // 构建dataKey与displayName的映射关系,同时保留行数据 { "operation": "shift", "spec": { "headers": { "*": { "displayName": "headerMap.@(1,dataKey)" } }, "rows": "rows" } }, // 遍历第一行数据,替换列键为对应的显示名称 { "operation": "shift", "spec": { "rows": { "0": { "*": { "@": "Data.1.@(3,headerMap.&)" } } } } }, // 处理键名和字段值的首尾空格,匹配预期输出格式 { "operation": "modify-overwrite-beta", "spec": { "Data": { "1": { "*": "=trim", "*": "=trim" } } } } ]
逻辑说明
- 第一步先把headers数组转换为
dataKey为键、displayName为值的映射表,降低后续匹配替换的复杂度 - 第二步取rows数组的第一条数据(下标为0),将每列的键从
col-x替换为映射表中对应的显示名称,输出到Data.1节点下 - 第三步调用trim函数处理原输入里displayName、字段值带的首尾空格,和预期输出格式完全对齐
内容的提问来源于stack exchange,提问作者Yugi
相关产品推荐
相关产品推荐

