【问题标题】:Retrieve only values from Array仅从 Array 中检索值
【发布时间】:2019-03-31 14:29:00
【问题描述】:

我只需要使用 mule 中的 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]"]

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

【问题讨论】:

标签: json mule mule-studio dataweave


【解决方案1】:

您需要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
  ]
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多