如何在NiFi中为JSON数组的每个元素添加指定键名
NiFi JSON数组转对象实现方案
推荐使用NiFi原生的JoltTransformJSON处理器完成转换,无需自定义代码,同时支持后续直接引入NiFi属性添加字段,具体操作如下:
1. 基础转换配置
你需要的JSON转换可以通过如下Jolt规范实现,直接填入处理器的Jolt Specification配置项即可:
[ { "operation": "shift", "spec": { "locations": { "*": { "@": "locations[&1].locationid" } } } } ]
该规则会遍历原locations数组的每一个数值元素,将其赋值到新数组对应下标对象的locationid字段,完全匹配你需要的输出格式。
2. 引入NiFi属性添加其他元素
Jolt规范原生支持NiFi表达式语言,你可以直接在规则中添加需要的属性字段,支持加到根节点或者每个location对象内部。示例规则如下:
[ { "operation": "shift", "spec": { "locations": { "*": { "@": "locations[&1].locationid" } } } }, { "operation": "modify-overwrite-beta", "spec": { // 给根节点添加属性字段 "dataSource": "${flow.file.source}", "generateTime": "${now():format('yyyy-MM-dd HH:mm:ss')}", "locations": { "*": { // 给每个location对象添加统一属性字段 "region": "${default.region.code}" } } } } ]
如果添加属性的逻辑比较独立,也可以在JoltTransformJSON处理器后串联AttributesToJSON处理器,选择将指定NiFi属性插入到JSON根节点即可。
3. 处理器配置注意事项
- 处理器的Jolt Transformation DSL选项选择
Chain,匹配数组格式的Jolt规范 - 开启Expression Language Support选项,确保可以正常解析NiFi表达式语言
内容的提问来源于stack exchange,提问作者MBSQL
相关产品推荐
相关产品推荐

