如何在NiFi中用JOLT Transform按元素值移除JSON数组对象
在NiFi中使用JoltTransformJSON筛选JSON数组对象
完全可以实现这个需求,不用复杂的remove操作,用shift转换结合条件判断就能完成数组对象的筛选。
针对你的场景,使用如下Jolt规范即可:
[ { "operation": "shift", "spec": { "*": { "@(1,exists)": { "true": { "@2": "[]" } } } } } ]
规范说明:
*遍历输入数组中的每一个对象@(1,exists)获取当前遍历对象的exists字段值"true": { "@2": "[]" }当exists的值为true时,将当前整个对象(@2表示向上回溯两层的节点,也就是当前数组元素)映射到输出数组中;如果是false则不做任何映射,相当于自动剔除该对象
验证示例:
输入JSON:
[ { "alpha": "a", "beta": "b", "omega": "o", "exists": true }, { "alpha": "1", "beta": "2", "omega": "3", "exists": false }, { "alpha": "z", "beta": "x", "omega": "y", "exists": true } ]
经过转换后输出:
[ { "alpha": "a", "beta": "b", "omega": "o", "exists": true }, { "alpha": "z", "beta": "x", "omega": "y", "exists": true } ]
如果需要根据字符串值筛选(比如exists是字符串类型,值为特定内容时保留),只需要把规范里的"true"改成对应的字符串值即可。
内容的提问来源于stack exchange,提问作者rsnyder
相关产品推荐
相关产品推荐

