2017-10-17 2 views
0

私はMule ESBを使用しています.JSON1のItemIDとJSON2のqtyを使用して新しいJSONペイロードを作成する必要があります。ここでMule ESB Dataweaveで1つの配列を別の配列にマージする

は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" 
}] 

は私dataweaveコードです:

%dw 1.0 
%output application/java 
--- 
flowVars.SSRGetOrderItems map (action, index) -> { 
            (action.itemid) : action.qty, 
            (flowVars.SSRCreateStarshipItems filter $.sku == action.sku) 
           } 

私は最終的にSKUを必要としませんJavaのリスト、私はちょうどitemidとqtyが必要です、スキューキーに参加しました。 (所望の出力は、以下を参照してください)

所望の出力:

[{"160544"-"5.0000"}, {"160545"-"4.0000"}] 

答えて

2

あなたはより良いパフォーマンスをフィルター代わりにハッシュマップのルックアップを使用する必要があります。これは、出力[{"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] 
} 

は、この情報がお役に立てば幸いを想定した2つの方法で行うことができます。

関連する問題