2016-02-10 30 views
1

我對DataWeave比較陌生,想知道如何使用DataWeave而不是Java變換器來轉換如下所示的消息。Mulesoft DataWeave:變換扁平列表

如果我有用戶的以下JSON有效載荷,以一組和子組:

[{ 
    "GROUP": "GROUP_A", 
    "SUBGROUP": "SUBGROUP A1", 
    "USER": "USER 1" 
}, { 
    "GROUP": "GROUP_B", 
    "SUBGROUP": "SUBGROUP B1", 
    "USER": "USER 1" 
}, { 
    "GROUP": "GROUP_B", 
    "SUBGROUP": "SUBGROUP B1", 
    "USER": "USER 2" 
}, { 
    "GROUP": "GROUP_B", 
    "SUBGROUP": "SUBGROUP B2", 
    "USER": "USER 3" 
}, { 
    "GROUP": "GROUP_B", 
    "SUBGROUP": "SUBGROUP B2", 
    "USER": "USER 4" 
}, { 
    "GROUP": "GROUP_B", 
    "SUBGROUP": "SUBGROUP B2", 
    "USER": "USER 5" 
}] 

什麼將一個DataWeave改造模樣有效載荷等轉換到一些結構如下所示:

[ 
    { 
     "GROUP": "GROUP_A", 
     "SUBGROUPS": [{ 
      "NAME": "SUBGROUP A1", 
      "USERS": ["USER 1"] 
     }] 
    }, { 
     "GROUP": "GROUP_B", 
     "SUBGROUPS": [{ 
      "NAME": "SUBGROUP B1", 
      "USERS": ["USER 1", "USER 2"] 
     }, { 
      "NAME": "SUBGROUP B2", 
      "USERS": ["USER 3", "USER 4", "USER 5"] 
     }] 
    } 

] 

感謝您的幫助!

回答

4

對於DataWeave的開發,請參考DataWeave Reference Documentation。在這種情況下,您可以參考分組依據...。要轉換上面的消息,請嘗試以下腳本:

%dw 1.0 
%output application/json 
--- 
payload groupBy $.GROUP pluck { 
    GROUP: $$, 
    SUBGROUPS: $ groupBy $.SUBGROUP pluck { 
     NAME: $$, 
     USERS: $.USER 
    } 
} 
+0

太棒了!感謝您的幫助 - 像魅力一樣。還要感謝鏈接到文檔。 – jdudleyk