如何在NiFi中用正则移除JSON body字段值引号内的逗号
NiFi处理JSON移除body字段内逗号的可行方案
方案1:使用JoltTransformJSON处理器(首推,稳定性最高)
该方案基于JSON结构直接操作,完全不会误修改JSON本身的结构逗号或其他字段内容,适配所有合法JSON格式:
- 新增JoltTransformJSON处理器,关联到你的数据流上
- 在处理器配置的「Jolt Specification」项中填入如下规则:
[ { "operation": "modify-overwrite-beta", "spec": { "body": "=replace(',', '')" } } ]
配置完成后启动处理器即可自动完成所有body字段内逗号的删除操作。
方案2:使用ReplaceText正则替换(仅推荐无转义双引号的简单场景)
你之前的正则只能匹配整个body字段的内容,无法单独定位内容内的逗号,替换逻辑需要调整:
- ReplaceText处理器配置项修改如下:
- 「Search Value」填入正则:
(?:\"body\"\s*:\s*\")|(,)(?=[^\"]*\",\s*\"[^\"]*\"\s*:) - 「Replacement Value」填入:
$1 - 「Evaluation Mode」选择「Line-by-Line」
- 「Replacement Strategy」选择「Regex Replace」
注意:如果body内容中存在转义双引号\",该正则会出现匹配错位,可能破坏整个JSON结构,非必要不推荐该方案
- 「Search Value」填入正则:
额外建议
如果后续需要合并JSON后转CSV,也可以直接使用ConvertRecord处理器,搭配JSONTreeReader和CSVRecordSetWriter,在Writer配置中开启字段值转义规则,无需提前删除body中的逗号也可正常生成合法CSV文件。
内容的提问来源于stack exchange,提问作者ambrrrgris
相关产品推荐
相关产品推荐

