仅从数组中检索值

时间:2019-03-31 14:29:00

标签: json mule mule-studio dataweave

我需要使用using子中的dataweave从负载数组中检索值。

我尝试使用++技术,但是它会返回错误,或者当我将values变量设置为数组时,结果中会出现“”。

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]"]

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

1 个答案:

答案 0 :(得分:0)

您需要pluck函数,该函数将对象转换为数组(文档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
  ]
]