Apache NiFi中如何将SplitText输出的两行文本流转为JSON流?
解决方案
有两种简洁的方式实现需求,可根据实际场景选择:
方式一:ExtractText + UpdateAttribute + AttributesToJSON(分步骤提取属性再转JSON)
ExtractText 处理器配置
- 添加两个自定义属性:
- 属性名:
id,正则表达式:^(.*)$,Line Number 设置为1(仅匹配第一行) - 属性名:
word,正则表达式:^(.*)$,Line Number 设置为2(仅匹配第二行)
- 属性名:
- 此步骤会将每行内容分别提取到对应的FlowFile属性中。
- 添加两个自定义属性:
UpdateAttribute 处理器配置(可选,用于将id转为数字类型)
- 添加属性:
id,值填写${id:toNumber()} - 若不需要严格的数字类型id,可跳过此步骤(AttributesToJSON会默认把属性值作为字符串输出)。
- 添加属性:
AttributesToJSON 处理器配置
- Attributes to Include 填写
id,word(指定要转换的属性) - Destination 选择
flowfile-content(将生成的JSON写入FlowFile内容) - 其他参数保持默认即可,最终会生成符合要求的JSON格式。
- Attributes to Include 填写
方式二:ReplaceText 一步生成JSON(无需属性中转)
直接用ReplaceText处理器替换整个FlowFile内容:
- Search Value 填写正则表达式:
^(.*)\n(.*)$(匹配两行内容,第一行分组1,第二行分组2) - Replacement Value 填写:
{ "id": $1, "word": "$2" } - Replacement Strategy 选择
Replace Entire Text - 此方式直接将两行文本替换为目标JSON格式,步骤更简洁,适合不需要保留原属性的场景。
内容的提问来源于stack exchange,提问作者Nikolay Smelov
相关产品推荐
相关产品推荐

