2017-05-04 48 views
0

我目前有兩個帶有數據的JSON文件。將兩個JSON輸出合併爲一個Dataweave

第一個列出了用戶的操作列表。但是,userID是一個UID字符串,而不是它們的用戶名。

第二個是帶有相應用戶名的UID字符串的JSON列表。我將此JSON存儲在名爲UserPayload的流變量中

我想將用戶名合併到第一個列表中,以便我的輸出具有實際的用戶名而不是UID。

這是我到目前爲止......但userId部分不起作用,因爲我的flowVar是一個列表。 UserPayload FlowVar

%dw 1.0 
%output application/csv 
--- 
payload map ((payload01, indexOfPayload01) -> { 
    user: payload.01.userId, 
    actions: payload01.action, 
    FileName: payload01.payload.properties.name default "N/A", 
    userId: flowVars.UserPayload.objectName 
}) 

任何幫助,將不勝感激。謝謝!

+0

樣本數據。 – Yevgeniy

+0

好點...指出。我感謝您的幫助。 – HarryM

回答

4

您可以從UserPayload flowVar訪問正確的對象,方法是根據userId過濾UserPayload的內容或從UserPayload創建關聯數組。

過濾UserPayload

%dw 1.0 
%output application/json 
--- 
payload map (action, index) -> { 
    user: action.user, 
    action: action.action, 
    FileName: action.FileName, 
    userId: (flowVars.UserPayload filter $.objectId == action.user)[0].objectName 
} 

關聯數組

%dw 1.0 
%output application/json 
%var users = flowVars.UserPayload groupBy $.objectId 
--- 
payload map (action, index) -> { 
    user: action.user, 
    action: action.action, 
    FileName: action.FileName, 
    userId: users[action.user][0].objectName 
} 

爲我的實施例I中使用以下從你的問題來源的樣品的數據。

flowVars.UserPayload

[{ 
    "objectId": "0000-0000-0001", 
    "objectName": "first user" 
}, { 
    "objectId": "0000-0000-0002", 
    "objectName": "second user" 
}] 

有效載荷由** **你會鼓勵更多的人來幫助你提供

[{ 
    "user": "0000-0000-0001", 
    "action": "some crazy action", 
    "FileName": "some-crazy-action.mov" 
}] 
+0

關聯數組適用於我。另一個沒有。感謝您的幫助! – HarryM

+0

不客氣 – Yevgeniy