在 Mulesoft Dataweave 2.0 中展开数组
Unflatten an Array in Mulesoft Dataweave 2.0
我有一个扁平的客户数组,找不到适当的方法(方法)来展开它,以便每个客户及其年龄都嵌套。
输入
{
"1st Customer": "2216",
"Age": "90",
"2nd Customer": "2231",
"Age": "90",
"3rd Customer": "2249",
"Age": "120",
"4th Customer": "2302",
"Age": "150",
"5th Customer": "",
"Age": ""
}
输出
{
"customers": [
{
"CustomerSeq": "1",
"CustomerID": "2216",
"Age": 90,
},
{
"CustomerSeq": "2",
"CustomerID": "2231",
"Age": 90,
},
{
"CustomerSeq": "3",
"CustomerID": "2249",
"Age": 120,
},
{
"CustomerSeq": "5",
"CustomerID": "2302",
"Age": 150,
}
]
}
Mule 中有一个很好的功能:divideBy。
它将从对象中拆分您的值数组,然后可以创建请求的对象:
%dw 2.0
var x={
"1st Customer": "2216",
"Age": "90",
"2nd Customer": "2231",
"Age": "90",
"3rd Customer": "2249",
"Age": "120",
"4th Customer": "2302",
"Age": "150",
"5th Customer": "",
"Age": ""
}
var keys=x pluck $$
var values=x pluck $
import * from dw::core::Arrays
output application/dw
---
values divideBy 2 map (item,index) ->
{
CustomerSeq:index+1,
CustomerID:item[0],
Age:item[1]
}
输出
[
{
CustomerSeq: 1,
CustomerID: "2216",
Age: "90"
},
{
CustomerSeq: 2,
CustomerID: "2231",
Age: "90"
},
{
CustomerSeq: 3,
CustomerID: "2249",
Age: "120"
},
{
CustomerSeq: 4,
CustomerID: "2302",
Age: "150"
},
{
CustomerSeq: 5,
CustomerID: "",
Age: ""
}
]
非常感谢,亚历克斯
divideBy 正是我要找的
解决方案[包括删除空值]:
%dw 2.0
output application/json
import * from dw::core::Objects
---
customers:
((payload filterObject ((value, key, index) -> value != "")) divideBy 2) map (
(pCustomer, indexOfpCustomer) -> {
CustomerSeq:indexOfpCustomer+1,
CustomerID: pCustomer[0],
Age: pCustomer[1]
})
我有一个扁平的客户数组,找不到适当的方法(方法)来展开它,以便每个客户及其年龄都嵌套。
输入
{
"1st Customer": "2216",
"Age": "90",
"2nd Customer": "2231",
"Age": "90",
"3rd Customer": "2249",
"Age": "120",
"4th Customer": "2302",
"Age": "150",
"5th Customer": "",
"Age": ""
}
输出
{
"customers": [
{
"CustomerSeq": "1",
"CustomerID": "2216",
"Age": 90,
},
{
"CustomerSeq": "2",
"CustomerID": "2231",
"Age": 90,
},
{
"CustomerSeq": "3",
"CustomerID": "2249",
"Age": 120,
},
{
"CustomerSeq": "5",
"CustomerID": "2302",
"Age": 150,
}
]
}
Mule 中有一个很好的功能:divideBy。 它将从对象中拆分您的值数组,然后可以创建请求的对象:
%dw 2.0
var x={
"1st Customer": "2216",
"Age": "90",
"2nd Customer": "2231",
"Age": "90",
"3rd Customer": "2249",
"Age": "120",
"4th Customer": "2302",
"Age": "150",
"5th Customer": "",
"Age": ""
}
var keys=x pluck $$
var values=x pluck $
import * from dw::core::Arrays
output application/dw
---
values divideBy 2 map (item,index) ->
{
CustomerSeq:index+1,
CustomerID:item[0],
Age:item[1]
}
输出
[
{
CustomerSeq: 1,
CustomerID: "2216",
Age: "90"
},
{
CustomerSeq: 2,
CustomerID: "2231",
Age: "90"
},
{
CustomerSeq: 3,
CustomerID: "2249",
Age: "120"
},
{
CustomerSeq: 4,
CustomerID: "2302",
Age: "150"
},
{
CustomerSeq: 5,
CustomerID: "",
Age: ""
}
]
非常感谢,亚历克斯 divideBy 正是我要找的
解决方案[包括删除空值]:
%dw 2.0
output application/json
import * from dw::core::Objects
---
customers:
((payload filterObject ((value, key, index) -> value != "")) divideBy 2) map (
(pCustomer, indexOfpCustomer) -> {
CustomerSeq:indexOfpCustomer+1,
CustomerID: pCustomer[0],
Age: pCustomer[1]
})