2016-02-10 84 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