2017-01-16 2 views
1

Я использую Anypoint Studio 6.1 и Mule 3.8.1 и сопоставляю JSON с JSON в Dataweave. В сопоставлении JSON у меня есть необязательное поле «Каналы», которое содержит список строк. Когда поля нет, я получаю предупреждение в Dataweave. Как я могу написать код Dataweave, чтобы игнорировать, если его значение null?Игнорировать недостающие объекты массива от JSON в Dataweave

Dataweave код: "?"

%dw 1.0 
%output application/json skipNullOn="everywhere" 
--- 
payload map ((payload01 , indexOfPayload01) -> { 
    Channels: payload01.Channels map ((channel , indexOfAccessChannel) -> channel) 
}) 

Я пытался использовать "когда", а также селектор, но не может получить синтаксис правильно.

Благодаря

ответ

2

Вы были правы использовать when и оператор ?. Вам просто нужно использовать круглые скобки, чтобы убедиться, что они применяются к правильным вещам. Обратите внимание, что я использую $ в качестве сокращения для параметра payload01 в вашем примере.

%dw 1.0 
%output application/json 

--- 
payload map { 
    (Channels: $.Channels map (lower $)) when $.Channels? 
} 

Если вам не нужно использовать map на Channels массива в пределах каждого пункта, вы могли бы просто позволить null проходить через:

payload map { 
    Channels: $.Channels 
} 

Это даст следующее для ввода объектов, не содержат Channels поле:

{ 
    Channels: null 
} 

Добавление скобок позволяет использовать when, чтобы определить, является ли вся пара ключ/значение (так называемый кортеж) должен быть вывод:

payload map { 
    (Channels: $.Channels) when $.Channels? 
} 

Уступая:

{ 
} 
+1

Еще раз спасибо. Отличный ответ :) – user3165854

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