求助:Apache NiFi中实现JSON转换的Jolt规范编写
Jolt规范实现键值对数组转换
以下是适配你需求的Jolt Shift转换规范,可直接在Apache NiFi的JoltTransformJSON处理器中使用:
[ { "operation": "shift", "spec": { "values": { "*": { "*": { "@(3,keys[&1])": "[&2].&" } } } } } ]
规范说明
- 核心用Shift操作实现结构映射,这是Jolt处理键值重排最常用的操作
values: 定位到输入JSON中的values二维数组- 第一层
*: 遍历values里的每个子数组(对应每条客户数据),&2代表当前子数组的索引,用来标记输出数组的位置[&2] - 第二层
*: 遍历子数组里的每个元素,&1代表当前元素在子数组中的索引 @(3,keys[&1]): 向上回溯3层找到根节点的keys数组,取出索引为&1的元素作为最终的字段名"[&2].&": 将当前元素的值,赋值给输出数组第&2个对象中对应字段名的位置
验证效果
输入JSON:
{ "keys": [ "CustomerNumber", "CustomerName", "IsActive" ], "values": [ [ "12345", "ABC Corp", "1" ], [ "67890", "XYZ Ltd", "0" ] ] }
转换后输出:
[ { "CustomerNumber": "12345", "CustomerName": "ABC Corp", "IsActive": "1" }, { "CustomerNumber": "67890", "CustomerName": "XYZ Ltd", "IsActive": "0" } ]
NiFi使用提示
在NiFi的JoltTransformJSON处理器中,将上述规范粘贴到Jolt Specification属性框内,确保输入FlowFile的内容是目标JSON结构,运行后即可得到期望的输出格式。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

