如何编写Dataweave脚本实现JSON数组到指定结构对象的转换
DataWeave数组转动态键对象实现脚本
完整实现脚本
可扩展版本(便于后续维护映射关系)
%dw 2.0 output application/json // 定义字符串和对应用户信息的映射关系 var valueMapping = { "abcd": {"firstname": "xyz", "lastname": "pqr"}, "efgh": {"firstname": "klm", "lastname": "nop"} } --- // 遍历数组生成动态键对象后合并为整体对象 payload map ((item) -> { (item): valueMapping[item] }) reduce ((item, accumulator = {}) -> accumulator ++ item)
简化版本(单步完成转换)
%dw 2.0 output application/json var valueMapping = {"abcd": {"firstname": "xyz", "lastname": "pqr"}, "efgh": {"firstname": "klm", "lastname": "nop"}} --- payload reduce ((item, acc = {}) -> acc ++ {(item): valueMapping[item]})
核心语法说明
- 动态键写法:DataWeave中如果需要用变量的值作为对象的键,需要用括号包裹变量,即
(item),否则会直接把item作为固定键名 reduce函数:用于遍历数组,将每一项生成的临时对象逐步合并为一个完整的输出对象
效果验证
输入示例数组:
[ "abcd", "efgh" ]
运行脚本后输出和要求完全匹配:
{ "abcd":{ "firstname": "xyz", "lastname" : "pqr" }, "efgh" :{ "firstname": "klm", "lastname" : "nop" } }
内容的提问来源于stack exchange,提问作者Sushmitha
相关产品推荐
相关产品推荐

