簡體   English   中英

Mule ESB 兩個JSON數組,用Dataweave將一個數組合並成另一個

[英]Mule ESB Two JSON arrays, merge one array into another with Dataweave

我正在使用 Mule ESB,我需要使用 JSON1 中的 ItemID 和 JSON2 中的 qty,然后創建一個新的 JSON 有效負載。

這是 JSON 1:

[{
  "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,我只需要在 sku 鍵上加入的 itemid 和 qty。 (見下面所需的輸出)

期望輸出:

 [{"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]
}

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM