2017-01-16 23 views
1

私は、Anypoint Studio 6.1とMule 3.8.1を使用しており、JSONをDatawaveのJSONにマッピングしています。 JSONマッピングでは、文字列のリストを含む "Channels"というオプションのフィールドがあります。フィールドがなければ、Dataweaveで警告が表示されます。どうすればnullの場合、無視するDatawaveコードを書くことができますか?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 
} 

は、私たちはを使用することができます降伏

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

:は、全体のキー/値のペア(別名、タプル)が出力されるべきかどうかを決定する

{ 
} 
+1

おかげで再び。素晴らしい答え:) – user3165854

関連する問題