如何用1-2行DataWeave代码提取键以TXI结尾的元素到数组
提取嵌套JSON(根为数组)中键以TXI结尾的所有对象
核心代码
%dw 2.0 output application/json --- flatten(payload flatMap ((item) -> (item)** filterObject ((v, k) -> k endsWith "TXI") pluck $))
代码说明
payload指向根数组,用flatMap遍历数组内的每个元素item**深度遍历当前元素的所有嵌套键值对,不管层级多深filterObject ((v, k) -> k endsWith "TXI")筛选出键名以"TXI"结尾的键值对pluck $把筛选后的键值对的值提取出来(也就是你需要的完整对象)flatten把多层嵌套的结果数组合并成一个一维数组
示例验证
输入JSON
[ { "user": { "profile_TXI": { "id": 1, "name": "Alice" }, "settings": { "preferences_TXI": { "theme": "dark", "notifications": true } } } }, { "order_TXI": { "id": 100, "total": 99.99 }, "details": { "status": "shipped" } } ]
输出JSON
[ { "id": 1, "name": "Alice" }, { "theme": "dark", "notifications": true }, { "id": 100, "total": 99.99 } ]
问题说明
mapObject仅能处理当前层级的键值对,无法遍历嵌套结构,因此不适用该场景**深度遍历运算符在DataWeave Playground完全有效,之前失效大概率是写法问题——没有结合数组遍历逻辑适配根为数组的结构。上面的代码通过flatMap先处理每个数组元素,再进行深度筛选,完美解决该问题。
内容的提问来源于stack exchange,提问作者Pramodya Mendis
相关产品推荐
相关产品推荐

