如何修正DataWeave的generatePoints函数以生成预期对象数组?
解决DataWeave生成1-24对应points对象数组的问题
修正后的函数代码
fun generatePoints() = (1 to 24) map { currentyear: 2023, points: $ }
问题原因说明
- 原代码的核心错误:你写的
[1 to 24]是把一个范围对象包装成了单元素数组,map只会遍历这一个元素,所以只生成了一个对象。 - 正确的遍历方式:直接使用
1 to 24(加括号是为了提升可读性,不加也能正常运行),这个表达式本身就是1到24的数字序列,map会逐个遍历序列里的每个数字。 - points字段的简化:原代码里的
$[$$]完全多余,$在map中就代表当前遍历到的数字(1、2……24),直接赋值给points即可。
输出结果
修正后运行函数,会生成包含24个对象的数组,格式完全符合你的需求:
[ { "currentyear": 2023, "points": 1 }, { "currentyear": 2023, "points": 2 }, ... { "currentyear": 2023, "points": 24 } ]
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

