我需要使用mule中的dataweave仅检索有效负载数组中的值。
我尝试过使用++技术,但它返回错误,或者当我把值变量设置为一个数组时,我得到了“结果。
Input:
{
"Shops":
[{
"StoreName": "Store1",
"Sales":
[{"dayDate": "01/01/2019",
"product": "A",
"quantity": 2
},
{"dayDate": "02/01/2019",
"product": "B",
"quantity": 1
}
]
}]
}
我期待输出:
[Store1, [01/01/2019, A, 2], [02/01/2019, B, 1]]
但实际是
["Store1, [01/01/2019, A, 2], [02/01/2019, B, 1]"]
如何删除“或者是否有更好的方法来获得我的预期输出?
你需要pluck
函数,它将一个对象转换为一个数组(docs here)。
%dw 2.0
output application/json
var shops = {
"Shops": [
{
"StoreName": "Store1",
"Sales": [
{
"dayDate": "01/01/2019",
"product": "A",
"quantity": 2
},
{
"dayDate": "02/01/2019",
"product": "B",
"quantity": 1 }]}]}
var res = shops.Shops map (shop) ->
using (sales = shop.Sales map (sale) -> sale pluck $)
[shop.StoreName] ++ sales
---
flatten(res)
这有点超出了您的描述,因此它也可以处理多个商店。如果你需要能够处理多个商店,你可能不想使用flatten
,但它就在那里,所以输出符合你的要求。
输出:
[
"Store1",
[
"01/01/2019",
"A",
2
],
[
"02/01/2019",
"B",
1
]
]