2016-02-10 5 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 преобразования выглядеть, чтобы tranform полезной нагрузки к чему-то структурированным, как следующее:

[ 
    { 
     "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. В этом случае вы можете обратиться к разделу Group by .... Чтобы преобразовать вышеприведенное сообщение, воспользуйтесь этим скриптом:

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

Отлично! Спасибо за помощь - работает как шарм. Также спасибо за ссылку на документацию. – jdudleyk

Смежные вопросы