NiFi Jolt字符串处理转换需求:清理JSON描述字段的换行、制表符
问题描述
现有如下JSON文档,需要通过NiFi的Jolt Transform进行处理:
{ "name": "Wine Seller 1", "in_stock": "3800", "sold": "47", "products": [ { "product_id":"001", "product_name":"Wine - Maipo Valle Cabernet", "description":"Aliquam augue quam, sollicitudin \nvitae, \"consectetuer\" $100eget, rutrum at" }, { "product_id":"002", "product_name":"Bacardi", "description":"Praesent blandit lacinia erat. \n Vestibulum \"sed\" magna" } ] }
要求:移除description字段中的所有换行符(\n)、制表符(\t),同时保留字段内的转义双引号(\"),处理后输出示例如下:
{ "name": "Wine Seller 1", "in_stock": "3800", "sold": "47", "products": [ { "product_id": "001", "product_name": "Wine - Maipo Valle Cabernet", "description": "Aliquam augue quam, sollicitudin vitae, \"consectetuer\" $100eget, rutrum at" }, { "product_id": "002", "product_name": "Bacardi", "description": "Praesent blandit lacinia erat. Vestibulum \"sed\" magna" } ] }
Jolt转换规则
使用以下Jolt规格即可实现需求:
[ { "operation": "modify-overwrite-beta", "spec": { "products": { "*": { "description": "=replaceAll(@(1,description), '[\\n\\t]', '')" } } } } ]
规则说明
modify-overwrite-beta操作用于修改指定字段的值,同时保留其他字段原有内容不变products.*表示遍历products数组中的每一个元素=replaceAll(@(1,description), '[\\n\\t]', '')调用字符串替换函数,通过正则表达式匹配所有换行符(\n)和制表符(\t),并将其替换为空字符串,实现移除效果的同时不会影响转义双引号
内容的提问来源于stack exchange,提问作者Joby Thomas
相关产品推荐
相关产品推荐

