如何使用Dataweave从2个不同的json消息创建json消息

时间:2017-06-10 15:05:59

标签: mule anypoint-studio dataweave

我想从2个不同的Json消息创建一个json消息。两个输入消息都来自流量变量。如何使用Dataweave完成。

消息1:

    [

     {
         "userId": 11,
         "name": "ABC",
         "age": 30
     },

     {
         "userId": 44,
         "name": "XYZ",
         "age": 30
     }

     ]

消息2:

 [

 {
     "userId": 11,
     "Address": "BLR"
 },
 {
     "userId": 44,
     "Address": "CCU"
 }

 ]

预期输出:

[

 {
     "userId": 11,
     "name": "ABC",
     "Address": "BLR"
 },
 {
     "userId": 44,
     "name": "XYZ",
     "Address": "CCU"
 }

 ]

提前谢谢你, Nitesh

2 个答案:

答案 0 :(得分:0)

参阅this文章。似乎是您用例的完美解决方案。

答案 1 :(得分:0)

您可以使用lookup而不是filter,因为使用filter是性能开销。 试试这个

%dw 1.0
%output application/json
 %var adressLookup = {(  flowVars.data map  {
    ($.userId ++ "") : $
 })}
 ---
payload map {
    userId : $.userId,
    name : $.name,
    Address : adressLookup[$.userId ++ ""].Address
}

其中payload是message1,flowVars.data是message2

P.S:我使用$.userId ++ ""作为hashmap的字符串格式的关键字,有些数字键不能用于编织hashmap。

也请参考Merge two json payload with dataweave

希望这有帮助。