JOLT转换字段重命名实现方法及原理详解
JOLT字段重命名实现(含数组场景)
基础单字段重命名示例
输入JSON
{ "referenceName": "***", "name": "***" }
期望输出JSON
{ "ReferenceName": "***", "ColumnName": "***" }
JOLT转换规范
[ { "operation": "shift", "spec": { "referenceName": "ReferenceName", "name": "ColumnName" } } ]
数组场景扩展
如果输入是包含多个对象的数组,比如:
数组输入JSON
[ { "referenceName": "ref_001", "name": "col_001" }, { "referenceName": "ref_002", "name": "col_002" } ]
对应JOLT转换规范
[ { "operation": "shift", "spec": { "*": { "referenceName": "[&1].ReferenceName", "name": "[&1].ColumnName" } } } ]
数组场景输出JSON
[ { "ReferenceName": "ref_001", "ColumnName": "col_001" }, { "ReferenceName": "ref_002", "ColumnName": "col_002" } ]
实现原理
JOLT依赖shift操作完成字段重命名与结构转换,核心逻辑如下:
shift是JOLT用于数据迁移的核心操作,通过键值对映射规则,将输入数据的指定路径内容迁移到输出数据的目标路径- 单字段场景:直接通过
"原字段名": "新字段名"的映射规则,把原字段的值赋值给新命名的字段,原字段会被自动丢弃(若需保留原字段需额外配置) - 数组场景:
- 用通配符
*匹配数组中的每一个元素(对应数组的索引位置) &1是JOLT的路径引用语法,代表引用上层(数组索引层)匹配到的节点值,确保每个数组元素内的字段重命名后,能放回原数组的对应位置,不会打乱数组顺序
- 用通配符
内容的提问来源于stack exchange,提问作者Fatemeh
相关产品推荐
相关产品推荐

