仅从Array中检索值

问题描述 投票:0回答:1

我需要使用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]"]

如何删除“或者是否有更好的方法来获得我的预期输出?

json mule mule-studio dataweave
1个回答
0
投票

你需要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
  ]
]
© www.soinside.com 2019 - 2024. All rights reserved.