如何在dataweave中将子数组平面化为数组

时间:2021-06-04 07:26:19

标签: dataweave mulesoft

我有这个输入

[{
    "omsNo": "S001",
    "recipient": [{
            "name": "name1",
            "address": "address1"
        },
        {
            "name": "name2",
            "address": "address2"
        }
    ]
}]

我可以知道如何使用 dataweave 得到这个结果吗

[{"omsNo":"S001","name":"name1","address":"address1"},{"omsNo":"S001","name":"name2","address":"address2"}]

2 个答案:

答案 0 :(得分:3)

输入

[{
    "omsNo": "S001",
    "recipient": [{
            "name": "name1",
            "address": "address1"
        },
        {
            "name": "name2",
            "address": "address2"
        }
    ]
}]

脚本

%dw 2.0
output application/json
---
flatten(payload map ((item, index) -> 
   (item.recipient map ((itemRecipient, indexRecipient)  -> (
        ({omsNo: item.omsNo} ++ itemRecipient) 
   ))
)))

输出

[
  {
    "omsNo": "S001",
    "name": "name1",
    "address": "address1"
  },
  {
    "omsNo": "S001",
    "name": "name2",
    "address": "address2"
  }
]

答案 1 :(得分:0)

这是一个替代解决方案:

%dw 2.0
output application/json
---
payload.recipient[0] map (v0,k0) ->
{
    omsNo:payload.omsNo[0],
    name:v0.name,
    address:v0.address
}
相关问题