如何在DataWeave 2.0中为传入负载的客户ID追加默认邮箱域名并分批?
DataWeave 2.0 实现客户ID分批并追加邮箱域名
输入负载
{"application": "salesforce","payload": {"activeCustomersReturned": 9,"activeCustomers": ["c4444","c2345","c9099","c1234","c3456","c0876","c4589","c4139","c9189"]}}
期望输出
[{"CustomerData": ["c4444@gmail.com","c2345@gmail.com","c9099@gmail.com"]},{"CustomerData": ["c1234@gmail.com","c3456@gmail.com","c0876@gmail.com"]},{"CustomerData": ["c4589@gmail.com","c4139@gmail.com","c9189@gmail.com"]}]
问题分析
你已经通过divideBy 3完成了客户ID的分批,但错误地尝试将整个分批后的数组直接转成字符串拼接域名,这会导致数组被整体转换而非每个元素单独处理。正确的做法是对每一批内的每个客户ID单独做拼接操作。
正确代码
%dw 2.0 import * from dw::core::Arrays output application/json var activeCustomers = payload.payload.activeCustomers divideBy 3 --- activeCustomers map ((item) -> { "CustomerData": item map ($ ++ "@gmail.com") })
代码解释
divideBy 3:将客户ID数组按每3个元素拆分,得到一个包含3个子数组的数组。- 外层
map:遍历每个分批后的子数组,为每个子数组生成一个包含CustomerData键的对象。 - 内层
map:对每个子数组里的客户ID元素,逐个拼接@gmail.com后缀,生成带域名的邮箱字符串数组。
内容的提问来源于stack exchange,提问作者Sunny85
相关产品推荐
相关产品推荐

