Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポートが終了しました。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave 1.0 (%dw 1.0
) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
次の例では、flatten
を使用して、変数 arrayOne
で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。
この例では、次の関数を使用します。
flatten
は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。
%dw 2.0
var arrayOne = [
[
"keyOne" : 1,
"keyTwo" : 2
],
[
"keyThree" : 3,
"keyFour" : 4,
"keyFive" : 5
],
"keySix" : 6
]
output application/json
---
flatten(arrayOne)
[
{
"keyOne": 1
},
{
"keyTwo": 2
},
{
"keyThree": 3
},
{
"keyFour": 4
},
{
"keyFive": 5
},
{
"keySix": 6
}
]
上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター fruit
を使用してキー fruit
の値のみを選択し、配列内の他の値は除外します。
この例では、以下を使用します。
++
は、2 つの配列 (arrayOne
と arrayTwo
) のオブジェクトを 1 つの配列に組み合わせます。
flatten
は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。
%dw 2.0
var arrayOne = [
[
"fruit" : "orange",
"fruit" : "apple"
],
[
"fruit" : "grape",
"notfruit" : "something else"
]
]
var arrayTwo = [
[
{ "fruit" : "kiwi" }
],
"fruit" : "strawberry",
"fruit" : "plum",
{ "fruit" : "banana" },
"notfruit" : "something else"
]
output application/json
---
flatten(arrayOne ++ arrayTwo)
[
{ "fruit": "orange" },
{ "fruit": "apple" },
{ "fruit": "grape" },
{ "notfruit": "something else" },
{ "fruit": "kiwi" },
{ "fruit": "strawberry" },
{ "fruit": "plum" },
{ "fruit": "banana" },
{ "notfruit": "something else" }
]
上の例と次の例の唯一の違いは、.fruit
セレクターを本文の式に追加して、fruit
値をすべて選択し、notfruit
キーの値を出力配列から除外しているという点です。
%dw 2.0
var arrayOne = [
[
"fruit" : "orange",
"fruit" : "apple"
],
[
"fruit" : "grape",
"notfruit" : "something else"
]
]
var arrayTwo = [
[
{ "fruit" : "kiwi" }
],
"fruit" : "strawberry",
"fruit" : "plum",
{ "fruit" : "banana" },
"notfruit" : "something else"
]
output application/json
---
flatten(arrayOne ++ arrayTwo).fruit
[
"orange",
"apple",
"grape",
"kiwi",
"strawberry",
"plum",
"banana"
]
次の例では、本文の式で .fruit
ではなく ..*fruit
をセレクターとして使用し、ネストされているすべての fruit
値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。
%dw 2.0
var arrayOne = [
[
"fruit" : "orange",
"fruit" : "apple"
],
[
"fruit" : "grape",
"notfruit" : "something else"
]
]
var arrayTwo = [
[
{ "fruit" : "kiwi" }
],
"fruit" : "strawberry",
"fruit" : "plum",
{ "fruit" : "banana" },
"notfruit" : "something else"
]
var arrayThree = [
{ parentOne :
[
{ child :
[
{ grandchild :
{
"fruit" : "watermelon",
"notfruit" : "something else"
}
},
{
fruit : "cantaloupe",
"notfruit" : "something else"
}
]
},
{
fruit : "honeydew",
"notfruit" : "something else"
}
]
},
{ parentTwo:
[
fruit : "cherry",
"notfruit" : "something else"
]
}
]
output application/json
---
flatten(arrayOne ++ arrayTwo ++ arrayThree)..*fruit
[
"orange",
"apple",
"grape",
"kiwi",
"strawberry",
"plum",
"banana",
"watermelon",
"cantaloupe",
"honeydew",
"cherry"
]
次の例では、flatten
関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、null
値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。
この例では、次の関数を使用します。
flatten
は、サブ配列をフラット化して親配列に含めます。
%dw 2.0
var myArray = [
1,
[2,3],
{ a : "b"},
"my string",
[ [4,5], { c : "d"}, 6 ],
null,
"e" : "f"
]
output application/json
---
flatten(myArray)
[
1,
2,
3,
{
"a": "b"
},
"my string",
[
4,
5
],
{
"c": "d"
},
6,
null,
{
"e": "f"
}
]