dataweave - 数据编织中的复杂操作
问题描述
我需要将一个 groovy 代码映射到 dataweave 中。现有的 groovy 代码类似于伪示例:
if(condition) {
payload.each { data -> {
function1(data.attributes)
function2(data.attributes)
if(condition) {set flag}
}
if(flag is set) {return payload}
else {return errorMessage}
}
}
function1(data) {if(condition) {return errorMessage} else {return data}}
function2(data) {if(condition) {return errorMessage} else {return data}}
将输入有效负载视为-
[
{
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3",
"attribute4": "value4",
},
{
"attribute1": "value5",
"attribute2": "value6",
"attribute3": "value7",
"attribute4": "value8",
}
]
输出是一个 JSON 数组,它取决于 flag 变量。如果设置了标志,则输出 JSON 数组将与 errorMessages 相关,否则将传递原始有效负载。有没有一种方法可以在不使用太多额外的 mule 进程的情况下将其转换为 dataweave?
提前致谢
解决方案
假设您有一个名为 flag 的变量(true 表示成功,false 表示错误)和一个包含错误消息的变量,您可以使用以下 DataWeave 表达式:
%dw 2.0
output application/json
---
if (vars.flag == true)
payload
else
{
errorMessage: vars.errorMessage
}
如果 vars.flag 的值为 true,则 DataWeave 表达式将按原样返回有效负载。否则,它将返回类似于以下内容的 JSON 对象:
{
"errorMessage": "An error occurred"
}
推荐阅读
- android - 如何将协程与 volley 一起使用,以便我的代码可以像同步一样编写?
- amazon-web-services - 无法使用 kubernetes-Jenkins 插件配置 kubernetes URL
- android - 将firestore,androidx libs和google-services插件添加到最新(4.1.0)后无法构建项目
- sql - 使用 Impala 在 id 字段上连接两个表
- javascript - 仅从 getElementsByClassName 获取所有元素的 Javascript 函数
- javascript - Electron:渲染器进程不渲染导航栏
- sqlite - Sqlite3 线程 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) 错误
- service-worker - 使用 sw-precache 在 dynamicUrlToDependencies 中没有显式声明的缓存 Url
- angular - Angular 项目部署在 Firebase 上但未显示网站
- android - Firestore 回收站视图