2016-08-29 7 views
0

オブジェクトのリストを処理するDataweaveを使用した変換があります。私たちは、JSONレスポンスそのように取得:Dataweaveの結果が1つのみの場合に配列の代わりに名前のないオブジェクトを取得する方法

{"name": "Hotel Stockholm", 
"propertyCode": "12346", 
"currency": "SEK"} 

私たちは、このような応答を生成している:

{"hotels": [{ 
    "name": "Hotel Oslo", 
    "propertyCode": "12345", 
    "currency": "NOK" 
}, 
{ 
    "name": "Hotel Stockholm", 
    "propertyCode": "12346", 
    "currency": "SEK" 
}]} 

しかし、わずか1応答の場合には、我々は次のような応答を持つようにしたい

{ 
hotels: payload.rows map ((row , indexOfRow) -> { 
    name: row.content.companyName.content, 
    propertyCode: row.content.propertyCode.content, 
    currency: row.content.currencyCode.content 
})} 

1つの結果の場合に配列を取得しないようにするには、どのような条件を設定する必要がありますか?

答えて

0

はこれを試してみてください:

%dw 1.0 
%output application/json 
%function makeHotel(row) { 
    name: row.name, 
    propertyCode: row.propertyCode, 
    currency: row.currency 
} 
--- 
{ 
    hotels: payload.rows map ((row , indexOfRow) -> makeHotel(row)) 
} when ((sizeOf payload.rows) != 1) 
otherwise makeHotel(payload.rows[0]) 

使用すると、1つの入力行以上のものを持っているとき、それはあなたの空の入力に空の配列、配列を持つ1つの入力と構造のための単純なオブジェクトを提供します。

(テスト目的のために入力構造が少し異なりますが、一般的な解決方法は明確にする必要があります)

+0

ご返信ありがとうございます。私はすべてのプロパティを繰り返す必要がないように一度書き込む方法があると思いますか?それは私が見たいと思っていない最初の行だけです。コレクションではありません –

関連する問題