Jolt新手求助:基于特殊字符编写转换Spec实现JSON结构映射
Jolt转换方案
针对你的需求,这里提供通用的Jolt转换Spec,适配表头键名变化的场景,核心利用*、@、&、#等Jolt特殊符号实现动态映射:
转换Spec
[ { "operation": "shift", "spec": { "0": { "*": "headers[#1]" }, "*": { "*": { "$": "rows[&1-1].&2" } } } }, { "operation": "shift", "spec": { "rows": { "*": { "*": { "@": "[&3].@(3,headers[&1])" } } } } } ]
转换逻辑说明
第一步(提取表头与数据)
- 抓取输入数组第一个元素(表头)的所有键,按原始顺序存入
headers数组,#1表示当前键在表头对象中的索引(从0开始计数)。 - 处理输入数组中从索引1开始的所有数据行,将每个数据行的键名(通过
$引用当前键名)按顺序存入rows数组的对应位置:&1-1将输入数组的索引(如1、2)转换为rows数组的索引(0、1),&2表示当前键在数据行中的索引。
- 抓取输入数组第一个元素(表头)的所有键,按原始顺序存入
第二步(映射表头与数据)
- 遍历
rows数组的每一行,将每行的值与headers数组同索引的键进行绑定:&3指代rows的当前索引,@(3,headers[&1])向上回溯3层获取headers数组中对应索引的键作为新对象的键,@引用当前数据值(即数据行的键名),最终生成符合预期的对象数组。
- 遍历
内容的提问来源于stack exchange,提问作者Abroshka
相关产品推荐
相关产品推荐

