我有一个数据集,它是一个对象数组,每个对象都是另一个对象,里面有一个数组。我试过使用"拔毛"功能,但似乎无法达到我想要的效果。以下示例。
输入:
[
{
"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"
}
]
- 您需要使用
map
进行迭代 - 使用
pluck
将具有键的对象转换为数组 - Covnert使用
flatten
将嵌套数组转换为二维数组 - 使用
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)