我正在寻找一个正则表达式来从一个对象数组中删除一个特定的json对象以及它后面的逗号。
JSon Array
[ { "id" : "id1", "value" : "value1"},
{ "id" : "id2", "value" : "value2"},
{ "id" : "id3", "value" : "value3"},
{ "id" : "id4", "value" : "value4"} ]
我想从上面的数组中删除对象{ "id" : "id3", "value" : "value3"}
。由于它附加了逗号(,),我想删除它,否则数组不会是json格式。
同样,这只是样本。该数组可能包含n个对象。对象可以以任何顺序出现,可以是第一个对象,也可以是中间,也可以是最后一个对象。
因此,正则表达式应检查对象后面是否有逗号,然后用逗号删除对象,否则只删除对象。
任何帮助将不胜感激
答案 0 :(得分:1)
我认为您可以使用Apache NiFi提供的QueryRecord
处理器。您可以找到有关此处理器here的更多详细信息,但一般情况是:它允许您针对流文件内容运行SQL
查询。
因此,您可以使用以下SQL语句向QueryRecord
添加动态关系:
SELECT * FROM FLOWFILE WHERE id <> 'id3'
这是针对流文件内容执行的,只有id
不等于id3
的记录捆绑在一起,并作为流文件发送到该动态关系。
这种方法避免使用计算成本高昂的RegEx。希望这有帮助!