如何在APACHE NIFI中使用Jolt部分替换数组内的字符串
解决方案:Apache NiFi Jolt 实现 website 字段指定字符串替换
输入 JSON 示例
覆盖所有需要替换的场景,同时包含一个无需修改的对照项:
{ "information": [ { "id": 1, "website": "https://abcd.com/api/v1" }, { "id": 2, "website": "http://xyxvv.org/test" }, { "id": 3, "website": "https://india.gateway.url/time/123/v1/user" }, { "id": 4, "website": "https://example.com/someText/path" }, { "id": 5, "website": "https://normal.site.com" } ] }
期望输出 JSON 示例
对应替换规则处理后的结果:
{ "information": [ { "id": 1, "website": "https://abcd.india.com/api/v1" }, { "id": 2, "website": "http://ind.hello.org/test" }, { "id": 3, "website": "https://india.ios.gw.url/time/123/v2/user" }, { "id": 4, "website": "https://example.com/diffText/path" }, { "id": 5, "website": "https://normal.site.com" } ] }
Jolt 转换规范
使用 modify-overwrite-beta 操作遍历数组元素,对 website 字段依次执行指定字符串替换:
[ { "operation": "modify-overwrite-beta", "spec": { "information": { "*": { "website": "=replaceAll(@(1), 'abcd', 'abcd.india')", "website": "=replaceAll(@(1), 'xyxvv', 'ind.hello')", "website": "=replaceAll(@(1), 'india.gateway.url/time/123/v1', 'india.ios.gw.url/time/123/v2')", "website": "=replaceAll(@(1), 'someText', 'diffText')" } } } } ]
关键说明
*通配符匹配information数组中的每一个元素- 四次
replaceAll调用按顺序执行指定替换,由于规则间无重叠,执行顺序不影响最终结果 @(1)引用当前层级的website字段值作为替换操作的输入
内容的提问来源于stack exchange,提问作者Smita
相关产品推荐
相关产品推荐

