如何解决使用Dataweave将键和值数组压缩为一个对象
我需要从两个数组开始生成一个对象,一个数组具有键名,另一个数组具有值。我可以使用以下代码来获取它:
var keys = ["fieldA","fieldB","fieldC"]
var values = [45,"data",{some: "object"}]
---
(keys zip values) map ((keyValueArray,index) ->
{
(keyValueArray[0]):keyValueArray[1]
}
) reduce ((singleKeyObject,acc) -> acc ++ singleKeyObject)
该代码产生以下输出:
{
"fieldA": 45,"fieldB": "data","fieldC": {
"some": "object"
}
}
有没有一种功能可以仅用一个或至少比我找到的解决方案来替换所有这三个步骤?
解决方法
您不需要使用zip,reduce甚至concat ++
。
尝试一下:
%dw 2.0
output application/json
var keys = ["fieldA","fieldB","fieldC"]
var value = [45,"data",{some: "object"}]
---
{
( keys map (data,index) -> {((data):value[index])} )
}
诀窍是在表达式之前用大括号和括号括住表达式
示例:
{
( <expression> )
}
,
这也很好。
%dw 2.0
output application/json
var keys = ["fieldA",{some: "object"}]
---
{
(keys map (data,index) -> (data):value[index])
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。