2017-10-17 27 views
0

Mule ESB를 사용하고 있으며 JSON1의 ItemID와 JSON2의 qty를 사용하여 새로운 JSON 페이로드를 만들어야합니다. 여기 Mule ESB 두 개의 JSON 배열을 Dataweave로 배열 병합

는 JSON 1 :

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

내가 마지막으로 SKU가 필요하지 않습니다 : 여기에

[{ 
    "sku": "603-0159-881", 
    "qty": "4.0000" 
    }, { 
    "sku": "L45-075-14", 
    "qty": "5.0000" 
}] 

내 dataweave 코드 :

여기
[{ 
    "itemid": "160544", 
    "sku": "L45-075-14", 
    "qty": "1.0000" 
    }, { 
    "itemid": "160545", 
    "sku": "063-0159-881", 
    "qty": "1.0000" 
}] 

는 JSON 2 자바 목록, 난 그냥 itemid 및 수량, SKU 키에 합류가 필요합니다.

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

답변

2

대신 성능 향상을 위해 필터 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] 
} 

희망을 가정 두 가지 방법으로 수행 할 수 있습니다.