如何在Apache NiFi中提取并转换JSON数组的product字段结构
Apache NiFi 实现JSON数组结构转换方案
核心处理器选择
使用JoltTransformJSON处理器,它是NiFi中专门用于JSON结构变换的组件,基于Jolt规范实现灵活的字段映射与重组。
转换步骤
1. 明确输入输出格式
- 输入JSON示例:
{ "items": [ { "product": { "organization": "ORG001", "code": "PROD001" } }, { "product": { "organization": "ORG002", "code": "PROD002" } } ] }
- 预期输出JSON:
{ "itens": [ { "produto": "PROD001", "empresa": "ORG001" }, { "produto": "PROD002", "empresa": "ORG002" } ] }
2. 编写Jolt变换规则
在JoltTransformJSON的Jolt Specification属性中,填入以下Shift类型的规则:
{ "items": { "*": { "product": { "code": "itens[&2].produto", "organization": "itens[&2].empresa" } } } }
规则说明:
items.*:遍历原items数组的每一个元素product.code:将原字段映射到新数组itens对应索引位置的produto字段,&2指代向上两层的数组索引(即原items的元素索引)product.organization:同理映射到itens对应位置的empresa字段
3. 处理器配置
- 在NiFi画布中添加
JoltTransformJSON处理器,连接上游提供JSON数据的组件(如GetFile、InvokeHTTP) - 打开处理器配置面板,在Properties标签下:
- 粘贴上述Jolt规则到Jolt Specification属性
- 保持Input JSON Path默认值(
$,表示读取整个流文件内容) - 确认Output JSON Path为默认值(
$,输出完整转换后的JSON)
4. 验证结果
启动处理器后,检查输出流文件的内容,应符合预期的itens数组结构。
注意事项
- 确保输入流文件的MIME类型为
application/json,否则处理器可能无法正确解析 - 若需保留原JSON中的其他未映射字段,可在Jolt规则中添加对应映射逻辑;当前规则仅保留需求指定的字段
内容的提问来源于stack exchange,提问作者Rodrigo Hajime Himauari
相关产品推荐
相关产品推荐

