Mulesoft将嵌套对象的数组压缩为单个对象数组



我有一个数据集,它是一个对象数组,每个对象都是另一个对象,里面有一个数组。我试过使用"拔毛"功能,但似乎无法达到我想要的效果。以下示例。

输入:

[
{
"1234": [
{
"store": "07",
"category": "1234",
"account": "987"
},
{
"store": "07",
"category": "1234",
"account": "555"
},
{
"store": "07",
"category": "1234",
"account": "555"
}
]
},
{
"567": [
{
"store": "07",
"category": "567",
"account": "987"
},
{
"store": "07",
"category": "567",
"account": "555"
},
{
"store": "07",
"category": "567",
"account": "555"
}
]
}
]

输出:

[
{
"store": "07",
"category": "1234",
"account": "987"
},
{
"store": "07",
"category": "1234",
"account": "555"
},
{
"store": "07",
"category": "1234",
"account": "555"
},
{
"store": "07",
"category": "567",
"account": "987"
},
{
"store": "07",
"category": "567",
"account": "555"
},
{
"store": "07",
"category": "567",
"account": "555"
}
]
  1. 您需要使用map进行迭代
  2. 使用pluck将具有键的对象转换为数组
  3. Covnert使用flatten将嵌套数组转换为二维数组
  4. 使用Reduce将二维数组转换为一维数组

DW

%dw 2.0
output application/json
---
flatten(payload map ($ pluck $)) reduce ($$++$)

输出

[
{
"store": "07",
"category": "1234",
"account": "987"
},
{
"store": "07",
"category": "1234",
"account": "555"
},
{
"store": "07",
"category": "1234",
"account": "555"
},
{
"store": "07",
"category": "567",
"account": "987"
},
{
"store": "07",
"category": "567",
"account": "555"
},
{
"store": "07",
"category": "567",
"account": "555"
}
]

下面是一种方法。也许还有比这更好的方法。

%dw 2.0
output application/json
---
flatten(payload map ($ pluck $)) reduce ((val, acc) -> acc ++ val)

最新更新