2016-08-10 11 views
0

プロパティの順序が保持されているのは、DataWeaveのドキュメントには表示されません。このコードの後たとえば:DataWeaveはJSONプロパティの順序を保持していますか?

%dw 1.0 
%output application/json 
--- 
{ 
    giftcards : payload map { 
     "currency" : $.currency, 
     "giftcardId" : $."_id", 
     "amount" : $.price 
    } 
} 

は、我々は我々が反応してプロパティの次のシーケンスを取得することを期待することができます:

  1. 通貨
  2. giftcardId

答えて

1

短い答えは「はい」ですが、一般的な答えは「いいえ」です。 ミュールでさえ、DateWeaveで定義されているJSONを正確に生成する必要があります。これは、他の変換がこの順序を破棄しないことを意味しません。マップとバックへの単純な変換は、特定のマップ実装に基づいてそれを変更します。キー/値のペアを保持するためにハッシュテーブルまたは順序付けされたコレクションである可能性があるため、順序は自然に壊れます。

ボトムライン - データの変換がわからないため、元の順序や中段の順序では依存しないでください。あなた自身で常にそれを制御してください。たとえば、コレクションから抽出するときは、キーをアルファベット順に並べ替えます。

+0

私はあなたが正しいと推測します。これは、私がMule自身から得た答えです。「体内で定義された順序は、おそらくXMLとjsonのために尊重されるでしょう。 Javaではマップは順序付けられていません。だから、あなたの答えは現実に最も近いものと推測します。私は100%保証されていないと思います。 –

0

データのシーケンスは保持されます。データウェイブ下のすべての宣言が出力指示に従うからです。出力ディレクティブは、コンテンツタイプを使用して指定された出力タイプを変換で指定します。出力は1つしか指定できません。この出力の構造はDataWeave本体で定義されます。

+0

返信いただきありがとうございます!しかし、Mule did notは私にちょうどその答えを与えませんでした(前回の返答で私のコメントを確認してください)。ミュールからの答えは私に疑いの余地を残す。 –

関連する問題