如何在NiFi中从JSON文件提取字段值至属性?UpdateAttribute失效
如何将JSON中的_id字段值导入NiFi属性
问题原因
UpdateAttribute处理器本身不具备解析FlowFile内容中JSON的能力,它只能引用已存在的FlowFile属性。你直接使用$._id或{$._id}无效,是因为NiFi无法识别这是JSON路径表达式。
解决步骤
1. 用EvaluateJsonPath解析JSON内容
添加EvaluateJsonPath处理器,做如下配置:
- 设置
Destination为flowfile-attribute(将解析结果写入FlowFile属性) - 添加自定义属性(比如命名为
extracted_id),属性值填写$._id(标准JsonPath语法,指向根节点下的_id字段)
运行后,该处理器会把JSON中的_id值提取出来,存储为FlowFile的extracted_id属性。
2. 用UpdateAttribute赋值目标属性(可选)
如果需要将提取的值存入特定名称的属性,添加UpdateAttribute处理器:
- 添加自定义属性(比如你想要的属性名
target_id),属性值填写${extracted_id}(NiFi属性引用语法,引用已提取的属性)
简化方案
如果不需要中间属性,可直接在EvaluateJsonPath中设置目标属性名:
- 在EvaluateJsonPath的属性列表中,直接添加名为
_id的属性,值为$._id,Destination设为flowfile-attribute。这样处理后,FlowFile会直接拥有_id属性,无需后续UpdateAttribute操作。
注意事项
- 确保FlowFile的内容是格式正确的JSON,无语法错误
- JsonPath表达式需匹配JSON结构,若JSON有嵌套层级,需调整路径(如
$.data._id对应嵌套在data节点下的_id)
内容的提问来源于stack exchange,提问作者Nikolay Smelov
相关产品推荐
相关产品推荐

