Mule4中DataWeave转换需求:交替组合键值对的值
Mule4 DataWeave实现交替字符组合负载转换
需求说明
输入负载:
{ "First": "Mark", "Last" : "John" }
需要转换为:
{ "Result" : "MJaorhkn" }
核心逻辑是将两个字段的值按交替取字符的方式组合成结果字符串。
DataWeave实现代码
%dw 2.0 output application/json --- { Result: do { // 将两个字符串拆分为单个字符的数组 var firstChars = payload.First splitBy "" var lastChars = payload.Last splitBy "" // 交替配对对应位置的字符并拼接 var pairedSegments = firstChars zipWith lastChars map ($$ ++ $) // 处理两个字符串长度不一致的情况,追加剩余字符 var remainingChars = if (firstChars.length > lastChars.length) firstChars[lastChars.length to -1] else lastChars[firstChars.length to -1] // 合并所有片段得到最终结果 (pairedSegments joinBy "") ++ (remainingChars joinBy "") } }
代码逻辑解释
- 拆分字符:用
splitBy ""把First和Last的字符串拆成单个字符组成的数组,比如"Mark"会变成["M","a","r","k"]。 - 交替配对:通过
zipWith将两个数组的对应位置元素配对,再用map ($$ ++ $)把每对字符拼接成字符串(比如"M"和"J"变成"MJ")。 - 处理长度差异:如果其中一个字符串更长,取出超出部分的字符数组,后续追加到结果中。
- 合并结果:先把配对后的片段拼接成字符串,再追加剩余字符的拼接结果,得到最终的交替组合字符串。
内容的提问来源于stack exchange,提问作者Surekha Jonnalagadda
相关产品推荐
相关产品推荐

