Mule ESB 两个 JSON 数组,使用 Dataweave 将一个数组合并到另一个数组中
Mule ESB Two JSON arrays, merge one array into another with Dataweave
我正在使用 Mule ESB,我需要使用 JSON1 中的 ItemID 和 JSON2 中的数量,然后创建一个新的 JSON 负载。
这里是JSON1:
[{
"itemid": "160544",
"sku": "L45-075-14",
"qty": "1.0000"
}, {
"itemid": "160545",
"sku": "063-0159-881",
"qty": "1.0000"
}]
这是JSON 2:
[{
"sku": "603-0159-881",
"qty": "4.0000"
}, {
"sku": "L45-075-14",
"qty": "5.0000"
}]
这是我的数据编织代码:
%dw 1.0
%output application/java
---
flowVars.SSRGetOrderItems map (action, index) -> {
(action.itemid) : action.qty,
(flowVars.SSRCreateStarshipItems filter $.sku == action.sku)
}
我的最终 Java 列表中不需要 SKU,我只需要 itemid 和 qty,加入 sku 键。 (见下面所需的输出)
期望的输出:
[{"160544"-"5.0000"}, {"160545"-"4.0000"}]
您应该使用 Hashmap 查找而不是过滤器以获得更好的性能。假设输出 [{"160544":"5.0000"}, {"160545":"4.0000"}]
可以通过两种方式完成
%dw 1.0
%output application/java
%var skuLookup = flowVars.SSRCreateStarshipItems groupBy $.sku
---
flowVars.SSRGetOrderItems map {
($.itemid) : skuLookup[$.sku][0].qty
}
或
%dw 1.0
%output application/java
%var skuLookup = {(flowVars.SSRCreateStarshipItems map {
($.sku) : $.qty
})}
---
flowVars.SSRGetOrderItems map {
($.itemid) : skuLookup[$.sku]
}
希望对您有所帮助。
我正在使用 Mule ESB,我需要使用 JSON1 中的 ItemID 和 JSON2 中的数量,然后创建一个新的 JSON 负载。
这里是JSON1:
[{
"itemid": "160544",
"sku": "L45-075-14",
"qty": "1.0000"
}, {
"itemid": "160545",
"sku": "063-0159-881",
"qty": "1.0000"
}]
这是JSON 2:
[{
"sku": "603-0159-881",
"qty": "4.0000"
}, {
"sku": "L45-075-14",
"qty": "5.0000"
}]
这是我的数据编织代码:
%dw 1.0
%output application/java
---
flowVars.SSRGetOrderItems map (action, index) -> {
(action.itemid) : action.qty,
(flowVars.SSRCreateStarshipItems filter $.sku == action.sku)
}
我的最终 Java 列表中不需要 SKU,我只需要 itemid 和 qty,加入 sku 键。 (见下面所需的输出)
期望的输出:
[{"160544"-"5.0000"}, {"160545"-"4.0000"}]
您应该使用 Hashmap 查找而不是过滤器以获得更好的性能。假设输出 [{"160544":"5.0000"}, {"160545":"4.0000"}]
%dw 1.0
%output application/java
%var skuLookup = flowVars.SSRCreateStarshipItems groupBy $.sku
---
flowVars.SSRGetOrderItems map {
($.itemid) : skuLookup[$.sku][0].qty
}
或
%dw 1.0
%output application/java
%var skuLookup = {(flowVars.SSRCreateStarshipItems map {
($.sku) : $.qty
})}
---
flowVars.SSRGetOrderItems map {
($.itemid) : skuLookup[$.sku]
}
希望对您有所帮助。