Dataweave 从数组对象中提取对象并创建一个 json 请求
Dataweave extract object from array object and create a json request
我正在学习 dataweave,我正在尝试提取 phoneNumber,其中“contact”是对象数组。以下是示例请求。
要求:
{
"contact": [{
"phoneNumber": "2234567890",
"emailId": "abc@abc.com"
},
{
"phoneNumber": "2012020004",
"emailId": "xyz@abc.com"
}
]
}
预期输出是
{
"PhoneNumberList[0]": "2234567890",
"PhoneNumberList[1]": "2012020004"
}
我不想使用下面的代码
output application/json
---
{
"PhoneNumberList[0]" : payload.contact[0].phoneNumber,
"PhoneNumberList[1]" : payload.contact[1].phoneNumber
}
你能建议最好的处理方法吗?
试试这个:
%dw 2.0
output application/json
var data = {
"contact": [{
"phoneNumber": "2234567890",
"emailId": "abc@abc.com"
},
{
"phoneNumber": "2012020004",
"emailId": "xyz@abc.com"
}
]
}
---
data.contact.*phoneNumber map [$$,$]
reduce (e,acc={}) -> acc ++ {("phoneNumberList[$(e[0])]": e[1])}
我利用了
这是另一个解决方案,由于懒惰求值可能会好一点:
%dw 2.0
output application/json
var data = {
"contact": [{
"phoneNumber": "2234567890",
"emailId": "abc@abc.com"
},
{
"phoneNumber": "2012020004",
"emailId": "xyz@abc.com"
}
]
}
---
{(data.contact.*phoneNumber map {"phoneNumberList[$($$)]":$})}
替换了 reduce
函数
我正在学习 dataweave,我正在尝试提取 phoneNumber,其中“contact”是对象数组。以下是示例请求。 要求:
{
"contact": [{
"phoneNumber": "2234567890",
"emailId": "abc@abc.com"
},
{
"phoneNumber": "2012020004",
"emailId": "xyz@abc.com"
}
]
}
预期输出是
{
"PhoneNumberList[0]": "2234567890",
"PhoneNumberList[1]": "2012020004"
}
我不想使用下面的代码
output application/json
---
{
"PhoneNumberList[0]" : payload.contact[0].phoneNumber,
"PhoneNumberList[1]" : payload.contact[1].phoneNumber
}
你能建议最好的处理方法吗?
试试这个:
%dw 2.0
output application/json
var data = {
"contact": [{
"phoneNumber": "2234567890",
"emailId": "abc@abc.com"
},
{
"phoneNumber": "2012020004",
"emailId": "xyz@abc.com"
}
]
}
---
data.contact.*phoneNumber map [$$,$]
reduce (e,acc={}) -> acc ++ {("phoneNumberList[$(e[0])]": e[1])}
我利用了
这是另一个解决方案,由于懒惰求值可能会好一点:
%dw 2.0
output application/json
var data = {
"contact": [{
"phoneNumber": "2234567890",
"emailId": "abc@abc.com"
},
{
"phoneNumber": "2012020004",
"emailId": "xyz@abc.com"
}
]
}
---
{(data.contact.*phoneNumber map {"phoneNumberList[$($$)]":$})}
替换了 reduce
函数