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

how to flat subarray into array in dataweave

我有这个输入

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

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

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

输入

[{
    "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"
  }
]

这是一个替代解决方案:

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