2017-01-16 70 views
1

我正在使用Anypoint Studio 6.1和Mule 3.8.1,並將JSON映射到Dataweave中的JSON。在JSON映射中,我有一個名爲「Channels」的可選字段,其中包含一個字符串列表。當該字段不存在時,我會在Dataweave中發出警告。如何編寫Dataweave代碼以忽略它的空值?在Dataweave中忽略JSON中缺失的數組對象

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? 
} 

如果您並不需要每個項目內的Channels陣列上使用map,你可以只允許null通過:

payload map { 
    Channels: $.Channels 
} 

這將產生輸入對象以下是不包含Channels場:

{ 
    Channels: null 
} 

添加括號允許我們使用再次

{ 
} 
+1

感謝:來確定整個鍵/值對(又名元組)是否應被輸出:

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

屈服。很好的回答:) – user3165854