2017-01-16 33 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