我目前有两个带数据的JSON文件。
第一个包含用户的操作列表。但是,userID是UID字符串而不是其用户名。
第二个是UID字符串的JSON列表及其相应的用户名。我将此JSON存储在名为UserPayload
的流变量中我想将用户名合并到第一个列表中,以便我的输出具有实际的用户名而不是UID。
这是我到目前为止所做的...但是userId部分不起作用,因为我的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 :(得分:4)
您可以通过基于UserPayload
过滤UserPayload
的内容或从userId
创建关联数组,从UserPayload
flowVar访问正确的对象。
过滤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
}
对于我的例子,我使用了从你的问题中得到的以下样本数据。
<强> 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"
}]