json - 我们如何将 Mule 4 dataweave 2.0 代码转换为 Mule 3 dataweave 1.0?
问题描述
我在 Mule 4 中有以下 dataweave 2.0 代码,我在 Mule 3 dataweave 1.0 中需要此代码。有人可以帮我如何将此代码转换为 dw 1.0 吗?
Dataweave step 1
%dw 2.0
output application/json
fun prepareList(list:Array, maxSize: Number) = if(sizeOf(list) >= maxSize )
list
else
prepareList(list ++ [(sizeOf(list) + 1) as Number],maxSize)
---
(payload map (row, index) -> ({
dummy : prepareList([],sizeOf(row)) map (irow, icounter) -> {
((row[icounter] splitBy "=")[0]) : (row[icounter] splitBy "=")[1]
}
}))
Dataweave step 2
%dw 2.0
output application/json
---
((payload reduce ((item, acc) -> acc ++ item)).*dummy map (row, index) -> ({
index : row reduce ((item2, acc2) -> acc2 ++ item2)
})).*index
解决方案
大多数操作,如 map、reduce、splitBy 在 DataWeave 1.0 中的工作方式基本相同,并且可能需要很少或不需要更改。选择*
器是一样的。
您必须将if...else...替换为when...otherwise...
您还必须更改---
分隔符之前的声明以匹配 DataWeave 1.0 约定。
例子:
%dw 1.0
%output application/json
%function prepareList(list, maxSize)
list when ( sizeOf(list) >= maxSize )
otherwise prepareList(list ++ [(sizeOf(list) + 1) as Number],maxSize)
---
推荐阅读
- javascript - 为什么 input[type="number"] 将十进制值插入为“.00”?
- typescript - 如何使对象的属性成为 Typescript 中的类型?
- linux - bash脚本(Makefile)嵌套for循环中的文件错误意外结束
- database - 如何让 DynamoDB 自创建数据后每小时删除一次数据?
- javascript - 对象引用给出未定义
- javascript - 反应代码旁边的 jQuery 代码示例(菜鸟)
- python - 是否可以忽略对一行的 pyright 检查?
- modbus - 如何处理通信帧中的特殊字符?
- amazon-web-services - 使用 SAM CLI 的 Lambda 部署太长
- php - 使用 URL 变量从登录页面重定向