# mulesoft Dataweave - Full Documentation # \-- ## [](#minusminus1)\--(Array, Array): Array 指定された値を入力値から削除します。 このバージョンの ​`--`​ は、指定された項目のすべてのインスタンスを配列から削除します。その他のバージョンは、DataWeave でサポートされるオブジェクト、文字列、およびさまざまな日付と時刻の形式で動作します。

名前

説明

​source

削除する項目を含む配列。

​toRemove

取得元配列から削除する項目。

### [](#例)例 次の例では、指定された項目を配列から削除します。具体的には、​`--`​ の右側の配列に含まれる項目のすべてのインスタンスをこの関数の左側の配列から削除します。結果として ​`[0]`​ が残ります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 1, 2] -- [1,2] } ``` #### [](#出力)出力 ```JSON { "a": [0] } ``` ## [](#minusminus2)\--(​{ (K)?: V }, Object): { (K)?: V } オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

​source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

​toRemove

取得元オブジェクトから削除するキー-値ペアを含むオブジェクト。

### [](#例-2)例 次の例では、取得元オブジェクトからキー-値ペアを削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- { "hello" : "world"} ``` #### [](#出力-2)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus3)\--(Object, Array) 指定された検索キーに一致する取得元オブジェクトからすべてのキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

​source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

​toRemove

取得元オブジェクトから削除するキー-値ペアを指定するキーの配列。

### [](#例-3)例 次の例では、取得元オブジェクトから 2 つのキー-値ペアを削除します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"] ``` #### [](#出力-3)出力 ```JSON { "good": "bad" } ``` ## [](#minusminus4)\--(Object, Array) オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター-3)パラメーター
名前 説明

​source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

​keys

取得元オブジェクトから削除するキー-値ペアのキー。

### [](#例-4)例 次の例では、取得元オブジェクトから削除するキー-値ペアを指定します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- ["hello" as Key] ``` #### [](#出力-4)出力 ```JSON { "name": "DW" } ``` # \-- ## [](#minusminus1)\--(source: Array, toRemove: Array): Array 指定された値を入力値から削除します。 このバージョンの ​`--`​ は、指定された項目のすべてのインスタンスを配列から削除します。その他のバージョンは、DataWeave でサポートされるオブジェクト、文字列、およびさまざまな日付と時刻の形式で動作します。
名前 説明

​source

削除する項目を含む配列。

​toRemove

取得元配列から削除する項目。

### [](#例)例 次の例では、指定された項目を配列から削除します。具体的には、​`--`​ の右側の配列に含まれる項目のすべてのインスタンスをこの関数の左側の配列から削除します。結果として ​`[0]`​ が残ります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 1, 2] -- [1,2] } ``` #### [](#出力)出力 ```JSON { "a": [0] } ``` ## [](#minusminus2)\--(source: { (K)?: V }, toRemove: Object): { (K)?: V } オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

​source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

​toRemove

取得元オブジェクトから削除するキー-値ペアを含むオブジェクト。

### [](#例-2)例 次の例では、取得元オブジェクトからキー-値ペアを削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- { "hello" : "world"} ``` #### [](#出力-2)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus3)\--(source: Object, keys: Array) 指定された検索キーに一致する取得元オブジェクトからすべてのキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

​source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

​toRemove

取得元オブジェクトから削除するキー-値ペアを指定するキーの配列。

### [](#例-3)例 次の例では、取得元オブジェクトから 2 つのキー-値ペアを削除します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"] ``` #### [](#出力-3)出力 ```JSON { "good": "bad" } ``` ## [](#minusminus4)\--(source: Object, keys: Array) オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター-3)パラメーター
名前 説明

​source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

​keys

取得元オブジェクトから削除するキー-値ペアのキー。

### [](#例-4)例 次の例では、取得元オブジェクトから削除するキー-値ペアを指定します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- ["hello" as Key] ``` #### [](#出力-4)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus5)\--(source: Null, keys: Any) `--`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # \-- ## [](#minusminus1)\--(source: Array, toRemove: Array): Array 指定された値を入力値から削除します。 このバージョンの ​`--`​ は、指定された項目のすべてのインスタンスを配列から削除します。その他のバージョンは、DataWeave でサポートされるオブジェクト、文字列、およびさまざまな日付と時刻の形式で動作します。
名前 説明

ソース

削除する項目を含む配列。

toRemove

取得元配列から削除する項目。

### [](#例)例 次の例では、指定された項目を配列から削除します。具体的には、​`--`​ の右側の配列に含まれる項目のすべてのインスタンスをこの関数の左側の配列から削除します。結果として ​`[0]`​ が残ります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 1, 2] -- [1,2] } ``` #### [](#出力)出力 ```JSON { "a": [0] } ``` ## [](#minusminus2)\--(source: { (K)?: V }, toRemove: Object): { (K)?: V } オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを含むオブジェクト。

### [](#例-2)例 次の例では、取得元オブジェクトからキー-値ペアを削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- { "hello" : "world"} ``` #### [](#出力-2)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus3)\--(source: Object, keys: Array) 指定された検索キーに一致する取得元オブジェクトからすべてのキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを指定するキーの配列。

### [](#例-3)例 次の例では、取得元オブジェクトから 2 つのキー-値ペアを削除します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"] ``` #### [](#出力-3)出力 ```JSON { "good": "bad" } ``` ## [](#minusminus4)\--(source: Object, keys: Array) オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

keys

取得元オブジェクトから削除するキー-値ペアのキー。

### [](#例-4)例 次の例では、取得元オブジェクトから削除するキー-値ペアを指定します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- ["hello" as Key] ``` #### [](#出力-4)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus5)\--(source: Null, keys: Any) `--`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # \-- ## [](#minusminus1)\--(source: Array, toRemove: Array): Array 指定された値を入力値から削除します。 このバージョンの ​`--`​ は、指定された項目のすべてのインスタンスを配列から削除します。その他のバージョンは、DataWeave でサポートされるオブジェクト、文字列、およびさまざまな日付と時刻の形式で動作します。
名前 説明

ソース

削除する項目を含む配列。

toRemove

取得元配列から削除する項目。

### [](#例)例 次の例では、指定された項目を配列から削除します。具体的には、​`--`​ の右側の配列に含まれる項目のすべてのインスタンスをこの関数の左側の配列から削除します。結果として ​`[0]`​ が残ります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 1, 2] -- [1,2] } ``` #### [](#出力)出力 ```JSON { "a": [0] } ``` ## [](#minusminus2)\--(source: { (K)?: V }, toRemove: Object): { (K)?: V } オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを含むオブジェクト。

### [](#例-2)例 次の例では、取得元オブジェクトからキー-値ペアを削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- { "hello" : "world"} ``` #### [](#出力-2)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus3)\--(source: Object, keys: Array) 指定された検索キーに一致する取得元オブジェクトからすべてのキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを指定するキーの配列。

### [](#例-3)例 次の例では、取得元オブジェクトから 2 つのキー-値ペアを削除します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"] ``` #### [](#出力-3)出力 ```JSON { "good": "bad" } ``` ## [](#minusminus4)\--(source: Object, keys: Array) オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

keys

取得元オブジェクトから削除するキー-値ペアのキー。

### [](#例-4)例 次の例では、取得元オブジェクトから削除するキー-値ペアを指定します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- ["hello" as Key] ``` #### [](#出力-4)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus5)\--(source: Null, keys: Any) `--`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # \-- ## [](#minusminus1)\--(source: Array, toRemove: Array): Array 指定された値を入力値から削除します。 このバージョンの ​`--`​ は、指定された項目のすべてのインスタンスを配列から削除します。その他のバージョンは、DataWeave でサポートされるオブジェクト、文字列、およびさまざまな日付と時刻の形式で動作します。
名前 説明

ソース

削除する項目を含む配列。

toRemove

取得元配列から削除する項目。

### [](#例)例 次の例では、指定された項目を配列から削除します。具体的には、​`--`​ の右側の配列に含まれる項目のすべてのインスタンスをこの関数の左側の配列から削除します。結果として ​`[0]`​ が残ります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 1, 2] -- [1,2] } ``` #### [](#出力)出力 ```JSON { "a": [0] } ``` ## [](#minusminus2)\--(source: { (K)?: V }, toRemove: Object): { (K)?: V } オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを含むオブジェクト。

### [](#例-2)例 次の例では、取得元オブジェクトからキー-値ペアを削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- { "hello" : "world"} ``` #### [](#出力-2)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus3)\--(source: Object, keys: Array) 指定された検索キーに一致する取得元オブジェクトからすべてのキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを指定するキーの配列。

### [](#例-3)例 次の例では、取得元オブジェクトから 2 つのキー-値ペアを削除します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"] ``` #### [](#出力-3)出力 ```JSON { "good": "bad" } ``` ## [](#minusminus4)\--(source: Object, keys: Array) オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

keys

取得元オブジェクトから削除するキー-値ペアのキー。

### [](#例-4)例 次の例では、取得元オブジェクトから削除するキー-値ペアを指定します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- ["hello" as Key] ``` #### [](#出力-4)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus5)\--(source: Null, keys: Any) `--`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # \-- ## [](#minusminus1)\--(source: Array, toRemove: Array): Array 指定された値を入力値から削除します。 このバージョンの ​`--`​ は、指定された項目のすべてのインスタンスを配列から削除します。その他のバージョンは、DataWeave でサポートされるオブジェクト、文字列、およびさまざまな日付と時刻の形式で動作します。
名前 説明

source

削除する項目を含む配列。

toRemove

取得元配列から削除する項目。

### [](#例)例 次の例では、指定された項目を配列から削除します。具体的には、​`--`​ の右側の配列に含まれる項目のすべてのインスタンスをこの関数の左側の配列から削除します。結果として ​`[0]`​ が残ります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 1, 2] -- [1,2] } ``` #### [](#出力)出力 ```JSON { "a": [0] } ``` ## [](#minusminus2)\--(source: { (K)?: V }, toRemove: Object): { (K)?: V } オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを含むオブジェクト。

### [](#例-2)例 次の例では、取得元オブジェクトからキー-値ペアを削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- { "hello" : "world"} ``` #### [](#出力-2)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus3)\--(source: Object, keys: Array) 指定された検索キーに一致する取得元オブジェクトからすべてのキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

toRemove

取得元オブジェクトから削除するキー-値ペアを指定するキーの配列。

### [](#例-3)例 次の例では、取得元オブジェクトから 2 つのキー-値ペアを削除します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"] ``` #### [](#出力-3)出力 ```JSON { "good": "bad" } ``` ## [](#minusminus4)\--(source: Object, keys: Array) オブジェクトから指定されたキー-値ペアを削除します。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト (​Object​ (オブジェクト) 型)。

keys

取得元オブジェクトから削除するキー-値ペアのキー。

### [](#例-4)例 次の例では、取得元オブジェクトから削除するキー-値ペアを指定します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "hello" : "world", "name" : "DW" } -- ["hello" as Key] ``` #### [](#出力-4)出力 ```JSON { "name": "DW" } ``` ## [](#minusminus5)\--(source: Null, keys: Any) `--`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # ++ ## [](#plusplus1)++(Array, Array): Array 2 つの値を連結します。 このバージョンの ​`++`​ は、2 つの配列の要素を連結して新しい配列にします。その他のバージョンは、DataWeave でサポートされる文字列、オブジェクト、およびさまざまな日付と時刻の形式で動作します。 2 つの配列に含まれる要素の型が異なる場合、作成される配列内には ​`Array`​ (配列 ) に含まれるすべての ​`S`​ 型の要素の後に ​`Array`​ (配列 ) に含まれるすべての ​`T`​ 型の要素が続きます。どちらの配列でも、複数の型の要素を混在させることができます。配列には、サポート対象であればどのデータ型でも含めることができます。 ### [](#パラメーター)パラメーター
名前 説明

​source

取得元配列。

​with

取得元配列に連結する配列。

### [](#例)例 次の例では、​`Array`​ を ​`Array`​ に連結します。結果は JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "result" : [0, 1, 2] ++ ["a", "b", "c"] } ``` #### [](#出力)出力 ```JSON { "result": [0, 1, 2, "a", "b", "c"] } ``` ### [](#例-2)例 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] } ``` #### [](#出力-2)出力 ```JSON { "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] } ``` ## [](#plusplus2)++(String, String): String 2 つの文字列の文字を連結します。 文字列は文字の配列として扱われるため、​`++`​ 演算子は各文字列の文字を 1 文字の文字列からなる配列であるかのように連結します。 ### [](#パラメーター-2)パラメーター
名前 説明

​source

取得元文字列。

​with

取得元文字列に連結する文字列。

### [](#例-3)例 次の例では、2 つの文字列を連結します。ここでは、​`Mule`​ は ​`Array ["M", "u", "l", "e"]`​ として扱われます。結果の ​`MuleSoft`​ は JSON オブジェクトの値として出力されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : "Mule" ++ "Soft" } ``` #### [](#出力-3)出力 ```JSON { "name": "MuleSoft" } ``` ## [](#plusplus3)++(T, Q): T & Q 2 つのオブジェクトを連結して、1 つのフラット化したオブジェクトを返します。 `++`​ 演算子は各オブジェクトからすべてのキー-値ペアを抽出し、 まとめて結合し、1 つのオブジェクトにします。 ### [](#パラメーター-3)パラメーター
名前 説明

​source

取得元オブジェクト。

​with

取得元オブジェクトに連結するオブジェクト。

### [](#例-4)例 次の例では、2 つのオブジェクトを連結し、XML に変換します。オブジェクトの配列 ​`{aa: "a", bb: "b"}`​ は個別の XML 要素にフラット化されます。出力では、指定された JSON オブジェクトのキーが XML 要素として使用され、そのオブジェクトの値が XML 値として使用されます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { concat : {aa: "a", bb: "b"} ++ {cc: "c"} } ``` #### [](#出力-4)出力 ```XML a b c ``` ## [](#plusplus4)++(Date, LocalTime): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) 値を返します。 `Date`​ (日付) および ​`LocalTime`​ (ローカル時刻) インスタンスは、標準 Java 表記を パイプ (​`|`​) 記号で囲んで記述します。結果は、標準 Java 形式の ​`LocalDateTime`​ (ローカル日時) オブジェクトです。2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``Date LocalTime`​ と ​`LocalTime Date``​ の結果は同じになります。 ### [](#パラメーター-4)パラメーター
名前 説明

​date

​Date​ (日付)。

​time

​LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

### [](#例-5)例 次の例では、​`Date`​ (日付) オブジェクトと ​`LocalTime`​ (ローカル時刻) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) } ``` #### [](#出力-5)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus5)++(LocalTime, Date): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) を返します。 2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``LocalTime Date`​ と ​`Date LocalTime``​ の結果は同じになります。 ### [](#パラメーター-5)パラメーター
名前 説明

​time

​LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

​date

​Date​ (日付)。

### [](#例-6)例 次の例では、​`LocalTime`​ (ローカル時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) } ``` #### [](#出力-6)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus6)++(Date, Time): DateTime `Date`​ (日付) を​`Time`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-6)パラメーター
名前 説明

​date

​Date​ (日付)。

​time

​Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

### [](#例-7)例 次の例では、​`Date`​ (ローカル時刻) オブジェクトと ​`Time`​ (日付) オブジェクトを 連結して、​`DateTime`​ (ローカル日時) を返します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- [ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ] ``` #### [](#出力-7)出力 ```JSON [ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ] ``` ## [](#plusplus7)++(Time, Date): DateTime `Date`​ (日付) を​`Time`​ (時刻) オブジェクトに付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-7)パラメーター
名前 説明

​time

​Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

​date

​Date​ (日付)。

### [](#例-8)例 次の例では、​`Date`​ (日付) を ​`Time`​ (時刻) と連結して ​`DateTime`​ (日時) を出力します。 入力はパイプ (​`|`​) で囲まれています。 #### [](#ソース-8)ソース ```DataWeave %dw 2.0 output application/json --- |2018-11-30| ++ |23:57:59+01:00| ``` #### [](#出力-8)出力 ```JSON "2018-11-30T23:57:59+01:00" ``` ### [](#例-9)例 次の例では、​`Time`​ (時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`DateTime`​ (日時) オブジェクトを返します。最初の ​`LocalTime`​ (ローカル時刻) オブジェクトは `Time` (時刻) に変更されています。 日付と時刻の入力の順序によって出力の ​`DateTime`​ (日時) の順序が変わることはありません。 #### [](#ソース-9)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|, "DateTime2" : |23:57:59Z| ++ |2017-10-01|, "DateTime3" : |2017-10-01| ++ |23:57:59+02:00| } ``` #### [](#出力-9)出力 ```JSON { "DateTime1": "2017-10-01T23:57:59Z", "DateTime2": "2017-10-01T23:57:59Z", "DateTime3": "2017-10-01T23:57:59+02:00" } ``` ## [](#plusplus8)++(Date, TimeZone): DateTime `TimeZone`​ (タイムゾーン) を ​`Date`​ (日付) 型の値に付加して ​`DateTime`​ (日時) の結果を返します。 ### [](#パラメーター-8)パラメーター
名前 説明

​date

​Date​ (日付)。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-10)例 次の例では、​`Date`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-10)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2017-10-01| ++ |-03:00|) } ``` #### [](#出力-10)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus9)++(TimeZone, Date): DateTime `Date`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-9)パラメーター
名前 説明

​date

​Date​ (日付)。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-11)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`Date`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-11)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : |-03:00| ++ |2017-10-01| } ``` #### [](#出力-11)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus10)++(LocalDateTime, TimeZone): DateTime `TimeZone`​ (日付) を​`LocalDateTime`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-10)パラメーター
名前 説明

​dateTime

​LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-12)例 次の例では、​`LocalDateTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-12)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) } ``` #### [](#出力-12)出力 ```JSON { "DateTime": "2003-10-01T23:57:59-03:00 } ``` ## [](#plusplus11)++(TimeZone, LocalDateTime): DateTime `LocalDateTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-11)パラメーター
名前 説明

​dateTime

​LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-13)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalDateTime`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-13)ソース ```DataWeave %dw 2.0 output application/json --- { "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) } ``` #### [](#出力-13)出力 ```JSON { "TimeZone": "2003-10-01T23:57:59-03:00" } ``` ## [](#plusplus12)++(LocalTime, TimeZone): Time `TimeZone`​ (日付) を​`LocalTime`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-12)パラメーター
名前 説明

​time

​LocalTime​ (ローカル時刻)。タイムゾーン付きの時刻形式。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-14)例 次の例では、​`LocalTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-14)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|23:57| ++ |-03:00|) } ``` #### [](#出力-14)出力 ```JSON { "Time": "23:57:00-03:00" } ``` ## [](#plusplus13)++(TimeZone, LocalTime): Time `LocalTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-13)パラメーター
名前 説明

​time

​LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-15)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalTime`​ (日付) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-15)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|-03:00| ++ |23:57|) } ``` #### [](#出力-15)出力 ```JSON { "Time": "23:57:00-03:00" } ``` # ++ ## [](#plusplus1)++(source: Array, with: Array): Array 2 つの値を連結します。 このバージョンの ​`++`​ は、2 つの配列の要素を連結して新しい配列にします。その他のバージョンは、DataWeave でサポートされる文字列、オブジェクト、およびさまざまな日付と時刻の形式で動作します。 2 つの配列に含まれる要素の型が異なる場合、作成される配列内には ​`Array`​ (配列 ) に含まれるすべての ​`S`​ 型の要素の後に ​`Array`​ (配列 ) に含まれるすべての ​`T`​ 型の要素が続きます。どちらの配列でも、複数の型の要素を混在させることができます。配列には、サポート対象であればどのデータ型でも含めることができます。 ### [](#パラメーター)パラメーター
名前 説明

​source

取得元配列。

​with

取得元配列に連結する配列。

### [](#例)例 次の例では、​`Array`​ を ​`Array`​ に連結します。結果は JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "result" : [0, 1, 2] ++ ["a", "b", "c"] } ``` #### [](#出力)出力 ```JSON { "result": [0, 1, 2, "a", "b", "c"] } ``` ### [](#例-2)例 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] } ``` #### [](#出力-2)出力 ```JSON { "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] } ``` ## [](#plusplus2)++(source: String, with: String): String 2 つの文字列の文字を連結します。 文字列は文字の配列として扱われるため、​`++`​ 演算子は各文字列の文字を 1 文字の文字列からなる配列であるかのように連結します。 ### [](#パラメーター-2)パラメーター
名前 説明

​source

取得元文字列。

​with

取得元文字列に連結する文字列。

### [](#例-3)例 次の例では、2 つの文字列を連結します。ここでは、​`Mule`​ は ​`Array ["M", "u", "l", "e"]`​ として扱われます。結果の ​`MuleSoft`​ は JSON オブジェクトの値として出力されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : "Mule" ++ "Soft" } ``` #### [](#出力-3)出力 ```JSON { "name": "MuleSoft" } ``` ## [](#plusplus3)++(source: T, with: Q): T & Q 2 つのオブジェクトを連結して、1 つのフラット化したオブジェクトを返します。 `++`​ 演算子は各オブジェクトからすべてのキー-値ペアを抽出し、 まとめて結合し、1 つのオブジェクトにします。 ### [](#パラメーター-3)パラメーター
名前 説明

​source

取得元オブジェクト。

​with

取得元オブジェクトに連結するオブジェクト。

### [](#例-4)例 次の例では、2 つのオブジェクトを連結し、XML に変換します。オブジェクトの配列 ​`{aa: "a", bb: "b"}`​ は個別の XML 要素にフラット化されます。出力では、指定された JSON オブジェクトのキーが XML 要素として使用され、そのオブジェクトの値が XML 値として使用されます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { concat : {aa: "a", bb: "b"} ++ {cc: "c"} } ``` #### [](#出力-4)出力 ```XML a b c ``` ## [](#plusplus4)++(date: Date, time: LocalTime): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) 値を返します。 `Date`​ (日付) および ​`LocalTime`​ (ローカル時刻) インスタンスは、標準 Java 表記を パイプ (​`|`​) 記号で囲んで記述します。結果は、標準 Java 形式の ​`LocalDateTime`​ (ローカル日時) オブジェクトです。2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``Date LocalTime`​ と ​`LocalTime Date``​ の結果は同じになります。 ### [](#パラメーター-4)パラメーター
名前 説明

​date

​Date​ (日付)。

​time

​LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

### [](#例-5)例 次の例では、​`Date`​ (日付) オブジェクトと ​`LocalTime`​ (ローカル時刻) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) } ``` #### [](#出力-5)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus5)++(time: LocalTime, date: Date): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) を返します。 2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``LocalTime Date`​ と ​`Date LocalTime``​ の結果は同じになります。 ### [](#パラメーター-5)パラメーター
名前 説明

​time

​LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

​date

​Date​ (日付)。

### [](#例-6)例 次の例では、​`LocalTime`​ (ローカル時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) } ``` #### [](#出力-6)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus6)++(date: Date, time: Time): DateTime `Date`​ (日付) を​`Time`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-6)パラメーター
名前 説明

​date

​Date​ (日付)。

​time

​Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

### [](#例-7)例 次の例では、​`Date`​ (ローカル時刻) オブジェクトと ​`Time`​ (日付) オブジェクトを 連結して、​`DateTime`​ (ローカル日時) を返します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- [ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ] ``` #### [](#出力-7)出力 ```JSON [ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ] ``` ## [](#plusplus7)++(time: Time, date: Date): DateTime `Date`​ (日付) を​`Time`​ (時刻) オブジェクトに付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-7)パラメーター
名前 説明

​time

​Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

​date

​Date​ (日付)。

### [](#例-8)例 次の例では、​`Date`​ (日付) を ​`Time`​ (時刻) と連結して ​`DateTime`​ (日時) を出力します。 入力はパイプ (​`|`​) で囲まれています。 #### [](#ソース-8)ソース ```DataWeave %dw 2.0 output application/json --- |2018-11-30| ++ |23:57:59+01:00| ``` #### [](#出力-8)出力 ```JSON "2018-11-30T23:57:59+01:00" ``` ### [](#例-9)例 次の例では、​`Time`​ (時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを連結して、​`DateTime`​ (日時) オブジェクトを返します。最初の ​`LocalTime`​ (ローカル時刻) オブジェクトは `Time` (時刻) に変更されています。 日付と時刻の入力の順序によって出力の ​`DateTime`​ (日時) の順序が変わることはありません。 #### [](#ソース-9)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|, "DateTime2" : |23:57:59Z| ++ |2017-10-01|, "DateTime3" : |2017-10-01| ++ |23:57:59+02:00| } ``` #### [](#出力-9)出力 ```JSON { "DateTime1": "2017-10-01T23:57:59Z", "DateTime2": "2017-10-01T23:57:59Z", "DateTime3": "2017-10-01T23:57:59+02:00" } ``` ## [](#plusplus8)++(date: Date, timezone: TimeZone): DateTime `TimeZone`​ (タイムゾーン) を ​`Date`​ (日付) 型の値に付加して ​`DateTime`​ (日時) の結果を返します。 ### [](#パラメーター-8)パラメーター
名前 説明

​date

​Date​ (日付)。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-10)例 次の例では、​`Date`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-10)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2017-10-01| ++ |-03:00|) } ``` #### [](#出力-10)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus9)++(timezone: TimeZone, date: Date): DateTime `Date`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-9)パラメーター
名前 説明

​date

​Date​ (日付)。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-11)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`Date`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-11)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : |-03:00| ++ |2017-10-01| } ``` #### [](#出力-11)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus10)++(dateTime: LocalDateTime, timezone: TimeZone): DateTime `TimeZone`​ (日付) を​`LocalDateTime`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-10)パラメーター
名前 説明

​dateTime

​LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-12)例 次の例では、​`LocalDateTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-12)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) } ``` #### [](#出力-12)出力 ```JSON { "DateTime": "2003-10-01T23:57:59-03:00 } ``` ## [](#plusplus11)++(timezone: TimeZone, datetime: LocalDateTime): DateTime `LocalDateTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-11)パラメーター
名前 説明

​dateTime

​LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-13)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalDateTime`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-13)ソース ```DataWeave %dw 2.0 output application/json --- { "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) } ``` #### [](#出力-13)出力 ```JSON { "TimeZone": "2003-10-01T23:57:59-03:00" } ``` ## [](#plusplus12)++(time: LocalTime, timezone: TimeZone): Time `TimeZone`​ (日付) を​`LocalTime`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-12)パラメーター
名前 説明

​time

​LocalTime​ (ローカル時刻)。タイムゾーン付きの時刻形式。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-14)例 次の例では、​`LocalTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-14)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|23:57| ++ |-03:00|) } ``` #### [](#出力-14)出力 ```JSON { "Time": "23:57:00-03:00" } ``` ## [](#plusplus13)++(timezone: TimeZone, time: LocalTime): Time `LocalTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-13)パラメーター
名前 説明

​time

​LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

​timezone

​TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-15)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalTime`​ (日付) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-15)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|-03:00| ++ |23:57|) } ``` #### [](#出力-15)出力 ```JSON { "Time": "23:57:00-03:00" } ``` # ++ ## [](#plusplus1)++(source: Array, with: Array): Array 2 つの値を連結します。 このバージョンの ​`++`​ は、2 つの配列の要素を連結して新しい配列にします。その他のバージョンは、DataWeave でサポートされる文字列、オブジェクト、およびさまざまな日付と時刻の形式で動作します。 2 つの配列に含まれる要素の型が異なる場合、作成される配列内には ​`Array`​ (配列 ) に含まれるすべての ​`S`​ 型の要素の後に ​`Array`​ (配列 ) に含まれるすべての ​`T`​ 型の要素が続きます。どちらの配列でも、複数の型の要素を混在させることができます。配列には、サポート対象であればどのデータ型でも含めることができます。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元配列。

with

取得元配列に連結する配列。

### [](#例)例 次の例では、​`Array`​ を ​`Array`​ に連結します。結果は JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "result" : [0, 1, 2] ++ ["a", "b", "c"] } ``` #### [](#出力)出力 ```JSON { "result": [0, 1, 2, "a", "b", "c"] } ``` ### [](#例-2)例 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] } ``` #### [](#出力-2)出力 ```JSON { "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] } ``` ## [](#plusplus2)++(source: String, with: String): String 2 つの文字列の文字を連結します。 文字列は文字の配列として扱われるため、​`++`​ 演算子は各文字列の文字を 1 文字の文字列からなる配列であるかのように連結します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元文字列。

with

取得元文字列に連結する文字列。

### [](#例-3)例 次の例では、2 つの文字列を連結します。ここでは、​`Mule`​ は ​`Array ["M", "u", "l", "e"]`​ として扱われます。結果の ​`MuleSoft`​ は JSON オブジェクトの値として出力されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : "Mule" ++ "Soft" } ``` #### [](#出力-3)出力 ```JSON { "name": "MuleSoft" } ``` ## [](#plusplus3)++(source: T, with: Q): T & Q 2 つのオブジェクトを連結して、1 つのフラット化したオブジェクトを返します。 `++`​ 演算子は各オブジェクトからすべてのキー-値ペアを抽出し、 まとめて結合し、1 つのオブジェクトにします。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト。

with

取得元オブジェクトに連結するオブジェクト。

### [](#例-4)例 次の例では、2 つのオブジェクトを連結し、XML に変換します。オブジェクトの配列 ​`{aa: "a", bb: "b"}`​ は個別の XML 要素にフラット化されます。出力では、指定された JSON オブジェクトのキーが XML 要素として使用され、そのオブジェクトの値が XML 値として使用されます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { concat : {aa: "a", bb: "b"} ++ {cc: "c"} } ``` #### [](#出力-4)出力 ```XML a b c ``` ## [](#plusplus4)++(date: Date, time: LocalTime): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) 値を返します。 `Date`​ (日付) および ​`LocalTime`​ (ローカル時刻) インスタンスは、標準 Java 表記を パイプ (​`|`​) 記号で囲んで記述します。結果は、標準 Java 形式の ​`LocalDateTime`​ (ローカル日時) オブジェクトです。2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``Date LocalTime`​ と ​`LocalTime Date``​ の結果は同じになります。 ### [](#パラメーター-4)パラメーター
名前 説明

date

Date​ (日付)。

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

### [](#例-5)例 次の例では、​`Date`​ (日付) オブジェクトと ​`LocalTime`​ (ローカル時刻) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) } ``` #### [](#出力-5)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus5)++(time: LocalTime, date: Date): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) を返します。 2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``LocalTime Date`​ と ​`Date LocalTime``​ の結果は同じになります。 ### [](#パラメーター-5)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

date

Date​ (日付)。

### [](#例-6)例 次の例では、​`LocalTime`​ (ローカル時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) } ``` #### [](#出力-6)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus6)++(date: Date, time: Time): DateTime `Date`​ (日付) を​`Time`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-6)パラメーター
名前 説明

date

Date​ (日付)。

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

### [](#例-7)例 次の例では、​`Date`​ (ローカル時刻) オブジェクトと ​`Time`​ (日付) オブジェクトを 連結して、​`DateTime`​ (ローカル日時) を返します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- [ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ] ``` #### [](#出力-7)出力 ```JSON [ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ] ``` ## [](#plusplus7)++(time: Time, date: Date): DateTime `Date`​ (日付) を​`Time`​ (時刻) オブジェクトに付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-7)パラメーター
名前 説明

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

date

Date​ (日付)。

### [](#例-8)例 次の例では、​`Date`​ (日付) を ​`Time`​ (時刻) と連結して ​`DateTime`​ (日時) を出力します。 入力はパイプ (​`|`​) で囲まれています。 #### [](#ソース-8)ソース ```DataWeave %dw 2.0 output application/json --- |2018-11-30| ++ |23:57:59+01:00| ``` #### [](#出力-8)出力 ```JSON "2018-11-30T23:57:59+01:00" ``` ### [](#例-9)例 次の例では、​`Time`​ (時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`DateTime`​ (日時) オブジェクトを返します。最初の ​`LocalTime` ​``(ローカル時刻) オブジェクトは `​Time`` (時刻) に変更されています。 日付と時刻の入力の順序によって出力の ​`DateTime`​ (日時) の順序が変わることはありません。 #### [](#ソース-9)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|, "DateTime2" : |23:57:59Z| ++ |2017-10-01|, "DateTime3" : |2017-10-01| ++ |23:57:59+02:00| } ``` #### [](#出力-9)出力 ```JSON { "DateTime1": "2017-10-01T23:57:59Z", "DateTime2": "2017-10-01T23:57:59Z", "DateTime3": "2017-10-01T23:57:59+02:00" } ``` ## [](#plusplus8)++(date: Date, timezone: TimeZone): DateTime `TimeZone`​ (タイムゾーン) を ​`Date`​ (日付) 型の値に付加して ​`DateTime`​ (日時) の結果を返します。 ### [](#パラメーター-8)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-10)例 次の例では、​`Date`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-10)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2017-10-01| ++ |-03:00|) } ``` #### [](#出力-10)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus9)++(timezone: TimeZone, date: Date): DateTime `Date`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-9)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-11)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`Date`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-11)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : |-03:00| ++ |2017-10-01| } ``` #### [](#出力-11)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus10)++(dateTime: LocalDateTime, timezone: TimeZone): DateTime `TimeZone`​ (日付) を​`LocalDateTime`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-10)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-12)例 次の例では、​`LocalDateTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-12)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) } ``` #### [](#出力-12)出力 ```JSON { "DateTime": "2003-10-01T23:57:59-03:00 } ``` ## [](#plusplus11)++(timezone: TimeZone, datetime: LocalDateTime): DateTime `LocalDateTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-11)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-13)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalDateTime`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-13)ソース ```DataWeave %dw 2.0 output application/json --- { "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) } ``` #### [](#出力-13)出力 ```JSON { "TimeZone": "2003-10-01T23:57:59-03:00" } ``` ## [](#plusplus12)++(time: LocalTime, timezone: TimeZone): Time `TimeZone`​ (日付) を​`LocalTime`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-12)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーン付きの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-14)例 次の例では、​`LocalTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-14)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|23:57| ++ |-03:00|) } ``` #### [](#出力-14)出力 ```JSON { "Time": "23:57:00-03:00" } ``` ## [](#plusplus13)++(timezone: TimeZone, time: LocalTime): Time `LocalTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-13)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-15)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalTime`​ (日付) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-15)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|-03:00| ++ |23:57|) } ``` #### [](#出力-15)出力 ```JSON { "Time": "23:57:00-03:00" } ``` # ++ ## [](#plusplus1)++(source: Array, with: Array): Array 2 つの値を連結します。 このバージョンの ​`++`​ は、2 つの配列の要素を連結して新しい配列にします。その他のバージョンは、DataWeave でサポートされる文字列、オブジェクト、およびさまざまな日付と時刻の形式で動作します。 2 つの配列に含まれる要素の型が異なる場合、作成される配列内には ​`Array`​ (配列 ) に含まれるすべての ​`S`​ 型の要素の後に ​`Array`​ (配列 ) に含まれるすべての ​`T`​ 型の要素が続きます。どちらの配列でも、複数の型の要素を混在させることができます。配列には、サポート対象であればどのデータ型でも含めることができます。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元配列。

with

取得元配列に連結する配列。

### [](#例)例 次の例では、​`Array`​ を ​`Array`​ に連結します。結果は JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "result" : [0, 1, 2] ++ ["a", "b", "c"] } ``` #### [](#出力)出力 ```JSON { "result": [0, 1, 2, "a", "b", "c"] } ``` ### [](#例-2)例 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] } ``` #### [](#出力-2)出力 ```JSON { "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] } ``` ## [](#plusplus2)++(source: String, with: String): String 2 つの文字列の文字を連結します。 文字列は文字の配列として扱われるため、​`++`​ 演算子は各文字列の文字を 1 文字の文字列からなる配列であるかのように連結します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元文字列。

with

取得元文字列に連結する文字列。

### [](#例-3)例 次の例では、2 つの文字列を連結します。ここでは、​`Mule`​ は ​`Array ["M", "u", "l", "e"]`​ として扱われます。結果の ​`MuleSoft`​ は JSON オブジェクトの値として出力されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : "Mule" ++ "Soft" } ``` #### [](#出力-3)出力 ```JSON { "name": "MuleSoft" } ``` ## [](#plusplus3)++(source: T, with: Q): T & Q 2 つのオブジェクトを連結して、1 つのフラット化したオブジェクトを返します。 `++`​ 演算子は各オブジェクトからすべてのキー-値ペアを抽出し、 まとめて結合し、1 つのオブジェクトにします。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト。

with

取得元オブジェクトに連結するオブジェクト。

### [](#例-4)例 次の例では、2 つのオブジェクトを連結し、XML に変換します。オブジェクトの配列 ​`{aa: "a", bb: "b"}`​ は個別の XML 要素にフラット化されます。出力では、指定された JSON オブジェクトのキーが XML 要素として使用され、そのオブジェクトの値が XML 値として使用されます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { concat : {aa: "a", bb: "b"} ++ {cc: "c"} } ``` #### [](#出力-4)出力 ```XML a b c ``` ## [](#plusplus4)++(date: Date, time: LocalTime): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) 値を返します。 `Date`​ (日付) および ​`LocalTime`​ (ローカル時刻) インスタンスは、標準 Java 表記を パイプ (​`|`​) 記号で囲んで記述します。結果は、標準 Java 形式の ​`LocalDateTime`​ (ローカル日時) オブジェクトです。2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``Date LocalTime`​ と ​`LocalTime Date``​ の結果は同じになります。 ### [](#パラメーター-4)パラメーター
名前 説明

date

Date​ (日付)。

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

### [](#例-5)例 次の例では、​`Date`​ (日付) オブジェクトと ​`LocalTime`​ (ローカル時刻) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) } ``` #### [](#出力-5)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus5)++(time: LocalTime, date: Date): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) を返します。 2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``LocalTime Date`​ と ​`Date LocalTime``​ の結果は同じになります。 ### [](#パラメーター-5)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

date

Date​ (日付)。

### [](#例-6)例 次の例では、​`LocalTime`​ (ローカル時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) } ``` #### [](#出力-6)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus6)++(date: Date, time: Time): DateTime `Date`​ (日付) を​`Time`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-6)パラメーター
名前 説明

date

Date​ (日付)。

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

### [](#例-7)例 次の例では、​`Date`​ (ローカル時刻) オブジェクトと ​`Time`​ (日付) オブジェクトを 連結して、​`DateTime`​ (ローカル日時) を返します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- [ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ] ``` #### [](#出力-7)出力 ```JSON [ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ] ``` ## [](#plusplus7)++(time: Time, date: Date): DateTime `Date`​ (日付) を​`Time`​ (時刻) オブジェクトに付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-7)パラメーター
名前 説明

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

date

Date​ (日付)。

### [](#例-8)例 次の例では、​`Date`​ (日付) を ​`Time`​ (時刻) と連結して ​`DateTime`​ (日時) を出力します。 入力はパイプ (​`|`​) で囲まれています。 #### [](#ソース-8)ソース ```DataWeave %dw 2.0 output application/json --- |2018-11-30| ++ |23:57:59+01:00| ``` #### [](#出力-8)出力 ```JSON "2018-11-30T23:57:59+01:00" ``` ### [](#例-9)例 次の例では、​`Time`​ (時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`DateTime`​ (日時) オブジェクトを返します。最初の ​`LocalTime` ​``(ローカル時刻) オブジェクトは `​Time`` (時刻) に変更されています。 日付と時刻の入力の順序によって出力の ​`DateTime`​ (日時) の順序が変わることはありません。 #### [](#ソース-9)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|, "DateTime2" : |23:57:59Z| ++ |2017-10-01|, "DateTime3" : |2017-10-01| ++ |23:57:59+02:00| } ``` #### [](#出力-9)出力 ```JSON { "DateTime1": "2017-10-01T23:57:59Z", "DateTime2": "2017-10-01T23:57:59Z", "DateTime3": "2017-10-01T23:57:59+02:00" } ``` ## [](#plusplus8)++(date: Date, timezone: TimeZone): DateTime `TimeZone`​ (タイムゾーン) を ​`Date`​ (日付) 型の値に付加して ​`DateTime`​ (日時) の結果を返します。 ### [](#パラメーター-8)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-10)例 次の例では、​`Date`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-10)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2017-10-01| ++ |-03:00|) } ``` #### [](#出力-10)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus9)++(timezone: TimeZone, date: Date): DateTime `Date`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-9)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-11)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`Date`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-11)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : |-03:00| ++ |2017-10-01| } ``` #### [](#出力-11)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus10)++(dateTime: LocalDateTime, timezone: TimeZone): DateTime `TimeZone`​ (日付) を​`LocalDateTime`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-10)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-12)例 次の例では、​`LocalDateTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-12)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) } ``` #### [](#出力-12)出力 ```JSON { "DateTime": "2003-10-01T23:57:59-03:00 } ``` ## [](#plusplus11)++(timezone: TimeZone, datetime: LocalDateTime): DateTime `LocalDateTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-11)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-13)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalDateTime`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-13)ソース ```DataWeave %dw 2.0 output application/json --- { "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) } ``` #### [](#出力-13)出力 ```JSON { "TimeZone": "2003-10-01T23:57:59-03:00" } ``` ## [](#plusplus12)++(time: LocalTime, timezone: TimeZone): Time `TimeZone`​ (日付) を​`LocalTime`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-12)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーン付きの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-14)例 次の例では、​`LocalTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-14)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|23:57| ++ |-03:00|) } ``` #### [](#出力-14)出力 ```JSON { "Time": "23:57:00-03:00" } ``` ## [](#plusplus13)++(timezone: TimeZone, time: LocalTime): Time `LocalTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-13)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-15)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalTime`​ (日付) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-15)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|-03:00| ++ |23:57|) } ``` #### [](#出力-15)出力 ```JSON { "Time": "23:57:00-03:00" } ``` # ++ ## [](#plusplus1)++(source: Array, with: Array): Array 2 つの値を連結します。 このバージョンの ​`++`​ は、2 つの配列の要素を連結して新しい配列にします。その他のバージョンは、DataWeave でサポートされる文字列、オブジェクト、およびさまざまな日付と時刻の形式で動作します。 2 つの配列に含まれる要素の型が異なる場合、作成される配列内には ​`Array`​ (配列 ) に含まれるすべての ​`S`​ 型の要素の後に ​`Array`​ (配列 ) に含まれるすべての ​`T`​ 型の要素が続きます。どちらの配列でも、複数の型の要素を混在させることができます。配列には、サポート対象であればどのデータ型でも含めることができます。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元配列。

with

取得元配列に連結する配列。

### [](#例)例 次の例では、​`Array`​ を ​`Array`​ に連結します。結果は JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "result" : [0, 1, 2] ++ ["a", "b", "c"] } ``` #### [](#出力)出力 ```JSON { "result": [0, 1, 2, "a", "b", "c"] } ``` ### [](#例-2)例 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] } ``` #### [](#出力-2)出力 ```JSON { "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] } ``` ## [](#plusplus2)++(source: String, with: String): String 2 つの文字列の文字を連結します。 文字列は文字の配列として扱われるため、​`++`​ 演算子は各文字列の文字を 1 文字の文字列からなる配列であるかのように連結します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元文字列。

with

取得元文字列に連結する文字列。

### [](#例-3)例 次の例では、2 つの文字列を連結します。ここでは、​`Mule`​ は ​`Array ["M", "u", "l", "e"]`​ として扱われます。結果の ​`MuleSoft`​ は JSON オブジェクトの値として出力されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : "Mule" ++ "Soft" } ``` #### [](#出力-3)出力 ```JSON { "name": "MuleSoft" } ``` ## [](#plusplus3)++(source: T, with: Q): T & Q 2 つのオブジェクトを連結して、1 つのフラット化したオブジェクトを返します。 `++`​ 演算子は各オブジェクトからすべてのキー-値ペアを抽出し、 まとめて結合し、1 つのオブジェクトにします。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト。

with

取得元オブジェクトに連結するオブジェクト。

### [](#例-4)例 次の例では、2 つのオブジェクトを連結し、XML に変換します。オブジェクトの配列 ​`{aa: "a", bb: "b"}`​ は個別の XML 要素にフラット化されます。出力では、指定された JSON オブジェクトのキーが XML 要素として使用され、そのオブジェクトの値が XML 値として使用されます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { concat : {aa: "a", bb: "b"} ++ {cc: "c"} } ``` #### [](#出力-4)出力 ```XML a b c ``` ## [](#plusplus4)++(date: Date, time: LocalTime): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) 値を返します。 `Date`​ (日付) および ​`LocalTime`​ (ローカル時刻) インスタンスは、標準 Java 表記を パイプ (​`|`​) 記号で囲んで記述します。結果は、標準 Java 形式の ​`LocalDateTime`​ (ローカル日時) オブジェクトです。2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``Date LocalTime`​ と ​`LocalTime Date``​ の結果は同じになります。 ### [](#パラメーター-4)パラメーター
名前 説明

date

Date​ (日付)。

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

### [](#例-5)例 次の例では、​`Date`​ (日付) オブジェクトと ​`LocalTime`​ (ローカル時刻) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) } ``` #### [](#出力-5)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus5)++(time: LocalTime, date: Date): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) を返します。 2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``LocalTime Date`​ と ​`Date LocalTime``​ の結果は同じになります。 ### [](#パラメーター-5)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

date

Date​ (日付)。

### [](#例-6)例 次の例では、​`LocalTime`​ (ローカル時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) } ``` #### [](#出力-6)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus6)++(date: Date, time: Time): DateTime `Date`​ (日付) を​`Time`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-6)パラメーター
名前 説明

date

Date​ (日付)。

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

### [](#例-7)例 次の例では、​`Date`​ (ローカル時刻) オブジェクトと ​`Time`​ (日付) オブジェクトを 連結して、​`DateTime`​ (ローカル日時) を返します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- [ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ] ``` #### [](#出力-7)出力 ```JSON [ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ] ``` ## [](#plusplus7)++(time: Time, date: Date): DateTime `Date`​ (日付) を​`Time`​ (時刻) オブジェクトに付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-7)パラメーター
名前 説明

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

date

Date​ (日付)。

### [](#例-8)例 次の例では、​`Date`​ (日付) を ​`Time`​ (時刻) と連結して ​`DateTime`​ (日時) を出力します。 入力はパイプ (​`|`​) で囲まれています。 #### [](#ソース-8)ソース ```DataWeave %dw 2.0 output application/json --- |2018-11-30| ++ |23:57:59+01:00| ``` #### [](#出力-8)出力 ```JSON "2018-11-30T23:57:59+01:00" ``` ### [](#例-9)例 次の例では、​`Time`​ (時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`DateTime`​ (日時) オブジェクトを返します。最初の ​`LocalTime` ​``(ローカル時刻) オブジェクトは `​Time`` (時刻) に変更されています。 日付と時刻の入力の順序によって出力の ​`DateTime`​ (日時) の順序が変わることはありません。 #### [](#ソース-9)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|, "DateTime2" : |23:57:59Z| ++ |2017-10-01|, "DateTime3" : |2017-10-01| ++ |23:57:59+02:00| } ``` #### [](#出力-9)出力 ```JSON { "DateTime1": "2017-10-01T23:57:59Z", "DateTime2": "2017-10-01T23:57:59Z", "DateTime3": "2017-10-01T23:57:59+02:00" } ``` ## [](#plusplus8)++(date: Date, timezone: TimeZone): DateTime `TimeZone`​ (タイムゾーン) を ​`Date`​ (日付) 型の値に付加して ​`DateTime`​ (日時) の結果を返します。 ### [](#パラメーター-8)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-10)例 次の例では、​`Date`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-10)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2017-10-01| ++ |-03:00|) } ``` #### [](#出力-10)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus9)++(timezone: TimeZone, date: Date): DateTime `Date`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-9)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-11)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`Date`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-11)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : |-03:00| ++ |2017-10-01| } ``` #### [](#出力-11)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus10)++(dateTime: LocalDateTime, timezone: TimeZone): DateTime `TimeZone`​ (日付) を​`LocalDateTime`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-10)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-12)例 次の例では、​`LocalDateTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-12)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) } ``` #### [](#出力-12)出力 ```JSON { "DateTime": "2003-10-01T23:57:59-03:00 } ``` ## [](#plusplus11)++(timezone: TimeZone, datetime: LocalDateTime): DateTime `LocalDateTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-11)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-13)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalDateTime`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-13)ソース ```DataWeave %dw 2.0 output application/json --- { "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) } ``` #### [](#出力-13)出力 ```JSON { "TimeZone": "2003-10-01T23:57:59-03:00" } ``` ## [](#plusplus12)++(time: LocalTime, timezone: TimeZone): Time `TimeZone`​ (日付) を​`LocalTime`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-12)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーン付きの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-14)例 次の例では、​`LocalTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-14)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|23:57| ++ |-03:00|) } ``` #### [](#出力-14)出力 ```JSON { "Time": "23:57:00-03:00" } ``` ## [](#plusplus13)++(timezone: TimeZone, time: LocalTime): Time `LocalTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-13)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-15)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalTime`​ (日付) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-15)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|-03:00| ++ |23:57|) } ``` #### [](#出力-15)出力 ```JSON { "Time": "23:57:00-03:00" } ``` # ++ ## [](#plusplus1)++(source: Array, with: Array): Array 2 つの値を連結します。 このバージョンの ​`++`​ は、2 つの配列の要素を連結して新しい配列にします。その他のバージョンは、DataWeave でサポートされる文字列、オブジェクト、およびさまざまな日付と時刻の形式で動作します。 2 つの配列に含まれる要素の型が異なる場合、作成される配列内には ​`Array`​ (配列 ) に含まれるすべての ​`S`​ 型の要素の後に ​`Array`​ (配列 ) に含まれるすべての ​`T`​ 型の要素が続きます。どちらの配列でも、複数の型の要素を混在させることができます。配列には、サポート対象であればどのデータ型でも含めることができます。 ### [](#パラメーター)パラメーター
名前 説明

source

取得元配列。

with

取得元配列に連結する配列。

### [](#例)例 次の例では、​`Array`​ を ​`Array`​ に連結します。結果は JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "result" : [0, 1, 2] ++ ["a", "b", "c"] } ``` #### [](#出力)出力 ```JSON { "result": [0, 1, 2, "a", "b", "c"] } ``` ### [](#例-2)例 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] } ``` #### [](#出力-2)出力 ```JSON { "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] } ``` ## [](#plusplus2)++(source: String, with: String): String 2 つの文字列の文字を連結します。 文字列は文字の配列として扱われるため、​`++`​ 演算子は各文字列の文字を 1 文字の文字列からなる配列であるかのように連結します。 ### [](#パラメーター-2)パラメーター
名前 説明

source

取得元文字列。

with

取得元文字列に連結する文字列。

### [](#例-3)例 次の例では、2 つの文字列を連結します。ここでは、​`Mule`​ は ​`Array ["M", "u", "l", "e"]`​ として扱われます。結果の ​`MuleSoft`​ は JSON オブジェクトの値として出力されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : "Mule" ++ "Soft" } ``` #### [](#出力-3)出力 ```JSON { "name": "MuleSoft" } ``` ## [](#plusplus3)++(source: T, with: Q): T & Q 2 つのオブジェクトを連結して、1 つのフラット化したオブジェクトを返します。 `++`​ 演算子は各オブジェクトからすべてのキー-値ペアを抽出し、 まとめて結合し、1 つのオブジェクトにします。 ### [](#パラメーター-3)パラメーター
名前 説明

source

取得元オブジェクト。

with

取得元オブジェクトに連結するオブジェクト。

### [](#例-4)例 次の例では、2 つのオブジェクトを連結し、XML に変換します。オブジェクトの配列 ​`{aa: "a", bb: "b"}`​ は個別の XML 要素にフラット化されます。出力では、指定された JSON オブジェクトのキーが XML 要素として使用され、そのオブジェクトの値が XML 値として使用されます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { concat : {aa: "a", bb: "b"} ++ {cc: "c"} } ``` #### [](#出力-4)出力 ```XML a b c ``` ## [](#plusplus4)++(date: Date, time: LocalTime): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) 値を返します。 `Date`​ (日付) および ​`LocalTime`​ (ローカル時刻) インスタンスは、標準 Java 表記を パイプ (​`|`​) 記号で囲んで記述します。結果は、標準 Java 形式の ​`LocalDateTime`​ (ローカル日時) オブジェクトです。2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``Date LocalTime`​ と ​`LocalTime Date``​ の結果は同じになります。 ### [](#パラメーター-4)パラメーター
名前 説明

date

Date​ (日付)。

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

### [](#例-5)例 次の例では、​`Date`​ (日付) オブジェクトと ​`LocalTime`​ (ローカル時刻) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) } ``` #### [](#出力-5)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus5)++(time: LocalTime, date: Date): LocalDateTime `LocalTime`​ (ローカル時刻) を ​`Date`​ (日付) に付加して ​`LocalDateTime`​ (ローカル日時) を返します。 2 つのオブジェクトが連結される順序に 意味はないため、論理的には ​``LocalTime Date`​ と ​`Date LocalTime``​ の結果は同じになります。 ### [](#パラメーター-5)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

date

Date​ (日付)。

### [](#例-6)例 次の例では、​`LocalTime`​ (ローカル時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`LocalDateTime`​ (ローカル日時) を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) } ``` #### [](#出力-6)出力 ```JSON { "LocalDateTime": "2017-10-01T23:57:59" } ``` ## [](#plusplus6)++(date: Date, time: Time): DateTime `Date`​ (日付) を​`Time`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-6)パラメーター
名前 説明

date

Date​ (日付)。

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

### [](#例-7)例 次の例では、​`Date`​ (ローカル時刻) オブジェクトと ​`Time`​ (日付) オブジェクトを 連結して、​`DateTime`​ (ローカル日時) を返します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- [ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ] ``` #### [](#出力-7)出力 ```JSON [ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ] ``` ## [](#plusplus7)++(time: Time, date: Date): DateTime `Date`​ (日付) を​`Time`​ (時刻) オブジェクトに付加して ​`DateTime`​ (日時) を返します。 2 つのオブジェクトが連結される順序に意味はないため、 論理的には ​`Date`​ (日付) + ​`Time`​ (時刻) と ​`Time`​ (時刻) + ​`Date`​ (日付) の結果は同じになります。 ### [](#パラメーター-7)パラメーター
名前 説明

time

Time​ (時刻)。タイムゾーン (​Z​ または ​HH:mm​) を含めることができる時刻形式。

date

Date​ (日付)。

### [](#例-8)例 次の例では、​`Date`​ (日付) を ​`Time`​ (時刻) と連結して ​`DateTime`​ (日時) を出力します。 入力はパイプ (​`|`​) で囲まれています。 #### [](#ソース-8)ソース ```DataWeave %dw 2.0 output application/json --- |2018-11-30| ++ |23:57:59+01:00| ``` #### [](#出力-8)出力 ```JSON "2018-11-30T23:57:59+01:00" ``` ### [](#例-9)例 次の例では、​`Time`​ (時刻) オブジェクトと ​`Date`​ (日付) オブジェクトを 連結して、​`DateTime`​ (日時) オブジェクトを返します。最初の ​`LocalTime` ​``(ローカル時刻) オブジェクトは `​Time`` (時刻) に変更されています。 日付と時刻の入力の順序によって出力の ​`DateTime`​ (日時) の順序が変わることはありません。 #### [](#ソース-9)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|, "DateTime2" : |23:57:59Z| ++ |2017-10-01|, "DateTime3" : |2017-10-01| ++ |23:57:59+02:00| } ``` #### [](#出力-9)出力 ```JSON { "DateTime1": "2017-10-01T23:57:59Z", "DateTime2": "2017-10-01T23:57:59Z", "DateTime3": "2017-10-01T23:57:59+02:00" } ``` ## [](#plusplus8)++(date: Date, timezone: TimeZone): DateTime `TimeZone`​ (タイムゾーン) を ​`Date`​ (日付) 型の値に付加して ​`DateTime`​ (日時) の結果を返します。 ### [](#パラメーター-8)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-10)例 次の例では、​`Date`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-10)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2017-10-01| ++ |-03:00|) } ``` #### [](#出力-10)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus9)++(timezone: TimeZone, date: Date): DateTime `Date`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-9)パラメーター
名前 説明

date

Date​ (日付)。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-11)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`Date`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。​`DateTime`​ (日時) のローカル時刻は ​`00:00:00`​ (深夜 0 時) です。 #### [](#ソース-11)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : |-03:00| ++ |2017-10-01| } ``` #### [](#出力-11)出力 ```JSON { "DateTime": "2017-10-01T00:00:00-03:00" } ``` ## [](#plusplus10)++(dateTime: LocalDateTime, timezone: TimeZone): DateTime `TimeZone`​ (日付) を​`LocalDateTime`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-10)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-12)例 次の例では、​`LocalDateTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-12)ソース ```DataWeave %dw 2.0 output application/json --- { "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) } ``` #### [](#出力-12)出力 ```JSON { "DateTime": "2003-10-01T23:57:59-03:00 } ``` ## [](#plusplus11)++(timezone: TimeZone, datetime: LocalDateTime): DateTime `LocalDateTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`DateTime`​ (日時) を返します。 ### [](#パラメーター-11)パラメーター
名前 説明

dateTime

LocalDateTime​ (ローカル時刻)。タイムゾーンなしの日時。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-13)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalDateTime`​ (日付) を連結して、 ​`DateTime`​ (日時) を返します。 #### [](#ソース-13)ソース ```DataWeave %dw 2.0 output application/json --- { "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) } ``` #### [](#出力-13)出力 ```JSON { "TimeZone": "2003-10-01T23:57:59-03:00" } ``` ## [](#plusplus12)++(time: LocalTime, timezone: TimeZone): Time `TimeZone`​ (日付) を​`LocalTime`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-12)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーン付きの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-14)例 次の例では、​`LocalTime`​ (日付) と ​`TimeZone`​ (タイムゾーン) (​`-03:00`​) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-14)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|23:57| ++ |-03:00|) } ``` #### [](#出力-14)出力 ```JSON { "Time": "23:57:00-03:00" } ``` ## [](#plusplus13)++(timezone: TimeZone, time: LocalTime): Time `LocalTime`​ (日付) を​`TimeZone`​ (時刻) に付加して ​`Time`​ (日時) を返します。 ### [](#パラメーター-13)パラメーター
名前 説明

time

LocalTime​ (ローカル時刻)。タイムゾーンなしの時刻形式。

timezone

TimeZone​ (タイムゾーン) (​Z​ または ​HH:mm​)。

### [](#例-15)例 次の例では、​`TimeZone`​ (タイムゾーン) (​`-03:00`​) と ​`LocalTime`​ (日付) を連結して、 ​`Time`​ (日時) を返します。出力では、未指定の秒には ​`:00`​ が返されています。 #### [](#ソース-15)ソース ```DataWeave %dw 2.0 output application/json --- { "Time" : (|-03:00| ++ |23:57|) } ``` #### [](#出力-15)出力 ```JSON { "Time": "23:57:00-03:00" } ``` # abs ## [](#abs1)abs(Number): Number 数値の絶対値を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#パラメーター-2)パラメーター
名前 説明

​number

この操作を適用する数値。

### [](#例)例 次の例では、指定された数値の絶対値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ abs(-2), abs(2.5), abs(-3.4), abs(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 2.5, 3.4, 3 ] ``` # abs ## [](#abs1)abs(number: Number): Number 数値の絶対値を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、指定された数値の絶対値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ abs(-2), abs(2.5), abs(-3.4), abs(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 2.5, 3.4, 3 ] ``` # abs ## [](#abs1)abs(number: Number): Number 数値の絶対値を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、指定された数値の絶対値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ abs(-2), abs(2.5), abs(-3.4), abs(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 2.5, 3.4, 3 ] ``` # abs ## [](#abs1)abs(number: Number): Number 数値の絶対値を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、指定された数値の絶対値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ abs(-2), abs(2.5), abs(-3.4), abs(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 2.5, 3.4, 3 ] ``` # abs ## [](#abs1)abs(number: Number): Number 数値の絶対値を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、指定された数値の絶対値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ abs(-2), abs(2.5), abs(-3.4), abs(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 2.5, 3.4, 3 ] ``` # abs ## [](#abs1)abs(number: Number): Number 数値の絶対値を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、指定された数値の絶対値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ abs(-2), abs(2.5), abs(-3.4), abs(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 2.5, 3.4, 3 ] ``` # acos ## [](#acos1)acos(angle: Number): Number | NaN `0.0`​ からパイまでの逆余弦値を返します。 入力の絶対値が ​`1`​ より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angle

逆余弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`acos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "acos0": acos(0), "acos13": acos(0.13), "acos-1": acos(-1), "acos1": acos(1), "acos1.1": acos(1.1) } ``` #### [](#出力)出力 ```Json { "acos0": 1.5707963267948966, "acos13": 1.440427347091751, "acos-1": 3.141592653589793, "acos1": 0.0, "acos1.1": null } ``` # acos ## [](#acos1)acos(angle: Number): Number | NaN `0.0`​ からパイまでの逆余弦値を返します。 入力の絶対値が ​`1`​ より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆余弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`acos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "acos0": acos(0), "acos13": acos(0.13), "acos-1": acos(-1), "acos1": acos(1), "acos1.1": acos(1.1) } ``` #### [](#出力)出力 ```Json { "acos0": 1.5707963267948966, "acos13": 1.440427347091751, "acos-1": 3.141592653589793, "acos1": 0.0, "acos1.1": null } ``` # acos ## [](#acos1)acos(angle: Number): Number | NaN `0.0`​ からパイまでの逆余弦値を返します。 入力の絶対値が ​`1`​ より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆余弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`acos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "acos0": acos(0), "acos13": acos(0.13), "acos-1": acos(-1), "acos1": acos(1), "acos1.1": acos(1.1) } ``` #### [](#出力)出力 ```Json { "acos0": 1.5707963267948966, "acos13": 1.440427347091751, "acos-1": 3.141592653589793, "acos1": 0.0, "acos1.1": null } ``` # acos ## [](#acos1)acos(angle: Number): Number | NaN `0.0`​ からパイまでの逆余弦値を返します。 入力の絶対値が ​`1`​ より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆余弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`acos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "acos0": acos(0), "acos13": acos(0.13), "acos-1": acos(-1), "acos1": acos(1), "acos1.1": acos(1.1) } ``` #### [](#出力)出力 ```Json { "acos0": 1.5707963267948966, "acos13": 1.440427347091751, "acos-1": 3.141592653589793, "acos1": 0.0, "acos1.1": null } ``` # acos ## [](#acos1)acos(angle: Number): Number | NaN `0.0`​ からパイまでの逆余弦値を返します。 入力の絶対値が ​`1`​ より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆余弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`acos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "acos0": acos(0), "acos13": acos(0.13), "acos-1": acos(-1), "acos1": acos(1), "acos1.1": acos(1.1) } ``` #### [](#出力)出力 ```Json { "acos0": 1.5707963267948966, "acos13": 1.440427347091751, "acos-1": 3.141592653589793, "acos1": 0.0, "acos1.1": null } ``` # appendIfMissing ## [](#appendifmissing1)appendIfMissing(String, String): String `text`​ が ​`suffix`​ で終了していない場合、​`text`​ の末尾に ​`suffix`​ を追加します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​suffix

サフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`appendIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import appendIfMissing from dw::core::Strings output application/json --- { "a": appendIfMissing(null, ""), "b": appendIfMissing("abc", ""), "c": appendIfMissing("", "xyz") , "d": appendIfMissing("abc", "xyz") , "e": appendIfMissing("abcxyz", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "abcxyz", "e": "abcxyz" } ``` ## [](#appendifmissing2)appendIfMissing(Null, String): Null `appendIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # appendIfMissing ## [](#appendifmissing1)appendIfMissing(text: String, suffix: String): String `text`​ が ​`suffix`​ で終了していない場合、​`text`​ の末尾に ​`suffix`​ を追加します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​suffix

サフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`appendIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import appendIfMissing from dw::core::Strings output application/json --- { "a": appendIfMissing(null, ""), "b": appendIfMissing("abc", ""), "c": appendIfMissing("", "xyz") , "d": appendIfMissing("abc", "xyz") , "e": appendIfMissing("abcxyz", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "abcxyz", "e": "abcxyz" } ``` ## [](#appendifmissing2)appendIfMissing(text: Null, suffix: String): Null `appendIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # appendIfMissing ## [](#appendifmissing1)appendIfMissing(text: String, suffix: String): String `text`​ が ​`suffix`​ で終了していない場合、​`text`​ の末尾に ​`suffix`​ を追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

suffix

サフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`appendIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import appendIfMissing from dw::core::Strings output application/json --- { "a": appendIfMissing(null, ""), "b": appendIfMissing("abc", ""), "c": appendIfMissing("", "xyz") , "d": appendIfMissing("abc", "xyz") , "e": appendIfMissing("abcxyz", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "abcxyz", "e": "abcxyz" } ``` ## [](#appendifmissing2)appendIfMissing(text: Null, suffix: String): Null `appendIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # appendIfMissing ## [](#appendifmissing1)appendIfMissing(text: String, suffix: String): String `text`​ が ​`suffix`​ で終了していない場合、​`text`​ の末尾に ​`suffix`​ を追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

suffix

サフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`appendIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import appendIfMissing from dw::core::Strings output application/json --- { "a": appendIfMissing(null, ""), "b": appendIfMissing("abc", ""), "c": appendIfMissing("", "xyz") , "d": appendIfMissing("abc", "xyz") , "e": appendIfMissing("abcxyz", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "abcxyz", "e": "abcxyz" } ``` ## [](#appendifmissing2)appendIfMissing(text: Null, suffix: String): Null `appendIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # appendIfMissing ## [](#appendifmissing1)appendIfMissing(text: String, suffix: String): String `text`​ が ​`suffix`​ で終了していない場合、​`text`​ の末尾に ​`suffix`​ を追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

suffix

サフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`appendIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import appendIfMissing from dw::core::Strings output application/json --- { "a": appendIfMissing(null, ""), "b": appendIfMissing("abc", ""), "c": appendIfMissing("", "xyz") , "d": appendIfMissing("abc", "xyz") , "e": appendIfMissing("abcxyz", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "abcxyz", "e": "abcxyz" } ``` ## [](#appendifmissing2)appendIfMissing(text: Null, suffix: String): Null `appendIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # appendIfMissing ## [](#appendifmissing1)appendIfMissing(text: String, suffix: String): String `text`​ が ​`suffix`​ で終了していない場合、​`text`​ の末尾に ​`suffix`​ を追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

suffix

サフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`appendIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import appendIfMissing from dw::core::Strings output application/json --- { "a": appendIfMissing(null, ""), "b": appendIfMissing("abc", ""), "c": appendIfMissing("", "xyz") , "d": appendIfMissing("abc", "xyz") , "e": appendIfMissing("abcxyz", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "abcxyz", "e": "abcxyz" } ``` ## [](#appendifmissing2)appendIfMissing(text: Null, suffix: String): Null `appendIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # arrayItem ## [](#arrayitem1)arrayItem(Type): Type 特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`arrayItem`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ArrayOfString = Array type ArrayOfNumber = Array type ArrayOfAny = Array type ArrayOfAnyDefault = Array output application/json --- { a: arrayItem(ArrayOfString), b: arrayItem(ArrayOfNumber), c: arrayItem(ArrayOfAny), d: arrayItem(ArrayOfAnyDefault) } ``` #### [](#出力)出力 ```Json { "a": "String", "b": "Number", "c": "Any", "d": "Any" } ``` # arrayItem ## [](#arrayitem1)arrayItem(t: Type): Type 特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`arrayItem`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ArrayOfString = Array type ArrayOfNumber = Array type ArrayOfAny = Array type ArrayOfAnyDefault = Array output application/json --- { a: arrayItem(ArrayOfString), b: arrayItem(ArrayOfNumber), c: arrayItem(ArrayOfAny), d: arrayItem(ArrayOfAnyDefault) } ``` #### [](#出力)出力 ```Json { "a": "String", "b": "Number", "c": "Any", "d": "Any" } ``` # arrayItem ## [](#arrayitem1)arrayItem(t: Type): Type 特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`arrayItem`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ArrayOfString = Array type ArrayOfNumber = Array type ArrayOfAny = Array type ArrayOfAnyDefault = Array output application/json --- { a: arrayItem(ArrayOfString), b: arrayItem(ArrayOfNumber), c: arrayItem(ArrayOfAny), d: arrayItem(ArrayOfAnyDefault) } ``` #### [](#出力)出力 ```Json { "a": "String", "b": "Number", "c": "Any", "d": "Any" } ``` # arrayItem ## [](#arrayitem1)arrayItem(t: Type): Type 特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`arrayItem`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ArrayOfString = Array type ArrayOfNumber = Array type ArrayOfAny = Array type ArrayOfAnyDefault = Array output application/json --- { a: arrayItem(ArrayOfString), b: arrayItem(ArrayOfNumber), c: arrayItem(ArrayOfAny), d: arrayItem(ArrayOfAnyDefault) } ``` #### [](#出力)出力 ```Json { "a": "String", "b": "Number", "c": "Any", "d": "Any" } ``` # arrayItem ## [](#arrayitem1)arrayItem(t: Type): Type 特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`arrayItem`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ArrayOfString = Array type ArrayOfNumber = Array type ArrayOfAny = Array type ArrayOfAnyDefault = Array output application/json --- { a: arrayItem(ArrayOfString), b: arrayItem(ArrayOfNumber), c: arrayItem(ArrayOfAny), d: arrayItem(ArrayOfAnyDefault) } ``` #### [](#出力)出力 ```Json { "a": "String", "b": "Number", "c": "Any", "d": "Any" } ``` # arrayItem ## [](#arrayitem1)arrayItem(t: Type): Type 特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`arrayItem`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ArrayOfString = Array type ArrayOfNumber = Array type ArrayOfAny = Array type ArrayOfAnyDefault = Array output application/json --- { a: arrayItem(ArrayOfString), b: arrayItem(ArrayOfNumber), c: arrayItem(ArrayOfAny), d: arrayItem(ArrayOfAnyDefault) } ``` #### [](#出力)出力 ```Json { "a": "String", "b": "Number", "c": "Any", "d": "Any" } ``` # Arrays (dw::core::Arrays) このモジュールには、配列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Arrays`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​countBy

配列内の、関数の結果と一致する要素を数えます。

​divideBy

配列を、指定数の要素が含まれるサブ配列に分割します。

​drop

最初の ​n​ 個の要素をドロップします。​n <= 0​ の場合は元の配列を返し、​n > sizeOf(array)​ の場合は空の配列を返します。

​dropWhile

条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。

​every

配列内のすべての要素が条件に一致すると ​true​ を返します。

​firstWith

条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​null​ を返します。

​indexOf

配列内で最初に出現する要素のインデックスを返します。

​indexWhere

配列内で条件に一致する最初に出現する要素のインデックスを返します。

​join

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

​leftJoin

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

​outerJoin

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

​partition

条件を満たす要素と条件を満たさない要素に配列を分割します。

​slice

条件 (​from <= indexOf(array) < until​) を満たす要素の間隔を選択します。

​some

配列内の 1 つ以上の要素が指定された条件に一致すると ​true​ を返します。

​splitAt

配列を、指定された位置で 2 つに分割します。

​splitWhere

配列を、条件を満たす最初の位置で 2 つに分割します。

​sumBy

配列内の要素の値の合計を返します。

​take

最初の ​n​ 個の要素を選択します。​n <= 0​ の場合は空の配列を返し、​n > sizeOf(array)​ の場合は元の配列を返します。

​takeWhile

条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。

# Arrays (dw::core::Arrays) このモジュールには、配列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Arrays`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​countBy

マッチング関数が各要素の値に適用されるときに ​true​ を返す配列内の要素を数えます。

​divideBy

配列を、指定数の要素が含まれるサブ配列に分割します。

​drop

最初の ​n​ 個の要素をドロップします。​n <= 0​ の場合は元の配列を返し、​n > sizeOf(array)​ の場合は空の配列を返します。

​dropWhile

条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。

​every

配列内のすべての要素が条件に一致すると ​true​ を返します。

​firstWith

条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​null​ を返します。

​indexOf

配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​-1​ を返します。

​indexWhere

配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​-1​ を返します。

​join

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

​leftJoin

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

​outerJoin

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

​partition

条件を満たす要素と条件を満たさない要素に配列を分割します。

​slice

条件 (​from <= indexOf(array) < until​) を満たす要素の間隔を選択します。

​some

配列内の 1 つ以上の要素が指定された条件に一致すると ​true​ を返します。

​splitAt

配列を、指定された位置で 2 つに分割します。

​splitWhere

配列を、条件を満たす最初の位置で 2 つに分割します。

​sumBy

配列内の要素の値の合計を返します。

​take

最初の ​n​ 個の要素を選択します。​n <= 0​ の場合は空の配列を返し、​n > sizeOf(array)​ の場合は元の配列を返します。

​takeWhile

条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。

# Arrays (dw::core::Arrays) このモジュールには、配列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Arrays`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

countBy

マッチング関数が各要素の値に適用されるときに ​true​ を返す配列内の要素を数えます。

divideBy

配列を、指定数の要素が含まれるサブ配列に分割します。

drop

最初の ​n​ 個の要素をドロップします。​n <= 0​ の場合は元の配列を返し、​n > sizeOf(array)​ の場合は空の配列を返します。

dropWhile

条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。

every

配列内のすべての要素が条件に一致すると ​true​ を返します。

firstWith

条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​null​ を返します。

indexOf

配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​-1​ を返します。

indexWhere

配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​-1​ を返します。

join

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

leftJoin

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

outerJoin

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

partition

条件を満たす要素と条件を満たさない要素に配列を分割します。

slice

条件 (​from <= indexOf(array) < until​) を満たす要素の間隔を選択します。

some

配列内の 1 つ以上の要素が指定された条件に一致すると ​true​ を返します。

splitAt

配列を、指定された位置で 2 つに分割します。

splitWhere

配列を、条件を満たす最初の位置で 2 つに分割します。

sumBy

配列内の要素の値の合計を返します。

take

最初の ​n​ 個の要素を選択します。​n <= 0​ の場合は空の配列を返し、​n > sizeOf(array)​ の場合は元の配列を返します。

takeWhile

条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。

# Arrays (dw::core::Arrays) このモジュールには、配列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Arrays`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

countBy

マッチング関数が各要素の値に適用されるときに ​true​ を返す配列内の要素を数えます。

divideBy

配列を、指定数の要素が含まれるサブ配列に分割します。

drop

最初の ​n​ 個の要素をドロップします。​n <= 0​ の場合は元の配列を返し、​n > sizeOf(array)​ の場合は空の配列を返します。

dropWhile

条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。

every

配列内のすべての要素が条件に一致すると ​true​ を返します。

firstWith

条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​null​ を返します。

indexOf

配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​-1​ を返します。

indexWhere

配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​-1​ を返します。

join

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

leftJoin

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

outerJoin

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

partition

条件を満たす要素と条件を満たさない要素に配列を分割します。

slice

条件 (​from <= indexOf(array) < until​) を満たす要素の間隔を選択します。

some

配列内の 1 つ以上の要素が指定された条件に一致すると ​true​ を返します。

splitAt

配列を、指定された位置で 2 つに分割します。

splitWhere

配列を、条件を満たす最初の位置で 2 つに分割します。

sumBy

配列内の要素の値の合計を返します。

take

最初の ​n​ 個の要素を選択します。​n <= 0​ の場合は空の配列を返し、​n > sizeOf(array)​ の場合は元の配列を返します。

takeWhile

条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。

# Arrays (dw::core::Arrays) このモジュールには、配列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Arrays`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

countBy

マッチング関数が各要素の値に適用されるときに ​true​ を返す配列内の要素を数えます。

divideBy

配列を、指定数の要素が含まれるサブ配列に分割します。

drop

最初の ​n​ 個の要素をドロップします。​n <= 0​ の場合は元の配列を返し、​n > sizeOf(array)​ の場合は空の配列を返します。

dropWhile

条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。

every

配列内のすべての要素が条件に一致すると ​true​ を返します。

firstWith

条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​null​ を返します。

indexOf

配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​-1​ を返します。

indexWhere

配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​-1​ を返します。

join

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

leftJoin

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

outerJoin

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

partition

条件を満たす要素と条件を満たさない要素に配列を分割します。

slice

条件 (​from <= indexOf(array) < until​) を満たす要素の間隔を選択します。

some

配列内の 1 つ以上の要素が指定された条件に一致すると ​true​ を返します。

splitAt

配列を、指定された位置で 2 つに分割します。

splitWhere

配列を、条件を満たす最初の位置で 2 つに分割します。

sumBy

配列内の要素の値の合計を返します。

take

最初の ​n​ 個の要素を選択します。​n <= 0​ の場合は空の配列を返し、​n > sizeOf(array)​ の場合は元の配列を返します。

takeWhile

条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。

# Arrays (dw::core::Arrays) このモジュールには、配列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Arrays`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

countBy

マッチング関数が各要素の値に適用されるときに ​true​ を返す配列内の要素を数えます。

divideBy

配列を、指定数の要素が含まれるサブ配列に分割します。

drop

最初の ​n​ 個の要素をドロップします。​n <= 0​ の場合は元の配列を返し、​n > sizeOf(array)​ の場合は空の配列を返します。

dropWhile

条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。

every

配列内のすべての要素が条件に一致すると ​true​ を返します。

firstWith

条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​null​ を返します。

indexOf

配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​-1​ を返します。

indexWhere

配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​-1​ を返します。

join

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

leftJoin

オブジェクトの 2 つの配列を、指定された ID 条件で結合します。

outerJoin

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

partition

条件を満たす要素と条件を満たさない要素に配列を分割します。

slice

条件 (​from <= indexOf(array) < until​) を満たす要素の間隔を選択します。

some

配列内の 1 つ以上の要素が指定された条件に一致すると ​true​ を返します。

splitAt

配列を、指定された位置で 2 つに分割します。

splitWhere

配列を、条件を満たす最初の位置で 2 つに分割します。

sumBy

配列内の要素の値の合計を返します。

take

最初の ​n​ 個の要素を選択します。​n <= 0​ の場合は空の配列を返し、​n > sizeOf(array)​ の場合は元の配列を返します。

takeWhile

条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。

# asExpressionString ## [](#asexpressionstring1)asExpressionString(Path): String パスを文字列表現に変換します。 ### [](#パラメーター)パラメーター
名前 説明

path

文字列に変換するパス。

### [](#例)例 次の例では、パスを文字列表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- asExpressionString([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]) ``` #### [](#出力)出力 ```Json ".user.@name" ``` # asExpressionString ## [](#asexpressionstring1)asExpressionString(path: Path): String `Path`​ 値をパスの文字列表現に変換します。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​path

​String​ 値に変換する ​Path​ 値。

### [](#例)例 次の例では、​`Path`​ 値をオブジェクトの属性のセレクターの ​`String`​ 表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- asExpressionString([ {kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null} ]) ``` #### [](#出力)出力 ```Json ".user.@name" ``` # asExpressionString ## [](#asexpressionstring1)asExpressionString(path: Path): String `Path`​ 値をパスの文字列表現に変換します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

String​ 値に変換する ​Path​ 値。

### [](#例)例 次の例では、​`Path`​ 値をオブジェクトの属性のセレクターの ​`String`​ 表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- asExpressionString([ {kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null} ]) ``` #### [](#出力)出力 ```Json ".user.@name" ``` # asExpressionString ## [](#asexpressionstring1)asExpressionString(path: Path): String `Path`​ 値をパスの文字列表現に変換します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

String​ 値に変換する ​Path​ 値。

### [](#例)例 次の例では、​`Path`​ 値をオブジェクトの属性のセレクターの ​`String`​ 表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- asExpressionString([ {kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null} ]) ``` #### [](#出力)出力 ```Json ".user.@name" ``` # asExpressionString ## [](#asexpressionstring1)asExpressionString(path: Path): String `Path`​ 値をパスの文字列表現に変換します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

String​ 値に変換する ​Path​ 値。

### [](#例)例 次の例では、​`Path`​ 値をオブジェクトの属性のセレクターの ​`String`​ 表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- asExpressionString([ {kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null} ]) ``` #### [](#出力)出力 ```Json ".user.@name" ``` # asExpressionString ## [](#asexpressionstring1)asExpressionString(path: Path): String `Path`​ 値をパスの文字列表現に変換します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

String​ 値に変換する ​Path​ 値。

### [](#例)例 次の例では、​`Path`​ 値をオブジェクトの属性のセレクターの ​`String`​ 表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- asExpressionString([ {kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null} ]) ``` #### [](#出力)出力 ```Json ".user.@name" ``` # asin ## [](#asin1)asin(angle: Number): Number | NaN `-pi/2`​ から ​`pi/2`​ までの逆正弦値を返します。 入力の絶対値が 1 より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angle

逆正弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`asin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "asin0": asin(0), "asin13": asin(0.13), "asin-1": asin(-1), "asin1.1": asin(1.1) } ``` #### [](#出力)出力 ```Json { "asin0": 0.0, "asin13": 0.1303689797031455, "asin-1": -1.5707963267948966, "asin1.1": null } ``` # asin ## [](#asin1)asin(angle: Number): Number | NaN `-pi/2`​ から ​`pi/2`​ までの逆正弦値を返します。 入力の絶対値が 1 より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`asin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "asin0": asin(0), "asin13": asin(0.13), "asin-1": asin(-1), "asin1.1": asin(1.1) } ``` #### [](#出力)出力 ```Json { "asin0": 0.0, "asin13": 0.1303689797031455, "asin-1": -1.5707963267948966, "asin1.1": null } ``` # asin ## [](#asin1)asin(angle: Number): Number | NaN `-pi/2`​ から ​`pi/2`​ までの逆正弦値を返します。 入力の絶対値が 1 より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`asin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "asin0": asin(0), "asin13": asin(0.13), "asin-1": asin(-1), "asin1.1": asin(1.1) } ``` #### [](#出力)出力 ```Json { "asin0": 0.0, "asin13": 0.1303689797031455, "asin-1": -1.5707963267948966, "asin1.1": null } ``` # asin ## [](#asin1)asin(angle: Number): Number | NaN `-pi/2`​ から ​`pi/2`​ までの逆正弦値を返します。 入力の絶対値が 1 より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`asin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "asin0": asin(0), "asin13": asin(0.13), "asin-1": asin(-1), "asin1.1": asin(1.1) } ``` #### [](#出力)出力 ```Json { "asin0": 0.0, "asin13": 0.1303689797031455, "asin-1": -1.5707963267948966, "asin1.1": null } ``` # asin ## [](#asin1)asin(angle: Number): Number | NaN `-pi/2`​ から ​`pi/2`​ までの逆正弦値を返します。 入力の絶対値が 1 より大きい場合、結果は ​`null`​ になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正弦値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`asin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "asin0": asin(0), "asin13": asin(0.13), "asin-1": asin(-1), "asin1.1": asin(1.1) } ``` #### [](#出力)出力 ```Json { "asin0": 0.0, "asin13": 0.1303689797031455, "asin-1": -1.5707963267948966, "asin1.1": null } ``` # atan ## [](#atan1)atan(angle: Number): Number `-pi/2`​ から ​`pi/2`​ までの逆正接値を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angle

逆正接値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`atan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "atan0": atan(0), "atan13": atan(0.13), "atan-1": atan(-1) } ``` #### [](#出力)出力 ```Json { "atan0": 0.0, "atan13": 0.12927500404814307, "atan-1": -0.7853981633974483 } ``` # atan ## [](#atan1)atan(angle: Number): Number `-pi/2`​ から ​`pi/2`​ までの逆正接値を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正接値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`atan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "atan0": atan(0), "atan13": atan(0.13), "atan-1": atan(-1) } ``` #### [](#出力)出力 ```Json { "atan0": 0.0, "atan13": 0.12927500404814307, "atan-1": -0.7853981633974483 } ``` # atan ## [](#atan1)atan(angle: Number): Number `-pi/2`​ から ​`pi/2`​ までの逆正接値を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正接値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`atan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "atan0": atan(0), "atan13": atan(0.13), "atan-1": atan(-1) } ``` #### [](#出力)出力 ```Json { "atan0": 0.0, "atan13": 0.12927500404814307, "atan-1": -0.7853981633974483 } ``` # atan ## [](#atan1)atan(angle: Number): Number `-pi/2`​ から ​`pi/2`​ までの逆正接値を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正接値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`atan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "atan0": atan(0), "atan13": atan(0.13), "atan-1": atan(-1) } ``` #### [](#出力)出力 ```Json { "atan0": 0.0, "atan13": 0.12927500404814307, "atan-1": -0.7853981633974483 } ``` # atan ## [](#atan1)atan(angle: Number): Number `-pi/2`​ から ​`pi/2`​ までの逆正接値を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

逆正接値に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`atan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "atan0": atan(0), "atan13": atan(0.13), "atan-1": atan(-1) } ``` #### [](#出力)出力 ```Json { "atan0": 0.0, "atan13": 0.12927500404814307, "atan-1": -0.7853981633974483 } ``` # atBeginningOfDay ## [](#atbeginningofday1)atBeginningOfDay(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfDayDateTime": "2020-10-06T00:00:00-03:00" } ``` ## [](#atbeginningofday2)atBeginningOfDay(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayLocalDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfDayLocalDateTime": "2020-10-06T00:00:00" } ``` # atBeginningOfDay ## [](#atbeginningofday1)atBeginningOfDay(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfDayDateTime": "2020-10-06T00:00:00-03:00" } ``` ## [](#atbeginningofday2)atBeginningOfDay(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayLocalDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfDayLocalDateTime": "2020-10-06T00:00:00" } ``` # atBeginningOfDay ## [](#atbeginningofday1)atBeginningOfDay(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfDayDateTime": "2020-10-06T00:00:00-03:00" } ``` ## [](#atbeginningofday2)atBeginningOfDay(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayLocalDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfDayLocalDateTime": "2020-10-06T00:00:00" } ``` # atBeginningOfDay ## [](#atbeginningofday1)atBeginningOfDay(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfDayDateTime": "2020-10-06T00:00:00-03:00" } ``` ## [](#atbeginningofday2)atBeginningOfDay(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayLocalDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfDayLocalDateTime": "2020-10-06T00:00:00" } ``` # atBeginningOfDay ## [](#atbeginningofday1)atBeginningOfDay(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfDayDateTime": "2020-10-06T00:00:00-03:00" } ``` ## [](#atbeginningofday2)atBeginningOfDay(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_日_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の時間、分、秒は ​`00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された日の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfDayLocalDateTime": atBeginningOfDay(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfDayLocalDateTime": "2020-10-06T00:00:00" } ``` # atBeginningOfHour ## [](#atbeginningofhour1)atBeginningOfHour(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfHourDateTime": "2020-10-06T18:00:00-03:00" } ``` ## [](#atbeginningofhour2)atBeginningOfHour(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfHourLocalDateTime": "2020-10-06T18:00:00" } ``` ## [](#atbeginningofhour3)atBeginningOfHour(localTime: LocalTime): LocalTime 入力内のその値を指定された​_時間_​の開始に変更する新しい ​`LocalTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-3)パラメーター
名前 説明

​localTime

参照する ​LocalTime​ 値。

### [](#例-3)例 次の例では、​`LocalTime`​ 値を指定された時間の開始に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalTime": atBeginningOfHour(|18:23:20.351|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfHourLocalTime": "18:00:00" } ``` ## [](#atbeginningofhour4)atBeginningOfHour(time: Time): Time 入力値を指定された​_時間_​の開始に変更する新しい ​`Time`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-4)パラメーター
名前 説明

​time

参照する ​Time​ 値。

### [](#例-4)例 次の例では、​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourTime": atBeginningOfHour(|18:23:20.351-03:00|) } ``` #### [](#出力-4)出力 ```Json { "atBeginningOfHourTime": "18:00:00-03:00" } ``` # atBeginningOfHour ## [](#atbeginningofhour1)atBeginningOfHour(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfHourDateTime": "2020-10-06T18:00:00-03:00" } ``` ## [](#atbeginningofhour2)atBeginningOfHour(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfHourLocalDateTime": "2020-10-06T18:00:00" } ``` ## [](#atbeginningofhour3)atBeginningOfHour(localTime: LocalTime): LocalTime 入力内のその値を指定された​_時間_​の開始に変更する新しい ​`LocalTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

localTime

参照する ​LocalTime​ 値。

### [](#例-3)例 次の例では、​`LocalTime`​ 値を指定された時間の開始に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalTime": atBeginningOfHour(|18:23:20.351|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfHourLocalTime": "18:00:00" } ``` ## [](#atbeginningofhour4)atBeginningOfHour(time: Time): Time 入力値を指定された​_時間_​の開始に変更する新しい ​`Time`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

time

参照する ​Time​ 値。

### [](#例-4)例 次の例では、​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourTime": atBeginningOfHour(|18:23:20.351-03:00|) } ``` #### [](#出力-4)出力 ```Json { "atBeginningOfHourTime": "18:00:00-03:00" } ``` # atBeginningOfHour ## [](#atbeginningofhour1)atBeginningOfHour(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfHourDateTime": "2020-10-06T18:00:00-03:00" } ``` ## [](#atbeginningofhour2)atBeginningOfHour(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfHourLocalDateTime": "2020-10-06T18:00:00" } ``` ## [](#atbeginningofhour3)atBeginningOfHour(localTime: LocalTime): LocalTime 入力内のその値を指定された​_時間_​の開始に変更する新しい ​`LocalTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

localTime

参照する ​LocalTime​ 値。

### [](#例-3)例 次の例では、​`LocalTime`​ 値を指定された時間の開始に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalTime": atBeginningOfHour(|18:23:20.351|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfHourLocalTime": "18:00:00" } ``` ## [](#atbeginningofhour4)atBeginningOfHour(time: Time): Time 入力値を指定された​_時間_​の開始に変更する新しい ​`Time`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

time

参照する ​Time​ 値。

### [](#例-4)例 次の例では、​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourTime": atBeginningOfHour(|18:23:20.351-03:00|) } ``` #### [](#出力-4)出力 ```Json { "atBeginningOfHourTime": "18:00:00-03:00" } ``` # atBeginningOfHour ## [](#atbeginningofhour1)atBeginningOfHour(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfHourDateTime": "2020-10-06T18:00:00-03:00" } ``` ## [](#atbeginningofhour2)atBeginningOfHour(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfHourLocalDateTime": "2020-10-06T18:00:00" } ``` ## [](#atbeginningofhour3)atBeginningOfHour(localTime: LocalTime): LocalTime 入力内のその値を指定された​_時間_​の開始に変更する新しい ​`LocalTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

localTime

参照する ​LocalTime​ 値。

### [](#例-3)例 次の例では、​`LocalTime`​ 値を指定された時間の開始に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalTime": atBeginningOfHour(|18:23:20.351|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfHourLocalTime": "18:00:00" } ``` ## [](#atbeginningofhour4)atBeginningOfHour(time: Time): Time 入力値を指定された​_時間_​の開始に変更する新しい ​`Time`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

time

参照する ​Time​ 値。

### [](#例-4)例 次の例では、​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourTime": atBeginningOfHour(|18:23:20.351-03:00|) } ``` #### [](#出力-4)出力 ```Json { "atBeginningOfHourTime": "18:00:00-03:00" } ``` # atBeginningOfHour ## [](#atbeginningofhour1)atBeginningOfHour(dateTime: DateTime): DateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`DateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfHourDateTime": "2020-10-06T18:00:00-03:00" } ``` ## [](#atbeginningofhour2)atBeginningOfHour(localDateTime: LocalDateTime): LocalDateTime 入力内の ​`Time`​ 値を指定された​_時間_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalDateTime": atBeginningOfHour(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfHourLocalDateTime": "2020-10-06T18:00:00" } ``` ## [](#atbeginningofhour3)atBeginningOfHour(localTime: LocalTime): LocalTime 入力内のその値を指定された​_時間_​の開始に変更する新しい ​`LocalTime`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

localTime

参照する ​LocalTime​ 値。

### [](#例-3)例 次の例では、​`LocalTime`​ 値を指定された時間の開始に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourLocalTime": atBeginningOfHour(|18:23:20.351|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfHourLocalTime": "18:00:00" } ``` ## [](#atbeginningofhour4)atBeginningOfHour(time: Time): Time 入力値を指定された​_時間_​の開始に変更する新しい ​`Time`​ 値を返します。 入力内の分および秒は ​`00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

time

参照する ​Time​ 値。

### [](#例-4)例 次の例では、​`Time`​ 値を指定された時間の開始に変更します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfHourTime": atBeginningOfHour(|18:23:20.351-03:00|) } ``` #### [](#出力-4)出力 ```Json { "atBeginningOfHourTime": "18:00:00-03:00" } ``` # atBeginningOfMonth ## [](#atbeginningofmonth1)atBeginningOfMonth(dateTime: DateTime): DateTime 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値を指定された月の初日に変更し、​`Time`​ 値を ​`00:00:00`​ に設定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfMonthDateTime": "2020-10-01T00:00:00-03:00" } ``` ## [](#atbeginningofmonth2)atBeginningOfMonth(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`LocalTime`​ 値を指定された​_月_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`LocalTime`​ 値を指定された月の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthLocalDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfMonthLocalDateTime": "2020-10-01T00:00:00" } ``` ## [](#atbeginningofmonth3)atBeginningOfMonth(date: Date): Date 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`Date`​ 値を返します。 入力内の日は ​`01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-3)パラメーター
名前 説明

​date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値を指定された月の初日に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfMonthDate: atBeginningOfMonth(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfMonthDate": "2020-10-01" } ``` # atBeginningOfMonth ## [](#atbeginningofmonth1)atBeginningOfMonth(dateTime: DateTime): DateTime 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値を指定された月の初日に変更し、​`Time`​ 値を ​`00:00:00`​ に設定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfMonthDateTime": "2020-10-01T00:00:00-03:00" } ``` ## [](#atbeginningofmonth2)atBeginningOfMonth(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`LocalTime`​ 値を指定された​_月_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`LocalTime`​ 値を指定された月の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthLocalDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfMonthLocalDateTime": "2020-10-01T00:00:00" } ``` ## [](#atbeginningofmonth3)atBeginningOfMonth(date: Date): Date 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`Date`​ 値を返します。 入力内の日は ​`01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値を指定された月の初日に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfMonthDate: atBeginningOfMonth(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfMonthDate": "2020-10-01" } ``` # atBeginningOfMonth ## [](#atbeginningofmonth1)atBeginningOfMonth(dateTime: DateTime): DateTime 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値を指定された月の初日に変更し、​`Time`​ 値を ​`00:00:00`​ に設定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfMonthDateTime": "2020-10-01T00:00:00-03:00" } ``` ## [](#atbeginningofmonth2)atBeginningOfMonth(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`LocalTime`​ 値を指定された​_月_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`LocalTime`​ 値を指定された月の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthLocalDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfMonthLocalDateTime": "2020-10-01T00:00:00" } ``` ## [](#atbeginningofmonth3)atBeginningOfMonth(date: Date): Date 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`Date`​ 値を返します。 入力内の日は ​`01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値を指定された月の初日に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfMonthDate: atBeginningOfMonth(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfMonthDate": "2020-10-01" } ``` # atBeginningOfMonth ## [](#atbeginningofmonth1)atBeginningOfMonth(dateTime: DateTime): DateTime 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値を指定された月の初日に変更し、​`Time`​ 値を ​`00:00:00`​ に設定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfMonthDateTime": "2020-10-01T00:00:00-03:00" } ``` ## [](#atbeginningofmonth2)atBeginningOfMonth(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`LocalTime`​ 値を指定された​_月_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`LocalTime`​ 値を指定された月の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthLocalDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfMonthLocalDateTime": "2020-10-01T00:00:00" } ``` ## [](#atbeginningofmonth3)atBeginningOfMonth(date: Date): Date 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`Date`​ 値を返します。 入力内の日は ​`01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値を指定された月の初日に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfMonthDate: atBeginningOfMonth(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfMonthDate": "2020-10-01" } ``` # atBeginningOfMonth ## [](#atbeginningofmonth1)atBeginningOfMonth(dateTime: DateTime): DateTime 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値を指定された月の初日に変更し、​`Time`​ 値を ​`00:00:00`​ に設定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfMonthDateTime": "2020-10-01T00:00:00-03:00" } ``` ## [](#atbeginningofmonth2)atBeginningOfMonth(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`LocalTime`​ 値を指定された​_月_​の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 入力内の日時は ​`01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`LocalTime`​ 値を指定された月の開始に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { "atBeginningOfMonthLocalDateTime": atBeginningOfMonth(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfMonthLocalDateTime": "2020-10-01T00:00:00" } ``` ## [](#atbeginningofmonth3)atBeginningOfMonth(date: Date): Date 入力の ​`Day`​ 値を指定された​_月_​の初日に変更する新しい ​`Date`​ 値を返します。 入力内の日は ​`01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値を指定された月の初日に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfMonthDate: atBeginningOfMonth(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfMonthDate": "2020-10-01" } ``` # atBeginningOfWeek ## [](#atbeginningofweek1)atBeginningOfWeek(dateTime: DateTime): DateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`DateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfWeekDateTime": "2020-10-04T00:00:00-03:00" } ``` ## [](#atbeginningofweek2)atBeginningOfWeek(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekLocalDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfWeekLocalDateTime": "2020-10-04T00:00:00" } ``` ## [](#atbeginningofweek3)atBeginningOfWeek(date: Date): Date `Date`​ 入力を指定された​_週_​の初日に変更する新しい ​`Date`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-3)パラメーター
名前 説明

​date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値 (​`06`​) を ​`2020-10-06`​ (木曜日) が含まれる週の初日、つまり ​`2020-10-04`​ (日曜日) に変更します。 `Day`​ 値は ​`06`​ から ​`04`​ に変更されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDate: atBeginningOfWeek(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfWeekDate": "2020-10-04" } ``` # atBeginningOfWeek ## [](#atbeginningofweek1)atBeginningOfWeek(dateTime: DateTime): DateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`DateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfWeekDateTime": "2020-10-04T00:00:00-03:00" } ``` ## [](#atbeginningofweek2)atBeginningOfWeek(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekLocalDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfWeekLocalDateTime": "2020-10-04T00:00:00" } ``` ## [](#atbeginningofweek3)atBeginningOfWeek(date: Date): Date `Date`​ 入力を指定された​_週_​の初日に変更する新しい ​`Date`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値 (​`06`​) を ​`2020-10-06`​ (木曜日) が含まれる週の初日、つまり ​`2020-10-04`​ (日曜日) に変更します。 `Day`​ 値は ​`06`​ から ​`04`​ に変更されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDate: atBeginningOfWeek(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfWeekDate": "2020-10-04" } ``` # atBeginningOfWeek ## [](#atbeginningofweek1)atBeginningOfWeek(dateTime: DateTime): DateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`DateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfWeekDateTime": "2020-10-04T00:00:00-03:00" } ``` ## [](#atbeginningofweek2)atBeginningOfWeek(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekLocalDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfWeekLocalDateTime": "2020-10-04T00:00:00" } ``` ## [](#atbeginningofweek3)atBeginningOfWeek(date: Date): Date `Date`​ 入力を指定された​_週_​の初日に変更する新しい ​`Date`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値 (​`06`​) を ​`2020-10-06`​ (木曜日) が含まれる週の初日、つまり ​`2020-10-04`​ (日曜日) に変更します。 `Day`​ 値は ​`06`​ から ​`04`​ に変更されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDate: atBeginningOfWeek(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfWeekDate": "2020-10-04" } ``` # atBeginningOfWeek ## [](#atbeginningofweek1)atBeginningOfWeek(dateTime: DateTime): DateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`DateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfWeekDateTime": "2020-10-04T00:00:00-03:00" } ``` ## [](#atbeginningofweek2)atBeginningOfWeek(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekLocalDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfWeekLocalDateTime": "2020-10-04T00:00:00" } ``` ## [](#atbeginningofweek3)atBeginningOfWeek(date: Date): Date `Date`​ 入力を指定された​_週_​の初日に変更する新しい ​`Date`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値 (​`06`​) を ​`2020-10-06`​ (木曜日) が含まれる週の初日、つまり ​`2020-10-04`​ (日曜日) に変更します。 `Day`​ 値は ​`06`​ から ​`04`​ に変更されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDate: atBeginningOfWeek(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfWeekDate": "2020-10-04" } ``` # atBeginningOfWeek ## [](#atbeginningofweek1)atBeginningOfWeek(dateTime: DateTime): DateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`DateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfWeekDateTime": "2020-10-04T00:00:00-03:00" } ``` ## [](#atbeginningofweek2)atBeginningOfWeek(localDateTime: LocalDateTime): LocalDateTime 入力の ​`Day`​ 値と ​`Time`​ 値を指定された​_週_​の初日の開始に変更する新しい ​`LocalDateTime`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力内の ​`Day`​ 値と ​`Time`​ 値 (​`06T18:23:20.351`​) を指定された​_週_​の初日の開始 (​`04T00:00:00`​) に変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekLocalDateTime: atBeginningOfWeek(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfWeekLocalDateTime": "2020-10-04T00:00:00" } ``` ## [](#atbeginningofweek3)atBeginningOfWeek(date: Date): Date `Date`​ 入力を指定された​_週_​の初日に変更する新しい ​`Date`​ 値を返します。 この関数では、日曜日を週の初日として扱います。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力内の ​`Day`​ 値 (​`06`​) を ​`2020-10-06`​ (木曜日) が含まれる週の初日、つまり ​`2020-10-04`​ (日曜日) に変更します。 `Day`​ 値は ​`06`​ から ​`04`​ に変更されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfWeekDate: atBeginningOfWeek(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfWeekDate": "2020-10-04" } ``` # atBeginningOfYear ## [](#atbeginningofyear1)atBeginningOfYear(dateTime: DateTime): DateTime `DateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力 (​`|2020-10-06T18:23:20.351-03:00|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfYearDateTime": "2020-01-01T00:00:00.000-03:00" } ``` ## [](#atbeginningofyear2)atBeginningOfYear(localDateTime: LocalDateTime): LocalDateTime `LocalDateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`LocalDateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力 (​`|2020-10-06T18:23:20.351|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearLocalDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfYearLocalDateTime": "2020-01-01T00:00:00" } ``` ## [](#atbeginningofyear3)atBeginningOfYear(date: Date): Date `Date`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`Date`​ 値を返します。 入力内の月と日は ​`01-01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-3)パラメーター
名前 説明

​date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力 (​`|2020-10-06|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDate: atBeginningOfYear(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfYearDate": "2020-01-01" } ``` # atBeginningOfYear ## [](#atbeginningofyear1)atBeginningOfYear(dateTime: DateTime): DateTime `DateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力 (​`|2020-10-06T18:23:20.351-03:00|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfYearDateTime": "2020-01-01T00:00:00.000-03:00" } ``` ## [](#atbeginningofyear2)atBeginningOfYear(localDateTime: LocalDateTime): LocalDateTime `LocalDateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`LocalDateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力 (​`|2020-10-06T18:23:20.351|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearLocalDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfYearLocalDateTime": "2020-01-01T00:00:00" } ``` ## [](#atbeginningofyear3)atBeginningOfYear(date: Date): Date `Date`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`Date`​ 値を返します。 入力内の月と日は ​`01-01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力 (​`|2020-10-06|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDate: atBeginningOfYear(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfYearDate": "2020-01-01" } ``` # atBeginningOfYear ## [](#atbeginningofyear1)atBeginningOfYear(dateTime: DateTime): DateTime `DateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力 (​`|2020-10-06T18:23:20.351-03:00|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfYearDateTime": "2020-01-01T00:00:00.000-03:00" } ``` ## [](#atbeginningofyear2)atBeginningOfYear(localDateTime: LocalDateTime): LocalDateTime `LocalDateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`LocalDateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力 (​`|2020-10-06T18:23:20.351|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearLocalDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfYearLocalDateTime": "2020-01-01T00:00:00" } ``` ## [](#atbeginningofyear3)atBeginningOfYear(date: Date): Date `Date`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`Date`​ 値を返します。 入力内の月と日は ​`01-01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力 (​`|2020-10-06|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDate: atBeginningOfYear(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfYearDate": "2020-01-01" } ``` # atBeginningOfYear ## [](#atbeginningofyear1)atBeginningOfYear(dateTime: DateTime): DateTime `DateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力 (​`|2020-10-06T18:23:20.351-03:00|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfYearDateTime": "2020-01-01T00:00:00.000-03:00" } ``` ## [](#atbeginningofyear2)atBeginningOfYear(localDateTime: LocalDateTime): LocalDateTime `LocalDateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`LocalDateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力 (​`|2020-10-06T18:23:20.351|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearLocalDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfYearLocalDateTime": "2020-01-01T00:00:00" } ``` ## [](#atbeginningofyear3)atBeginningOfYear(date: Date): Date `Date`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`Date`​ 値を返します。 入力内の月と日は ​`01-01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力 (​`|2020-10-06|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDate: atBeginningOfYear(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfYearDate": "2020-01-01" } ``` # atBeginningOfYear ## [](#atbeginningofyear1)atBeginningOfYear(dateTime: DateTime): DateTime `DateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`DateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

参照する ​DateTime​ 値。

### [](#例)例 次の例では、​`DateTime`​ 入力 (​`|2020-10-06T18:23:20.351-03:00|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351-03:00|) } ``` #### [](#出力)出力 ```Json { "atBeginningOfYearDateTime": "2020-01-01T00:00:00.000-03:00" } ``` ## [](#atbeginningofyear2)atBeginningOfYear(localDateTime: LocalDateTime): LocalDateTime `LocalDateTime`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`LocalDateTime`​ 値を返します。​`Time`​ 値も ​`00:00:00`​ に設定します。 入力内の月、日、時刻は ​`01-01T00:00:00`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

localDateTime

参照する ​LocalDateTime​ 値。

### [](#例-2)例 次の例では、​`LocalDateTime`​ 入力 (​`|2020-10-06T18:23:20.351|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearLocalDateTime: atBeginningOfYear(|2020-10-06T18:23:20.351|) } ``` #### [](#出力-2)出力 ```Json { "atBeginningOfYearLocalDateTime": "2020-01-01T00:00:00" } ``` ## [](#atbeginningofyear3)atBeginningOfYear(date: Date): Date `Date`​ 値を入力として取得し、入力内で指定された​_年_​の初日の ​`Date`​ 値を返します。 入力内の月と日は ​`01-01`​ に変更されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

date

参照する ​Date​ 値。

### [](#例-3)例 次の例では、​`Date`​ 入力 (​`|2020-10-06|`​) を入力内の ​`Year`​ 値 (​`2020`​) の初日の日付に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { atBeginningOfYearDate: atBeginningOfYear(|2020-10-06|) } ``` #### [](#出力-3)出力 ```Json { "atBeginningOfYearDate": "2020-01-01" } ``` # attr ## [](#attr1)attr(Namespace | Null, String): PathElement この関数は、XML 属性を選択するために使用する ​`PathElement`​ を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

​namespace

選択する属性の名前空間。指定しない場合、null 値が設定されます。

​name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) の属性セレクターを作成し、セレクターの値を ​`"myAttr"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Attribute"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/fo --- attr(ns0 , "myAttr") ``` #### [](#出力)出力 ```Json { "kind": "Attribute", "namespace": "http://acme.com/foo", "selector": "myAttr" } ``` # attr ## [](#attr1)attr(namespace: Namespace | Null = null, name: String): PathElement この関数は、XML 属性を選択するために使用する ​`PathElement`​ を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​namespace

選択する属性の名前空間。指定しない場合、null 値が設定されます。

​name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) の属性セレクターを作成し、セレクターの値を ​`"myAttr"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Attribute"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/fo --- attr(ns0 , "myAttr") ``` #### [](#出力)出力 ```Json { "kind": "Attribute", "namespace": "http://acme.com/foo", "selector": "myAttr" } ``` # attr ## [](#attr1)attr(namespace: Namespace | Null = null, name: String): PathElement この関数は、XML 属性を選択するために使用する ​`PathElement`​ を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する属性の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) の属性セレクターを作成し、セレクターの値を ​`"myAttr"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Attribute"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/fo --- attr(ns0 , "myAttr") ``` #### [](#出力)出力 ```Json { "kind": "Attribute", "namespace": "http://acme.com/foo", "selector": "myAttr" } ``` # attr ## [](#attr1)attr(namespace: Namespace | Null = null, name: String): PathElement この関数は、XML 属性を選択するために使用する ​`PathElement`​ を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する属性の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) の属性セレクターを作成し、セレクターの値を ​`"myAttr"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Attribute"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/fo --- attr(ns0 , "myAttr") ``` #### [](#出力)出力 ```Json { "kind": "Attribute", "namespace": "http://acme.com/foo", "selector": "myAttr" } ``` # attr ## [](#attr1)attr(namespace: Namespace | Null = null, name: String): PathElement この関数は、XML 属性を選択するために使用する ​`PathElement`​ を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する属性の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) の属性セレクターを作成し、セレクターの値を ​`"myAttr"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Attribute"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/fo --- attr(ns0 , "myAttr") ``` #### [](#出力)出力 ```Json { "kind": "Attribute", "namespace": "http://acme.com/foo", "selector": "myAttr" } ``` # attr ## [](#attr1)attr(namespace: Namespace | Null = null, name: String): PathElement この関数は、XML 属性を選択するために使用する ​`PathElement`​ を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する属性の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) の属性セレクターを作成し、セレクターの値を ​`"myAttr"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Attribute"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/fo --- attr(ns0 , "myAttr") ``` #### [](#出力)出力 ```Json { "kind": "Attribute", "namespace": "http://acme.com/foo", "selector": "myAttr" } ``` # avg ## [](#avg1)avg(Array): Number 配列に含まれる数値の平均を返します。 配列が空か、配列に非数値が含まれる場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

​values

数値の入力配列。

### [](#例)例 次の例では、複数の配列の平均を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: avg([1, 1000]), b: avg([1, 2, 3]) } ``` #### [](#出力)出力 ```JSON { "a": 500.5, "b": 2.0 } ``` # avg ## [](#avg1)avg(values: Array): Number 配列に含まれる数値の平均を返します。 配列が空か、配列に非数値が含まれる場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

​values

数値の入力配列。

### [](#例)例 次の例では、複数の配列の平均を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: avg([1, 1000]), b: avg([1, 2, 3]) } ``` #### [](#出力)出力 ```JSON { "a": 500.5, "b": 2.0 } ``` # avg ## [](#avg1)avg(values: Array): Number 配列に含まれる数値の平均を返します。 配列が空か、配列に非数値が含まれる場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、複数の配列の平均を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: avg([1, 1000]), b: avg([1, 2, 3]) } ``` #### [](#出力)出力 ```JSON { "a": 500.5, "b": 2.0 } ``` # avg ## [](#avg1)avg(values: Array): Number 配列に含まれる数値の平均を返します。 配列が空か、配列に非数値が含まれる場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、複数の配列の平均を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: avg([1, 1000]), b: avg([1, 2, 3]) } ``` #### [](#出力)出力 ```JSON { "a": 500.5, "b": 2.0 } ``` # avg ## [](#avg1)avg(values: Array): Number 配列に含まれる数値の平均を返します。 配列が空か、配列に非数値が含まれる場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、複数の配列の平均を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: avg([1, 1000]), b: avg([1, 2, 3]) } ``` #### [](#出力)出力 ```JSON { "a": 500.5, "b": 2.0 } ``` # avg ## [](#avg1)avg(values: Array): Number 配列に含まれる数値の平均を返します。 配列が空か、配列に非数値が含まれる場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、複数の配列の平均を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: avg([1, 1000]), b: avg([1, 2, 3]) } ``` #### [](#出力)出力 ```JSON { "a": 500.5, "b": 2.0 } ``` # Avro スキーマの型の再利用 Avro スキーマは、Apache Avro 形式で保存するレコードの構造とデータ型を定義する正式な仕様です。Apache Avro 形式は、Apache Hadoop や Apache Kafka などのビッグデータシステムでよく使用されるデータシリアル化システムです。Avro スキーマにより、関与するプログラミング言語やプラットフォームに関係なく、Avro に書き込まれたデータを容易に理解したり、異なるシステム間で処理したりできます。 Avro スキーマは JSON データ形式で定義されます。​`avroschema!`​ モジュールローダーを使用して、Avro スキーマファイル (​`.json`​ または ​`.avsc`​) をモジュールとして DataWeave スクリプトにインポートできます。このローダーにより、各自のスキーマで宣言されている型を DataWeave で直接使用できます。 DataWeave は、Avro スキーマファイルを読み込み、ファイルの宣言を他の DataWeave モジュールの型と同じようにアクセスできる DataWeave 型ディレクティブに変換します。ディレクティブを使用して、新しい型を作成したり、変数の型をチェックしたり、パターンを照合したり、型を使用する新しい関数を宣言したりします。DataWeave では、これらの型の使用方法に制限はありません。 ## [](#インポート構文)インポート構文 Avro スキーマで定義されている型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりします。スキーマでは、スキーマで指定された名前を Avro 名前付き型 (​`record`​ や ​`enum`​ など) で使用します。異なる名前の Avro スキーマの型 (​`Root as Country`​ など) をインポートすることもできます。スクリプトでその名前を使用して型を参照できます。 - `pathToAvroSchemaFile`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の拡張子 (​`.json`​ または ​`.avsc`​) を削除します。たとえば、スキーマへのパスが ​`example/schema/User.json`​ の場合、​`example::schema::User`​ を使用します。 import \_typesToImport\_ from avroschema!\_pathToAvroSchemaFile\_ 次の例は、型をインポートする方法を示しています。 import \* from avroschema!example::schema::User ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 次の例では Avro スキーマを使用します。 User.json (​`example/schema/User.json`​) ```JSON { "name": "User", "type": "record", "fields": [ {"name": "name", "type": "string" }, {"name": "email", "type": "string" }, {"name": "address", "type": ["null", "string"]}, {"name": "telephone", "type": ["null", "string"]} ] } ``` 前の例の import ディレクティブをスクリプトヘッダーに含めると、Avro スキーマの既存の型が読み込まれます。​`import * from avroschema!example::schema::User`​ では、唯一の既存の型は、ルートで指定された ​`User`​ 型です。この型は、4 つのプロパティ (​`name`​、​`email`​、​`address`​、​`telephone`​) を持つオブジェクトを記述します。このディレクティブは、DataWeave スクリプトで次の型を宣言することに相当します。 DataWeave スクリプト: ```dataweave %dw 2.0 type User = {| name: String, email: String, address?: Null | String, telephone?: Null | String |} ``` `address`​ と ​`telephone`​ は省略可能な項目 (​`?`​ で示される) です。 `User`​ 型を使用して、値が Avro スキーマで定義された構造に従っているかどうかを判断できます。 次の例では、オブジェクトに必須項目 ​`name`​ および ​`email`​ が含まれているため、値 ​`true`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from avroschema!example::schema::User --- { name: "John", email: "john@acme.org" } is User ``` 出力: "true" 次の例では、オブジェクトに必須項目 ​`name`​ が含まれていないため、値 ​`false`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from avroschema!example::schema::User --- { email: "john@acme.org", address: "123 Evergreen St.", telephone: "555 555 555" } is User ``` 出力: "false" ## [](#スキーマ内での名前付き型の使用)スキーマ内での名前付き型の使用 DataWeave はスキーマで定義された名前付き型ごとに個別の型を生成します。名前付き型には、レコード、列挙、および固定型があります。 Address.json (​`example/schema/Address.json`​) ```JSON { "name": "Address", "type": "record", "fields" : [ {"name": "city", "type": "string"}, {"name": "state", "type": "string"}, { "name": "country", "type": { "name": "Country", "type": "record", "fields": [ {"name": "isoCode", "type": "string"}, {"name": "name", "type": "string"} ] } } ] } ``` 次のディレクティブを使用して、前のスキーマの型をインポートできます。 import \* from avroschema!example::schema::Address スキーマで定義された型には、次の型の宣言と同じ効果があります。 type Address = {| city: String, state: String, country: Country |} type Country = {| isoCode: String, name: String |} インポートディレクティブを使用して、スキーマの 1 つの型をインポートします。 import Country from avrochema!example::schema::Address 型名の競合を回避するために、​`as`​ キーワードを使用して、インポートされた型名を別の名前に変更できます。 import Country as Address\_Country from avroschema!example::schema::Address # Avro 形式 MIME タイプ: `application/avro`​ ID: `avro`​ Avro は、スキーマを使用してそのデータを構造化するバイナリデータ形式です。DataWeave は、スキーマを使用してデータを解析します。Avro データ構造は、DataWeave データ構造にマップされます。 ## [](#mapping)Java 値のマッピング 次の表に、Avro と DataWeave の型のマッピングを示します。
Avro 型 DataWeave 型

​long

Number​

​int

Number​

​double

Number​

​boolean

Boolean​

​string

String​

​fixed

String​

​bytes

Binary​

​enum

String​

​map

​Object​

​array

Array​

​null

Null​

## [](#examples)例: Avro スキーマを使用する 次の例は、ライターが Avro データ構造の出力に使用するスキーマの指定方法を示しています。 ### [](#入力)入力 Avro スキーマは次のようになります。 schema.json: ```json { "type": "record", "name": "userInfo", "namespace": "my.example", "fields": [ { "name": "username", "type": "string", "default": "NONE" }, { "name": "age", "type": "int", "default": -1 }, { "name": "phone", "type": "string", "default": "NONE" }, { "name": "housenum", "type": "string", "default": "NONE" } ] } ``` ### [](#取得元)取得元 この DataWeave スクリプトのヘッダーの ​`schemaUrl`​ プロパティでスキーマ (​`schema.json`​) を DataWeave ライターに渡します。ライターは、スキーマを使用してスクリプトの本文のコンテンツを構造化し、結果を Avro 形式で出力します。 ```weave %dw 2.0 output application/avro schemaUrl="classpath://schema.json" --- [{ username: "Mariano", age: 35, phone: "213", housenum: "123" }, { username: "Leandro", age: 29, phone: "213", housenum: "123" }, { username: "Christian", age: 25, phone: "213", housenum: "123" }] ``` ## [](#properties)Configuration のプロパティ DataWeave では、Avro の次の設定プロパティがサポートされています。 ### [](#リーダープロパティ-avro)リーダープロパティ (Avro) Avro 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​schemaUrl​ (必須)

​String

​null

Avro スキーマの URL。有効な値は、​classpath://​、​file://​、​http://​ です。

### [](#ライタープロパティ-avro)ライタープロパティ (Avro) Avro 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

バッファライターのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​schemaUrl​ (必須)

​String

​null

Avro スキーマの URL。有効な値は、​classpath://​、​file://​、​http://​ です。

## [](#mime_types)サポートされる MIME タイプ Avro 形式では、次の MIME タイプがサポートされています。
MIME タイプ

application/avro​

# Avro 形式 MIME タイプ: `application/avro`​ ID: `avro`​ Avro は、スキーマを使用してそのデータを構造化するバイナリデータ形式です。DataWeave は、スキーマを使用してデータを解析します。Avro データ構造は、DataWeave データ構造にマップされます。 ## [](#mapping)Java 値のマッピング 次の表に、Avro と DataWeave の型のマッピングを示します。
Avro 型 DataWeave 型

​long

Number​

​int

Number​

​double

Number​

​boolean

Boolean​

​string

String​

​fixed

String​

​bytes

Binary​

​enum

String​

​map

​Object​

​array

Array​

​null

Null​

## [](#examples)例: Avro スキーマを使用する 次の例は、ライターが Avro データ構造の出力に使用するスキーマの指定方法を示しています。 ### [](#入力)入力 Avro スキーマは次のようになります。 schema.json: ```json { "type": "record", "name": "userInfo", "namespace": "my.example", "fields": [ { "name": "username", "type": "string", "default": "NONE" }, { "name": "age", "type": "int", "default": -1 }, { "name": "phone", "type": "string", "default": "NONE" }, { "name": "housenum", "type": "string", "default": "NONE" } ] } ``` ### [](#ソース)ソース この DataWeave スクリプトのヘッダーの ​`schemaUrl`​ プロパティでスキーマ (​`schema.json`​) を DataWeave ライターに渡します。ライターは、スキーマを使用してスクリプトの本文のコンテンツを構造化し、結果を Avro 形式で出力します。 ```weave %dw 2.0 output application/avro schemaUrl="classpath://schema.json" --- [{ username: "Mariano", age: 35, phone: "213", housenum: "123" }, { username: "Leandro", age: 29, phone: "213", housenum: "123" }, { username: "Christian", age: 25, phone: "213", housenum: "123" }] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

schemaUrl​ (必須)

String​

​null​

Avro スキーマの URL。有効な URI スキームは ​classpath://​、​file://​、または ​http://​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

schemaUrl​ (必須)

String​

​null​

Avro スキーマの URL。有効な URI スキームは ​classpath://​、​file://​、または ​http://​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/avro​

# Avro 形式 MIME タイプ: `application/avro` ID: `avro` Avro は、スキーマを使用してそのデータを構造化するバイナリデータ形式です。DataWeave は、スキーマを使用してデータを解析します。Avro データ構造は、DataWeave データ構造にマップされます。 ## [](#mapping)Java 値のマッピング 次の表に、Avro と DataWeave の型のマッピングを示します。
Avro 型 DataWeave 型

long

Number

int

Number

double

Number

boolean

Boolean

string

String

fixed

String

bytes

Binary

enum

String

map

Object

array

Array

null

Null

## [](#examples)例: Avro スキーマを使用する 次の例は、ライターが Avro データ構造の出力に使用するスキーマの指定方法を示しています。 ### [](#入力)入力 Avro スキーマは次のようになります。 schema.json: ```json { "type": "record", "name": "userInfo", "namespace": "my.example", "fields": [ { "name": "username", "type": "string", "default": "NONE" }, { "name": "age", "type": "int", "default": -1 }, { "name": "phone", "type": "string", "default": "NONE" }, { "name": "housenum", "type": "string", "default": "NONE" } ] } ``` ### [](#ソース)ソース この DataWeave スクリプトのヘッダーの ​`schemaUrl`​ プロパティでスキーマ (​`schema.json`​) を DataWeave ライターに渡します。ライターは、スキーマを使用してスクリプトの本文のコンテンツを構造化し、結果を Avro 形式で出力します。 ```weave %dw 2.0 output application/avro schemaUrl="classpath://schema.json" --- [{ username: "Mariano", age: 35, phone: "213", housenum: "123" }, { username: "Leandro", age: 29, phone: "213", housenum: "123" }, { username: "Christian", age: 25, phone: "213", housenum: "123" }] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/avro

# Avro 形式 MIME タイプ: `application/avro` ID: `avro` Avro は、スキーマを使用してそのデータを構造化するバイナリデータ形式です。DataWeave は、スキーマを使用してデータを解析します。Avro データ構造は、DataWeave データ構造にマップされます。 ## [](#mapping)Java 値のマッピング 次の表に、Avro と DataWeave の型のマッピングを示します。
Avro 型 DataWeave 型

long

Number

int

Number

double

Number

boolean

Boolean

string

String

fixed

String

bytes

Binary

enum

String

map

Object

array

Array

null

Null

## [](#examples)例: Avro スキーマを使用する 次の例は、ライターが Avro データ構造の出力に使用するスキーマの指定方法を示しています。 ### [](#入力)入力 Avro スキーマは次のようになります。 schema.json: ```json { "type": "record", "name": "userInfo", "namespace": "my.example", "fields": [ { "name": "username", "type": "string", "default": "NONE" }, { "name": "age", "type": "int", "default": -1 }, { "name": "phone", "type": "string", "default": "NONE" }, { "name": "housenum", "type": "string", "default": "NONE" } ] } ``` ### [](#ソース)ソース この DataWeave スクリプトのヘッダーの ​`schemaUrl`​ プロパティでスキーマ (​`schema.json`​) を DataWeave ライターに渡します。ライターは、スキーマを使用してスクリプトの本文のコンテンツを構造化し、結果を Avro 形式で出力します。 ```weave %dw 2.0 output application/avro schemaUrl="classpath://schema.json" --- [{ username: "Mariano", age: 35, phone: "213", housenum: "123" }, { username: "Leandro", age: 29, phone: "213", housenum: "123" }, { username: "Christian", age: 25, phone: "213", housenum: "123" }] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/avro

# Avro 形式 MIME タイプ: `application/avro` ID: `avro` Avro は、スキーマを使用してそのデータを構造化するバイナリデータ形式です。DataWeave は、スキーマを使用してデータを解析します。Avro データ構造は、DataWeave データ構造にマップされます。 ## [](#mapping)Java 値のマッピング 次の表に、Avro と DataWeave の型のマッピングを示します。
Avro 型 DataWeave 型

long

Number

int

Number

double

Number

boolean

Boolean

string

String

fixed

String

bytes

Binary

enum

String

map

Object

array

Array

null

Null

## [](#examples)例: Avro スキーマを使用する 次の例は、ライターが Avro データ構造の出力に使用するスキーマの指定方法を示しています。 ### [](#入力)入力 Avro スキーマは次のようになります。 schema.json: ```json { "type": "record", "name": "userInfo", "namespace": "my.example", "fields": [ { "name": "username", "type": "string", "default": "NONE" }, { "name": "age", "type": "int", "default": -1 }, { "name": "phone", "type": "string", "default": "NONE" }, { "name": "housenum", "type": "string", "default": "NONE" } ] } ``` ### [](#ソース)ソース この DataWeave スクリプトのヘッダーの ​`schemaUrl`​ プロパティでスキーマ (​`schema.json`​) を DataWeave ライターに渡します。ライターは、スキーマを使用してスクリプトの本文のコンテンツを構造化し、結果を Avro 形式で出力します。 ```weave %dw 2.0 output application/avro schemaUrl="classpath://schema.json" --- [{ username: "Mariano", age: 35, phone: "213", housenum: "123" }, { username: "Leandro", age: 29, phone: "213", housenum: "123" }, { username: "Christian", age: 25, phone: "213", housenum: "123" }] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/avro

# Avro 形式 MIME タイプ: `application/avro` ID: `avro` Avro は、スキーマを使用してそのデータを構造化するバイナリデータ形式です。DataWeave は、スキーマを使用してデータを解析します。Avro データ構造は、DataWeave データ構造にマップされます。 ## [](#mapping)Java 値のマッピング 次の表に、Avro と DataWeave の型のマッピングを示します。
Avro 型 DataWeave 型

long

Number

int

Number

double

Number

boolean

Boolean

string

String

fixed

String

bytes

Binary

enum

String

map

Object

array

Array

null

Null

## [](#examples)例: Avro スキーマを使用する 次の例は、ライターが Avro データ構造の出力に使用するスキーマの指定方法を示しています。 ### [](#入力)入力 Avro スキーマは次のようになります。 schema.json: ```json { "type": "record", "name": "userInfo", "namespace": "my.example", "fields": [ { "name": "username", "type": "string", "default": "NONE" }, { "name": "age", "type": "int", "default": -1 }, { "name": "phone", "type": "string", "default": "NONE" }, { "name": "housenum", "type": "string", "default": "NONE" } ] } ``` ### [](#ソース)ソース この DataWeave スクリプトのヘッダーの ​`schemaUrl`​ プロパティでスキーマ (​`schema.json`​) を DataWeave ライターに渡します。ライターは、スキーマを使用してスクリプトの本文のコンテンツを構造化し、結果を Avro 形式で出力します。 ```weave %dw 2.0 output application/avro schemaUrl="classpath://schema.json" --- [{ username: "Mariano", age: 35, phone: "213", housenum: "123" }, { username: "Leandro", age: 29, phone: "213", housenum: "123" }, { username: "Christian", age: 25, phone: "213", housenum: "123" }] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

schemaUrl​ (必須)

String

''

Avro スキーマの URL。有効な URL スキームは ​classpath://​、​file://​、または ​http://​ です。リーダーの場合、このプロパティは省略可能ですが、デフォルトは入力 Avro ファイルに埋め込まれたスキーマになります。リーダーの場合、埋め込まれたスキーマが必要です。ライターの場合、DataWeave にスキーマ値が必要です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/avro

# Base64 のデコードとエンコード 次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 ## [](#ex01)PDF ファイルの Base64 へのエンコード この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の Read 操作で変換をシミュレートします。 この例では、以下の関数を使用します。 - バイナリ値を Base64 文字列に変換する ​`dw::core::Binaries`​ モジュールの ​`toBase64`​。 - PDF ファイルを入力する ​`Core (dw::Core)`​ モジュールの ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、​`"application/octet-stream"`​ として MIME タイプを指定します。2 番目の ​`readUrl`​ 引数として ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") output text/plain --- toBase64(myPDF as Binary) ``` 出力 (部分的な結果): ```json JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx ... ``` ## [](#ex02)Base64 のデコード この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。 この例では、以下の関数を使用します。 - Base64 文字列をバイナリ値に変換する ​`dw::core::Binaries`​ モジュールの ​`fromBase64`​。 - PDF ファイルを入力する ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の ​`readUrl`​ 引数として MIME タイプ ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") var myPDFasBinary = toBase64(myPDF as Binary) output application/PDF with binary --- fromBase64(myPDFasBinary as String) as Binary ``` この出力は PDF のテキスト表現です。 出力 (部分的な結果): ```json %PDF-1.6 %���� 37 0 obj <> endobj xref 37 34 0000000016 00000 n ... ``` ## [](#xml_config)XML の設定例 Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。 1. Anypoint Studio で Mule プロジェクトを作成します。 1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。 3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。 4. Anypoint Studio の Mule フローの ​``​ 要素間に、次の例をコピーして貼り付けます。 ```XML ``` 2 番目の Transform Message コンポーネントのディレクティブ ​`output application/pdf with binary`​ を ​`output application/octet-stream`​ に置き換えることができます。 5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。 6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。 - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。 - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。 7. Studio でプロジェクトを実行します。 8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。 このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。 ## [](#関連情報)関連情報 - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-binaries) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # Base64 のデコードとエンコード 次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)PDF ファイルの Base64 へのエンコード この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の Read 操作で変換をシミュレートします。 この例では、以下の関数を使用します。 - バイナリ値を Base64 文字列に変換する ​`dw::core::Binaries`​ モジュールの ​`toBase64`​。 - PDF ファイルを入力する ​`Core (dw::Core)`​ モジュールの ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、​`"application/octet-stream"`​ として MIME タイプを指定します。2 番目の ​`readUrl`​ 引数として ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") output text/plain --- toBase64(myPDF as Binary) ``` 出力 (部分的な結果): ```json JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx ... ``` ## [](#ex02)Base64 のデコード この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。 この例では、以下の関数を使用します。 - Base64 文字列をバイナリ値に変換する ​`dw::core::Binaries`​ モジュールの ​`fromBase64`​。 - PDF ファイルを入力する ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の ​`readUrl`​ 引数として MIME タイプ ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") var myPDFasBinary = toBase64(myPDF as Binary) output application/PDF with binary --- fromBase64(myPDFasBinary as String) as Binary ``` この出力は PDF のテキスト表現です。 出力 (部分的な結果): ```json %PDF-1.6 %���� 37 0 obj <> endobj xref 37 34 0000000016 00000 n ... ``` ## [](#xml_config)XML の設定例 Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。 1. Anypoint Studio で Mule プロジェクトを作成します。 1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。 3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。 4. Anypoint Studio の Mule フローの ​``​ 要素間に、次の例をコピーして貼り付けます。 ```XML ``` 2 番目の Transform Message コンポーネントのディレクティブ ​`output application/pdf with binary`​ を ​`output application/octet-stream`​ に置き換えることができます。 5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。 6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。 - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。 - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。 7. Studio でプロジェクトを実行します。 8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。 このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。 ## [](#関連情報)関連情報 - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-binaries) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # Base64 のデコードとエンコード 次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)PDF ファイルの Base64 へのエンコード この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の Read 操作で変換をシミュレートします。 この例では、以下の関数を使用します。 - バイナリ値を Base64 文字列に変換する ​`dw::core::Binaries`​ モジュールの ​`toBase64`​。 - PDF ファイルを入力する ​`Core (dw::Core)`​ モジュールの ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、​`"application/octet-stream"`​ として MIME タイプを指定します。2 番目の ​`readUrl`​ 引数として ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") output text/plain --- toBase64(myPDF as Binary) ``` 出力 (部分的な結果): ```json JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx ... ``` ## [](#ex02)Base64 のデコード この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。 この例では、以下の関数を使用します。 - Base64 文字列をバイナリ値に変換する ​`dw::core::Binaries`​ モジュールの ​`fromBase64`​。 - PDF ファイルを入力する ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の ​`readUrl`​ 引数として MIME タイプ ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") var myPDFasBinary = toBase64(myPDF as Binary) output application/PDF with binary --- fromBase64(myPDFasBinary as String) as Binary ``` この出力は PDF のテキスト表現です。 出力 (部分的な結果): ```json %PDF-1.6 %���� 37 0 obj <> endobj xref 37 34 0000000016 00000 n ... ``` ## [](#xml_config)XML の設定例 Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。 1. Anypoint Studio で Mule プロジェクトを作成します。 1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。 3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。 4. Anypoint Studio の Mule フローの ​``​ 要素間に、次の例をコピーして貼り付けます。 ```XML ``` 2 番目の Transform Message コンポーネントのディレクティブ ​`output application/pdf with binary`​ を ​`output application/octet-stream`​ に置き換えることができます。 5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。 6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。 - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。 - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。 7. Studio でプロジェクトを実行します。 8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。 このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。 ## [](#関連情報)関連情報 - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-binaries) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # Base64 のデコードとエンコード 次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)PDF ファイルの Base64 へのエンコード この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の Read 操作で変換をシミュレートします。 この例では、以下の関数を使用します。 - バイナリ値を Base64 文字列に変換する ​`dw::core::Binaries`​ モジュールの ​`toBase64`​。 - PDF ファイルを入力する ​`Core (dw::Core)`​ モジュールの ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、​`"application/octet-stream"`​ として MIME タイプを指定します。2 番目の ​`readUrl`​ 引数として ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") output text/plain --- toBase64(myPDF as Binary) ``` 出力 (部分的な結果): ```json JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx ... ``` ## [](#ex02)Base64 のデコード この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。 この例では、以下の関数を使用します。 - Base64 文字列をバイナリ値に変換する ​`dw::core::Binaries`​ モジュールの ​`fromBase64`​。 - PDF ファイルを入力する ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の ​`readUrl`​ 引数として MIME タイプ ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") var myPDFasBinary = toBase64(myPDF as Binary) output application/PDF with binary --- fromBase64(myPDFasBinary as String) as Binary ``` この出力は PDF のテキスト表現です。 出力 (部分的な結果): ```json %PDF-1.6 %���� 37 0 obj <> endobj xref 37 34 0000000016 00000 n ... ``` ## [](#xml_config)XML の設定例 Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。 1. Anypoint Studio で Mule プロジェクトを作成します。 1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。 3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。 4. Anypoint Studio の Mule フローの ​``​ 要素間に、次の例をコピーして貼り付けます。 ```XML ``` 2 番目の Transform Message コンポーネントのディレクティブ ​`output application/pdf with binary`​ を ​`output application/octet-stream`​ に置き換えることができます。 5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。 6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。 - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。 - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。 7. Studio でプロジェクトを実行します。 8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。 このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。 ## [](#関連情報)関連情報 - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-binaries) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # Base64 のデコードとエンコード 次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)PDF ファイルの Base64 へのエンコード この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の Read 操作で変換をシミュレートします。 この例では、以下の関数を使用します。 - バイナリ値を Base64 文字列に変換する ​`dw::core::Binaries`​ モジュールの ​`toBase64`​。 - PDF ファイルを入力する ​`Core (dw::Core)`​ モジュールの ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、​`"application/octet-stream"`​ として MIME タイプを指定します。2 番目の ​`readUrl`​ 引数として ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") output text/plain --- toBase64(myPDF as Binary) ``` 出力 (部分的な結果): ```json JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx ... ``` ## [](#ex02)Base64 のデコード この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。 この例では、以下の関数を使用します。 - Base64 文字列をバイナリ値に変換する ​`dw::core::Binaries`​ モジュールの ​`fromBase64`​。 - PDF ファイルを入力する ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の ​`readUrl`​ 引数として MIME タイプ ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") var myPDFasBinary = toBase64(myPDF as Binary) output application/PDF with binary --- fromBase64(myPDFasBinary as String) as Binary ``` この出力は PDF のテキスト表現です。 出力 (部分的な結果): ```json %PDF-1.6 %���� 37 0 obj <> endobj xref 37 34 0000000016 00000 n ... ``` ## [](#xml_config)XML の設定例 Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。 1. Anypoint Studio で Mule プロジェクトを作成します。 1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。 3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。 4. Anypoint Studio の Mule フローの ​``​ 要素間に、次の例をコピーして貼り付けます。 ```XML ``` 2 番目の Transform Message コンポーネントのディレクティブ ​`output application/pdf with binary`​ を ​`output application/octet-stream`​ に置き換えることができます。 5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。 6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。 - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。 - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。 7. Studio でプロジェクトを実行します。 8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。 このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。 ## [](#関連情報)関連情報 - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-binaries) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # Base64 のデコードとエンコード 次の DataWeave の例は、ファイルストリームを Base64 に変換する方法、および Base64 文字列をファイルストリームに変換する方法を示しています。入力および出力として PDF ファイルを使用します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)PDF ファイルの Base64 へのエンコード この例は、PDF ファイルで Base64 エンコードを実行します。Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`text/plain`​ 形式で出力することで、​[XML 設定](#xml_config)​の Read 操作で変換をシミュレートします。 この例では、以下の関数を使用します。 - バイナリ値を Base64 文字列に変換する ​`dw::core::Binaries`​ モジュールの ​`toBase64`​。 - PDF ファイルを入力する ​`Core (dw::Core)`​ モジュールの ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。PDF ファイルの名前を提供し、​`"application/octet-stream"`​ として MIME タイプを指定します。2 番目の ​`readUrl`​ 引数として ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") output text/plain --- toBase64(myPDF as Binary) ``` 出力 (部分的な結果): ```json JVBERi0xLjYNJeLjz9MNCjM3IDAgb2JqIDw8L0xpbmVhcml6ZWQgMS9MIDIwNTk3L08gNDAvRSAx ... ``` ## [](#ex02)Base64 のデコード この例では、Base64 ファイルストリーム (​`application/octet-stream`​) をバイナリに変換し、そのバイナリを ​`application/PDF with binary`​ 形式で出力することで、​[XML 設定](#xml_config)​の Write 操作で変換をシミュレートします。この例は PDF ファイルを生成しません。そのようなファイルの生成には Write 動作が必要です。 この例では、以下の関数を使用します。 - Base64 文字列をバイナリ値に変換する ​`dw::core::Binaries`​ モジュールの ​`fromBase64`​。 - PDF ファイルを入力する ​`readUrl`​。 この例では、PDF ファイルが Anypoint Studio の Mule プロジェクトの ​`src/main/resources`​ ディレクトリ内にあることを前提としています。この関数は、入力 PDF を octet-stream MIME タイプとして読み取ります。2 番目の ​`readUrl`​ 引数として MIME タイプ ​`"binary"`​ を使用することもこの例では有効です。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Binaries var myPDF = readUrl("classpath://pdf-test.pdf", "application/octet-stream") var myPDFasBinary = toBase64(myPDF as Binary) output application/PDF with binary --- fromBase64(myPDFasBinary as String) as Binary ``` この出力は PDF のテキスト表現です。 出力 (部分的な結果): ```json %PDF-1.6 %���� 37 0 obj <> endobj xref 37 34 0000000016 00000 n ... ``` ## [](#xml_config)XML の設定例 Anypoint Studio では、PDF ファイルをエンコードおよびデコードする Mule フローを作成して実行できます。手順を完了したら、File Connector の Read 操作を使用して、指定されたローカルディレクトリからファイルを読み取ります。File Connector の Write 操作を使用して、PDF を指定されたディレクトリに書き込み、Transform Message コンポーネントを使用してファイルを Base64 にエンコードし、Base64 からのその出力をデコードします。 1. Anypoint Studio で Mule プロジェクトを作成します。 1. **\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 2. \[Mule Palette (Mule パレット)\] の ​**\[Add Module (モジュールを追加)\]**​ を使用して、File Connector を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`file`​」と入力します。 3. \[Available modules (使用可能なモジュール)\] で ​**\[File Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 3. Studio キャンバスで ​**\[Configuration XML (設定 XML)\]**​ タブに移動します。 4. Anypoint Studio の Mule フローの ​``​ 要素間に、次の例をコピーして貼り付けます。 ```XML ``` 2 番目の Transform Message コンポーネントのディレクティブ ​`output application/pdf with binary`​ を ​`output application/octet-stream`​ に置き換えることができます。 5. 選択した PDF ファイルをマシンのローカルディレクトリに配置します。 6. **Read**​ および ​**Write**​ 操作の入力ディレクトリと出力ディレクトリを修正します。 - **Read**​ 操作で、​**\[File Path (ファイルパス)\]**​ の値 \`/Users/me/Downloads" を PDF ファイルの場所に変更します。 - **Write**​ 操作で、​**\[Path (パス)\]**​ の値 ​`/Users/me/pdf-test.pdf"`​ をファイルを出力する場所とファイル名に変更します。 7. Studio でプロジェクトを実行します。 8. `0.0.0.0:8081/transform`​ をブラウザーに読み込みます。 このアクションにより、指定した場所に PDF ファイルが作成され、Set Payload コンポーネントのメッセージ ​`PDF file created in the directory specified in the Write operation.`​ を含む別の ​`transform`​ ファイルが生成されます。 ## [](#関連情報)関連情報 - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-binaries) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # baseTypeOf ## [](#basetypeof1)baseTypeOf(Type): Type 特定のデータ型の基本データ型を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`baseTypeOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: baseTypeOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "String" } ``` # baseTypeOf ## [](#basetypeof1)baseTypeOf(t: Type): Type 特定のデータ型の基本データ型を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`baseTypeOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: baseTypeOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "String" } ``` # baseTypeOf ## [](#basetypeof1)baseTypeOf(t: Type): Type 特定のデータ型の基本データ型を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`baseTypeOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: baseTypeOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "String" } ``` # baseTypeOf ## [](#basetypeof1)baseTypeOf(t: Type): Type 特定のデータ型の基本データ型を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`baseTypeOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: baseTypeOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "String" } ``` # baseTypeOf ## [](#basetypeof1)baseTypeOf(t: Type): Type 特定のデータ型の基本データ型を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`baseTypeOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: baseTypeOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "String" } ``` # baseTypeOf ## [](#basetypeof1)baseTypeOf(t: Type): Type 特定のデータ型の基本データ型を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`baseTypeOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: baseTypeOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "String" } ``` # between ## [](#between1)between(endDateExclusive: Date, startDateInclusive: Date): Period 2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。 開始日は含まれますが、終了日は含まれません。 このメソッドの結果は、終了日 (​`endDateExclusive`​) が開始日 (​`startDateInclusive`​) より前の場合、負の期間になる可能性があります。 関数の最初のパラメーターは ​`endDateExclusive`​ であり、2 番目のパラメーターは ​`startDateInclusive`​ です。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​endDateExclusive

終了日 (この値を含まない)。

​startDateInclusive

開始日 (この値を含む)。

### [](#例)例 次の例では、さまざまな入力での ​`between`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Periods output application/json --- { a: between(|2010-12-12|,|2010-12-10|), b: between(|2011-12-11|,|2010-11-10|), c: between(|2020-02-29|,|2020-03-30|) } ``` #### [](#出力)出力 ```Json { "a": "P2D", "b": "P1Y1M1D", "c": "P-1M-1D" } ``` # between ## [](#between1)between(endDateExclusive: Date, startDateInclusive: Date): Period 2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。 開始日は含まれますが、終了日は含まれません。 このメソッドの結果は、終了日 (​`endDateExclusive`​) が開始日 (​`startDateInclusive`​) より前の場合、負の期間になる可能性があります。 関数の最初のパラメーターは ​`endDateExclusive`​ であり、2 番目のパラメーターは ​`startDateInclusive`​ です。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

endDateExclusive

終了日 (この値を含まない)。

startDateInclusive

開始日 (この値を含む)。

### [](#例)例 次の例では、さまざまな入力での ​`between`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Periods output application/json --- { a: between(|2010-12-12|,|2010-12-10|), b: between(|2011-12-11|,|2010-11-10|), c: between(|2020-02-29|,|2020-03-30|) } ``` #### [](#出力)出力 ```Json { "a": "P2D", "b": "P1Y1M1D", "c": "P-1M-1D" } ``` # between ## [](#between1)between(endDateExclusive: Date, startDateInclusive: Date): Period 2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。 開始日は含まれますが、終了日は含まれません。 このメソッドの結果は、終了日 (​`endDateExclusive`​) が開始日 (​`startDateInclusive`​) より前の場合、負の期間になる可能性があります。 関数の最初のパラメーターは ​`endDateExclusive`​ であり、2 番目のパラメーターは ​`startDateInclusive`​ です。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

endDateExclusive

終了日 (この値を含まない)。

startDateInclusive

開始日 (この値を含む)。

### [](#例)例 次の例では、さまざまな入力での ​`between`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Periods output application/json --- { a: between(|2010-12-12|,|2010-12-10|), b: between(|2011-12-11|,|2010-11-10|), c: between(|2020-02-29|,|2020-03-30|) } ``` #### [](#出力)出力 ```Json { "a": "P2D", "b": "P1Y1M1D", "c": "P-1M-1D" } ``` # between ## [](#between1)between(endDateExclusive: Date, startDateInclusive: Date): Period 2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。 開始日は含まれますが、終了日は含まれません。 このメソッドの結果は、終了日 (​`endDateExclusive`​) が開始日 (​`startDateInclusive`​) より前の場合、負の期間になる可能性があります。 関数の最初のパラメーターは ​`endDateExclusive`​ であり、2 番目のパラメーターは ​`startDateInclusive`​ です。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

endDateExclusive

終了日 (この値を含まない)。

startDateInclusive

開始日 (この値を含む)。

### [](#例)例 次の例では、さまざまな入力での ​`between`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Periods output application/json --- { a: between(|2010-12-12|,|2010-12-10|), b: between(|2011-12-11|,|2010-11-10|), c: between(|2020-02-29|,|2020-03-30|) } ``` #### [](#出力)出力 ```Json { "a": "P2D", "b": "P1Y1M1D", "c": "P-1M-1D" } ``` # between ## [](#between1)between(endDateExclusive: Date, startDateInclusive: Date): Period 2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。 開始日は含まれますが、終了日は含まれません。 このメソッドの結果は、終了日 (​`endDateExclusive`​) が開始日 (​`startDateInclusive`​) より前の場合、負の期間になる可能性があります。 関数の最初のパラメーターは ​`endDateExclusive`​ であり、2 番目のパラメーターは ​`startDateInclusive`​ です。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

endDateExclusive

終了日 (この値を含まない)。

startDateInclusive

開始日 (この値を含む)。

### [](#例)例 次の例では、さまざまな入力での ​`between`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Periods output application/json --- { a: between(|2010-12-12|,|2010-12-10|), b: between(|2011-12-11|,|2010-11-10|), c: between(|2020-02-29|,|2020-03-30|) } ``` #### [](#出力)出力 ```Json { "a": "P2D", "b": "P1Y1M1D", "c": "P-1M-1D" } ``` # Binaries (dw::core::Binaries) このモジュールには、バイナリを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Binaries`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​fromBase64

Base64 文字列をバイナリ値に変換します。

​fromHex

16 進文字列をバイナリに変換します。

​readLinesWith

指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。

​toBase64

バイナリ値を Base64 文字列に変換します。

​toHex

バイナリ値を 16 進文字列に変換します。

​writeLinesWith

指定された行を書き込んで、バイナリコンテンツを返します。

# Binaries (dw::core::Binaries) このモジュールには、バイナリを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Binaries`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​fromBase64

Base64 文字列をバイナリ値に変換します。

​fromHex

16 進文字列をバイナリに変換します。

​readLinesWith

指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。

​toBase64

バイナリ値を Base64 文字列に変換します。

​toHex

バイナリ値を 16 進文字列に変換します。

​writeLinesWith

指定された行を書き込んで、バイナリコンテンツを返します。

# Binaries (dw::core::Binaries) このモジュールには、バイナリを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Binaries`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

concatWith

2 つのバイナリのコンテンツを連結します。

fromBase64

Base64 文字列をバイナリ値に変換します。

fromHex

16 進文字列をバイナリに変換します。

readLinesWith

指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。

toBase64

バイナリ値を Base64 文字列に変換します。

toHex

バイナリ値を 16 進文字列に変換します。

writeLinesWith

指定された行を書き込んで、バイナリコンテンツを返します。

# Binaries (dw::core::Binaries) このモジュールには、バイナリを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Binaries`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

concatWith

2 つのバイナリのコンテンツを連結します。

fromBase64

Base64 文字列をバイナリ値に変換します。

fromHex

16 進文字列をバイナリに変換します。

readLinesWith

指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。

toBase64

バイナリ値を Base64 文字列に変換します。

toHex

バイナリ値を 16 進文字列に変換します。

writeLinesWith

指定された行を書き込んで、バイナリコンテンツを返します。

# Binaries (dw::core::Binaries) このモジュールには、バイナリを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Binaries`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

concatWith

2 つのバイナリのコンテンツを連結します。

fromBase64

Base64 文字列をバイナリ値に変換します。

fromHex

16 進文字列をバイナリに変換します。

readLinesWith

指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。

toBase64

バイナリ値を Base64 文字列に変換します。

toHex

バイナリ値を 16 進文字列に変換します。

writeLinesWith

指定された行を書き込んで、バイナリコンテンツを返します。

# Binaries (dw::core::Binaries) このモジュールには、バイナリを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Binaries`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

concatWith

2 つのバイナリのコンテンツを連結します。

fromBase64

Base64 文字列をバイナリ値に変換します。

fromHex

16 進文字列をバイナリに変換します。

readLinesWith

指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。

toBase64

バイナリ値を Base64 文字列に変換します。

toHex

バイナリ値を 16 進文字列に変換します。

writeLinesWith

指定された行を書き込んで、バイナリコンテンツを返します。

# camelize ## [](#camelize1)camelize(String): String 文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。 文字列の先頭のアンダースコアを含め、すべてのアンダースコアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

​text

キャメルケースに変換する文字列。

### [](#例)例 次の例では、アンダースコアを含む文字列をキャメルケースに変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : camelize("customer_first_name"), "b" : camelize("_name_starts_with_underscore") } ``` #### [](#出力)出力 ```JSON { "a": "customerFirstName", "b": "nameStartsWithUnderscore" } ``` ## [](#camelize2)camelize(Null): Null `camelize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # camelize ## [](#camelize1)camelize(text: String): String 文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。 文字列の先頭のアンダースコアを含め、すべてのアンダースコアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

​text

キャメルケースに変換する文字列。

### [](#例)例 次の例では、アンダースコアを含む文字列をキャメルケースに変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : camelize("customer_first_name"), "b" : camelize("_name_starts_with_underscore") } ``` #### [](#出力)出力 ```JSON { "a": "customerFirstName", "b": "nameStartsWithUnderscore" } ``` ## [](#camelize2)camelize(text: Null): Null `camelize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # camelize ## [](#camelize1)camelize(text: String): String 文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。 文字列の先頭のアンダースコアを含め、すべてのアンダースコアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

キャメルケースに変換する文字列。

### [](#例)例 次の例では、アンダースコアを含む文字列をキャメルケースに変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : camelize("customer_first_name"), "b" : camelize("_name_starts_with_underscore") } ``` #### [](#出力)出力 ```JSON { "a": "customerFirstName", "b": "nameStartsWithUnderscore" } ``` ## [](#camelize2)camelize(text: Null): Null `camelize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # camelize ## [](#camelize1)camelize(text: String): String 文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。 文字列の先頭のアンダースコアを含め、すべてのアンダースコアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

キャメルケースに変換する文字列。

### [](#例)例 次の例では、アンダースコアを含む文字列をキャメルケースに変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : camelize("customer_first_name"), "b" : camelize("_name_starts_with_underscore") } ``` #### [](#出力)出力 ```JSON { "a": "customerFirstName", "b": "nameStartsWithUnderscore" } ``` ## [](#camelize2)camelize(text: Null): Null `camelize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # camelize ## [](#camelize1)camelize(text: String): String 文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。 文字列の先頭のアンダースコアを含め、すべてのアンダースコアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

キャメルケースに変換する文字列。

### [](#例)例 次の例では、アンダースコアを含む文字列をキャメルケースに変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : camelize("customer_first_name"), "b" : camelize("_name_starts_with_underscore") } ``` #### [](#出力)出力 ```JSON { "a": "customerFirstName", "b": "nameStartsWithUnderscore" } ``` ## [](#camelize2)camelize(text: Null): Null `camelize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # camelize ## [](#camelize1)camelize(text: String): String 文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。 文字列の先頭のアンダースコアを含め、すべてのアンダースコアを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

キャメルケースに変換する文字列。

### [](#例)例 次の例では、アンダースコアを含む文字列をキャメルケースに変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : camelize("customer_first_name"), "b" : camelize("_name_starts_with_underscore") } ``` #### [](#出力)出力 ```JSON { "a": "customerFirstName", "b": "nameStartsWithUnderscore" } ``` ## [](#camelize2)camelize(text: Null): Null `camelize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # capitalize ## [](#capitalize1)capitalize(String): String 文字列内の各単語の先頭を大文字にします。 この関数は、アルファベット以外のすべての文字を区切り文字として扱い、アンダースコアをスペースに置き換えます。たとえば、​`capitalize("a*s_b’s")`​ は ​`"A*S B’S"`​ になります。 ### [](#パラメーター)パラメーター
名前 説明

text

先頭を大文字にする文字列。

### [](#例)例 次の例では、文字列セットの単語の先頭を大文字にします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : capitalize("customer"), "b" : capitalize("customer_first_name"), "c" : capitalize("customer NAME"), "d" : capitalize("customerName"), "e" : capitalize("a*s_b’s") } ``` #### [](#出力)出力 ```JSON { "a": "Customer", "b": "Customer First Name", "c": "Customer Name", "d": "Customer Name", "e": "A*S B’S" } ``` ## [](#capitalize2)capitalize(Null): Null `capitalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # capitalize ## [](#capitalize1)capitalize(text: String): String 文字列内の各単語の先頭を大文字にします。 この関数は、アルファベット以外のすべての文字を区切り文字として扱い、アンダースコアをスペースに置き換えます。たとえば、​`capitalize("a*s_b’s")`​ は ​`"A*S B’S"`​ になります。 ### [](#パラメーター)パラメーター
名前 説明

text

先頭を大文字にする文字列。

### [](#例)例 次の例では、文字列セットの単語の先頭を大文字にします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : capitalize("customer"), "b" : capitalize("customer_first_name"), "c" : capitalize("customer NAME"), "d" : capitalize("customerName"), "e" : capitalize("a*s_b’s") } ``` #### [](#出力)出力 ```JSON { "a": "Customer", "b": "Customer First Name", "c": "Customer Name", "d": "Customer Name", "e": "A*S B’S" } ``` ## [](#capitalize2)capitalize(text: Null): Null `capitalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # capitalize ## [](#capitalize1)capitalize(text: String): String 文字列内の各単語の先頭を大文字にします。 この関数は、アルファベット以外のすべての文字を区切り文字として扱い、アンダースコアをスペースに置き換えます。たとえば、​`capitalize("a*s_b’s")`​ は ​`"A*S B’S"`​ になります。 ### [](#パラメーター)パラメーター
名前 説明

text

先頭を大文字にする文字列。

### [](#例)例 次の例では、文字列セットの単語の先頭を大文字にします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : capitalize("customer"), "b" : capitalize("customer_first_name"), "c" : capitalize("customer NAME"), "d" : capitalize("customerName"), "e" : capitalize("a*s_b’s") } ``` #### [](#出力)出力 ```JSON { "a": "Customer", "b": "Customer First Name", "c": "Customer Name", "d": "Customer Name", "e": "A*S B’S" } ``` ## [](#capitalize2)capitalize(text: Null): Null `capitalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # capitalize ## [](#capitalize1)capitalize(text: String): String 文字列内の各単語の先頭を大文字にします。 この関数は、アルファベット以外のすべての文字を区切り文字として扱い、アンダースコアをスペースに置き換えます。たとえば、​`capitalize("a*s_b’s")`​ は ​`"A*S B’S"`​ になります。 ### [](#パラメーター)パラメーター
名前 説明

text

先頭を大文字にする文字列。

### [](#例)例 次の例では、文字列セットの単語の先頭を大文字にします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : capitalize("customer"), "b" : capitalize("customer_first_name"), "c" : capitalize("customer NAME"), "d" : capitalize("customerName"), "e" : capitalize("a*s_b’s") } ``` #### [](#出力)出力 ```JSON { "a": "Customer", "b": "Customer First Name", "c": "Customer Name", "d": "Customer Name", "e": "A*S B’S" } ``` ## [](#capitalize2)capitalize(text: Null): Null `capitalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # capitalize ## [](#capitalize1)capitalize(text: String): String 文字列内の各単語の先頭を大文字にします。 この関数は、アルファベット以外のすべての文字を区切り文字として扱い、アンダースコアをスペースに置き換えます。たとえば、​`capitalize("a*s_b’s")`​ は ​`"A*S B’S"`​ になります。 ### [](#パラメーター)パラメーター
名前 説明

text

先頭を大文字にする文字列。

### [](#例)例 次の例では、文字列セットの単語の先頭を大文字にします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : capitalize("customer"), "b" : capitalize("customer_first_name"), "c" : capitalize("customer NAME"), "d" : capitalize("customerName"), "e" : capitalize("a*s_b’s") } ``` #### [](#出力)出力 ```JSON { "a": "Customer", "b": "Customer First Name", "c": "Customer Name", "d": "Customer Name", "e": "A*S B’S" } ``` ## [](#capitalize2)capitalize(text: Null): Null `capitalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # capitalize ## [](#capitalize1)capitalize(text: String): String 文字列内の各単語の先頭を大文字にします。 この関数は、アルファベット以外のすべての文字を区切り文字として扱い、アンダースコアをスペースに置き換えます。たとえば、​`capitalize("a*s_b’s")`​ は ​`"A*S B’S"`​ になります。 ### [](#パラメーター)パラメーター
名前 説明

text

先頭を大文字にする文字列。

### [](#例)例 次の例では、文字列セットの単語の先頭を大文字にします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : capitalize("customer"), "b" : capitalize("customer_first_name"), "c" : capitalize("customer NAME"), "d" : capitalize("customerName"), "e" : capitalize("a*s_b’s") } ``` #### [](#出力)出力 ```JSON { "a": "Customer", "b": "Customer First Name", "c": "Customer Name", "d": "Customer Name", "e": "A*S B’S" } ``` ## [](#capitalize2)capitalize(text: Null): Null `capitalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # causedBy ## [](#causedby1)causedBy(Error, String): Boolean この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。 `causedBy`​ は、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合に役立ちます。また、異なる種別の子エラーを含む ​COMPOSITE\_ROUTING​ エラーを処理する場合にも役立つ可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

​error

省略可能。​Error​ (エラー) 型。

​errorType

HTTP:UNAUTHORIZED などのエラーを識別する文字列。

### [](#例)例 次の XML の例では、Mule エラー処理コンポーネントの ​`when`​ 式から ​`causedBy`​ をコールし、HTTP:UNAUTHORIZED エラーまたは HTTP:FORBIDDEN エラーのどちらが原因であるかに応じて SECURITY エラーを異なる方法で処理します。最初の式は ​`error`​ (​`Error`​ 型) を明示的に渡していますが、2 番目の式はパラメーターの値を指定せずに暗黙的に渡しています。 `error`​ は、Mule メッセージオブジェクトに関連付けられたエラーに対して DataWeave が使用する変数です。詳細は、 [「DataWeave Variables for Mule Runtime (Mule Runtime の DataWeave 変数)」](https://docs.mulesoft.com/mule-runtime/latest/dataweave-variables-context)​を参照してください。 #### [](#ソース)ソース ```XML ``` # causedBy ## [](#causedby1)causedBy(@DesignOnlyType error: Error, errorType: String): Boolean この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。 `causedBy`​ は、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合に役立ちます。また、異なる種別の子エラーを含む ​COMPOSITE\_ROUTING​ エラーを処理する場合にも役立つ可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

​error

省略可能。​Error​ (エラー) 型。

​errorType

HTTP:UNAUTHORIZED などのエラーを識別する文字列。

### [](#例)例 次の XML の例では、Mule エラー処理コンポーネントの ​`when`​ 式から ​`causedBy`​ をコールし、HTTP:UNAUTHORIZED エラーまたは HTTP:FORBIDDEN エラーのどちらが原因であるかに応じて SECURITY エラーを異なる方法で処理します。最初の式は ​`error`​ (​`Error`​ 型) を明示的に渡していますが、2 番目の式はパラメーターの値を指定せずに暗黙的に渡しています。 `error`​ は、Mule メッセージオブジェクトに関連付けられたエラーに対して DataWeave が使用する変数です ( [Mule Runtime の DataWeave 変数](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context)​を参照)。 #### [](#ソース)ソース ```XML ``` # causedBy ## [](#causedby1)causedBy(@DesignOnlyType error: Error, errorType: String): Boolean この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。 `causedBy`​ は、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合に役立ちます。また、異なる種別の子エラーを含む ​COMPOSITE\_ROUTING​ エラーを処理する場合にも役立つ可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

error

省略可能。​Error​ (エラー) 型。

errorType

HTTP:UNAUTHORIZED などのエラーを識別する文字列。

### [](#例)例 次の XML の例では、Mule エラー処理コンポーネントの ​`when`​ 式から ​`causedBy`​ をコールし、HTTP:UNAUTHORIZED エラーまたは HTTP:FORBIDDEN エラーのどちらが原因であるかに応じて SECURITY エラーを異なる方法で処理します。最初の式は ​`error`​ (​`Error`​ 型) を明示的に渡していますが、2 番目の式はパラメーターの値を指定せずに暗黙的に渡しています。 `error`​ は、Mule メッセージオブジェクトに関連付けられたエラーに対して DataWeave が使用する変数です ( [Mule Runtime の DataWeave 変数](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context)​を参照)。 #### [](#ソース)ソース ```XML ``` # causedBy ## [](#causedby1)causedBy(@DesignOnlyType error: Error, errorType: String): Boolean この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。 `causedBy`​ は、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合に役立ちます。また、異なる種別の子エラーを含む ​COMPOSITE\_ROUTING​ エラーを処理する場合にも役立つ可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

error

省略可能。​Error​ (エラー) 型。

errorType

HTTP:UNAUTHORIZED などのエラーを識別する文字列。

### [](#例)例 次の XML の例では、Mule エラー処理コンポーネントの ​`when`​ 式から ​`causedBy`​ をコールし、HTTP:UNAUTHORIZED エラーまたは HTTP:FORBIDDEN エラーのどちらが原因であるかに応じて SECURITY エラーを異なる方法で処理します。最初の式は ​`error`​ (​`Error`​ 型) を明示的に渡していますが、2 番目の式はパラメーターの値を指定せずに暗黙的に渡しています。 `error`​ は、Mule メッセージオブジェクトに関連付けられたエラーに対して DataWeave が使用する変数です ( [Mule Runtime の DataWeave 変数](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context)​を参照)。 #### [](#ソース)ソース ```XML ``` # causedBy ## [](#causedby1)causedBy(@DesignOnlyType error: Error, errorType: String): Boolean この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。 `causedBy`​ は、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合に役立ちます。また、異なる種別の子エラーを含む ​COMPOSITE\_ROUTING​ エラーを処理する場合にも役立つ可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

error

省略可能。​Error​ (エラー) 型。

errorType

HTTP:UNAUTHORIZED などのエラーを識別する文字列。

### [](#例)例 次の XML の例では、Mule エラー処理コンポーネントの ​`when`​ 式から ​`causedBy`​ をコールし、HTTP:UNAUTHORIZED エラーまたは HTTP:FORBIDDEN エラーのどちらが原因であるかに応じて SECURITY エラーを異なる方法で処理します。最初の式は ​`error`​ (​`Error`​ 型) を明示的に渡していますが、2 番目の式はパラメーターの値を指定せずに暗黙的に渡しています。 `error`​ は、Mule メッセージオブジェクトに関連付けられたエラーに対して DataWeave が使用する変数です ( [Mule Runtime の DataWeave 変数](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context)​を参照)。 #### [](#ソース)ソース ```XML ``` # causedBy ## [](#causedby1)causedBy(@DesignOnlyType error: Error, errorType: String): Boolean この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。 `causedBy`​ は、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合に役立ちます。また、異なる種別の子エラーを含む ​COMPOSITE\_ROUTING​ エラーを処理する場合にも役立つ可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

error

省略可能。​Error​ (エラー) 型。

errorType

HTTP:UNAUTHORIZED などのエラーを識別する文字列。

### [](#例)例 次の XML の例では、Mule エラー処理コンポーネントの ​`when`​ 式から ​`causedBy`​ をコールし、HTTP:UNAUTHORIZED エラーまたは HTTP:FORBIDDEN エラーのどちらが原因であるかに応じて SECURITY エラーを異なる方法で処理します。最初の式は ​`error`​ (​`Error`​ 型) を明示的に渡していますが、2 番目の式はパラメーターの値を指定せずに暗黙的に渡しています。 `error`​ は、Mule メッセージオブジェクトに関連付けられたエラーに対して DataWeave が使用する変数です ( [Mule Runtime の DataWeave 変数](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context)​を参照)。 #### [](#ソース)ソース ```XML ``` # ceil ## [](#ceil1)ceil(Number): Number 数値を最も近い整数に切り上げます。 ### [](#パラメーター)パラメーター
名前 説明

​number

丸める数値。

### [](#例)例 次の例では、数値を最も近い整数に丸めます。​`2.1`​ は ​`3`​ に丸められています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ceil(1.5), ceil(2.1), ceil(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 3, 3 ] ``` # ceil ## [](#ceil1)ceil(number: Number): Number 数値を最も近い整数に切り上げます。 ### [](#パラメーター)パラメーター
名前 説明

​number

丸める数値。

### [](#例)例 次の例では、数値を最も近い整数に丸めます。​`2.1`​ は ​`3`​ に丸められています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ceil(1.5), ceil(2.1), ceil(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 3, 3 ] ``` # ceil ## [](#ceil1)ceil(number: Number): Number 数値を最も近い整数に切り上げます。 ### [](#パラメーター)パラメーター
名前 説明

number

丸める数値。

### [](#例)例 次の例では、数値を最も近い整数に丸めます。​`2.1`​ は ​`3`​ に丸められています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ceil(1.5), ceil(2.1), ceil(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 3, 3 ] ``` # ceil ## [](#ceil1)ceil(number: Number): Number 数値を最も近い整数に切り上げます。 ### [](#パラメーター)パラメーター
名前 説明

number

丸める数値。

### [](#例)例 次の例では、数値を最も近い整数に丸めます。​`2.1`​ は ​`3`​ に丸められています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ceil(1.5), ceil(2.1), ceil(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 3, 3 ] ``` # ceil ## [](#ceil1)ceil(number: Number): Number 数値を最も近い整数に切り上げます。 ### [](#パラメーター)パラメーター
名前 説明

number

丸める数値。

### [](#例)例 次の例では、数値を最も近い整数に丸めます。​`2.1`​ は ​`3`​ に丸められています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ceil(1.5), ceil(2.1), ceil(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 3, 3 ] ``` # ceil ## [](#ceil1)ceil(number: Number): Number 数値を最も近い整数に切り上げます。 ### [](#パラメーター)パラメーター
名前 説明

number

丸める数値。

### [](#例)例 次の例では、数値を最も近い整数に丸めます。​`2.1`​ は ​`3`​ に丸められています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ceil(1.5), ceil(2.1), ceil(3) ] ``` #### [](#出力)出力 ```JSON [ 2, 3, 3 ] ``` # charCode ## [](#charcode1)charCode(String): Number 入力文字列の最初の文字の Unicode を返します。 空の文字列の場合、この関数は失敗し、​`Unexpected empty string`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、「Mule」の「M」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCode" : charCode("Mule") } ``` #### [](#出力)出力 ```XML { "charCode" : 77 } ``` # charCode ## [](#charcode1)charCode(text: String): Number 入力文字列の最初の文字の Unicode を返します。 空の文字列の場合、この関数は失敗し、​`Unexpected empty string`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、「Mule」の「M」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCode" : charCode("Mule") } ``` #### [](#出力)出力 ```XML { "charCode" : 77 } ``` ## [](#charcode2)charCode(text: Null): Null `charCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # charCode ## [](#charcode1)charCode(text: String): Number 入力文字列の最初の文字の Unicode を返します。 空の文字列の場合、この関数は失敗し、​`Unexpected empty string`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、「Mule」の「M」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCode" : charCode("Mule") } ``` #### [](#出力)出力 ```XML { "charCode" : 77 } ``` ## [](#charcode2)charCode(text: Null): Null `charCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCode ## [](#charcode1)charCode(text: String): Number 入力文字列の最初の文字の Unicode を返します。 空の文字列の場合、この関数は失敗し、​`Unexpected empty string`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、「Mule」の「M」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCode" : charCode("Mule") } ``` #### [](#出力)出力 ```XML { "charCode" : 77 } ``` ## [](#charcode2)charCode(text: Null): Null `charCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCode ## [](#charcode1)charCode(text: String): Number 入力文字列の最初の文字の Unicode を返します。 空の文字列の場合、この関数は失敗し、​`Unexpected empty string`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、「Mule」の「M」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCode" : charCode("Mule") } ``` #### [](#出力)出力 ```XML { "charCode" : 77 } ``` ## [](#charcode2)charCode(text: Null): Null `charCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCode ## [](#charcode1)charCode(text: String): Number 入力文字列の最初の文字の Unicode を返します。 空の文字列の場合、この関数は失敗し、​`Unexpected empty string`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、「Mule」の「M」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCode" : charCode("Mule") } ``` #### [](#出力)出力 ```XML { "charCode" : 77 } ``` ## [](#charcode2)charCode(text: Null): Null `charCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCodeAt ## [](#charcodeat1)charCodeAt(String, Number): Number 指定されたインデックスの文字の Unicode を返します。 インデックスが無効の場合、この関数は失敗します。 ### [](#パラメーター)パラメーター
名前 説明

​content

入力文字列。

​position

文字列 (文字列配列) 内の文字のインデックス (​Number​ 型)。最初の文字のインデックスは ​0​ であることに注意してください。

### [](#例)例 次の例では、「MuleSoft」のインデックス ​`1`​ にある「u」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCodeAt" : charCodeAt("MuleSoft", 1) } ``` #### [](#出力)出力 ```JSON { "charCodeAt": 117 } ``` # charCodeAt ## [](#charcodeat1)charCodeAt(content: String, position: Number): Number 指定されたインデックスの文字の Unicode を返します。 インデックスが無効の場合、この関数は失敗します。 ### [](#パラメーター)パラメーター
名前 説明

​content

入力文字列。

​position

文字列 (文字列配列) 内の文字のインデックス (​Number​ 型)。最初の文字のインデックスは ​0​ であることに注意してください。

### [](#例)例 次の例では、「MuleSoft」のインデックス ​`1`​ にある「u」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCodeAt" : charCodeAt("MuleSoft", 1) } ``` #### [](#出力)出力 ```JSON { "charCodeAt": 117 } ``` ## [](#charcodeat2)charCodeAt(content: Null, position: Any): Null `charCodeAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # charCodeAt ## [](#charcodeat1)charCodeAt(content: String, position: Number): Number 指定されたインデックスの文字の Unicode を返します。 インデックスが無効の場合、この関数は失敗します。 ### [](#パラメーター)パラメーター
名前 説明

content

入力文字列。

position

文字列 (文字列配列) 内の文字のインデックス (​Number​ 型)。最初の文字のインデックスは ​0​ であることに注意してください。

### [](#例)例 次の例では、「MuleSoft」のインデックス ​`1`​ にある「u」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCodeAt" : charCodeAt("MuleSoft", 1) } ``` #### [](#出力)出力 ```JSON { "charCodeAt": 117 } ``` ## [](#charcodeat2)charCodeAt(content: Null, position: Any): Null `charCodeAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCodeAt ## [](#charcodeat1)charCodeAt(content: String, position: Number): Number 指定されたインデックスの文字の Unicode を返します。 インデックスが無効の場合、この関数は失敗します。 ### [](#パラメーター)パラメーター
名前 説明

content

入力文字列。

position

文字列 (文字列配列) 内の文字のインデックス (​Number​ 型)。最初の文字のインデックスは ​0​ であることに注意してください。

### [](#例)例 次の例では、「MuleSoft」のインデックス ​`1`​ にある「u」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCodeAt" : charCodeAt("MuleSoft", 1) } ``` #### [](#出力)出力 ```JSON { "charCodeAt": 117 } ``` ## [](#charcodeat2)charCodeAt(content: Null, position: Any): Null `charCodeAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCodeAt ## [](#charcodeat1)charCodeAt(content: String, position: Number): Number 指定されたインデックスの文字の Unicode を返します。 インデックスが無効の場合、この関数は失敗します。 ### [](#パラメーター)パラメーター
名前 説明

content

入力文字列。

position

文字列 (文字列配列) 内の文字のインデックス (​Number​ 型)。最初の文字のインデックスは ​0​ であることに注意してください。

### [](#例)例 次の例では、「MuleSoft」のインデックス ​`1`​ にある「u」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCodeAt" : charCodeAt("MuleSoft", 1) } ``` #### [](#出力)出力 ```JSON { "charCodeAt": 117 } ``` ## [](#charcodeat2)charCodeAt(content: Null, position: Any): Null `charCodeAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # charCodeAt ## [](#charcodeat1)charCodeAt(content: String, position: Number): Number 指定されたインデックスの文字の Unicode を返します。 インデックスが無効の場合、この関数は失敗します。 ### [](#パラメーター)パラメーター
名前 説明

content

入力文字列。

position

文字列 (文字列配列) 内の文字のインデックス (​Number​ 型)。最初の文字のインデックスは ​0​ であることに注意してください。

### [](#例)例 次の例では、「MuleSoft」のインデックス ​`1`​ にある「u」の Unicode を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "charCodeAt" : charCodeAt("MuleSoft", 1) } ``` #### [](#出力)出力 ```JSON { "charCodeAt": 117 } ``` ## [](#charcodeat2)charCodeAt(content: Null, position: Any): Null `charCodeAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # COBOL コピーブック形式 MIME タイプ: `application/flatfile` ID: `flatfile` COBOL コピーブックは、COBOL データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。 Transform Message コンポーネントは、COBOL コピーブック形式を処理するための設定を提供します。たとえば、COBOL 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の COBOL コピーブックは最大 15 のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#cobol_metadata)コピーブック定義のインポート コピーブック定義をインポートすると、Transform Message コンポーネントは、​`schemaPath`​ プロパティで参照できるフラットファイルスキーマに定義を変換します。 コピーブック定義をインポートする方法 1. Studio で Transform コンポーネントの入力ペイロードを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ を選択して \[Set Metadata Type (メタデータ型を設定)\] ダイアログを開きます。 コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。 2. コピーブックメタデータの名前を入力します (例: `copybook`​)。 3. **\[Type (型)\]**​ ドロップダウンメニューから \[Copybook (コピーブック)\] 型を選択します。 4. コピーブック定義ファイルをインポートします。 5. \[Select (選択)\] をクリックします。 ![コピーブック定義ファイルをインポートするためのメタデータ型の選択インターフェース](/mulesoft/current/ja-jp/dataweave/2.3/_images/copybook-import.png) Figure 1. コピーブック定義ファイルのインポート たとえば、次のようなコピーブック定義ファイル (​`mailing-record.cpy`​) があるとします。 01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5). - コピーブック定義は常に ​`01`​ エントリから始まる必要があります。コピーブック内の ​`01`​ 定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の ​`01`​ 定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の ​`01`​ 定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。 - COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。 スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの ​`src/main/resources/schema`​ フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。 form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } } コピーブックをインポートしたら、​`schemaPath`​ プロパティを使用して ​`output`​ ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、​`output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"`​ です。 ## [](#サポートされるコピーブック機能)サポートされるコピーブック機能 すべてのコピーブック機能が DataWeave の COBOL コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。 - DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、​[文字エンコード](#character_encoding)​を参照してください。 - 以下のみで構成される数値の PICTURE 句 - 「9」- 1 つ以上の数字位置 - 「S」- 1 つの省略可能な符号文字位置 (先頭または末尾) - 「V」- 1 つの省略可能な小数点 - 「P」- 1 つ以上の 10 進数位取り位置 - 「X」文字位置のみで構成される英数字値の PICTURE 句 - PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の ​`9(5)`​ など) - スキーマの ​`controlVal`​ プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。 - REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照) 次の機能は​_サポートされていません_​。 - 英数字で編集された PICTURE 句 - 挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句 - 特殊なレベル番号: - レベル 66 - 項目またはグループの代替名 - レベル 77 - 独立データ項目 - レベル 88 - 条件名 (値の列挙に相当) - グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます) - COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます) - VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用) - SYNC 句 (レコード内で値を一致させるために使用) ## [](#redefines-のサポート)REDEFINES のサポート REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「\*」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「\*1」、「\*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。 REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。 ## [](#character_encoding)文字エンコード BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。 REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。 ## [](#コピーブックのインポートに関する一般的な問題)コピーブックのインポートに関する一般的な問題 コピーブックのインポートに関する最も一般的な問題は、入力行領域の COBOL 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「\*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。 タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。 コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、COBOL コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。 コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ DataWeave は、この形式で入力データを読み取る指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​nulls​、それ以外の場合は ​spaces

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​: すべてのデータを実際の値として処理する

  • spaces​: スペースのみで構成される項目を欠落値として解釈する

  • zeroes​: 「0」文字のみで構成される数値項目とスペースのみで構成される文字項目を欠落値として解釈する

  • nulls​: 0 バイトのみで構成される項目を欠落値として解釈する

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。

recordParsing

String

strict

予想される、行/レコード間の分離:

  • strict​: 各レコードの末尾で改行が予想される。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

schemaPath​ (必須)

String

null

スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

​useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、リーダーは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。​有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。 有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ DataWeave は、この形式で出力データを書き込む指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

encoding

String

null

このライターで使用されるエンコード (​UTF-8​ など)。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​NULLS​、それ以外の場合は ​SPACES

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ を使用し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • SPACES​: 項目をスペースで埋める。

  • ZEROES​: 数値項目を ​0​ 文字で、文字項目をスペース文字で埋める。

  • NULLS​: 項目を 0 バイトで埋める。

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。

recordTerminator

String

システムプロパティ ​line.separator

レコード区切り文字 (改行)。有効値:

  • lf​

  • cr​

  • crlf​

  • none​

Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

retainEmptyStringFieldsOnParsing

false

true​ に設定すると、このプロパティによりリーダーは値がない項目を保持し、その値を空の文字列に設定します。 2023 年 1 月バージョンの Mule バージョン 4.3.0-20221212 の DataWeave 2.3 で導入されました。

schemaPath​ (必須)

String

null

スキーマ定義。使用するスキーマファイルが配置されているパス。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

trimValues

Boolean

false

末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効な値は、​true​ または ​false​ です。

trimValues

Boolean

false

切り捨て値が項目幅より長いかどうかを示します。有効なオプションは、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

​useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、ライターは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

zonedDecimalStrict

## [](#mime_type)サポートされる MIME タイプ COBOL コピーブック形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# COBOL コピーブック形式 MIME タイプ: `application/flatfile` ID: `flatfile` COBOL コピーブックは、COBOL データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。 Transform Message コンポーネントは、COBOL コピーブック形式を処理するための設定を提供します。たとえば、COBOL 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の COBOL コピーブックは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#cobol_metadata)コピーブック定義のインポート コピーブック定義をインポートすると、Transform Message コンポーネントは、​`schemaPath`​ プロパティで参照できるフラットファイルスキーマに定義を変換します。 コピーブック定義をインポートする方法 1. Studio で Transform コンポーネントの入力ペイロードを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ を選択して \[Set Metadata Type (メタデータ型を設定)\] ダイアログを開きます。 コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。 2. コピーブックメタデータの名前を入力します (例: `copybook`​)。 3. **\[Type (型)\]**​ ドロップダウンメニューから \[Copybook (コピーブック)\] 型を選択します。 4. コピーブック定義ファイルをインポートします。 5. \[Select (選択)\] をクリックします。 ![コピーブック定義ファイルをインポートするためのメタデータ型の選択インターフェース](/mulesoft/current/ja-jp/dataweave/2.4/_images/copybook-import.png) Figure 1. コピーブック定義ファイルのインポート たとえば、次のようなコピーブック定義ファイル (​`mailing-record.cpy`​) があるとします。 01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5). - コピーブック定義は常に ​`01`​ エントリから始まる必要があります。コピーブック内の ​`01`​ 定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の ​`01`​ 定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の ​`01`​ 定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。 - COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。 スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの ​`src/main/resources/schema`​ フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。 form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } } コピーブックをインポートしたら、​`schemaPath`​ プロパティを使用して ​`output`​ ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、​`output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"`​ です。 ## [](#サポートされるコピーブック機能)サポートされるコピーブック機能 すべてのコピーブック機能が DataWeave の COBOL コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。 - DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、​[文字エンコード](#character_encoding)​を参照してください。 - 以下のみで構成される数値の PICTURE 句 - 「9」- 1 つ以上の数字位置 - 「S」- 1 つの省略可能な符号文字位置 (先頭または末尾) - 「V」- 1 つの省略可能な小数点 - 「P」- 1 つ以上の 10 進数位取り位置 - 「X」文字位置のみで構成される英数字値の PICTURE 句 - PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の ​`9(5)`​ など) - スキーマの ​`controlVal`​ プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。 - REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照) 次の機能は​_サポートされていません_​。 - 英数字で編集された PICTURE 句 - 挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句 - 特殊なレベル番号: - レベル 66 - 項目またはグループの代替名 - レベル 77 - 独立データ項目 - レベル 88 - 条件名 (値の列挙に相当) - グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます) - COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます) - VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用) - SYNC 句 (レコード内で値を一致させるために使用) ## [](#redefines-のサポート)REDEFINES のサポート REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「\*」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「\*1」、「\*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。 REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。 ## [](#character_encoding)文字エンコード BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。 REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。 ## [](#コピーブックのインポートに関する一般的な問題)コピーブックのインポートに関する一般的な問題 コピーブックのインポートに関する最も一般的な問題は、入力行領域の COBOL 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「\*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。 タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。 コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、COBOL コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。 コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ DataWeave は、この形式で入力データを読み取る指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​nulls​、それ以外の場合は ​spaces

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​: すべてのデータを実際の値として処理する

  • spaces​: スペースのみで構成される項目を欠落値として解釈する

  • zeroes​: 「0」文字のみで構成される数値項目とスペースのみで構成される文字項目を欠落値として解釈する

  • nulls​: 0 バイトのみで構成される項目を欠落値として解釈する

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。​

recordParsing

String

strict

予想される、行/レコード間の分離:

  • strict​: 各レコードの末尾で改行が予想される。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

schemaPath​ (必須)

String

null

スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、リーダーは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。​有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。 有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ DataWeave は、この形式で出力データを書き込む指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

encoding

String

null

このライターで使用されるエンコード (​UTF-8​ など)。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​NULLS​、それ以外の場合は ​SPACES

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ を使用し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • SPACES​: 項目をスペースで埋める。

  • ZEROES​: 数値項目を ​0​ 文字で、文字項目をスペース文字で埋める。

  • NULLS​: 項目を 0 バイトで埋める。

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。​

recordTerminator

String

システムプロパティ ​line.separator

レコード区切り文字 (改行)。有効値:

  • lf​

  • cr​

  • crlf​

  • none​

Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

retainEmptyStringFieldsOnParsing

Boolean

false

true​ に設定すると、このプロパティによりリーダーは値がない項目を保持し、その値を空の文字列に設定します。リーダーのデフォルトの動作では、これらの項目を削除します。 2023 年 1 月バージョンの Mule バージョン 4.4.0-20230102 の DataWeave 2.4 で導入されました。

schemaPath​ (必須)

String

null

スキーマ定義。使用するスキーマファイルが配置されているパス。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

trimValues

Boolean

false

末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効な値は、​true​ または ​false​ です。

trimValues

Boolean

false

切り捨て値が項目幅より長いかどうかを示します。有効なオプションは、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、ライターは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ COBOL コピーブック形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# COBOL コピーブック形式 MIME タイプ: `application/flatfile` ID: `flatfile` COBOL コピーブックは、COBOL データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。 Transform Message コンポーネントは、COBOL コピーブック形式を処理するための設定を提供します。たとえば、COBOL 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の COBOL コピーブックは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#cobol_metadata)コピーブック定義のインポート コピーブック定義をインポートすると、Transform Message コンポーネントは、​`schemaPath`​ プロパティで参照できるフラットファイルスキーマに定義を変換します。 コピーブック定義をインポートする方法 1. Studio で Transform コンポーネントの入力ペイロードを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ を選択して \[Set Metadata Type (メタデータ型を設定)\] ダイアログを開きます。 コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。 2. コピーブックメタデータの名前を入力します (例: `copybook`​)。 3. **\[Type (型)\]**​ ドロップダウンメニューから \[Copybook (コピーブック)\] 型を選択します。 4. コピーブック定義ファイルをインポートします。 5. \[Select (選択)\] をクリックします。 ![コピーブック定義ファイルをインポートするためのメタデータ型の選択インターフェース](/mulesoft/current/ja-jp/dataweave/2.5/_images/copybook-import.png) Figure 1. コピーブック定義ファイルのインポート たとえば、次のようなコピーブック定義ファイル (​`mailing-record.cpy`​) があるとします。 01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5). - コピーブック定義は常に ​`01`​ エントリから始まる必要があります。コピーブック内の ​`01`​ 定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の ​`01`​ 定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の ​`01`​ 定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。 - COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。 スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの ​`src/main/resources/schema`​ フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。 form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } } コピーブックをインポートしたら、​`schemaPath`​ プロパティを使用して ​`output`​ ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、​`output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"`​ です。 ## [](#サポートされるコピーブック機能)サポートされるコピーブック機能 すべてのコピーブック機能が DataWeave の COBOL コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。 - DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、​[文字エンコード](#character_encoding)​を参照してください。 - 以下のみで構成される数値の PICTURE 句 - 「9」- 1 つ以上の数字位置 - 「S」- 1 つの省略可能な符号文字位置 (先頭または末尾) - 「V」- 1 つの省略可能な小数点 - 「P」- 1 つ以上の 10 進数位取り位置 - 「X」文字位置のみで構成される英数字値の PICTURE 句 - PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の ​`9(5)`​ など) - スキーマの ​`controlVal`​ プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。 - REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照) 次の機能は​_サポートされていません_​。 - 英数字で編集された PICTURE 句 - 挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句 - 特殊なレベル番号: - レベル 66 - 項目またはグループの代替名 - レベル 77 - 独立データ項目 - レベル 88 - 条件名 (値の列挙に相当) - グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます) - COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます) - VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用) - SYNC 句 (レコード内で値を一致させるために使用) ## [](#redefines-のサポート)REDEFINES のサポート REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「\*」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「\*1」、「\*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。 REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。 ## [](#character_encoding)文字エンコード BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。 REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。 ## [](#コピーブックのインポートに関する一般的な問題)コピーブックのインポートに関する一般的な問題 コピーブックのインポートに関する最も一般的な問題は、入力行領域の COBOL 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「\*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。 タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。 コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、COBOL コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。 コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ COBOL コピーブック形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# COBOL コピーブック形式 MIME タイプ: `application/flatfile` ID: `flatfile` COBOL コピーブックは、COBOL データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。 Transform Message コンポーネントは、COBOL コピーブック形式を処理するための設定を提供します。たとえば、COBOL 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の COBOL コピーブックは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#cobol_metadata)コピーブック定義のインポート コピーブック定義をインポートすると、Transform Message コンポーネントは、​`schemaPath`​ プロパティで参照できるフラットファイルスキーマに定義を変換します。 コピーブック定義をインポートする方法 1. Studio で Transform コンポーネントの入力ペイロードを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ を選択して \[Set Metadata Type (メタデータ型を設定)\] ダイアログを開きます。 コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。 2. コピーブックメタデータの名前を入力します (例: `copybook`​)。 3. **\[Type (型)\]**​ ドロップダウンメニューから \[Copybook (コピーブック)\] 型を選択します。 4. コピーブック定義ファイルをインポートします。 5. \[Select (選択)\] をクリックします。 ![コピーブック定義ファイルをインポートするためのメタデータ型の選択インターフェース](/mulesoft/current/ja-jp/dataweave/2.6/_images/copybook-import.png) Figure 1. コピーブック定義ファイルのインポート たとえば、次のようなコピーブック定義ファイル (​`mailing-record.cpy`​) があるとします。 01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5). - コピーブック定義は常に ​`01`​ エントリから始まる必要があります。コピーブック内の ​`01`​ 定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の ​`01`​ 定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の ​`01`​ 定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。 - COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。 スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの ​`src/main/resources/schema`​ フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。 form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } } コピーブックをインポートしたら、​`schemaPath`​ プロパティを使用して ​`output`​ ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、​`output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"`​ です。 ## [](#サポートされるコピーブック機能)サポートされるコピーブック機能 すべてのコピーブック機能が DataWeave の COBOL コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。 - DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、​[文字エンコード](#character_encoding)​を参照してください。 - 以下のみで構成される数値の PICTURE 句 - 「9」- 1 つ以上の数字位置 - 「S」- 1 つの省略可能な符号文字位置 (先頭または末尾) - 「V」- 1 つの省略可能な小数点 - 「P」- 1 つ以上の 10 進数位取り位置 - 「X」文字位置のみで構成される英数字値の PICTURE 句 - PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の ​`9(5)`​ など) - スキーマの ​`controlVal`​ プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。 - REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照) 次の機能は​_サポートされていません_​。 - 英数字で編集された PICTURE 句 - 挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句 - 特殊なレベル番号: - レベル 66 - 項目またはグループの代替名 - レベル 77 - 独立データ項目 - レベル 88 - 条件名 (値の列挙に相当) - グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます) - COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます) - VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用) - SYNC 句 (レコード内で値を一致させるために使用) ## [](#redefines-のサポート)REDEFINES のサポート REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「\*」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「\*1」、「\*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。 REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。 ## [](#character_encoding)文字エンコード BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。 REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。 ## [](#コピーブックのインポートに関する一般的な問題)コピーブックのインポートに関する一般的な問題 コピーブックのインポートに関する最も一般的な問題は、入力行領域の COBOL 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「\*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。 タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。 コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、COBOL コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。 コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ COBOL コピーブック形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# COBOL コピーブック形式 MIME タイプ: `application/flatfile` ID: `flatfile` COBOL コピーブックは、COBOL データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。 Transform Message コンポーネントは、COBOL コピーブック形式を処理するための設定を提供します。たとえば、COBOL 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の COBOL コピーブックは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#cobol_metadata)コピーブック定義のインポート コピーブック定義をインポートすると、Transform Message コンポーネントは、​`schemaPath`​ プロパティで参照できるフラットファイルスキーマに定義を変換します。 コピーブック定義をインポートする方法 1. Studio で Transform コンポーネントの入力ペイロードを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ を選択して \[Set Metadata Type (メタデータ型を設定)\] ダイアログを開きます。 コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。 2. コピーブックメタデータの名前を入力します (例: `copybook`​)。 3. **\[Type (型)\]**​ ドロップダウンメニューから \[Copybook (コピーブック)\] 型を選択します。 4. コピーブック定義ファイルをインポートします。 5. \[Select (選択)\] をクリックします。 ![コピーブック定義ファイルをインポートするためのメタデータ型の選択インターフェース](/mulesoft/current/ja-jp/dataweave/2.7/_images/copybook-import.png) Figure 1. コピーブック定義ファイルのインポート たとえば、次のようなコピーブック定義ファイル (​`mailing-record.cpy`​) があるとします。 01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5). - コピーブック定義は常に ​`01`​ エントリから始まる必要があります。コピーブック内の ​`01`​ 定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の ​`01`​ 定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の ​`01`​ 定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。 - COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。 スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの ​`src/main/resources/schema`​ フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。 form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } } コピーブックをインポートしたら、​`schemaPath`​ プロパティを使用して ​`output`​ ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、​`output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"`​ です。 ## [](#サポートされるコピーブック機能)サポートされるコピーブック機能 すべてのコピーブック機能が DataWeave の COBOL コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。 - DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、​[文字エンコード](#character_encoding)​を参照してください。 - 以下のみで構成される数値の PICTURE 句 - 「9」- 1 つ以上の数字位置 - 「S」- 1 つの省略可能な符号文字位置 (先頭または末尾) - 「V」- 1 つの省略可能な小数点 - 「P」- 1 つ以上の 10 進数位取り位置 - 「X」文字位置のみで構成される英数字値の PICTURE 句 - PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の ​`9(5)`​ など) - スキーマの ​`controlVal`​ プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。 - REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照) 次の機能は​_サポートされていません_​。 - 英数字で編集された PICTURE 句 - 挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句 - 特殊なレベル番号: - レベル 66 - 項目またはグループの代替名 - レベル 77 - 独立データ項目 - レベル 88 - 条件名 (値の列挙に相当) - グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます) - COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます) - VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用) - SYNC 句 (レコード内で値を一致させるために使用) ## [](#redefines-のサポート)REDEFINES のサポート REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「\*」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「\*1」、「\*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。 REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。 ## [](#character_encoding)文字エンコード BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。 REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。 ## [](#コピーブックのインポートに関する一般的な問題)コピーブックのインポートに関する一般的な問題 コピーブックのインポートに関する最も一般的な問題は、入力行領域の COBOL 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「\*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。 タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。 コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、COBOL コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。 コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ COBOL コピーブック形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# COBOL コピーブック形式 MIME タイプ: `application/flatfile` ID: `flatfile` COBOL コピーブックは、COBOL データファイルのレコードと項目のレイアウトを記述するフラットファイルの種別です。 Transform Message コンポーネントは、COBOL コピーブック形式を処理するための設定を提供します。たとえば、COBOL 定義を Transform Message コンポーネントにインポートしてコピーブック変換で使用できます。
DataWeave の COBOL コピーブックは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいコピーブックファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#cobol_metadata)コピーブック定義のインポート コピーブック定義をインポートすると、Transform Message コンポーネントは、​`schemaPath`​ プロパティで参照できるフラットファイルスキーマに定義を変換します。 コピーブック定義をインポートする方法 1. Studio で Transform コンポーネントの入力ペイロードを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ を選択して \[Set Metadata Type (メタデータ型を設定)\] ダイアログを開きます。 コピーブック定義をインポートする前に、メタデータ型を定義する必要があります。 2. コピーブックメタデータの名前を入力します (例: `copybook`​)。 3. **\[Type (型)\]**​ ドロップダウンメニューから \[Copybook (コピーブック)\] 型を選択します。 4. コピーブック定義ファイルをインポートします。 5. \[Select (選択)\] をクリックします。 ![コピーブック定義ファイルをインポートするためのメタデータ型の選択インターフェース](/mulesoft/current/ja-jp/dataweave/2.8/_images/copybook-import.png) Figure 1. コピーブック定義ファイルのインポート たとえば、次のようなコピーブック定義ファイル (​`mailing-record.cpy`​) があるとします。 01 MAILING-RECORD. 05 COMPANY-NAME PIC X(30). 05 CONTACTS. 10 PRESIDENT. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 VP-MARKETING. 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 10 ALTERNATE-CONTACT. 15 TITLE PIC X(10). 15 LAST-NAME PIC X(15). 15 FIRST-NAME PIC X(8). 05 ADDRESS PIC X(15). 05 CITY PIC X(15). 05 STATE PIC XX. 05 ZIP PIC 9(5). - コピーブック定義は常に ​`01`​ エントリから始まる必要があります。コピーブック内の ​`01`​ 定義ごとに個別のレコードタイプが生成されます (コピーブックを使用できるようにするには 1 つ以上の ​`01`​ 定義が存在する必要があります。定義がない場合は、任意の名前を使用して、コピーブックの開始位置に定義を追加します)。コピーブックファイルに複数の ​`01`​ 定義がある場合、変換で使用する定義をドロップダウンリストから選択できます。 - COBOL 形式では、各行の列 7 ~ 72 のみを使用するように定義する必要があります。列 1 ~ 5 と列 72 より後のデータは、インポートプロセスで無視されます。列 6 は、行継続マーカーです。 スキーマをインポートすると、Transform コンポーネントは、Muke プロジェクトの ​`src/main/resources/schema`​ フォルダーに保存しているフラットファイルスキーマにコピーブックファイルを変換します。フラットファイル形式では、上記のコピーブック定義は次のようになります。 form: COPYBOOK id: 'MAILING-RECORD' values: - { name: 'COMPANY-NAME', type: String, length: 30 } - name: 'CONTACTS' values: - name: 'PRESIDENT' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'VP-MARKETING' values: - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - name: 'ALTERNATE-CONTACT' values: - { name: 'TITLE', type: String, length: 10 } - { name: 'LAST-NAME', type: String, length: 15 } - { name: 'FIRST-NAME', type: String, length: 8 } - { name: 'ADDRESS', type: String, length: 15 } - { name: 'CITY', type: String, length: 15 } - { name: 'STATE', type: String, length: 2 } - { name: 'ZIP', type: Integer, length: 5, format: { justify: ZEROES, sign: UNSIGNED } } コピーブックをインポートしたら、​`schemaPath`​ プロパティを使用して ​`output`​ ディレクティブを介して関連付けられているフラットファイルを参照できます。たとえば、​`output application/flatfile schemaPath="src/main/resources/schemas/mailing-record.ffd"`​ です。 ## [](#サポートされるコピーブック機能)サポートされるコピーブック機能 すべてのコピーブック機能が DataWeave の COBOL コピーブック形式でサポートされるとは限りません。一般に、この形式では次を含む最も一般的な使用方法と簡単なパターンがサポートされます。 - DISPLAY、BINARY (COMP)、COMP-5 および PACKED-DECIMAL (COMP-3) の使用方法。 文字エンコードの制限については、​[文字エンコード](#character_encoding)​を参照してください。 - 以下のみで構成される数値の PICTURE 句 - 「9」- 1 つ以上の数字位置 - 「S」- 1 つの省略可能な符号文字位置 (先頭または末尾) - 「V」- 1 つの省略可能な小数点 - 「P」- 1 つ以上の 10 進数位取り位置 - 「X」文字位置のみで構成される英数字値の PICTURE 句 - PICTURE 句での「9」、「P」、および「X」文字の反復数 (5 桁数値の場合の ​`9(5)`​ など) - スキーマの ​`controlVal`​ プロパティが含まれる OCCURS DEPENDING ON。含まれる構造内で制御値がネストされている場合、生成されたスキーマを手動で変更して、「container.value」の値のフルパスを指定する必要があります。 - REDEFINES 句 (レコードデータの同じ部分の異なるビューを提供するために使用 - 以下のセクションの詳細を参照) 次の機能は​_サポートされていません_​。 - 英数字で編集された PICTURE 句 - 挿入、置換、およびゼロサプレスのすべての形式を含む、数値で編集された PICTURE 句 - 特殊なレベル番号: - レベル 66 - 項目またはグループの代替名 - レベル 77 - 独立データ項目 - レベル 88 - 条件名 (値の列挙に相当) - グループレベルの SIGN 句 (PICTURE 句を含む基本項目でのみサポートされます) - COMP-1 または COMP-2 の USAGE、およびグループレベルの USAGE 句 (PICTURE 句を含む基本項目でのみサポートされます) - VALUE 句 (リテラルまたは別のデータ項目からデータ項目または条件名の値を定義するために使用) - SYNC 句 (レコード内で値を一致させるために使用) ## [](#redefines-のサポート)REDEFINES のサポート REDEFINES は、レコードのデータの動的な解析を促進します。REDEFINES を指定してコピーブックをインポートする場合、生成されたスキーマでは、「\*」 (同じレベルで複数の REDEFINES グルーピングが指定される場合は、「\*1」、「\*2」など) という名前の特殊なグルーピングを使用して、異なるすべての解析を結合します。この特殊なグルーピング名は、他のグルーピング名と同様に DataWeave 式で使用します。 REDEFINES グルーピングを使用すると、通常のコピーブックグルーピングよりもオーバーヘッドが大きくなるため、可能な場合は Studio にインポートする前にコピーブックから REDEFINES を削除することをお勧めします。 ## [](#character_encoding)文字エンコード BINARY (COMP)、COMP-5、または PACKED-DECIMAL (COMP-3) の使用方法は、256 個の文字コード候補の範囲全体を使用する 1 バイト文字エンコードでのみサポートされます。これらの使用方法では、UTF-8 と他の可変長エンコードはサポートされません (1 バイトではないため)。また、ASCII もサポートされません (範囲全体を使用しないため)。サポートされている文字エンコードには、ISO-8859-1 (完全な 8 ビットへの ASCII の拡張) や他の 8859 バリエーションおよび EBCDIC (IBM037) などがあります。 REDEFINES では、データに 1 バイト/文字の文字エンコードを使用する必要がありますが、BINARY、(COMP)、COMP-5、PACKED-DECIMAL (COMP-3) の使用方法がデータに含まれていない限り、任意の 1 バイト/文字の文字エンコードを使用できます。 ## [](#コピーブックのインポートに関する一般的な問題)コピーブックのインポートに関する一般的な問題 コピーブックのインポートに関する最も一般的な問題は、入力行領域の COBOL 標準に従っていないことです。コピーブックのインポート解析では、各行の列 1 ~ 6 のコンテンツが無視され、列 7 に「\*」 (アスタリスク) が含まれているすべての行が無視されます。また、各行の列 72 を超える部分はすべて無視されます。 つまり、実際のすべてのデータ定義が入力行の列 8 ~ 72 の間に存在する必要があります。 タブ位置に関する定義された標準はないため、入力内のタブは展開されません。コピーブックの入力列を数える場合、各タブ文字は 1 個のスペース文字として処理されます。 コピーブックを処理するときにインデントは無視され、レベル番号のみが有意として処理されます。これは通常は問題ではありませんが、COBOL コンパイラーで受け入れられないにも関わらずコピーブックのインポートが受け入れられる可能性があります。 コピーブックのインポートの結果として警告とエラーの両方が報告される場合があります。 一般に、警告は、有意であるかどうかに関係なく、機能がサポートまたは認識されないことを伝えます。エラーは、生成されたスキーマ (ある場合) がコピーブックの完全に正確な表現ではないことを意味する問題の通知です。報告されたすべての警告またはエラーを確認し、適切な処理を決定する必要があります。スキーマを生成されたとおりに単に受け入れたり、入力のコピーブックを変更したり、生成されたスキーマを変更したりすることができます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定をアクティブ化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定をアクティブ化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ COBOL コピーブック形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# Coercions (dw::util::Coercions) このユーティリティモジュールは型の強制を強化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Coercions`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ## [](#関数)関数
名前 説明

​toArray

​String​ 値を文字の ​Array​ に分割します。

​toBinary

指定されたエンコーディングを使用して ​String​ 値を ​Binary​ 値に変換します。

​toBoolean

​String​ 値を ​Boolean​ 値に変換します。

​toDate

​String​ 値を ​Date​ 値に変換して、形式とロケールを受け入れます。

​toDateTime

​milliseconds​ または ​seconds​ を単位として使用して ​Number​ 値を ​DateTime​ 値に変換します。

​toLocalDateTime

​String​ 値を ​LocalDateTime​ 値に変換して、形式とロケールを受け入れます。

​toLocalTime

​String​ 値を ​LocalTime​ 値に変換して、形式とロケールを受け入れます。

​toNumber

選択した単位に応じて ​DateTime​ 値を秒数またはミリ秒数に変換する ​toNumber​ のバリエーション。

​toPeriod

​String​ 値を ​Period​ 値に変換します。

​toRegex

​String​ 値を ​Regex​ 値に変換します。

​toString

​Number​ 値 (整数または小数) を ​String​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​toString​ のバリエーション。

​toTime

​String​ 値を ​Time​ 値に変換して、形式とロケールを受け入れます。

​toTimeZone

​String​ 値を ​TimeZone​ 値に変換します。

​toUri

​String​ 値を ​Uri​ 値に変換します。

## [](#型)型 - [Coercions 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-coercions-types) # Coercions (dw::util::Coercions) このユーティリティモジュールは型の強制を強化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Coercions`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

toArray

String​ 値を文字の ​Array​ に分割します。

toBinary

指定されたエンコーディングを使用して ​String​ 値を ​Binary​ 値に変換します。

toBoolean

String​ 値を ​Boolean​ 値に変換します。

toDate

String​ 値を ​Date​ 値に変換して、形式とロケールを受け入れます。

toDateTime

milliseconds​ または ​seconds​ を単位として使用して ​Number​ 値を ​DateTime​ 値に変換します。

toLocalDateTime

String​ 値を ​LocalDateTime​ 値に変換して、形式とロケールを受け入れます。

toLocalTime

String​ 値を ​LocalTime​ 値に変換して、形式とロケールを受け入れます。

toNumber

選択した単位に応じて ​DateTime​ 値を秒数またはミリ秒数に変換する ​toNumber​ のバリエーション。

toPeriod

String​ 値を ​Period​ 値に変換します。

toRegex

String​ 値を ​Regex​ 値に変換します。

toString

Number​ 値 (整数または小数) を ​String​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​toString​ のバリエーション。

toTime

String​ 値を ​Time​ 値に変換して、形式とロケールを受け入れます。

toTimeZone

String​ 値を ​TimeZone​ 値に変換します。

toUri

String​ 値を ​Uri​ 値に変換します。

## [](#型)型 - [Coercions 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-coercions-types) # Coercions (dw::util::Coercions) このユーティリティモジュールは型の強制を強化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Coercions`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

toArray

String​ 値を文字の ​Array​ に分割します。

toBinary

指定されたエンコーディングを使用して ​String​ 値を ​Binary​ 値に変換します。

toBoolean

String​ 値を ​Boolean​ 値に変換します。

toDate

String​ 値を ​Date​ 値に変換して、形式とロケールを受け入れます。

toDateTime

milliseconds​ または ​seconds​ を単位として使用して ​Number​ 値を ​DateTime​ 値に変換します。

toLocalDateTime

String​ 値を ​LocalDateTime​ 値に変換して、形式とロケールを受け入れます。

toLocalTime

String​ 値を ​LocalTime​ 値に変換して、形式とロケールを受け入れます。

toNumber

選択した単位に応じて ​DateTime​ 値を秒数またはミリ秒数に変換する ​toNumber​ のバリエーション。

toPeriod

String​ 値を ​Period​ 値に変換します。

toRegex

String​ 値を ​Regex​ 値に変換します。

toString

Number​ 値 (整数または小数) を ​String​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​toString​ のバリエーション。

toTime

String​ 値を ​Time​ 値に変換して、形式とロケールを受け入れます。

toTimeZone

String​ 値を ​TimeZone​ 値に変換します。

toUri

String​ 値を ​Uri​ 値に変換します。

## [](#型)型 - [Coercions 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-coercions-types) # Coercions (dw::util::Coercions) このユーティリティモジュールは型の強制を強化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Coercions`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

toArray

String​ 値を文字の ​Array​ に分割します。

toBinary

指定されたエンコーディングを使用して ​String​ 値を ​Binary​ 値に変換します。

toBoolean

String​ 値を ​Boolean​ 値に変換します。

toDate

String​ 値を ​Date​ 値に変換して、形式とロケールを受け入れます。

toDateTime

milliseconds​ または ​seconds​ を単位として使用して ​Number​ 値を ​DateTime​ 値に変換します。

toLocalDateTime

String​ 値を ​LocalDateTime​ 値に変換して、形式とロケールを受け入れます。

toLocalTime

String​ 値を ​LocalTime​ 値に変換して、形式とロケールを受け入れます。

toNumber

選択した単位に応じて ​DateTime​ 値を秒数またはミリ秒数に変換する ​toNumber​ のバリエーション。

toPeriod

String​ 値を ​Period​ 値に変換します。

toRegex

String​ 値を ​Regex​ 値に変換します。

toString

Number​ 値 (整数または小数) を ​String​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​toString​ のバリエーション。

toTime

String​ 値を ​Time​ 値に変換して、形式とロケールを受け入れます。

toTimeZone

String​ 値を ​TimeZone​ 値に変換します。

toUri

String​ 値を ​Uri​ 値に変換します。

## [](#型)型 - [Coercions 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-coercions-types) # Coercions (dw::util::Coercions) このユーティリティモジュールは型の強制を強化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Coercions`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

toArray

String​ 値を文字の ​Array​ に分割します。

toBinary

指定されたエンコーディングを使用して ​String​ 値を ​Binary​ 値に変換します。

toBoolean

String​ 値を ​Boolean​ 値に変換します。

toDate

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​Date​ 値に変換します。

toDateOrNull

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​Date​ 値に変換します。

toDateTime

変換する特定の値と一致する最初の ​Formatter​ を使用して、​String​ 値を ​DateTime​ 値に変換します。

toDateTimeOrNull

変換する特定の値と一致する最初の ​Formatter​ を使用して、​String​ 値を ​DateTime​ 値に変換します。

toLocalDateTime

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​LocalDateTime​ 値に変換します。

toLocalDateTimeOrNull

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​LocalDateTime​ 値に変換します。

toLocalTime

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​LocalTime​ 値に変換します。

toLocalTimeOrNull

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​LocalTime​ 値に変換します。

toNumber

変換する特定の値と一致する最初の ​Formatter​ を使用して、​String​ 値を ​Number​ 値に変換します。

toNumberOrNull

変換する特定の値と一致する最初の ​Formatter​ を使用して、​String​ 値を ​Number​ 値に変換します。

toPeriod

String​ 値を ​Period​ 値に変換します。

toRegex

String​ 値を ​Regex​ 値に変換します。

toString

Number​ 値 (整数または小数) を ​String​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​toString​ のバリエーション。

toTime

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​Time​ 値に変換します。

toTimeOrNull

変換する特定の値に一致する最初の​フォーマッター​を使用して、​String​ 値を ​Time​ 値に変換します。

toTimeZone

String​ 値を ​TimeZone​ 値に変換します。

toUri

String​ 値を ​Uri​ 値に変換します。

## [](#型)型 - [Coercions 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-coercions-types) # Coercions 型 (dw::util::Coercions)
型 定義 説明

MillisOrSecs

​type MillisOrSecs = "milliseconds" | "seconds"

単位を ​"milliseconds"​ または ​"seconds"​ に設定するために使用される型。

PeriodUnits

​type PeriodUnits = "hours" | "minutes" | "seconds" | "milliseconds" | "nanos"

​Period​ 値の単位を ​"hours"​、​"minutes"​、​"seconds"​、​"milliseconds"​、または ​"nanos"​ に設定するために使用される型。

RoundingMode

​type RoundingMode = "UP" | "DOWN" | "CEILING" | "FLOOR" | "HALF_UP" | "HALF_DOWN" | "HALF_EVEN"

小数値を切り上げまたは切り下げるときに使用される型。

# Coercions 型 (dw::util::Coercions)
型 定義 説明

MillisOrSecs

type MillisOrSecs = "milliseconds" | "seconds"

単位を ​"milliseconds"​ または ​"seconds"​ に設定するために使用される型。

PeriodUnits

type PeriodUnits = "hours" | "minutes" | "seconds" | "milliseconds" | "nanos"

Period​ 値の単位を ​"hours"​、​"minutes"​、​"seconds"​、​"milliseconds"​、または ​"nanos"​ に設定するために使用される型。

RoundingMode

type RoundingMode = "UP" | "DOWN" | "CEILING" | "FLOOR" | "HALF_UP" | "HALF_DOWN" | "HALF_EVEN"

小数値を切り上げまたは切り下げるときに使用される型。

# Coercions 型 (dw::util::Coercions)
型 定義 説明

フォーマッター

type Formatter = { format?: String, locale?: String }

Dates​ 型と ​Number​ の書式設定に使用される型。 次の項目がサポートされています。

  • format​: (省略可能) 日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。

  • locale​: (省略可能) 使用する ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

MillisOrSecs

type MillisOrSecs = "milliseconds" | "seconds"

単位を ​"milliseconds"​ または ​"seconds"​ に設定するために使用される型。

PeriodUnits

type PeriodUnits = "hours" | "minutes" | "seconds" | "milliseconds" | "nanos"

Period​ 値の単位を ​"hours"​、​"minutes"​、​"seconds"​、​"milliseconds"​、または ​"nanos"​ に設定するために使用される型。

RoundingMode

type RoundingMode = "UP" | "DOWN" | "CEILING" | "FLOOR" | "HALF_UP" | "HALF_DOWN" | "HALF_EVEN"

小数値を切り上げまたは切り下げるときに使用される型。

# Coercions 型 (dw::util::Coercions)
型 定義 説明

フォーマッター

type Formatter = { format?: String, locale?: String }

Dates​ 型と ​Number​ の書式設定に使用される型。 次の項目がサポートされています。

  • format​: (省略可能) 日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。

  • locale​: (省略可能) 使用する ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

MillisOrSecs

type MillisOrSecs = "milliseconds" | "seconds"

単位を ​"milliseconds"​ または ​"seconds"​ に設定するために使用される型。

PeriodUnits

type PeriodUnits = "hours" | "minutes" | "seconds" | "milliseconds" | "nanos"

Period​ 値の単位を ​"hours"​、​"minutes"​、​"seconds"​、​"milliseconds"​、または ​"nanos"​ に設定するために使用される型。

RoundingMode

type RoundingMode = "UP" | "DOWN" | "CEILING" | "FLOOR" | "HALF_UP" | "HALF_DOWN" | "HALF_EVEN"

小数値を切り上げまたは切り下げるときに使用される型。

# Coercions 型 (dw::util::Coercions)
型 定義 説明

フォーマッター

type Formatter = { format?: String, locale?: String }

Dates​ 型と ​Number​ の書式設定に使用される型。 次の項目がサポートされています。

  • format​: (省略可能) 日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。

  • locale​: (省略可能) 使用する ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

MillisOrSecs

type MillisOrSecs = "milliseconds" | "seconds"

単位を ​"milliseconds"​ または ​"seconds"​ に設定するために使用される型。

PeriodUnits

type PeriodUnits = "hours" | "minutes" | "seconds" | "milliseconds" | "nanos"

Period​ 値の単位を ​"hours"​、​"minutes"​、​"seconds"​、​"milliseconds"​、または ​"nanos"​ に設定するために使用される型。

RoundingMode

type RoundingMode = "UP" | "DOWN" | "CEILING" | "FLOOR" | "HALF_UP" | "HALF_DOWN" | "HALF_EVEN"

小数値を切り上げまたは切り下げるときに使用される型。

# collapse ## [](#collapse1)collapse(text: String): Array 文字列を同じ文字ごとのサブ文字列に分けます。 各サブ文字列には、1 文字、または入力文字列中で隣接している同じ文字が含まれます。空白スペースは文字として扱われます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

分ける文字列。

### [](#例)例 次の例では、この関数で文字列を分ける方法を示しています。 空白スペース (" ") は文字として扱われています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import collapse from dw::core::Strings output application/json --- collapse("a b babb a") ``` #### [](#出力)出力 ```Json ["a", " ", "b", " ", "b", "a", "bb", " ", "a"] ``` ## [](#collapse2)collapse(text: Null): Null `collapse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # collapse ## [](#collapse1)collapse(text: String): Array 文字列を同じ文字ごとのサブ文字列に分けます。 各サブ文字列には、1 文字、または入力文字列中で隣接している同じ文字が含まれます。空白スペースは文字として扱われます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分ける文字列。

### [](#例)例 次の例では、この関数で文字列を分ける方法を示しています。 空白スペース (" ") は文字として扱われています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import collapse from dw::core::Strings output application/json --- collapse("a b babb a") ``` #### [](#出力)出力 ```Json ["a", " ", "b", " ", "b", "a", "bb", " ", "a"] ``` ## [](#collapse2)collapse(text: Null): Null `collapse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # collapse ## [](#collapse1)collapse(text: String): Array 文字列を同じ文字ごとのサブ文字列に分けます。 各サブ文字列には、1 文字、または入力文字列中で隣接している同じ文字が含まれます。空白スペースは文字として扱われます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分ける文字列。

### [](#例)例 次の例では、この関数で文字列を分ける方法を示しています。 空白スペース (" ") は文字として扱われています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import collapse from dw::core::Strings output application/json --- collapse("a b babb a") ``` #### [](#出力)出力 ```Json ["a", " ", "b", " ", "b", "a", "bb", " ", "a"] ``` ## [](#collapse2)collapse(text: Null): Null `collapse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # collapse ## [](#collapse1)collapse(text: String): Array 文字列を同じ文字ごとのサブ文字列に分けます。 各サブ文字列には、1 文字、または入力文字列中で隣接している同じ文字が含まれます。空白スペースは文字として扱われます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分ける文字列。

### [](#例)例 次の例では、この関数で文字列を分ける方法を示しています。 空白スペース (" ") は文字として扱われています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import collapse from dw::core::Strings output application/json --- collapse("a b babb a") ``` #### [](#出力)出力 ```Json ["a", " ", "b", " ", "b", "a", "bb", " ", "a"] ``` ## [](#collapse2)collapse(text: Null): Null `collapse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # collapse ## [](#collapse1)collapse(text: String): Array 文字列を同じ文字ごとのサブ文字列に分けます。 各サブ文字列には、1 文字、または入力文字列中で隣接している同じ文字が含まれます。空白スペースは文字として扱われます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分ける文字列。

### [](#例)例 次の例では、この関数で文字列を分ける方法を示しています。 空白スペース (" ") は文字として扱われています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import collapse from dw::core::Strings output application/json --- collapse("a b babb a") ``` #### [](#出力)出力 ```Json ["a", " ", "b", " ", "b", "a", "bb", " ", "a"] ``` ## [](#collapse2)collapse(text: Null): Null `collapse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # compose ## [](#compose1)compose(Array, Array): String カスタム文字列補間値を使用して、URL コンポーネントを ​`encodeURIComponent`​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。 ### [](#パラメーター)パラメーター
名前 説明

​baseStringArray

​interpolationStringArray​ パラメーターの文字列を使用して補間する URL 部分を含む文字列配列。

​interpolationStringArray

​baseStringArray​ を補間するために使用される文字列を含む文字列配列。

### [](#例)例 次の例では、compose 関数を使用してエンコードされた URL を形成します。最初のパラメーターは 2 つの文字列から成る配列で、これらは URL の一部です。2 つ目のパラメーターは最初のパラメーターの文字列を補間するために使用される ​`urlPath`​ 変数です。入力内のスペースは出力 URL では ​`%20`​ にエンコードされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose(["http://examplewebsite.com/", "/page.html"], ["$(urlPath)"]) } ``` #### [](#出力)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` ## [](#簡易構文)簡易構文 この関数を簡易構文を使用してコールすることもできます。その場合は、エンコードする変数を含む文字列をバッククォート (​`` ` ``​) で囲みます。 ### [](#例-2)例 次の例は、簡易構文を使用して前の例と同じ結果を得る方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose `http://examplewebsite.com/$(urlPath)/page.html` } ``` #### [](#出力-2)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` # compose ## [](#compose1)compose(parts: Array, interpolation: Array): String カスタム文字列補間値を使用して、URL コンポーネントを ​`encodeURIComponent`​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。 ### [](#パラメーター)パラメーター
名前 説明

​baseStringArray

​interpolationStringArray​ パラメーターの文字列を使用して補間する URL 部分を含む文字列配列。

​interpolationStringArray

​baseStringArray​ を補間するために使用される文字列を含む文字列配列。

### [](#例)例 次の例では、compose 関数を使用してエンコードされた URL を形成します。最初のパラメーターは 2 つの文字列から成る配列で、これらは URL の一部です。2 つ目のパラメーターは最初のパラメーターの文字列を補間するために使用される ​`urlPath`​ 変数です。 入力内のスペースは出力 URL では ​`%20`​ にエンコードされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose(["http://examplewebsite.com/", "/page.html"], ["$(urlPath)"]) } ``` #### [](#出力)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` ### [](#例-2)例 この関数を簡易構文を使用してコールすることもできます。その場合は、エンコードする変数を含む文字列をバッククォート (​`` ` ``​) で囲みます。次の例は、簡易構文を使用して前の例と同じ結果を得る方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose `http://examplewebsite.com/$(urlPath)/page.html`} ``` #### [](#出力-2)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` # compose ## [](#compose1)compose(parts: Array, interpolation: Array): String カスタム文字列補間値を使用して、URL コンポーネントを ​`encodeURIComponent`​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。 ### [](#パラメーター)パラメーター
名前 説明

baseStringArray

interpolationStringArray​ パラメーターの文字列を使用して補間する URL 部分を含む文字列配列。

interpolationStringArray

baseStringArray​ を補間するために使用される文字列を含む文字列配列。

### [](#例)例 次の例では、compose 関数を使用してエンコードされた URL を形成します。最初のパラメーターは 2 つの文字列から成る配列で、これらは URL の一部です。2 つ目のパラメーターは最初のパラメーターの文字列を補間するために使用される ​`urlPath`​ 変数です。 入力内のスペースは出力 URL では ​`%20`​ にエンコードされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose(["http://examplewebsite.com/", "/page.html"], ["$(urlPath)"]) } ``` #### [](#出力)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` ### [](#例-2)例 この関数を簡易構文を使用してコールすることもできます。その場合は、エンコードする変数を含む文字列をバッククォート (`` ` ``) で囲みます。次の例は、簡易構文を使用して前の例と同じ結果を得る方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose `http://examplewebsite.com/$(urlPath)/page.html`} ``` #### [](#出力-2)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` # compose ## [](#compose1)compose(parts: Array, interpolation: Array): String カスタム文字列補間値を使用して、URL コンポーネントを ​`encodeURIComponent`​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。 ### [](#パラメーター)パラメーター
名前 説明

baseStringArray

interpolationStringArray​ パラメーターの文字列を使用して補間する URL 部分を含む文字列配列。

interpolationStringArray

baseStringArray​ を補間するために使用される文字列を含む文字列配列。

### [](#例)例 次の例では、compose 関数を使用してエンコードされた URL を形成します。最初のパラメーターは 2 つの文字列から成る配列で、これらは URL の一部です。2 つ目のパラメーターは最初のパラメーターの文字列を補間するために使用される ​`urlPath`​ 変数です。 入力内のスペースは出力 URL では ​`%20`​ にエンコードされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose(["http://examplewebsite.com/", "/page.html"], ["$(urlPath)"]) } ``` #### [](#出力)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` ### [](#例-2)例 この関数を簡易構文を使用してコールすることもできます。その場合は、エンコードする変数を含む文字列をバッククォート (`` ` ``) で囲みます。次の例は、簡易構文を使用して前の例と同じ結果を得る方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose `http://examplewebsite.com/$(urlPath)/page.html`} ``` #### [](#出力-2)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` # compose ## [](#compose1)compose(parts: Array, interpolation: Array): String カスタム文字列補間値を使用して、URL コンポーネントを ​`encodeURIComponent`​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。 ### [](#パラメーター)パラメーター
名前 説明

baseStringArray

interpolationStringArray​ パラメーターの文字列を使用して補間する URL 部分を含む文字列配列。

interpolationStringArray

baseStringArray​ を補間するために使用される文字列を含む文字列配列。

### [](#例)例 次の例では、compose 関数を使用してエンコードされた URL を形成します。最初のパラメーターは 2 つの文字列から成る配列で、これらは URL の一部です。2 つ目のパラメーターは最初のパラメーターの文字列を補間するために使用される ​`urlPath`​ 変数です。 入力内のスペースは出力 URL では ​`%20`​ にエンコードされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose(["http://examplewebsite.com/", "/page.html"], ["$(urlPath)"]) } ``` #### [](#出力)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` ### [](#例-2)例 この関数を簡易構文を使用してコールすることもできます。その場合は、エンコードする変数を含む文字列をバッククォート (`` ` ``) で囲みます。次の例は、簡易構文を使用して前の例と同じ結果を得る方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose `http://examplewebsite.com/$(urlPath)/page.html`} ``` #### [](#出力-2)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` # compose ## [](#compose1)compose(parts: Array, interpolation: Array): String カスタム文字列補間値を使用して、URL コンポーネントを ​`encodeURIComponent`​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。 ### [](#パラメーター)パラメーター
名前 説明

baseStringArray

interpolationStringArray​ パラメーターの文字列を使用して補間する URL 部分を含む文字列配列。

interpolationStringArray

baseStringArray​ を補間するために使用される文字列を含む文字列配列。

### [](#例)例 次の例では、compose 関数を使用してエンコードされた URL を形成します。最初のパラメーターは 2 つの文字列から成る配列で、これらは URL の一部です。2 つ目のパラメーターは最初のパラメーターの文字列を補間するために使用される ​`urlPath`​ 変数です。 入力内のスペースは出力 URL では ​`%20`​ にエンコードされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose(["http://examplewebsite.com/", "/page.html"], ["$(urlPath)"]) } ``` #### [](#出力)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` ### [](#例-2)例 この関数を簡易構文を使用してコールすることもできます。その場合は、エンコードする変数を含む文字列をバッククォート (`` ` ``) で囲みます。次の例は、簡易構文を使用して前の例と同じ結果を得る方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var urlPath = "content folder" import * from dw::core::URL --- { "encodedURL" : compose `http://examplewebsite.com/$(urlPath)/page.html`} ``` #### [](#出力-2)出力 ```JSON { "encodedURL" : "http://examplewebsite.com/content%20folder/page.html" } ``` # concatWith ## [](#concatwith1)concatWith(source: Binary, with: Binary): Binary 2 つのバイナリのコンテンツを連結します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

source

Binary (バイナリ)

ソースバイナリコンテンツ。

with

Binary (バイナリ)

追加するバイナリ。

### [](#例)例 この例では、2 つのバイナリを 1 つのバイナリに連結します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- "CAFE" as Binary {base: "16"} concatWith "ABCD" as Binary {base: "16"} ``` #### [](#出力)出力 ```Json "yv6rzQ==" as Binary {base: "64"} ``` ## [](#concatwith2)concatWith(source: Binary, with: Null): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#concatwith3)concatWith(source: Null, with: Binary): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # concatWith ## [](#concatwith1)concatWith(source: Binary, with: Binary): Binary 2 つのバイナリのコンテンツを連結します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

source

Binary (バイナリ)

ソースバイナリコンテンツ。

with

Binary (バイナリ)

追加するバイナリ。

### [](#例)例 この例では、2 つのバイナリを 1 つのバイナリに連結します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- "CAFE" as Binary {base: "16"} concatWith "ABCD" as Binary {base: "16"} ``` #### [](#出力)出力 ```Json "yv6rzQ==" as Binary {base: "64"} ``` ## [](#concatwith2)concatWith(source: Binary, with: Null): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#concatwith3)concatWith(source: Null, with: Binary): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # concatWith ## [](#concatwith1)concatWith(source: Binary, with: Binary): Binary 2 つのバイナリのコンテンツを連結します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

source

Binary (バイナリ)

ソースバイナリコンテンツ。

with

Binary (バイナリ)

追加するバイナリ。

### [](#例)例 この例では、2 つのバイナリを 1 つのバイナリに連結します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- "CAFE" as Binary {base: "16"} concatWith "ABCD" as Binary {base: "16"} ``` #### [](#出力)出力 ```Json "yv6rzQ==" as Binary {base: "64"} ``` ## [](#concatwith2)concatWith(source: Binary, with: Null): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#concatwith3)concatWith(source: Null, with: Binary): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # concatWith ## [](#concatwith1)concatWith(source: Binary, with: Binary): Binary 2 つのバイナリのコンテンツを連結します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

source

Binary (バイナリ)

ソースバイナリコンテンツ。

with

Binary (バイナリ)

追加するバイナリ。

### [](#例)例 この例では、2 つのバイナリを 1 つのバイナリに連結します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- "CAFE" as Binary {base: "16"} concatWith "ABCD" as Binary {base: "16"} ``` #### [](#出力)出力 ```Json "yv6rzQ==" as Binary {base: "64"} ``` ## [](#concatwith2)concatWith(source: Binary, with: Null): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#concatwith3)concatWith(source: Null, with: Binary): Binary `concatWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # contains ## [](#contains1)contains(Array, Any): Boolean 入力に特定の値が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`contains`​ は、入力として配列を受け入れます。その他のバージョンは文字列を受け入れ、別の文字列または正規表現を使用して一致があるかどうかを判別できます。 ### [](#パラメーター)パラメーター
名前 説明

​items

入力配列。

​elements

配列内で検索する要素。サポートされている任意のデータ型にできます。

### [](#例)例 次の例では、入力配列内の ​`2`​ を検索し、​`true`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ 1, 2, 3, 4 ] contains(2) ``` #### [](#出力)出力 ```JSON true ``` ### [](#例-2)例 次の例では、入力配列に「3」が含まれるかどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` #### [](#入力)入力 ```XML 155 30 15 5 4 7 1 3 null ``` #### [](#出力-2)出力 ```JSON { "ContainsRequestedItem": true } ``` ## [](#contains2)contains(String, String): Boolean 文字列に特定のサブ文字列が含まれるかどうかを示します。​`true`​ または ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

入力文字列 (​String​ (文字列))。

​toSearch

入力文字列内で検索するサブ文字列 (​String​ (文字列))。

### [](#例-3)例 次の例では、入力文字列「mulesoft」内の「mule」を検索し、​`true`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "mulesoft" contains("mule") ``` #### [](#出力-3)出力 ```JSON true ``` ### [](#例-4)例 次の例では、​`"some string"`​ 内のサブ文字列 ​`"me"`​ を検索し、​`true`​ を返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { ContainsString : payload.root.mystring contains("me") } ``` #### [](#入力-2)入力 ```XML some string ``` #### [](#出力-4)出力 ```JSON { "ContainsString": true } ``` ## [](#contains3)contains(String, Regex): Boolean 文字列に正規表現との一致が含まれる場合は ​`true`​、 それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​text

入力文字列。

​matcher

入力 ​text​ (テキスト) 内の文字を照合する Java 正規表現。

### [](#例-5)例 次の例では、入力の ​`mulesoft`​ 内に ​`e`​ から ​`g`​ までの任意の文字があるかどうかを確認し、​`true`​ を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- contains("mulesoft", /[e-g]/) ``` #### [](#出力-5)出力 ```JSON true ``` ### [](#例-6)例 次の例では、​`"A very long string"`​ 内の ​`/s[t|p]rin/`​ との一致を検索し、 ​`true`​ を返します。正規表現内の ​`[t|p]`​ は ​`t`​ または ​`p`​ を意味します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- ContainsString: payload.root.mystring contains /s[t|p]rin/ ``` #### [](#入力-3)入力 ```XML A very long string ``` #### [](#出力-6)出力 ```JSON { "ContainsString": true } ``` # contains ## [](#contains1)contains(@StreamCapable items: Array, element: Any): Boolean 入力に特定の値が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`contains`​ は、入力として配列を受け入れます。その他のバージョンは文字列を受け入れ、別の文字列または正規表現を使用して一致があるかどうかを判別できます。 ### [](#パラメーター)パラメーター
名前 説明

​items

入力配列。

​elements

配列内で検索する要素。サポートされている任意のデータ型にできます。

### [](#例)例 次の例では、入力配列内の ​`2`​ を検索し、​`true`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ 1, 2, 3, 4 ] contains(2) ``` #### [](#出力)出力 ```JSON true ``` ### [](#例-2)例 次の例では、入力配列に「3」が含まれるかどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` #### [](#入力)入力 ```XML 155 30 15 5 4 7 1 3 null ``` #### [](#出力-2)出力 ```JSON { "ContainsRequestedItem": true } ``` ## [](#contains2)contains(text: String, toSearch: String): Boolean 文字列に特定のサブ文字列が含まれるかどうかを示します。​`true`​ または ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

入力文字列 (​String​ (文字列))。

​toSearch

入力文字列内で検索するサブ文字列 (​String​ (文字列))。

### [](#例-3)例 次の例では、入力文字列「mulesoft」内の「mule」を検索し、​`true`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "mulesoft" contains("mule") ``` #### [](#出力-3)出力 ```JSON true ``` ### [](#例-4)例 次の例では、​`"some string"`​ 内のサブ文字列 ​`"me"`​ を検索し、​`true`​ を返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { ContainsString : payload.root.mystring contains("me") } ``` #### [](#入力-2)入力 ```XML some string ``` #### [](#出力-4)出力 ```JSON { "ContainsString": true } ``` ## [](#contains3)contains(text: String, matcher: Regex): Boolean 文字列に正規表現との一致が含まれる場合は ​`true`​、 それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​text

入力文字列。

​matcher

入力 ​text​ (テキスト) 内の文字を照合する Java 正規表現。

### [](#例-5)例 次の例では、入力の ​`mulesoft`​ 内に ​`e`​ から ​`g`​ までの任意の文字があるかどうかを確認し、​`true`​ を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- contains("mulesoft", /[e-g]/) ``` #### [](#出力-5)出力 ```JSON true ``` ### [](#例-6)例 次の例では、​`"A very long string"`​ 内の ​`/s[t|p]rin/`​ との一致を検索し、 ​`true`​ を返します。正規表現内の ​`[t|p]`​ は ​`t`​ または ​`p`​ を意味します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- ContainsString: payload.root.mystring contains /s[t|p]rin/ ``` #### [](#入力-3)入力 ```XML A very long string ``` #### [](#出力-6)出力 ```JSON { "ContainsString": true } ``` ## [](#contains4)contains(text: Null, matcher: Any): false `contains`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # contains ## [](#contains1)contains(@StreamCapable items: Array, element: Any): Boolean 入力に特定の値が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`contains`​ は、入力として配列を受け入れます。その他のバージョンは文字列を受け入れ、別の文字列または正規表現を使用して一致があるかどうかを判別できます。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列。

elements

配列内で検索する要素。サポートされている任意のデータ型にできます。

### [](#例)例 次の例では、入力配列内の ​`2`​ を検索し、​`true`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ 1, 2, 3, 4 ] contains(2) ``` #### [](#出力)出力 ```JSON true ``` ### [](#例-2)例 次の例では、入力配列に「3」が含まれるかどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` #### [](#入力)入力 ```XML 155 30 15 5 4 7 1 3 null ``` #### [](#出力-2)出力 ```JSON { "ContainsRequestedItem": true } ``` ## [](#contains2)contains(text: String, toSearch: String): Boolean 文字列に特定のサブ文字列が含まれるかどうかを示します。​`true`​ または ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

toSearch

入力文字列内で検索するサブ文字列 (​String​ (文字列))。

### [](#例-3)例 次の例では、入力文字列「mulesoft」内の「mule」を検索し、​`true`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "mulesoft" contains("mule") ``` #### [](#出力-3)出力 ```JSON true ``` ### [](#例-4)例 次の例では、​`"some string"`​ 内のサブ文字列 ​`"me"`​ を検索し、​`true`​ を返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { ContainsString : payload.root.mystring contains("me") } ``` #### [](#入力-2)入力 ```XML some string ``` #### [](#出力-4)出力 ```JSON { "ContainsString": true } ``` ## [](#contains3)contains(text: String, matcher: Regex): Boolean 文字列に正規表現との一致が含まれる場合は ​`true`​、 それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

text

入力文字列。

matcher

入力 ​text​ (テキスト) 内の文字を照合する Java 正規表現。

### [](#例-5)例 次の例では、入力の ​`mulesoft`​ 内に ​`e`​ から ​`g`​ までの任意の文字があるかどうかを確認し、​`true`​ を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- contains("mulesoft", /[e-g]/) ``` #### [](#出力-5)出力 ```JSON true ``` ### [](#例-6)例 次の例では、​`"A very long string"`​ 内の ​`/s[t|p]rin/`​ との一致を検索し、 ​`true`​ を返します。正規表現内の ​`[t|p]`​ は ​`t`​ または ​`p`​ を意味します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- ContainsString: payload.root.mystring contains /s[t|p]rin/ ``` #### [](#入力-3)入力 ```XML A very long string ``` #### [](#出力-6)出力 ```JSON { "ContainsString": true } ``` ## [](#contains4)contains(text: Null, matcher: Any): false `contains`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # contains ## [](#contains1)contains(@StreamCapable items: Array, element: Any): Boolean 入力に特定の値が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`contains`​ は、入力として配列を受け入れます。その他のバージョンは文字列を受け入れ、別の文字列または正規表現を使用して一致があるかどうかを判別できます。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列。

elements

配列内で検索する要素。サポートされている任意のデータ型にできます。

### [](#例)例 次の例では、入力配列内の ​`2`​ を検索し、​`true`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ 1, 2, 3, 4 ] contains(2) ``` #### [](#出力)出力 ```JSON true ``` ### [](#例-2)例 次の例では、入力配列に「3」が含まれるかどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` #### [](#入力)入力 ```XML 155 30 15 5 4 7 1 3 null ``` #### [](#出力-2)出力 ```JSON { "ContainsRequestedItem": true } ``` ## [](#contains2)contains(text: String, toSearch: String): Boolean 文字列に特定のサブ文字列が含まれるかどうかを示します。​`true`​ または ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

toSearch

入力文字列内で検索するサブ文字列 (​String​ (文字列))。

### [](#例-3)例 次の例では、入力文字列「mulesoft」内の「mule」を検索し、​`true`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "mulesoft" contains("mule") ``` #### [](#出力-3)出力 ```JSON true ``` ### [](#例-4)例 次の例では、​`"some string"`​ 内のサブ文字列 ​`"me"`​ を検索し、​`true`​ を返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { ContainsString : payload.root.mystring contains("me") } ``` #### [](#入力-2)入力 ```XML some string ``` #### [](#出力-4)出力 ```JSON { "ContainsString": true } ``` ## [](#contains3)contains(text: String, matcher: Regex): Boolean 文字列に正規表現との一致が含まれる場合は ​`true`​、 それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

text

入力文字列。

matcher

入力 ​text​ (テキスト) 内の文字を照合する Java 正規表現。

### [](#例-5)例 次の例では、入力の ​`mulesoft`​ 内に ​`e`​ から ​`g`​ までの任意の文字があるかどうかを確認し、​`true`​ を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- contains("mulesoft", /[e-g]/) ``` #### [](#出力-5)出力 ```JSON true ``` ### [](#例-6)例 次の例では、​`"A very long string"`​ 内の ​`/s[t|p]rin/`​ との一致を検索し、 ​`true`​ を返します。正規表現内の ​`[t|p]`​ は ​`t`​ または ​`p`​ を意味します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- ContainsString: payload.root.mystring contains /s[t|p]rin/ ``` #### [](#入力-3)入力 ```XML A very long string ``` #### [](#出力-6)出力 ```JSON { "ContainsString": true } ``` ## [](#contains4)contains(text: Null, matcher: Any): false `contains`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # contains ## [](#contains1)contains(@StreamCapable items: Array, element: Any): Boolean 入力に特定の値が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`contains`​ は、入力として配列を受け入れます。その他のバージョンは文字列を受け入れ、別の文字列または正規表現を使用して一致があるかどうかを判別できます。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列。

elements

配列内で検索する要素。サポートされている任意のデータ型にできます。

### [](#例)例 次の例では、入力配列内の ​`2`​ を検索し、​`true`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ 1, 2, 3, 4 ] contains(2) ``` #### [](#出力)出力 ```JSON true ``` ### [](#例-2)例 次の例では、入力配列に「3」が含まれるかどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` #### [](#入力)入力 ```XML 155 30 15 5 4 7 1 3 null ``` #### [](#出力-2)出力 ```JSON { "ContainsRequestedItem": true } ``` ## [](#contains2)contains(text: String, toSearch: String): Boolean 文字列に特定のサブ文字列が含まれるかどうかを示します。​`true`​ または ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

toSearch

入力文字列内で検索するサブ文字列 (​String​ (文字列))。

### [](#例-3)例 次の例では、入力文字列「mulesoft」内の「mule」を検索し、​`true`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "mulesoft" contains("mule") ``` #### [](#出力-3)出力 ```JSON true ``` ### [](#例-4)例 次の例では、​`"some string"`​ 内のサブ文字列 ​`"me"`​ を検索し、​`true`​ を返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { ContainsString : payload.root.mystring contains("me") } ``` #### [](#入力-2)入力 ```XML some string ``` #### [](#出力-4)出力 ```JSON { "ContainsString": true } ``` ## [](#contains3)contains(text: String, matcher: Regex): Boolean 文字列に正規表現との一致が含まれる場合は ​`true`​、 それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

text

入力文字列。

matcher

入力 ​text​ (テキスト) 内の文字を照合する Java 正規表現。

### [](#例-5)例 次の例では、入力の ​`mulesoft`​ 内に ​`e`​ から ​`g`​ までの任意の文字があるかどうかを確認し、​`true`​ を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- contains("mulesoft", /[e-g]/) ``` #### [](#出力-5)出力 ```JSON true ``` ### [](#例-6)例 次の例では、​`"A very long string"`​ 内の ​`/s[t|p]rin/`​ との一致を検索し、 ​`true`​ を返します。正規表現内の ​`[t|p]`​ は ​`t`​ または ​`p`​ を意味します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- ContainsString: payload.root.mystring contains /s[t|p]rin/ ``` #### [](#入力-3)入力 ```XML A very long string ``` #### [](#出力-6)出力 ```JSON { "ContainsString": true } ``` ## [](#contains4)contains(text: Null, matcher: Any): false `contains`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # contains ## [](#contains1)contains(@StreamCapable items: Array, element: Any): Boolean 入力に特定の値が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`contains`​ は、入力として配列を受け入れます。その他のバージョンは文字列を受け入れ、別の文字列または正規表現を使用して一致があるかどうかを判別できます。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列。

elements

配列内で検索する要素。サポートされている任意のデータ型にできます。

### [](#例)例 次の例では、入力配列内の ​`2`​ を検索し、​`true`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ 1, 2, 3, 4 ] contains(2) ``` #### [](#出力)出力 ```JSON true ``` ### [](#例-2)例 次の例では、入力配列に「3」が含まれるかどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` #### [](#入力)入力 ```XML 155 30 15 5 4 7 1 3 null ``` #### [](#出力-2)出力 ```JSON { "ContainsRequestedItem": true } ``` ## [](#contains2)contains(text: String, toSearch: String): Boolean 文字列に特定のサブ文字列が含まれるかどうかを示します。​`true`​ または ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

toSearch

入力文字列内で検索するサブ文字列 (​String​ (文字列))。

### [](#例-3)例 次の例では、入力文字列「mulesoft」内の「mule」を検索し、​`true`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "mulesoft" contains("mule") ``` #### [](#出力-3)出力 ```JSON true ``` ### [](#例-4)例 次の例では、​`"some string"`​ 内のサブ文字列 ​`"me"`​ を検索し、​`true`​ を返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { ContainsString : payload.root.mystring contains("me") } ``` #### [](#入力-2)入力 ```XML some string ``` #### [](#出力-4)出力 ```JSON { "ContainsString": true } ``` ## [](#contains3)contains(text: String, matcher: Regex): Boolean 文字列に正規表現との一致が含まれる場合は ​`true`​、 それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

text

入力文字列。

matcher

入力 ​text​ (テキスト) 内の文字を照合する Java 正規表現。

### [](#例-5)例 次の例では、入力の ​`mulesoft`​ 内に ​`e`​ から ​`g`​ までの任意の文字があるかどうかを確認し、​`true`​ を返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- contains("mulesoft", /[e-g]/) ``` #### [](#出力-5)出力 ```JSON true ``` ### [](#例-6)例 次の例では、​`"A very long string"`​ 内の ​`/s[t|p]rin/`​ との一致を検索し、 ​`true`​ を返します。正規表現内の ​`[t|p]`​ は ​`t`​ または ​`p`​ を意味します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- ContainsString: payload.root.mystring contains /s[t|p]rin/ ``` #### [](#入力-3)入力 ```XML A very long string ``` #### [](#出力-6)出力 ```JSON { "ContainsString": true } ``` ## [](#contains4)contains(text: Null, matcher: Any): false `contains`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # Core (dw::Core) このモジュールには、データ変換用の DataWeave コア関数が含まれます。 DataWeave スクリプトに自動的にインポートされます。DataWeave ​_1.0_​ 関数についてのドキュメントは、 [「DataWeave の演算子」](https://docs.mulesoft.com/mule-runtime/3.9/dataweave-operators)​を参照してください。 ## [](#関数)関数
名前 説明

​++

2 つの値を連結します。

​--

指定された値を入力値から削除します。

​abs

数値の絶対値を返します。

​avg

配列に含まれる数値の平均を返します。

​ceil

数値を最も近い整数に切り上げます。

​contains

入力に特定の値が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

​daysBetween

2 つの日付間の日数を返します。

​distinctBy

配列を反復処理し、一意の要素を配列に返します。

​endsWith

文字列が指定されたサブ文字列で終了する場合は ​true​、それ以外の場合は ​false​ を返します。

​entriesOf

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

​filter

配列を反復処理し、一致する値を返す式を適用します。

​filterObject

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

​find

指定された値と一致する、入力のインデックスを返します。

​flatMap

配列内の各項目を反復処理し、結果をフラット化します。

​flatten

一連のサブ配列 ([ ​[1,2,3], [4,5,[6]], [], [null] ]​ など) を 1 つのフラット化した配列 (​[ 1, 2, 3, 4, 5, [6], null ]​ など) に変換します。

​floor

数値を最も近い整数に切り捨てます。

​groupBy

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

​isBlank

特定の文字列が空か、完全に空白で構成されている場合は ​true​、それ以外の場合は ​false​ を返します。

​isDecimal

特定の数値に小数部が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

​isEmpty

特定の入力値が空の場合は ​true​、それ以外の場合は ​false​ を返します。

​isEven

数値または算術演算の数値結果が偶数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

​isInteger

特定の数値が整数 (小数部なし) の場合は ​true​、それ以外の場合は ​false​ を返します。

​isLeapYear

うるう年の日付を受け取った場合は ​true​、それ以外の場合は ​false​ を返します。

​isOdd

数値または算術演算の数値結果が奇数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

​joinBy

配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。

​keysOf

入力オブジェクト内のキー - 値ペアからのキーの配列を返します。

​log

入力の値を変更することなく、​log​ は入力をシステムログとして返します。

​lower

指定された文字列を小文字で返します。

​map

配列の項目を反復処理し、結果を新しい配列に出力します。

​mapObject

オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。

​match

Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。

​matches

式が入力文字列全体に一致するかどうかを確認します。

​max

配列内の最大の ​Comparable​ 値を返します。

​maxBy

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

​min

配列内の最小の ​Comparable​ 値を返します。

​minBy

配列を反復処理し、配列から比較可能な要素の最小値を返します。

​mod

剰余 (​dividend​ (被除数) を ​divisor​ (除数) で割った余り) を返します。

​namesOf

特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。

​native

関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。

​now

現在の日付と時刻で ​DateTime​ (日時) 値を返します。

​orderBy

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

​pluck

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

​pow

​base​ (基数) の数値を、指定された ​power​ (指数) で累乗します。

​random

​0.0​ 以上 ​1.0​ 未満の疑似乱数を返します。

​randomInt

​0​ 以上指定数値未満の整数の疑似乱数を返します。

​read

文字列またはバイナリを読み取り、解析後のコンテンツを返します。

​readUrl

​read​ 関数と似ています。ただし、​readURL​ は、クラスパスベースの URL を含め URL を入力として受け入れます。

​reduce

配列の要素に縮小式を適用します。

​replace

文字列置換を実行します。

​round

数値を最も近い整数に丸めます。

​scan

入力文字列内で検出されたすべての一致を含む配列を返します。

​sizeOf

配列内の要素数を返します。配列が空の場合は ​0​ を返します。

​splitBy

文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。

​sqrt

数値の平方根を返します。

​startsWith

入力文字列が照合するプレフィックスで始まるかどうかによって ​true​ または ​false​ を返します。

​sum

配列内の数値の合計を返します。

​to

指定された境界の範囲を返します。

​trim

文字列の先頭と末尾に空白スペースがあれば、それを削除します。

​typeOf

値の型を返します。

​unzip

​zip​ の逆の操作を実行します。これは、配列の配列を入力として使用します。

​upper

指定された文字列を大文字で返します。

​uuid

取得元として乱数を使用して、v4 UUID を返します。

​valuesOf

オブジェクト内のキー-値ペアからの値の配列を返します。

​with

​replace​ と共に使用すると、​with​ は置換文字列を渡します。

​write

値を、サポートされる形式で文字列またはバイナリとして記述します。

​xsiType

​xsi:type​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。

​zip

2 つの配列からの要素を配列の配列にマージします。

## [](#型)型 - [Core の型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-types) ## [](#名前空間)名前空間 - [コア名前空間](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-namespaces) ## [](#アノテーション)アノテーション - [コアアノテーション](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-annotations) # Core (dw::Core) このモジュールには、データ変換用の DataWeave コア関数が含まれます。 DataWeave スクリプトに自動的にインポートされます。DataWeave ​_1.0_​ 関数についてのドキュメントは、 [「DataWeave の演算子」](https://docs.mulesoft.com/dataweave/1.2/dataweave-operators)​を参照してください。 ## [](#関数)関数
名前 説明

​++

2 つの値を連結します。

​--

指定された値を入力値から削除します。

​abs

数値の絶対値を返します。

​avg

配列に含まれる数値の平均を返します。

​ceil

数値を最も近い整数に切り上げます。

​contains

入力に特定の値が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

​daysBetween

2 つの日付間の日数を返します。

​distinctBy

入力を反復処理し、一意の要素を配列に返します。

​endsWith

文字列が指定されたサブ文字列で終了する場合は ​true​、それ以外の場合は ​false​ を返します。

​entriesOf

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

​filter

配列を反復処理し、一致する値を返す式を適用します。

​filterObject

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

​find

指定された値と一致する、入力のインデックスを返します。

​flatMap

配列内の各項目を反復処理し、結果をフラット化します。

​flatten

一連のサブ配列 (​[ [1,2,3], [4,5,[6]], [], [null] ]​ など) を 1 つのフラット化した配列 (​[ 1, 2, 3, 4, 5, [6], null ]​ など) に変換します。

​floor

数値を最も近い整数に切り捨てます。

​groupBy

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

​indexOf

この配列の指定された要素の​最初​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​-1​ を返します。

​isBlank

特定の文字列が空 (​""​) か、完全に空白で構成されているか、​null​ の場合は、​true​ を返します。それ以外の場合、関数は ​false​ を返します。

​isDecimal

特定の数値に小数部が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

​isEmpty

特定の入力値が空の場合は ​true​、それ以外の場合は ​false​ を返します。

​isEven

数値または算術演算の数値結果が偶数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

​isInteger

特定の数値が整数 (小数部なし) の場合は ​true​、それ以外の場合は ​false​ を返します。

​isLeapYear

うるう年の日付を受け取った場合は ​true​、それ以外の場合は ​false​ を返します。

​isOdd

数値または算術演算の数値結果が奇数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

​joinBy

配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。

​keysOf

入力オブジェクト内のキー - 値ペアからのキーの配列を返します。

​lastIndexOf

特定の配列の指定された要素の​最後​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​-1​ を返します。

​log

入力の値を変更することなく、​log​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​log​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format.

​lower

指定された文字列を小文字で返します。

​map

配列の項目を反復処理し、結果を新しい配列に出力します。

​mapObject

オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。

​match

Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。

​matches

式が入力文字列全体に一致するかどうかを確認します。

​max

配列内の最大の ​Comparable​ 値を返します。

​maxBy

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

​min

配列内の最小の ​Comparable​ 値を返します。

​minBy

配列を反復処理し、配列から比較可能な要素の最小値を返します。

​mod

剰余 (​dividend​ (被除数) を ​divisor​ (除数) で割った余り) を返します。

​namesOf

特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。

​now

現在の日付と時刻で ​DateTime​ (日時) 値を返します。

​onNull

前の式が ​null​ 値を返す場合はコールバック関数を実行し、​null​ 値をコールバックの結果に置き換えます。

​orderBy

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

​pluck

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

​pow

​base​ (基数) の数値を、指定された ​power​ (指数) で累乗します。

​random

​0.0​ 以上 ​1.0​ 未満の疑似乱数を返します。

​randomInt

​0​ 以上指定数値未満の整数の疑似乱数を返します。

​read

文字列またはバイナリを読み取り、解析後のコンテンツを返します。

​readUrl

URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​read​ 関数と同様に機能します。

​reduce

配列の要素に縮小式を適用します。

​replace

文字列置換を実行します。

​round

数値を最も近い整数に丸めます。

​scan

入力文字列内で検出されたすべての一致を含む配列を返します。

​sizeOf

配列内の要素数を返します。配列が空の場合は ​0​ を返します。

​splitBy

文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。

​sqrt

数値の平方根を返します。

​startsWith

入力文字列が照合するプレフィックスで始まるかどうかによって ​true​ または ​false​ を返します。

​sum

配列内の数値の合計を返します。

​then

この関数は、前の式から返された値が ​null​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。

​to

指定された境界の範囲を返します。

​trim

文字列の先頭と末尾に空白スペースがあれば、それを削除します。

​typeOf

値の型を返します。

​unzip

​zip​ の逆の操作を実行します。これは、配列の配列を入力として使用します。

​upper

指定された文字列を大文字で返します。

​uuid

取得元として乱数を使用して、v4 UUID を返します。

​valuesOf

オブジェクト内のキー-値ペアからの値の配列を返します。

​with

置換要素を指定するヘルパー関数。この関数は、​replace​、​update​、または ​mask​ と共に使用してデータ置換を実行します。

​write

値を、サポートされる形式で文字列またはバイナリとして記述します。

​xsiType

​xsi:type​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。

​zip

2 つの配列からの要素を配列の配列にマージします。

## [](#型)型 - [Core の型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-types) ## [](#名前空間)名前空間 - [コア名前空間](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-namespaces) ## [](#annotations-アノテーション)Annotations (アノテーション) - [コアアノテーション](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-annotations) # Core (dw::Core) このモジュールには、データ変換用の DataWeave コア関数が含まれます。 DataWeave スクリプトに自動的にインポートされます。DataWeave ​_1.0_​ 関数についてのドキュメントは、 [「DataWeave の演算子」](https://docs.mulesoft.com/dataweave/1.2/dataweave-operators)​を参照してください。 ## [](#関数)関数
名前 説明

++

2 つの値を連結します。

--

指定された値を入力値から削除します。

abs

数値の絶対値を返します。

avg

配列に含まれる数値の平均を返します。

ceil

数値を最も近い整数に切り上げます。

contains

入力に特定の値が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

daysBetween

2 つの日付間の日数を返します。

distinctBy

入力を反復処理し、一意の要素を配列に返します。

endsWith

文字列が指定されたサブ文字列で終了する場合は ​true​、それ以外の場合は ​false​ を返します。

entriesOf

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

filter

配列を反復処理し、一致する値を返す式を適用します。

filterObject

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

find

指定された値と一致する、入力のインデックスを返します。

flatMap

配列内の各項目を反復処理し、結果をフラット化します。

flatten

一連のサブ配列 (​[ [1,2,3], [4,5,[6]], [], [null] ]​ など) を 1 つのフラット化した配列 (​[ 1, 2, 3, 4, 5, [6], null ]​ など) に変換します。

floor

数値を最も近い整数に切り捨てます。

groupBy

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

indexOf

この配列の指定された要素の​最初​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​-1​ を返します。

isBlank

特定の文字列が空 (​""​) か、完全に空白で構成されているか、​null​ の場合は、​true​ を返します。それ以外の場合、関数は ​false​ を返します。

isDecimal

特定の数値に小数部が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

isEmpty

特定の入力値が空の場合は ​true​、それ以外の場合は ​false​ を返します。

isEven

数値または算術演算の数値結果が偶数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

isInteger

特定の数値が整数 (小数部なし) の場合は ​true​、それ以外の場合は ​false​ を返します。

isLeapYear

うるう年の日付を受け取った場合は ​true​、それ以外の場合は ​false​ を返します。

isOdd

数値または算術演算の数値結果が奇数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

joinBy

配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。

keysOf

入力オブジェクト内のキー - 値ペアからのキーの配列を返します。

lastIndexOf

特定の配列の指定された要素の​最後​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​-1​ を返します。

log

入力の値を変更することなく、​log​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​log​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format.

lower

指定された文字列を小文字で返します。

map

配列の項目を反復処理し、結果を新しい配列に出力します。

mapObject

オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。

match

Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。

matches

式が入力文字列全体に一致するかどうかを確認します。

max

配列内の最大の ​Comparable​ 値を返します。

maxBy

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

min

配列内の最小の ​Comparable​ 値を返します。

minBy

配列を反復処理し、配列から比較可能な要素の最小値を返します。

mod

剰余 (​dividend​ (被除数) を ​divisor​ (除数) で割った余り) を返します。

namesOf

特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。

now

現在の日付と時刻で ​DateTime​ (日時) 値を返します。

onNull

前の式が ​null​ 値を返す場合はコールバック関数を実行し、​null​ 値をコールバックの結果に置き換えます。

orderBy

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

pluck

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

pow

base​ (基数) の数値を、指定された ​power​ (指数) で累乗します。

random

0.0​ 以上 ​1.0​ 未満の疑似乱数を返します。

randomInt

0​ 以上指定数値未満の整数の疑似乱数を返します。

read

文字列またはバイナリを読み取り、解析後のコンテンツを返します。

readUrl

URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​read​ 関数と同様に機能します。

reduce

配列の要素に縮小式を適用します。

replace

文字列置換を実行します。

round

数値を最も近い整数に丸めます。

scan

入力文字列内で検出されたすべての一致を含む配列を返します。

sizeOf

配列内の要素数を返します。配列が空の場合は ​0​ を返します。

splitBy

文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。

sqrt

数値の平方根を返します。

startsWith

入力文字列が照合するプレフィックスで始まるかどうかによって ​true​ または ​false​ を返します。

sum

配列内の数値の合計を返します。

then

この関数は、前の式から返された値が ​null​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。

to

指定された境界の範囲を返します。

trim

文字列の先頭と末尾に空白スペースがあれば、それを削除します。

typeOf

値の基本データ型を返します。

unzip

zip​ の逆の操作を実行します。これは、配列の配列を入力として使用します。

upper

指定された文字列を大文字で返します。

uuid

取得元として乱数を使用して、v4 UUID を返します。

valuesOf

オブジェクト内のキー-値ペアからの値の配列を返します。

with

置換要素を指定するヘルパー関数。この関数は、​replace​、​update​、または ​mask​ と共に使用してデータ置換を実行します。

write

値を、サポートされる形式で文字列またはバイナリとして記述します。

xsiType

xsi:type​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。

zip

2 つの配列からの要素を配列の配列にマージします。

## [](#型)型 - [Core の型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-types) ## [](#名前空間)名前空間 - [コア名前空間](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-namespaces) ## [](#アノテーション)アノテーション - [コアアノテーション](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-annotations) # Core (dw::Core) このモジュールには、データ変換用の DataWeave コア関数が含まれます。 DataWeave スクリプトに自動的にインポートされます。DataWeave ​_1.0_​ 関数についてのドキュメントは、 [「DataWeave の演算子」](https://docs.mulesoft.com/dataweave/1.2/dataweave-operators)​を参照してください。 ## [](#関数)関数
名前 説明

++

2 つの値を連結します。

--

指定された値を入力値から削除します。

abs

数値の絶対値を返します。

avg

配列に含まれる数値の平均を返します。

ceil

数値を最も近い整数に切り上げます。

contains

入力に特定の値が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

daysBetween

2 つの日付間の日数を返します。

distinctBy

入力を反復処理し、一意の要素を配列に返します。

endsWith

文字列が指定されたサブ文字列で終了する場合は ​true​、それ以外の場合は ​false​ を返します。

entriesOf

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

filter

配列を反復処理し、一致する値を返す式を適用します。

filterObject

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

find

指定された値と一致する、入力のインデックスを返します。

flatMap

配列内の各項目を反復処理し、結果をフラット化します。

flatten

一連のサブ配列 (​[ [1,2,3], [4,5,[6]], [], [null] ]​ など) を 1 つのフラット化した配列 (​[ 1, 2, 3, 4, 5, [6], null ]​ など) に変換します。

floor

数値を最も近い整数に切り捨てます。

groupBy

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

indexOf

この配列の指定された要素の​最初​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​-1​ を返します。

isBlank

特定の文字列が空 (​""​) か、完全に空白で構成されているか、​null​ の場合は、​true​ を返します。それ以外の場合、関数は ​false​ を返します。

isDecimal

特定の数値に小数部が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

isEmpty

特定の入力値が空の場合は ​true​、それ以外の場合は ​false​ を返します。

isEven

数値または算術演算の数値結果が偶数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

isInteger

特定の数値が整数 (小数部なし) の場合は ​true​、それ以外の場合は ​false​ を返します。

isLeapYear

うるう年の日付を受け取った場合は ​true​、それ以外の場合は ​false​ を返します。

isOdd

数値または算術演算の数値結果が奇数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

joinBy

配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。

keysOf

入力オブジェクト内のキー - 値ペアからのキーの配列を返します。

lastIndexOf

特定の配列の指定された要素の​最後​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​-1​ を返します。

log

入力の値を変更することなく、​log​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​log​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format.

lower

指定された文字列を小文字で返します。

map

配列の項目を反復処理し、結果を新しい配列に出力します。

mapObject

オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。

match

Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。

matches

式が入力文字列全体に一致するかどうかを確認します。

max

配列内の最大の ​Comparable​ 値を返します。

maxBy

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

min

配列内の最小の ​Comparable​ 値を返します。

minBy

配列を反復処理し、配列から比較可能な要素の最小値を返します。

mod

剰余 (​dividend​ (被除数) を ​divisor​ (除数) で割った余り) を返します。

namesOf

特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。

now

現在の日付と時刻で ​DateTime​ (日時) 値を返します。

onNull

前の式が ​null​ 値を返す場合はコールバック関数を実行し、​null​ 値をコールバックの結果に置き換えます。

orderBy

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

pluck

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

pow

base​ (基数) の数値を、指定された ​power​ (指数) で累乗します。

random

0.0​ 以上 ​1.0​ 未満の疑似乱数を返します。

randomInt

0​ 以上指定数値未満の整数の疑似乱数を返します。

read

文字列またはバイナリを読み取り、解析後のコンテンツを返します。

readUrl

URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​read​ 関数と同様に機能します。

reduce

配列の要素に縮小式を適用します。

replace

文字列置換を実行します。

round

数値を最も近い整数に丸めます。

scan

入力文字列内で検出されたすべての一致を含む配列を返します。

sizeOf

配列内の要素数を返します。配列が空の場合は ​0​ を返します。

splitBy

文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。

sqrt

数値の平方根を返します。

startsWith

入力文字列が照合するプレフィックスで始まるかどうかによって ​true​ または ​false​ を返します。

sum

配列内の数値の合計を返します。

then

この関数は、前の式から返された値が ​null​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。

to

指定された境界の範囲を返します。

trim

文字列の先頭と末尾に空白スペースがあれば、それを削除します。

typeOf

値の基本データ型を返します。

unzip

zip​ の逆の操作を実行します。これは、配列の配列を入力として使用します。

upper

指定された文字列を大文字で返します。

uuid

取得元として乱数を使用して、v4 UUID を返します。

valuesOf

オブジェクト内のキー-値ペアからの値の配列を返します。

with

置換要素を指定するヘルパー関数。この関数は、​replace​、​update​、または ​mask​ と共に使用してデータ置換を実行します。

write

値を、サポートされる形式で文字列またはバイナリとして記述します。

xsiType

xsi:type​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。

zip

2 つの配列からの要素を配列の配列にマージします。

## [](#型)型 - [Core の型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-types) ## [](#名前空間)名前空間 - [コア名前空間](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-namespaces) ## [](#アノテーション)アノテーション - [コアアノテーション](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-annotations) # Core (dw::Core) このモジュールには、データ変換用の DataWeave コア関数が含まれます。 DataWeave スクリプトに自動的にインポートされます。DataWeave ​_1.0_​ 関数についてのドキュメントは、 [「DataWeave の演算子」](https://docs.mulesoft.com/dataweave/1.2/dataweave-operators)​を参照してください。 ## [](#関数)関数
名前 説明

++

2 つの値を連結します。

--

指定された値を入力値から削除します。

abs

数値の絶対値を返します。

avg

配列に含まれる数値の平均を返します。

ceil

数値を最も近い整数に切り上げます。

contains

入力に特定の値が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

daysBetween

2 つの日付間の日数を返します。

distinctBy

入力を反復処理し、一意の要素を配列に返します。

endsWith

文字列が指定されたサブ文字列で終了する場合は ​true​、それ以外の場合は ​false​ を返します。

entriesOf

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

filter

配列を反復処理し、一致する値を返す式を適用します。

filterObject

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

find

指定された値と一致する、入力のインデックスを返します。

flatMap

配列内の各項目を反復処理し、結果をフラット化します。

flatten

一連のサブ配列 (​[ [1,2,3], [4,5,[6]], [], [null] ]​ など) を 1 つのフラット化した配列 (​[ 1, 2, 3, 4, 5, [6], null ]​ など) に変換します。

floor

数値を最も近い整数に切り捨てます。

groupBy

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

indexOf

この配列の指定された要素の​最初​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​-1​ を返します。

isBlank

特定の文字列が空 (​""​) か、完全に空白で構成されているか、​null​ の場合は、​true​ を返します。それ以外の場合、関数は ​false​ を返します。

isDecimal

特定の数値に小数部が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

isEmpty

特定の入力値が空の場合は ​true​、それ以外の場合は ​false​ を返します。

isEven

数値または算術演算の数値結果が偶数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

isInteger

特定の数値が整数 (小数部なし) の場合は ​true​、それ以外の場合は ​false​ を返します。

isLeapYear

うるう年の日付を受け取った場合は ​true​、それ以外の場合は ​false​ を返します。

isOdd

数値または算術演算の数値結果が奇数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

joinBy

配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。

keysOf

入力オブジェクト内のキー - 値ペアからのキーの配列を返します。

lastIndexOf

特定の配列の指定された要素の​最後​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​-1​ を返します。

log

入力の値を変更することなく、​log​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​log​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format.

lower

指定された文字列を小文字で返します。

map

配列の項目を反復処理し、結果を新しい配列に出力します。

mapObject

オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。

match

Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。

matches

式が入力文字列全体に一致するかどうかを確認します。

max

配列内の最大の ​Comparable​ 値を返します。

maxBy

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

min

配列内の最小の ​Comparable​ 値を返します。

minBy

配列を反復処理し、配列から比較可能な要素の最小値を返します。

mod

剰余 (​dividend​ (被除数) を ​divisor​ (除数) で割った余り) を返します。

namesOf

特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。

now

現在の日付と時刻で ​DateTime​ (日時) 値を返します。

onNull

前の式が ​null​ 値を返す場合はコールバック関数を実行し、​null​ 値をコールバックの結果に置き換えます。

orderBy

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

pluck

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

pow

base​ (基数) の数値を、指定された ​power​ (指数) で累乗します。

random

0.0​ 以上 ​1.0​ 未満の疑似乱数を返します。

randomInt

0​ 以上指定数値未満の整数の疑似乱数を返します。

read

文字列またはバイナリを読み取り、解析後のコンテンツを返します。

readUrl

URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​read​ 関数と同様に機能します。

reduce

配列の要素に縮小式を適用します。

replace

文字列置換を実行します。

round

数値を最も近い整数に丸めます。

scan

入力文字列内で検出されたすべての一致を含む配列を返します。

sizeOf

配列内の要素数を返します。配列が空の場合は ​0​ を返します。

splitBy

文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。

sqrt

数値の平方根を返します。

startsWith

入力文字列が照合するプレフィックスで始まるかどうかによって ​true​ または ​false​ を返します。

sum

配列内の数値の合計を返します。

then

この関数は、前の式から返された値が ​null​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。

to

指定された境界の範囲を返します。

trim

文字列の先頭と末尾に空白スペースがあれば、それを削除します。

typeOf

値の基本データ型を返します。

unzip

zip​ の逆の操作を実行します。これは、配列の配列を入力として使用します。

upper

指定された文字列を大文字で返します。

uuid

取得元として乱数を使用して、v4 UUID を返します。

valuesOf

オブジェクト内のキー-値ペアからの値の配列を返します。

with

置換要素を指定するヘルパー関数。この関数は、​replace​、​update​、または ​mask​ と共に使用してデータ置換を実行します。

write

値を、サポートされる形式で文字列またはバイナリとして記述します。

xsiType

xsi:type​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。

zip

2 つの配列からの要素を配列の配列にマージします。

## [](#型)型 - [Core の型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-types) ## [](#名前空間)名前空間 - [コア名前空間](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-namespaces) ## [](#アノテーション)アノテーション - [コアアノテーション](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-annotations) # Core (dw::Core) このモジュールには、データ変換用の DataWeave コア関数が含まれます。 DataWeave スクリプトに自動的にインポートされます。DataWeave ​_1.0_​ 関数についてのドキュメントは、 [「DataWeave の演算子」](https://docs.mulesoft.com/dataweave/1.2/dataweave-operators)​を参照してください。 ## [](#関数)関数
名前 説明

++

2 つの値を連結します。

--

指定された値を入力値から削除します。

abs

数値の絶対値を返します。

avg

配列に含まれる数値の平均を返します。

ceil

数値を最も近い整数に切り上げます。

contains

入力に特定の値が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

daysBetween

2 つの日付間の日数を返します。

distinctBy

入力を反復処理し、一意の要素を配列に返します。

endsWith

文字列が指定されたサブ文字列で終了する場合は ​true​、それ以外の場合は ​false​ を返します。

entriesOf

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

evaluateCompatibilityFlag

指定された名前の互換性フラグの値を返します。

filter

配列を反復処理し、一致する値を返す式を適用します。

filterObject

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

find

指定された値と一致する、入力のインデックスを返します。

flatMap

配列内の各項目を反復処理し、結果をフラット化します。

flatten

一連のサブ配列 (​[ [1,2,3], [4,5,[6]], [], [null] ]​ など) を 1 つのフラット化した配列 (​[ 1, 2, 3, 4, 5, [6], null ]​ など) に変換します。

floor

数値を最も近い整数に切り捨てます。

groupBy

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

indexOf

この配列の指定された要素の​最初​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​-1​ を返します。

isBlank

特定の文字列が空 (​""​) か、完全に空白で構成されているか、​null​ の場合は、​true​ を返します。それ以外の場合、関数は ​false​ を返します。

isDecimal

特定の数値に小数部が含まれる場合は ​true​、それ以外の場合は ​false​ を返します。

isEmpty

特定の入力値が空の場合は ​true​、それ以外の場合は ​false​ を返します。

isEven

数値または算術演算の数値結果が偶数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

isInteger

特定の数値が整数 (小数部なし) の場合は ​true​、それ以外の場合は ​false​ を返します。

isLeapYear

うるう年の日付を受け取った場合は ​true​、それ以外の場合は ​false​ を返します。

isOdd

数値または算術演算の数値結果が奇数の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

joinBy

配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。

keysOf

入力オブジェクト内のキー - 値ペアからのキーの配列を返します。

lastIndexOf

特定の配列の指定された要素の​最後​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​-1​ を返します。

log

入力の値を変更することなく、​log​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​log​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format.

lower

指定された文字列を小文字で返します。

map

配列の項目を反復処理し、結果を新しい配列に出力します。

mapObject

オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。

match

Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。

matches

式が入力文字列全体に一致するかどうかを確認します。

max

配列内の最大の ​Comparable​ 値を返します。

maxBy

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

min

配列内の最小の ​Comparable​ 値を返します。

minBy

配列を反復処理し、配列から比較可能な要素の最小値を返します。

mod

剰余 (​dividend​ (被除数) を ​divisor​ (除数) で割った余り) を返します。

namesOf

特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。

now

現在の日付と時刻で ​DateTime​ (日時) 値を返します。

onNull

前の式が ​null​ 値を返す場合はコールバック関数を実行し、​null​ 値をコールバックの結果に置き換えます。

orderBy

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

pluck

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

pow

base​ (基数) の数値を、指定された ​power​ (指数) で累乗します。

random

0.0​ 以上 ​1.0​ 未満の疑似乱数を返します。

randomInt

0​ 以上指定数値未満の整数の疑似乱数を返します。

read

文字列またはバイナリを読み取り、解析後のコンテンツを返します。

readUrl

URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​read​ 関数と同様に機能します。

reduce

配列の要素に縮小式を適用します。

replace

文字列置換を実行します。

round

数値を最も近い整数に丸めます。

scan

入力文字列内で検出されたすべての一致を含む配列を返します。

sizeOf

配列内の要素数を返します。配列が空の場合は ​0​ を返します。

splitBy

文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。

sqrt

数値の平方根を返します。

startsWith

入力文字列が照合するプレフィックスで始まるかどうかによって ​true​ または ​false​ を返します。

sum

配列内の数値の合計を返します。

then

この関数は、前の式から返された値が ​null​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。

to

指定された境界の範囲を返します。

trim

文字列の先頭と末尾に空白スペースがあれば、それを削除します。

typeOf

値のプリミティブデータ型 (​String​ など) を返します。

unzip

zip​ の逆の操作を実行します。これは、配列の配列を入力として使用します。

upper

指定された文字列を大文字で返します。

uuid

取得元として乱数を使用して、v4 UUID を返します。

valuesOf

オブジェクト内のキー-値ペアからの値の配列を返します。

with

置換要素を指定するヘルパー関数。この関数は、​replace​、​update​、または ​mask​ と共に使用してデータ置換を実行します。

write

値を、サポートされる形式で文字列またはバイナリとして記述します。

xsiType

xsi:type​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。

zip

2 つの配列からの要素を配列の配列にマージします。

## [](#型)型 - [Core の型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-types) ## [](#名前空間)名前空間 - [コア名前空間](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-namespaces) ## [](#アノテーション)アノテーション - [コアアノテーション](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-annotations) # Core 型 (dw::Core)
型 定義 説明

Any (いずれか)

​type Any = Any

最上位型。​Any​ はすべてのシステム型を拡張します。つまり、​Any​ 型の変数には任意のものを割り当てることができます。

Array (配列)

​type Array = Array

配列型。​Type(T)​ によってリストの要素を表す必要があります。 例: Array<Number>​ は数値の配列を表し、​Array<Any>​ は任意の型の配列を表します。

例: [1, 2, "a", "b", true, false, { a : "b"}, [1, 2, 3] ]​

Binary (バイナリ)

​type Binary = Binary

blob。

Boolean (ブール)

​type Boolean = Boolean

​true​ または ​false​ の ​Boolean​ 型。

CData

​type CData = String {cdata: true}

XML は、​String​ から拡張され、CDATA XML ブロックを識別するために使用される ​CData​ カスタム型を定義します。

CDATA 内でコンテンツをラップするか、CDATA ブロック内に文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。​CData​ は型 ​String​ から継承されます。

取得元​:

output application/xml --- { "user" : "Shoki" as CData }​

出力​:

<?xml version="1.0" encoding="UTF-8"?><user><![CDATA[Shoki]]></user>

Comparable (比較可能)

​type Comparable = String | Number | Boolean | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone

互いに比較できるすべての型を表す結合型。

Date (日付)

​type Date = Date

年、月、日で表される日付。例: |2018-09-17|

DateTime

​type DateTime = DateTime

​TimeZone​ 内での ​Date​ と ​Time​。例: |2018-09-17T22:13:00Z|

Dictionary (ディクショナリ)

​type Dictionary = { _?: T }

汎用ディクショナリインターフェース。

Enum (列挙)

​type Enum = String {enumeration: true}

この型は Enum Java クラス​に基づきます。

常に ​class​ プロパティと共に使用する必要があります。このプロパティは、次の例に示すように完全な Java クラス名を指定します。

取得元:​

"Max" as Enum {class: "com.acme.MuleyEnum"}​

Iterator (イテレーター)

​type Iterator = Array {iterator: true}

この型は、 iterator Java クラス​に基づきます。 イテレーターにはコレクションと、その反復処理と絞り込みを行うメソッドが含まれます。

Java クラスと同様に、​Iterator​ は 1 回のみコンシュームされるように設計されています。たとえば、この型を ロガーコンポーネント​に渡すと、ロガーによってコンシュームされるため、フロー内のそれ以降の要素が参照することはできなくなります。

キー

​type Key = Key

​Object​ のキー。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

LocalDateTime

​type LocalDateTime = LocalDateTime

現在の ​TimeZone​ 内の ​DateTime​。例: |2018-09-17T22:13:00|

LocalTime

​type LocalTime = LocalTime

現在の ​TimeZone​ 内の ​Time​。例: |22:10:18|

NaN

​type NaN = Null {NaN: true}

​java.lang.Float​ と ​java.lang.Double​ には、​NaN​ と ​Infinit​ の特殊なケースがあります。 DataWeave では、数値が多倍精度である性質から、これらの概念はありません。 そのため、DataWeave 値にマップされると、スキーママーカーを使用して Null にラップされます。

名前空間

​type Namespace = Namespace

​URI​ とプレフィックスで表される ​Namespace​ 型。

Nothing (空)

​type Nothing = Nothing

ボトム型。この型は、すべての型に割り当てることができます。

Null

​type Null = Null

Null 型。

Number (数値)

​type Number = Number

数値型。数値型で表される任意の数値、10 進数、または整数。

Object (オブジェクト)

​type Object = Object

​Key​ と値のペアのコレクションである任意のオブジェクトを表す型。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

Pair (ペア)

​type Pair = { l: LEFT, r: RIGHT }

値のペアを表すために使用する型。

DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​

Period (期間)

​type Period = Period

期間。

範囲

​type Range = Range

​Range​ 型は、一連の数値を表します。

Regex (正規表現)

​type Regex = Regex

Java 正規表現 (regex) 型。

SimpleType

​type SimpleType = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period

すべての単純型を表す結合型。

String (文字列)

​type String = String

​String​ (文字列) 型

StringCoerceable

​type StringCoerceable = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period | Key | Binary | Uri | Type<Any> | Regex | Namespace

強制的に文字列型に変換できるすべての型の結合型。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

Time (時刻)

​type Time = Time

特定の ​TimeZone​ での時刻。例: |22:10:18Z|

TimeZone

​type TimeZone = TimeZone

タイムゾーン。

型

​type Type = Type

DataWeave 型システムの型。

Uri

​type Uri = Uri

URI。

# Core 型 (dw::Core)
型 定義 説明

Any (任意)

​type Any = Any

最上位型。​Any​ はすべてのシステム型を拡張します。つまり、​Any​ 型の変数には任意のものを割り当てることができます。

Array (配列)

​type Array = Array

配列型。​Type(T)​ によってリストの要素を表す必要があります。 例: Array<Number>​ は数値の配列を表し、​Array<Any>​ は任意の型の配列を表します。

例: [1, 2, "a", "b", true, false, { a : "b"}, [1, 2, 3] ]​

Binary (バイナリ)

​type Binary = Binary

blob。

Boolean (ブール)

​type Boolean = Boolean

​true​ または ​false​ の ​Boolean​ 型。

CData

​type CData = String {cdata: true}

XML は、​String​ から拡張され、CDATA XML ブロックを識別するために使用される ​CData​ カスタム型を定義します。

CDATA 内でコンテンツをラップするか、CDATA ブロック内に文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。​CData​ は型 ​String​ から継承されます。

ソース​:

output application/xml --- { "user" : "Shoki" as CData }​

出力​:

<?xml version="1.0" encoding="UTF-8"?><user><![CDATA[Shoki]]></user>

Comparable (比較可能)

​type Comparable = String | Number | Boolean | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone

互いに比較できるすべての型を表す結合型。

Date (日付)

​type Date = Date

年、月、日で表される日付。例: |2018-09-17|

DateTime

​type DateTime = DateTime

​TimeZone​ 内での ​Date​ と ​Time​。例: |2018-09-17T22:13:00Z|

Dictionary (ディクショナリ)

​type Dictionary = { _?: T }

汎用ディクショナリインターフェース。

Enum (列挙)

​type Enum = String {enumeration: true}

この型は Enum Java クラス​に基づきます。

常に ​class​ プロパティと共に使用する必要があります。このプロパティは、次の例に示すように完全な Java クラス名を指定します。

ソース:​

"Max" as Enum {class: "com.acme.MuleyEnum"}​

Iterator (イテレーター)

​type Iterator = Array {iterator: true}

この型は、 iterator Java クラス​に基づきます。 イテレーターにはコレクションと、その反復処理と絞り込みを行うメソッドが含まれます。

Java クラスと同様に、​Iterator​ は 1 回のみコンシュームされるように設計されています。たとえば、この型を ロガーコンポーネント​に渡すと、ロガーによってコンシュームされるため、フロー内のそれ以降の要素が参照することはできなくなります。

キー

​type Key = Key

​Object​ のキー。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

LocalDateTime

​type LocalDateTime = LocalDateTime

現在の ​TimeZone​ 内の ​DateTime​。例: |2018-09-17T22:13:00|

LocalTime

​type LocalTime = LocalTime

現在の ​TimeZone​ 内の ​Time​。例: |22:10:18|

NaN

​type NaN = Null {NaN: true}

​java.lang.Float​ と ​java.lang.Double​ には、​NaN​ と ​Infinit​ の特殊なケースがあります。 DataWeave では、数値が多倍精度である性質から、これらの概念はありません。 そのため、DataWeave 値にマップされると、スキーママーカーを使用して Null にラップされます。

Namespace (名前空間)

​type Namespace = Namespace

​URI​ とプレフィックスで表される ​Namespace​ 型。

Nothing (空)

​type Nothing = Nothing

ボトム型。この型は、すべての型に割り当てることができます。

Null

​type Null = Null

​null​ 値を表す Null 型。

Number (数値)

​type Number = Number

数値型。数値型で表される任意の数値、10 進数、または整数。

Object (オブジェクト)

​type Object = Object

​Key​ と値のペアのコレクションである任意のオブジェクトを表す型。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

Pair (ペア)

​type Pair = { l: LEFT, r: RIGHT }

値のペアを表すために使用する型。

DataWeave バージョン 2.2.0 で導入されました。​

Period (期間)

​type Period = Period

期間。

範囲

​type Range = Range

​Range​ 型は、一連の数値を表します。

Regex (正規表現)

​type Regex = Regex

Java 正規表現 (regex) 型。

SimpleType

​type SimpleType = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period

すべての単純型を表す結合型。

String (文字列)

​type String = String

​String​ (文字列) 型

StringCoerceable

​type StringCoerceable = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period | Key | Binary | Uri | Type<Any> | Regex | Namespace

強制的に文字列型に変換できるすべての型の結合型。

DataWeave バージョン 2.3.0 で導入されました。​

Time (時刻)

​type Time = Time

特定の ​TimeZone​ での時刻。例: |22:10:18Z|

TimeZone

​type TimeZone = TimeZone

タイムゾーン。

型

​type Type = Type

DataWeave 型システムの型。

Uri

​type Uri = Uri

URI。

# Core 型 (dw::Core)
型 定義 説明

Any (いずれか)

type Any = Any

最上位型。 Any​ はすべてのシステム型を拡張します。つまり、​Any​ 型の変数には任意のものを割り当てることができます。

Array (配列)

type Array = Array

配列型。​Type(T)​ によってリストの要素を表す必要があります。 例: Array<Number>​ は数値の配列を表し、​Array<Any>​ は任意の型の配列を表します。

例: [1, 2, "a", "b", true, false, { a : "b"}, [1, 2, 3] ]​

Binary (バイナリ)

type Binary = Binary

blob。

Boolean (ブール)

type Boolean = Boolean

true​ または ​false​ の ​Boolean​ 型。

CData

type CData = String {cdata: true}

XML は、​String​ から拡張され、CDATA XML ブロックを識別するために使用される ​CData​ カスタム型を定義します。

CDATA 内でコンテンツをラップするか、CDATA ブロック内に文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。 CData​ は型 ​String​ から継承されます。

Source​:

output application/xml --- { "user" : "Shoki" as CData }​

出力​:

<?xml version="1.0" encoding="UTF-8"?><user><![CDATA[Shoki]]></user>

Comparable (比較可能)

type Comparable = String | Number | Boolean | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone

互いに比較できるすべての型を表す結合型。

Date (日付)

type Date = Date

年、月、日で表される日付。例: |2018-09-17|​

DateTime

type DateTime = DateTime

TimeZone​ 内での ​Date​ と ​Time​。例: |2018-09-17T22:13:00Z|​

Dictionary (ディクショナリ)

type Dictionary = { _?: T }

汎用ディクショナリインターフェース。

Enum (列挙)

type Enum = String {enumeration: true}

この型は Enum Java クラス​に基づきます。

常に ​class​ プロパティと共に使用する必要があります。このプロパティは、次の例に示すように完全な Java クラス名を指定します。

Source:​

"Max" as Enum {class: "com.acme.MuleyEnum"}​

Iterator (イテレーター)

type Iterator = Array {iterator: true}

この型は、 iterator Java クラス​に基づきます。 イテレーターにはコレクションと、その反復処理と絞り込みを行うメソッドが含まれます。

Java クラスと同様に、​Iterator​ は 1 回のみコンシュームされるように設計されています。たとえば、この型を Logger コンポーネント​に渡すと、ロガーによってコンシュームされるため、フロー内のそれ以降の要素が参照することはできなくなります。

Key (キー)

type Key = Key

Object​ のキー。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

LocalDateTime

type LocalDateTime = LocalDateTime

現在の ​TimeZone​ 内の ​DateTime​。例: |2018-09-17T22:13:00|​

LocalTime

type LocalTime = LocalTime

現在の ​TimeZone​ 内の ​Time​。例: |22:10:18|​

NaN

type NaN = Null {NaN: true}

java.lang.Float​ と ​java.lang.Double​ には、​NaN​ と ​Infinit​ の特殊なケースがあります。 DataWeave では、数値が多倍精度である性質から、これらの概念はありません。 そのため、DataWeave 値にマップされると、スキーママーカーを使用して Null にラップされます。

Namespace (名前空間)

type Namespace = Namespace

URI​ とプレフィックスで表される ​Namespace​ 型。

Nothing (空)

type Nothing = Nothing

ボトム型。この型は、すべての型に割り当てることができます。

Null

type Null = Null

null​ 値を表す Null 型。

Number (数値)

type Number = Number

数値型。Number (数値) 型で表される任意の数値`、10 進数、または整数。

Object (オブジェクト)

type Object = Object

Key​ と値のペアのコレクションである任意のオブジェクトを表す型。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

Pair (ペア)

type Pair = { l: LEFT, r: RIGHT }

値のペアを表すために使用する型。

DataWeave バージョン 2.2.0 で導入されました。​

Period (期間)

type Period = Period

期間。

範囲

type Range = Range

Range​ 型は、一連の数値を表します。

Regex (正規表現)

type Regex = Regex

Java 正規表現 (regex) 型。

SimpleType

type SimpleType = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period

すべての単純型を表す結合型。

String (文字列)

type String = String

String​ (文字列) 型

StringCoerceable

type StringCoerceable = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period | Key | Binary | Uri | Type<Any> | Regex | Namespace

強制的に文字列型に変換できるすべての型の結合型。

DataWeave バージョン 2.3.0 で導入されました。​

Time (時刻)

type Time = Time

特定の ​TimeZone​ での時刻。例: |22:10:18Z|​

TimeZone

type TimeZone = TimeZone

タイムゾーン。

Type (型)

type Type = Type

DataWeave 型システムの型。

Uri

type Uri = Uri

URI。

# Core 型 (dw::Core)
型 定義 説明

Any (いずれか)

type Any = Any

最上位型。 Any​ はすべてのシステム型を拡張します。つまり、​Any​ 型の変数には任意のものを割り当てることができます。

Array (配列)

type Array = Array

配列型。​Type(T)​ によってリストの要素を表す必要があります。 例: Array<Number>​ は数値の配列を表し、​Array<Any>​ は任意の型の配列を表します。

例: [1, 2, "a", "b", true, false, { a : "b"}, [1, 2, 3] ]​

Binary (バイナリ)

type Binary = Binary

blob。

Boolean (ブール)

type Boolean = Boolean

true​ または ​false​ の ​Boolean​ 型。

CData

type CData = String {cdata: true}

XML は、​String​ から拡張され、CDATA XML ブロックを識別するために使用される ​CData​ カスタム型を定義します。

CDATA 内でコンテンツをラップするか、CDATA ブロック内に文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。 CData​ は型 ​String​ から継承されます。

Source​:

output application/xml --- { "user" : "Shoki" as CData }​

出力​:

<?xml version="1.0" encoding="UTF-8"?><user><![CDATA[Shoki]]></user>

Comparable (比較可能)

type Comparable = String | Number | Boolean | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone

互いに比較できるすべての型を表す結合型。

Date (日付)

type Date = Date

年、月、日で表される日付。例: |2018-09-17|​

DateTime

type DateTime = DateTime

TimeZone​ 内での ​Date​ と ​Time​。例: |2018-09-17T22:13:00Z|​

Dictionary (ディクショナリ)

type Dictionary = { _?: T }

汎用ディクショナリインターフェース。

Enum (列挙)

type Enum = String {enumeration: true}

この型は Enum Java クラス​に基づきます。

常に ​class​ プロパティと共に使用する必要があります。このプロパティは、次の例に示すように完全な Java クラス名を指定します。

Source:​

"Max" as Enum {class: "com.acme.MuleyEnum"}​

Iterator (イテレーター)

type Iterator = Array {iterator: true}

この型は、 iterator Java クラス​に基づきます。 イテレーターにはコレクションと、その反復処理と絞り込みを行うメソッドが含まれます。

Java クラスと同様に、​Iterator​ は 1 回のみコンシュームされるように設計されています。たとえば、この型を Logger コンポーネント​に渡すと、ロガーによってコンシュームされるため、フロー内のそれ以降の要素が参照することはできなくなります。

Key (キー)

type Key = Key

Object​ のキー。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

LocalDateTime

type LocalDateTime = LocalDateTime

現在の ​TimeZone​ 内の ​DateTime​。例: |2018-09-17T22:13:00|​

LocalTime

type LocalTime = LocalTime

現在の ​TimeZone​ 内の ​Time​。例: |22:10:18|​

NaN

type NaN = Null {NaN: true}

java.lang.Float​ と ​java.lang.Double​ には、​NaN​ と ​Infinit​ の特殊なケースがあります。 DataWeave では、数値が多倍精度である性質から、これらの概念はありません。 そのため、DataWeave 値にマップされると、スキーママーカーを使用して Null にラップされます。

Namespace (名前空間)

type Namespace = Namespace

URI​ とプレフィックスで表される ​Namespace​ 型。

Nothing (空)

type Nothing = Nothing

ボトム型。この型は、すべての型に割り当てることができます。

Null

type Null = Null

null​ 値を表す Null 型。

Number (数値)

type Number = Number

数値型。Number (数値) 型で表される任意の数値`、10 進数、または整数。

Object (オブジェクト)

type Object = Object

Key​ と値のペアのコレクションである任意のオブジェクトを表す型。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

Pair (ペア)

type Pair = { l: LEFT, r: RIGHT }

値のペアを表すために使用する型。

DataWeave バージョン 2.2.0 で導入されました。​

Period (期間)

type Period = Period

期間。

範囲

type Range = Range

Range​ 型は、一連の数値を表します。

Regex (正規表現)

type Regex = Regex

Java 正規表現 (regex) 型。

SimpleType

type SimpleType = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period

すべての単純型を表す結合型。

String (文字列)

type String = String

String​ (文字列) 型

StringCoerceable

type StringCoerceable = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period | Key | Binary | Uri | Type<Any> | Regex | Namespace

強制的に文字列型に変換できるすべての型の結合型。

DataWeave バージョン 2.3.0 で導入されました。​

Time (時刻)

type Time = Time

特定の ​TimeZone​ での時刻。例: |22:10:18Z|​

TimeZone

type TimeZone = TimeZone

タイムゾーン。

Type (型)

type Type = Type

DataWeave 型システムの型。

Uri

type Uri = Uri

URI。

# Core 型 (dw::Core)
型 定義 説明

Any (いずれか)

type Any = Any

最上位型。 Any​ はすべてのシステム型を拡張します。つまり、​Any​ 型の変数には任意のものを割り当てることができます。

Array (配列)

type Array = Array

配列型。​Type(T)​ によってリストの要素を表す必要があります。 例: Array<Number>​ は数値の配列を表し、​Array<Any>​ は任意の型の配列を表します。

例: [1, 2, "a", "b", true, false, { a : "b"}, [1, 2, 3] ]​

Binary (バイナリ)

type Binary = Binary

blob。

Boolean (ブール)

type Boolean = Boolean

true​ または ​false​ の ​Boolean​ 型。

CData

type CData = String {cdata: true}

XML は、​String​ から拡張され、CDATA XML ブロックを識別するために使用される ​CData​ カスタム型を定義します。

CDATA 内でコンテンツをラップするか、CDATA ブロック内に文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。 CData​ は型 ​String​ から継承されます。

Source​:

output application/xml --- { "user" : "Shoki" as CData }​

出力​:

<?xml version="1.0" encoding="UTF-8"?><user><![CDATA[Shoki]]></user>

Comparable (比較可能)

type Comparable = String | Number | Boolean | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone

互いに比較できるすべての型を表す結合型。

Date (日付)

type Date = Date

年、月、日で表される日付。例: |2018-09-17|​

DateTime

type DateTime = DateTime

TimeZone​ 内での ​Date​ と ​Time​。例: |2018-09-17T22:13:00Z|​

Dictionary (ディクショナリ)

type Dictionary = { _?: T }

汎用ディクショナリインターフェース。

Enum (列挙)

type Enum = String {enumeration: true}

この型は Enum Java クラス​に基づきます。

常に ​class​ プロパティと共に使用する必要があります。このプロパティは、次の例に示すように完全な Java クラス名を指定します。

Source:​

"Max" as Enum {class: "com.acme.MuleyEnum"}​

Iterator (イテレーター)

type Iterator = Array {iterator: true}

この型は、 iterator Java クラス​に基づきます。 イテレーターにはコレクションと、その反復処理と絞り込みを行うメソッドが含まれます。

Java クラスと同様に、​Iterator​ は 1 回のみコンシュームされるように設計されています。たとえば、この型を Logger コンポーネント​に渡すと、ロガーによってコンシュームされるため、フロー内のそれ以降の要素が参照することはできなくなります。

Key (キー)

type Key = Key

Object​ のキー。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

LocalDateTime

type LocalDateTime = LocalDateTime

現在の ​TimeZone​ 内の ​DateTime​。例: |2018-09-17T22:13:00|​

LocalTime

type LocalTime = LocalTime

現在の ​TimeZone​ 内の ​Time​。例: |22:10:18|​

NaN

type NaN = Null {NaN: true}

java.lang.Float​ と ​java.lang.Double​ には、​NaN​ と ​Infinit​ の特殊なケースがあります。 DataWeave では、数値が多倍精度である性質から、これらの概念はありません。 そのため、DataWeave 値にマップされると、スキーママーカーを使用して Null にラップされます。

Namespace (名前空間)

type Namespace = Namespace

URI​ とプレフィックスで表される ​Namespace​ 型。

Nothing (空)

type Nothing = Nothing

ボトム型。この型は、すべての型に割り当てることができます。

Null

type Null = Null

null​ 値を表す Null 型。

Number (数値)

type Number = Number

数値型。Number (数値) 型で表される任意の数値`、10 進数、または整数。

Object (オブジェクト)

type Object = Object

Key​ と値のペアのコレクションである任意のオブジェクトを表す型。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

Pair (ペア)

type Pair = { l: LEFT, r: RIGHT }

値のペアを表すために使用する型。

DataWeave バージョン 2.2.0 で導入されました。​

Period (期間)

type Period = Period

期間。

範囲

type Range = Range

Range​ 型は、一連の数値を表します。

Regex (正規表現)

type Regex = Regex

Java 正規表現 (regex) 型。

SimpleType

type SimpleType = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period

すべての単純型を表す結合型。

String (文字列)

type String = String

String​ (文字列) 型

StringCoerceable

type StringCoerceable = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period | Key | Binary | Uri | Type<Any> | Regex | Namespace

強制的に文字列型に変換できるすべての型の結合型。

DataWeave バージョン 2.3.0 で導入されました。​

Time (時刻)

type Time = Time

特定の ​TimeZone​ での時刻。例: |22:10:18Z|​

TimeZone

type TimeZone = TimeZone

タイムゾーン。

Type (型)

type Type = Type

DataWeave 型システムの型。

Uri

type Uri = Uri

URI。

# Core 型 (dw::Core)
型 定義 説明

Any (任意)

type Any = Any

最上位型。 Any​ はすべてのシステム型を拡張します。つまり、​Any​ 型の変数には任意のものを割り当てることができます。

Array (配列)

type Array = Array

配列型。​Type(T)​ によってリストの要素を表す必要があります。 例: Array<Number>​ は数値の配列を表し、​Array<Any>​ は任意の型の配列を表します。

例: [1, 2, "a", "b", true, false, { a : "b"}, [1, 2, 3] ]​

Binary (バイナリ)

type Binary = Binary

blob。

Boolean (ブール)

type Boolean = Boolean

true​ または ​false​ の ​Boolean​ 型。

CData

type CData = String {cdata: true}

XML は、​String​ から拡張され、CDATA XML ブロックを識別するために使用される ​CData​ カスタム型を定義します。

CDATA 内でコンテンツをラップするか、CDATA ブロック内に文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。 CData​ は型 ​String​ から継承されます。

ソース​:

output application/xml --- { "user" : "Shoki" as CData }​

出力​:

<?xml version="1.0" encoding="UTF-8"?><user><![CDATA[Shoki]]></user>

Comparable (比較可能)

type Comparable = String | Number | Boolean | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone

互いに比較できるすべての型を表す結合型。

Date (日付)

type Date = Date

年、月、日で表される日付。例: |2018-09-17|​

DateTime

type DateTime = DateTime

TimeZone​ 内での ​Date​ と ​Time​。例: |2018-09-17T22:13:00Z|​

Dictionary (ディクショナリ)

type Dictionary = { _?: T }

汎用ディクショナリインターフェース。

Enum (列挙)

type Enum = String {enumeration: true}

この型は Enum Java クラス​に基づきます。

常に ​class​ プロパティと共に使用する必要があります。このプロパティは、次の例に示すように完全な Java クラス名を指定します。

ソース:​

"Max" as Enum {class: "com.acme.MuleyEnum"}​

Iterator (イテレーター)

type Iterator = Array {iterator: true}

この型は、 iterator Java クラス​に基づきます。 イテレーターにはコレクションと、その反復処理と絞り込みを行うメソッドが含まれます。

Java クラスと同様に、​Iterator​ は 1 回のみコンシュームされるように設計されています。たとえば、この型を Logger コンポーネント​に渡すと、Logger によってコンシュームされるため、フロー内のそれ以降の要素が参照することはできなくなります。

Key (キー)

type Key = Key

Object​ のキー。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

LocalDateTime

type LocalDateTime = LocalDateTime

現在の ​TimeZone​ 内の ​DateTime​。例: |2018-09-17T22:13:00|​

LocalTime

type LocalTime = LocalTime

現在の ​TimeZone​ 内の ​Time​。例: |22:10:18|​

NaN

type NaN = Null {NaN: true}

java.lang.Float​ と ​java.lang.Double​ には、​NaN​ と ​Infinit​ の特殊なケースがあります。 DataWeave では、数値が多倍精度である性質から、これらの概念はありません。 そのため、DataWeave 値にマップされると、スキーママーカーを使用して Null にラップされます。

Namespace (名前空間)

type Namespace = Namespace

URI​ とプレフィックスで表される ​Namespace​ 型。

Nothing (空)

type Nothing = Nothing

ボトム型。この型は、すべての型に割り当てることができます。

Null

type Null = Null

null​ 値を表す Null 型。

Number (数値)

type Number = Number

数値型。Number (数値) 型で表される任意の数値`、10 進数、または整数。

Object (オブジェクト)

type Object = Object

Key​ と値のペアのコレクションである任意のオブジェクトを表す型。

例: { myKey : "a value" }​、​{ myKey : { a : 1, b : 2} }​、​{ myKey : [1,2,3,4] }​

Pair (ペア)

type Pair = { l: LEFT, r: RIGHT }

値のペアを表すために使用する型。

DataWeave バージョン 2.2.0 で導入されました。​

Period (期間)

type Period = Period

期間。

範囲

type Range = Range

Range​ 型は、一連の数値を表します。

Regex (正規表現)

type Regex = Regex

Java 正規表現 (regex) 型。

Result (結果)

type Result = { success: true, result: T } | { success: false, error: E }

実行結果を表す型。

次の項目がサポートされています。

  • success​: 実行が正常に終了したかどうかを決定します。​true​ の場合、データ型で ​result​ が表示されます。​false​ の場合、データ型で ​error​ が表示されます。

  • result​: 成功結果データ。

  • error​: エラーデータ。

DataWeave バージョン 2.7.0 で導入されました。​

SimpleType

type SimpleType = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period

すべての単純型を表す結合型。

String (文字列)

type String = String

String​ (文字列) 型

StringCoerceable

type StringCoerceable = String | Boolean | Number | DateTime | LocalDateTime | Date | LocalTime | Time | TimeZone | Period | Key | Binary | Uri | Type<Any> | Regex | Namespace

強制的に文字列型に変換できるすべての型の結合型。

DataWeave バージョン 2.3.0 で導入されました。​

Time (時刻)

type Time = Time

特定の ​TimeZone​ での時刻。例: |22:10:18Z|​

TimeZone

type TimeZone = TimeZone

タイムゾーン。

Type (型)

type Type = Type

DataWeave 型システムの型。

Uri

type Uri = Uri

URI。

# cos ## [](#cos1)cos(angle: Number): Number ラジアンの特定の数値から角度の三角法の余弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`cos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "cos0": cos(0), "cos13": cos(0.13), "cos-1": cos(-1) } ``` #### [](#出力)出力 ```Json { "cos0": 1.0, "cos13": 0.9915618937147881, "cos-1": 0.5403023058681398 } ``` # cos ## [](#cos1)cos(angle: Number): Number ラジアンの特定の数値から角度の三角法の余弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`cos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "cos0": cos(0), "cos13": cos(0.13), "cos-1": cos(-1) } ``` #### [](#出力)出力 ```Json { "cos0": 1.0, "cos13": 0.9915618937147881, "cos-1": 0.5403023058681398 } ``` # cos ## [](#cos1)cos(angle: Number): Number ラジアンの特定の数値から角度の三角法の余弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`cos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "cos0": cos(0), "cos13": cos(0.13), "cos-1": cos(-1) } ``` #### [](#出力)出力 ```Json { "cos0": 1.0, "cos13": 0.9915618937147881, "cos-1": 0.5403023058681398 } ``` # cos ## [](#cos1)cos(angle: Number): Number ラジアンの特定の数値から角度の三角法の余弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`cos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "cos0": cos(0), "cos13": cos(0.13), "cos-1": cos(-1) } ``` #### [](#出力)出力 ```Json { "cos0": 1.0, "cos13": 0.9915618937147881, "cos-1": 0.5403023058681398 } ``` # cos ## [](#cos1)cos(angle: Number): Number ラジアンの特定の数値から角度の三角法の余弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`cos`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "cos0": cos(0), "cos13": cos(0.13), "cos-1": cos(-1) } ``` #### [](#出力)出力 ```Json { "cos0": 1.0, "cos13": 0.9915618937147881, "cos-1": 0.5403023058681398 } ``` # countBy ## [](#countby1)countBy(Array, (T) -> Boolean): Number マッチング関数が各要素の値に適用されるときに ​`true`​ を返す配列内の要素を数えます。 ### [](#パラメーター)パラメーター
名前 説明

​array

照合する要素が含まれる入力配列。

​matchingFunction

入力配列の要素に適用される関数。

### [](#例)例 次の例では、関数 ​`(($ mod 2) == 0)`​ に値が適用されたときに ​`true`​ を返す入力配列 (\[1, 2, 3, 4\]) 内の要素数を数えます。この場合、​`2 mod 2 == 0`​、​`4 mod 2 == 0`​ であるため、要素の ​_2 つ_​の値 (​`2`​ と ​`4`​ の両方) が一致します。その結果、​`countBy`​ 関数は ​`2`​ を返します。​`mod`​ は、オペランドのモジュールを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "countBy" : [1, 2, 3, 4] countBy (($ mod 2) == 0) } ``` #### [](#出力)出力 ```JSON { "countBy": 2 } ``` # countBy ## [](#countby1)countBy(array: Array, matchingFunction: (T) -> Boolean): Number マッチング関数が各要素の値に適用されるときに ​`true`​ を返す配列内の要素を数えます。 ### [](#パラメーター)パラメーター
名前 説明

​array

照合する要素が含まれる入力配列。

​matchingFunction

入力配列の要素に適用される関数。

### [](#例)例 次の例では、関数 ​`(($ mod 2) == 0)`​ に値が適用されたときに ​`true`​ を返す入力配列 (\[1, 2, 3, 4\]) 内の要素数を数えます。この場合、​`2 mod 2 == 0`​、​`4 mod 2 == 0`​ であるため、要素の ​_2 つ_​の値 (​`2`​ と ​`4`​ の両方) が一致します。 その結果、​`countBy`​ 関数は ​`2`​ を返します。 `mod`​ は、オペランドのモジュールを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "countBy" : [1, 2, 3, 4] countBy (($ mod 2) == 0) } ``` #### [](#出力)出力 ```JSON { "countBy": 2 } ``` ## [](#countby2)countBy(array: Null, matchingFunction: (Nothing) -> Any): Null `countBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # countBy ## [](#countby1)countBy(array: Array, matchingFunction: (T) -> Boolean): Number マッチング関数が各要素の値に適用されるときに ​`true`​ を返す配列内の要素を数えます。 ### [](#パラメーター)パラメーター
名前 説明

array

照合する要素が含まれる入力配列。

matchingFunction

入力配列の要素に適用される関数。

### [](#例)例 次の例では、関数 ​`(($ mod 2) == 0)`​ に値が適用されたときに ​`true`​ を返す入力配列 (\[1, 2, 3, 4\]) 内の要素数を数えます。この場合、​`2 mod 2 == 0`​、​`4 mod 2 == 0`​ であるため、要素の ​_2 つ_​の値 (​`2`​ と ​`4`​ の両方) が一致します。その結果、​`countBy`​ 関数は ​`2`​ を返します。 `mod`​ は、オペランドのモジュールを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "countBy" : [1, 2, 3, 4] countBy (($ mod 2) == 0) } ``` #### [](#出力)出力 ```JSON { "countBy": 2 } ``` ## [](#countby2)countBy(array: Null, matchingFunction: (Nothing) -> Any): Null `countBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countBy ## [](#countby1)countBy(array: Array, matchingFunction: (T) -> Boolean): Number マッチング関数が各要素の値に適用されるときに ​`true`​ を返す配列内の要素を数えます。 ### [](#パラメーター)パラメーター
名前 説明

array

照合する要素が含まれる入力配列。

matchingFunction

入力配列の要素に適用される関数。

### [](#例)例 次の例では、関数 ​`(($ mod 2) == 0)`​ に値が適用されたときに ​`true`​ を返す入力配列 (\[1, 2, 3, 4\]) 内の要素数を数えます。この場合、​`2 mod 2 == 0`​、​`4 mod 2 == 0`​ であるため、要素の ​_2 つ_​の値 (​`2`​ と ​`4`​ の両方) が一致します。その結果、​`countBy`​ 関数は ​`2`​ を返します。 `mod`​ は、オペランドのモジュールを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "countBy" : [1, 2, 3, 4] countBy (($ mod 2) == 0) } ``` #### [](#出力)出力 ```JSON { "countBy": 2 } ``` ## [](#countby2)countBy(array: Null, matchingFunction: (Nothing) -> Any): Null `countBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countBy ## [](#countby1)countBy(array: Array, matchingFunction: (T) -> Boolean): Number マッチング関数が各要素の値に適用されるときに ​`true`​ を返す配列内の要素を数えます。 ### [](#パラメーター)パラメーター
名前 説明

array

照合する要素が含まれる入力配列。

matchingFunction

入力配列の要素に適用される関数。

### [](#例)例 次の例では、関数 ​`(($ mod 2) == 0)`​ に値が適用されたときに ​`true`​ を返す入力配列 (\[1, 2, 3, 4\]) 内の要素数を数えます。この場合、​`2 mod 2 == 0`​、​`4 mod 2 == 0`​ であるため、要素の ​_2 つ_​の値 (​`2`​ と ​`4`​ の両方) が一致します。その結果、​`countBy`​ 関数は ​`2`​ を返します。 `mod`​ は、オペランドのモジュールを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "countBy" : [1, 2, 3, 4] countBy (($ mod 2) == 0) } ``` #### [](#出力)出力 ```JSON { "countBy": 2 } ``` ## [](#countby2)countBy(array: Null, matchingFunction: (Nothing) -> Any): Null `countBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countBy ## [](#countby1)countBy(@StreamCapable array: Array, matchingFunction: (T) -> Boolean): Number マッチング関数が各要素の値に適用されるときに ​`true`​ を返す配列内の要素を数えます。 ### [](#パラメーター)パラメーター
名前 説明

array

照合する要素が含まれる入力配列。

matchingFunction

入力配列の要素に適用される関数。

### [](#例)例 次の例では、関数 ​`(($ mod 2) == 0)`​ に値が適用されたときに ​`true`​ を返す入力配列 (\[1, 2, 3, 4\]) 内の要素数を数えます。この場合、​`2 mod 2 == 0`​、​`4 mod 2 == 0`​ であるため、要素の ​_2 つ_​の値 (​`2`​ と ​`4`​ の両方) が一致します。その結果、​`countBy`​ 関数は ​`2`​ を返します。 `mod`​ は、オペランドのモジュールを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "countBy" : [1, 2, 3, 4] countBy (($ mod 2) == 0) } ``` #### [](#出力)出力 ```JSON { "countBy": 2 } ``` ## [](#countby2)countBy(array: Null, matchingFunction: (Nothing) -> Any): Null `countBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countCharactersBy ## [](#countcharactersby1)countCharactersBy(text: String, predicate: (character: String) -> Boolean): Number 文字列の各文字を反復処理する式が ​`true`​ を返す回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

predicate​ が適用される文字列。

predicate

text​ 文字列の各文字に適用する式。この式では Boolean (ブール) 値を返す必要があります。

### [](#例)例 次の例では、文字列の桁数を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "42 = 11 * 2 + 20" countCharactersBy isNumeric($) ``` #### [](#出力)出力 ```Json 7 ``` ## [](#countcharactersby2)countCharactersBy(text: Null, predicate: (character: Nothing) -> Any): Null `countCharactersBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countCharactersBy ## [](#countcharactersby1)countCharactersBy(text: String, predicate: (character: String) -> Boolean): Number 文字列の各文字を反復処理する式が ​`true`​ を返す回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

predicate​ が適用される文字列。

predicate

text​ 文字列の各文字に適用する式。この式では Boolean (ブール) 値を返す必要があります。

### [](#例)例 次の例では、文字列の桁数を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "42 = 11 * 2 + 20" countCharactersBy isNumeric($) ``` #### [](#出力)出力 ```Json 7 ``` ## [](#countcharactersby2)countCharactersBy(text: Null, predicate: (character: Nothing) -> Any): Null `countCharactersBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countCharactersBy ## [](#countcharactersby1)countCharactersBy(text: String, predicate: (character: String) -> Boolean): Number 文字列の各文字を反復処理する式が ​`true`​ を返す回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

predicate​ が適用される文字列。

predicate

text​ 文字列の各文字に適用する式。この式では Boolean (ブール) 値を返す必要があります。

### [](#例)例 次の例では、文字列の桁数を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "42 = 11 * 2 + 20" countCharactersBy isNumeric($) ``` #### [](#出力)出力 ```Json 7 ``` ## [](#countcharactersby2)countCharactersBy(text: Null, predicate: (character: Nothing) -> Any): Null `countCharactersBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countCharactersBy ## [](#countcharactersby1)countCharactersBy(text: String, predicate: (character: String) -> Boolean): Number 文字列の各文字を反復処理する式が ​`true`​ を返す回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

predicate​ が適用される文字列。

predicate

text​ 文字列の各文字に適用する式。この式では Boolean (ブール) 値を返す必要があります。

### [](#例)例 次の例では、文字列の桁数を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "42 = 11 * 2 + 20" countCharactersBy isNumeric($) ``` #### [](#出力)出力 ```Json 7 ``` ## [](#countcharactersby2)countCharactersBy(text: Null, predicate: (character: Nothing) -> Any): Null `countCharactersBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countCharactersBy ## [](#countcharactersby1)countCharactersBy(text: String, predicate: (character: String) -> Boolean): Number 文字列の各文字を反復処理する式が ​`true`​ を返す回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

predicate​ が適用される文字列。

predicate

text​ 文字列の各文字に適用する式。この式では Boolean (ブール) 値を返す必要があります。

### [](#例)例 次の例では、文字列の桁数を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "42 = 11 * 2 + 20" countCharactersBy isNumeric($) ``` #### [](#出力)出力 ```Json 7 ``` ## [](#countcharactersby2)countCharactersBy(text: Null, predicate: (character: Nothing) -> Any): Null `countCharactersBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countMatches ## [](#countmatches1)countMatches(text: String, pattern: String): Number 文字列内の一致の数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

テキスト内で検索するサブ文字列。

### [](#例)例 次の例では、文字列内の一致を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "hello worlo!" countMatches "lo" ``` #### [](#出力)出力 ```Json 2 ``` ## [](#countmatches2)countMatches(text: String, pattern: Regex): Number 正規表現が文字列内のテキストに一致する回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

検索で使用する正規表現パターン。

### [](#例-2)例 次の例では、文字列内の母音を数えています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello, ciao!" countMatches /[aeiou]/ ``` #### [](#出力-2)出力 ```Json 5 ``` ## [](#countmatches3)countMatches(text: Null, pattern: Any): Null `countMatches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countMatches ## [](#countmatches1)countMatches(text: String, pattern: String): Number 文字列内の一致の数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

テキスト内で検索するサブ文字列。

### [](#例)例 次の例では、文字列内の一致を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello worlo!" countMatches "lo" ``` #### [](#出力)出力 ```Json 2 ``` ## [](#countmatches2)countMatches(text: String, pattern: Regex): Number 正規表現が文字列内のテキストに一致する回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

検索で使用する正規表現パターン。

### [](#例-2)例 次の例では、文字列内の母音を数えています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello, ciao!" countMatches /[aeiou]/ ``` #### [](#出力-2)出力 ```Json 5 ``` ## [](#countmatches3)countMatches(text: Null, pattern: Any): Null `countMatches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countMatches ## [](#countmatches1)countMatches(text: String, pattern: String): Number 文字列内の一致の数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

テキスト内で検索するサブ文字列。

### [](#例)例 次の例では、文字列内の一致を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello worlo!" countMatches "lo" ``` #### [](#出力)出力 ```Json 2 ``` ## [](#countmatches2)countMatches(text: String, pattern: Regex): Number 正規表現が文字列内のテキストに一致する回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

検索で使用する正規表現パターン。

### [](#例-2)例 次の例では、文字列内の母音を数えています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello, ciao!" countMatches /[aeiou]/ ``` #### [](#出力-2)出力 ```Json 5 ``` ## [](#countmatches3)countMatches(text: Null, pattern: Any): Null `countMatches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countMatches ## [](#countmatches1)countMatches(text: String, pattern: String): Number 文字列内の一致の数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

テキスト内で検索するサブ文字列。

### [](#例)例 次の例では、文字列内の一致を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello worlo!" countMatches "lo" ``` #### [](#出力)出力 ```Json 2 ``` ## [](#countmatches2)countMatches(text: String, pattern: Regex): Number 正規表現が文字列内のテキストに一致する回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

検索で使用する正規表現パターン。

### [](#例-2)例 次の例では、文字列内の母音を数えています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello, ciao!" countMatches /[aeiou]/ ``` #### [](#出力-2)出力 ```Json 5 ``` ## [](#countmatches3)countMatches(text: Null, pattern: Any): Null `countMatches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # countMatches ## [](#countmatches1)countMatches(text: String, pattern: String): Number 文字列内の一致の数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

テキスト内で検索するサブ文字列。

### [](#例)例 次の例では、文字列内の一致を数えています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello worlo!" countMatches "lo" ``` #### [](#出力)出力 ```Json 2 ``` ## [](#countmatches2)countMatches(text: String, pattern: Regex): Number 正規表現が文字列内のテキストに一致する回数を数えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

text

一致を検索する文字列。

pattern

検索で使用する正規表現パターン。

### [](#例-2)例 次の例では、文字列内の母音を数えています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import countMatches from dw::core::Strings output application/json --- "hello, ciao!" countMatches /[aeiou]/ ``` #### [](#出力-2)出力 ```Json 5 ``` ## [](#countmatches3)countMatches(text: Null, pattern: Any): Null `countMatches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # Crypto (dw::Crypto) このモジュールは、MD5 や SHA1 などの一般的なアルゴリズムによって暗号化を実行する関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Crypto`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​HMACBinary

入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。

​HMACWith

入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。

​MD5

MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。

​SHA1

SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。

​hashWith

指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。

# Crypto (dw::Crypto) このモジュールは、MD5 や SHA1 などの一般的なアルゴリズムによって暗号化を実行する関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Crypto`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​HMACBinary

入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。

​HMACWith

入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。

​MD5

MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。

​SHA1

SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。

​hashWith

指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。

# Crypto (dw::Crypto) このモジュールは、MD5 や SHA1 などの一般的なアルゴリズムによって暗号化を実行する関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Crypto`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

HMACBinary

入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。

HMACWith

入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。

MD5

MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。

SHA1

SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。

hashWith

指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。

# Crypto (dw::Crypto) このモジュールは、MD5 や SHA1 などの一般的なアルゴリズムによって暗号化を実行する関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Crypto`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

HMACBinary

入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。

HMACWith

入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。

MD5

MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。

SHA1

SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。

hashWith

指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。

# Crypto (dw::Crypto) このモジュールは、MD5 や SHA1 などの一般的なアルゴリズムによって暗号化を実行する関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Crypto`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

HMACBinary

入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。

HMACWith

入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。

MD5

MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。

SHA1

SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。

hashWith

指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。

# Crypto (dw::Crypto) このモジュールは、MD5 や SHA1 などの一般的なアルゴリズムによって暗号化を実行する関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Crypto`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

HMACBinary

入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。

HMACWith

入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。

MD5

MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。

SHA1

SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。

hashWith

指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。

# CSV ファイルのデータの参照 この DataWeave の例では、​`filter`​ と ​`map`​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。 ```JSON [ "54-112724555", "1-6298765432" ] ``` Mule 変数 ​`country_codes`​ の値はコールコードを国コードに対応付ける CSV ファイルです。 ```CSV CALLING_CODE,COUNTRY_CODE 1,US 7,RU 54,AR 20,EG 32,BE 33,FR 505,NI 506,CR 1876,JM 1905,CA 1939,PR 262262,RE 262269,YT .,. .,. ``` 次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​`filter`​ 関数を使用して電話番号のコールコードに一致する Mule 変数 ​`country_code`​ 内でコールコードを検索します。続いて、​`map`​ 関数がコールコードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun lookupCountryCode(phoneNumber: String): String = do { var callingCode = (phoneNumber splitBy("-"))[0] --- (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0] } --- payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)}) ``` サンプル出力 (JSON): ```JSON [ { "phone": "54-112724555", "countryCode": "AR" }, { "phone": "1-6298765432", "countryCode": "US" } ] ``` ## [](#関連情報)関連情報 - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) # CSV ファイルのデータの参照 この DataWeave の例では、​`filter`​ と ​`map`​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。 ```JSON [ "54-112724555", "1-6298765432" ] ``` Mule 変数 ​`country_codes`​ の値はコールコードを国コードに対応付ける CSV ファイルです。 ```CSV CALLING_CODE,COUNTRY_CODE 1,US 7,RU 54,AR 20,EG 32,BE 33,FR 505,NI 506,CR 1876,JM 1905,CA 1939,PR 262262,RE 262269,YT .,. .,. ``` 次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​`filter`​ 関数を使用して電話番号のコールコードに一致する Mule 変数 ​`country_code`​ 内でコールコードを検索します。続いて、​`map`​ 関数がコールコードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun lookupCountryCode(phoneNumber: String): String = do { var callingCode = (phoneNumber splitBy("-"))[0] --- (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0] } --- payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)}) ``` サンプル出力 (JSON): ```JSON [ { "phone": "54-112724555", "countryCode": "AR" }, { "phone": "1-6298765432", "countryCode": "US" } ] ``` ## [](#関連情報)関連情報 - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) # CSV ファイルのデータの参照 この DataWeave の例では、​`filter`​ と ​`map`​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。 ```JSON [ "54-112724555", "1-6298765432" ] ``` Mule 変数 ​`country_codes`​ の値はコールコードを国コードに対応付ける CSV ファイルです。 ```CSV CALLING_CODE,COUNTRY_CODE 1,US 7,RU 54,AR 20,EG 32,BE 33,FR 505,NI 506,CR 1876,JM 1905,CA 1939,PR 262262,RE 262269,YT .,. .,. ``` 次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​`filter`​ 関数を使用して電話番号のコールコードに一致する Mule 変数 ​`country_code`​ 内でコールコードを検索します。続いて、​`map`​ 関数がコールコードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun lookupCountryCode(phoneNumber: String): String = do { var callingCode = (phoneNumber splitBy("-"))[0] --- (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0] } --- payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)}) ``` サンプル出力 (JSON): ```JSON [ { "phone": "54-112724555", "countryCode": "AR" }, { "phone": "1-6298765432", "countryCode": "US" } ] ``` ## [](#関連情報)関連情報 - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) # CSV ファイルのデータの参照 この DataWeave の例では、​`filter`​ と ​`map`​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。 ```JSON [ "54-112724555", "1-6298765432" ] ``` Mule 変数 ​`country_codes`​ の値はコールコードを国コードに対応付ける CSV ファイルです。 ```CSV CALLING_CODE,COUNTRY_CODE 1,US 7,RU 54,AR 20,EG 32,BE 33,FR 505,NI 506,CR 1876,JM 1905,CA 1939,PR 262262,RE 262269,YT .,. .,. ``` 次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​`filter`​ 関数を使用して電話番号のコールコードに一致する Mule 変数 ​`country_code`​ 内でコールコードを検索します。続いて、​`map`​ 関数がコールコードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun lookupCountryCode(phoneNumber: String): String = do { var callingCode = (phoneNumber splitBy("-"))[0] --- (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0] } --- payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)}) ``` サンプル出力 (JSON): ```JSON [ { "phone": "54-112724555", "countryCode": "AR" }, { "phone": "1-6298765432", "countryCode": "US" } ] ``` ## [](#関連情報)関連情報 - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) # CSV ファイルのデータの参照 この DataWeave の例では、​`filter`​ と ​`map`​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。 ```JSON [ "54-112724555", "1-6298765432" ] ``` Mule 変数 ​`country_codes`​ の値はコールコードを国コードに対応付ける CSV ファイルです。 ```CSV CALLING_CODE,COUNTRY_CODE 1,US 7,RU 54,AR 20,EG 32,BE 33,FR 505,NI 506,CR 1876,JM 1905,CA 1939,PR 262262,RE 262269,YT .,. .,. ``` 次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​`filter`​ 関数を使用して電話番号のコールコードに一致する Mule 変数 ​`country_code`​ 内でコールコードを検索します。続いて、​`map`​ 関数がコールコードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun lookupCountryCode(phoneNumber: String): String = do { var callingCode = (phoneNumber splitBy("-"))[0] --- (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0] } --- payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)}) ``` サンプル出力 (JSON): ```JSON [ { "phone": "54-112724555", "countryCode": "AR" }, { "phone": "1-6298765432", "countryCode": "US" } ] ``` ## [](#関連情報)関連情報 - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) # CSV ファイルのデータの参照 この DataWeave の例では、​`filter`​ と ​`map`​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出された通話コードごとに国コードを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。 ```JSON [ "54-112724555", "1-6298765432" ] ``` Mule 変数 ​`country_codes`​ の値は通話コードを国コードに対応付ける CSV ファイルです。 ```CSV CALLING_CODE,COUNTRY_CODE 1,US 7,RU 54,AR 20,EG 32,BE 33,FR 505,NI 506,CR 1876,JM 1905,CA 1939,PR 262262,RE 262269,YT .,. .,. ``` 次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​`filter`​ 関数を使用して電話番号の通話コードに一致する Mule 変数 ​`country_code`​ 内で通話コードを検索します。続いて、​`map`​ 関数が通話コードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun lookupCountryCode(phoneNumber: String): String = do { var callingCode = (phoneNumber splitBy("-"))[0] --- (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0] } --- payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)}) ``` サンプル出力 (JSON): ```JSON [ { "phone": "54-112724555", "countryCode": "AR" }, { "phone": "1-6298765432", "countryCode": "US" } ] ``` ## [](#関連情報)関連情報 - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) # CSV 形式 MIME タイプ: `application/csv`​ ID: `csv`​ CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。 CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。 詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#例)例 次の例は、CSV 形式の使用方法を示しています。 - [例: CSV データを表す](#example1)​ - [例: CSV データをストリーミングする](#example2) ### [](#example1)例: CSV データを表す 次の例は、DataWeave で CSV データを表す方法を示しています。 #### [](#入力)入力 次のサンプルデータは、DataWeave ソースの入力として機能します。 ```csv name,lastname,age,gender Mariano,de Achaval,37,male Paula,de Estrada,37,female ``` #### [](#ソース)ソース この DataWeave スクリプトは、CSV 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この DataWeave スクリプトは、次の出力を生成します。 ```dataweave [ { name: "Mariano", lastname: "de Achaval", age: "37", gender: "male" }, { name: "Paula", lastname: "de Estrada", age: "37", gender: "female" } ] ``` ### [](#example2)例: CSV データをストリーミングする デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。 #### [](#入力-2)入力 CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。 ストリーミング例の CSV ファイル入力 (切り捨てられています): ```csv street,city,zip,state,beds,baths,sale_date 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018 51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018 2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018 5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018 ``` #### [](#xml-設定)XML 設定 `streaming`​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。 ```xml { zipcode: row.zip })]]> ``` - この例では、​`outputMimeType="application/csv; streaming=true"`​ を設定して、CSV 入力をストリーミングするように Read 操作 (​``​) を設定します。入力 CSV ファイルは、​`${app.home}`​ の場所であるプロジェクトディレクトリ ​`src/main/resources`​ にあります。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、​`map`​ 関数を使用して CSV ペイロードの各行を反復処理し、​`zip`​ 列の各項目の値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-2)出力 CSV ストリーミングの例では、次の出力が生成されます。 ```json [ { "zipcode": "95838" }, { "zipcode": "95823" }, { "zipcode": "95815" }, { "zipcode": "95815" }, { "zipcode": "95824" }, { "zipcode": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、CSV の次の設定プロパティがサポートされています。 ### [](#reader-のプロパティ)Reader のプロパティ CSV 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bodyStartLineNumber

​Number

​0

本文が開始される行番号。

​escape

​String

​\

項目値内の区切り文字または引用符などの無効な文字をエスケープするために使用される文字。

​header

​Boolean

true

CSV ヘッダーが存在するかどうを示します。 有効な値は、​true​ または ​false​ です。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

​headerLineNumber

​Number

​0

CSV ヘッダーが配置されている行番号。

​ignoreEmptyLine

Boolean

​true

空の行を無視します。 有効な値は、​true​ または ​false​ です。

​quote

​String

​"

引用符で使用する文字。

​separator

​String

​,

項目間を分離する文字。

​streaming

​Boolean

​false

CSV 入力をストリーミングするためのプロパティ。エントリを順次アクセスする場合のみ使用します。有効な値は、​true​ または ​false​ です。 ストリーミング例​と​「DataWeave リーダー」​を参照してください。

### [](#writer_properties)Writer のプロパティ CSV 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bodyStartLineNumber

​Number

​0

本文が開始される行番号。

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​encoding

​String

​null

使用するライターのエンコード (​UTF-8​ など)。

​escape

​String

​\

項目値内の区切り文字または引用符などの無効な文字をエスケープするために使用される文字。

​header

​Boolean

​true

CSV ヘッダーを書き込むかどうかを示します。有効な値は、​true​ または ​false​ です。

​headerLineNumber

​Number

​0

ヘッダーが配置されている行番号を識別します。

​ignoreEmptyLine

​Boolean

​true

空の行を無視します。 有効な値は、​true​ または ​false​ です。

​lineSeparator

​String

新規回線

CSV を作成するときに使用する行区切り文字 (​\r\n​ など)。

​quote

​String

​"

引用符で使用する文字。

​quoteHeader

​Boolean

​false

ヘッダー値を引用符で囲むかどうかを示します。 有効な値は、​true​ または ​false​ です。

​quoteValues

​Boolean

​false

(値に特殊文字が含まれている場合でも) 各値を引用符で囲むかどうかを示します。有効な値は、​true​ または ​false​ です。

​separator

​String

​,

項目間を分離する文字。

## [](#mime_types)サポートされる MIME タイプ CSV 形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/csv​

# CSV 形式 MIME タイプ: `application/csv`​ ID: `csv`​ CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。 CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。 詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#例)例 次の例は、CSV 形式の使用方法を示しています。 - [例: CSV データを表す](#example1)​ - [例: CSV データをストリーミングする](#example2) ### [](#example1)例: CSV データを表す 次の例は、DataWeave で CSV データを表す方法を示しています。 #### [](#入力)入力 次のサンプルデータは、DataWeave ソースの入力として機能します。 ```csv name,lastname,age,gender Mariano,de Achaval,37,male Paula,de Estrada,37,female ``` #### [](#ソース)ソース DataWeave スクリプトは CSV 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この DataWeave スクリプトは、次の出力を生成します。 ```dataweave [ { name: "Mariano", lastname: "de Achaval", age: "37", gender: "male" }, { name: "Paula", lastname: "de Estrada", age: "37", gender: "female" } ] ``` ### [](#example2)例: CSV データをストリーミングする デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。 #### [](#入力-2)入力 CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。 ストリーミング例の CSV ファイル入力 (切り捨てられています): ```csv street,city,zip,state,beds,baths,sale_date 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018 51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018 2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018 5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018 ``` #### [](#xml-configuration-tls-設定)XML Configuration (TLS 設定) `streaming`​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。 ```xml { zipcode: row.zip })]]> ``` - この例では、​`outputMimeType="application/csv; streaming=true"`​ を設定して、CSV 入力をストリーミングするように Read 操作 (​``​) を設定します。入力 CSV ファイルは、​`${app.home}`​ の場所であるプロジェクトディレクトリ ​`src/main/resources`​ にあります。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、​`map`​ 関数を使用して CSV ペイロードの各行を反復処理し、​`zip`​ 列の各項目の値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-2)出力 CSV ストリーミングの例では、次の出力が生成されます。 ```json [ { "zipcode": "95838" }, { "zipcode": "95823" }, { "zipcode": "95815" }, { "zipcode": "95815" }, { "zipcode": "95824" }, { "zipcode": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber​

Number​

​0​

本文が開始される行番号。

escape​

String​

​\​

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header​

Boolean​

​true​

CSV ヘッダーが存在するかどうを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber​

Number​

​0​

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine​

Boolean​

​true​

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

quote​

String​

​"​

引用符で使用する文字。

separator

String​

​,​

項目間を分離する文字。

streaming

Boolean​

​false​

​true​ に設定すると、入力をストリーミングします。エントリが順次アクセスされ、ランダムアクセスが不要な場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と​「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber​

Number​

​0​

本文が開始される行番号。

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding​

String​

​null​

出力で使用する文字セット (UTF-8 など)。

escape​

String​

​\​

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header​

Boolean​

​true​

CSV ヘッダーが存在するかどうを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber​

Number​

​0​

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine​

Boolean​

​true​

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

lineSeparator​

String​

​New Line​

CSV を作成するときに使用する行区切り文字 (​"\r\n"​ など)。デフォルトでは、DataWeave ではシステムの行区切り文字を使用します。

quote​

String​

​"​

引用符で使用する文字。

quoteHeader​

Boolean​

​false​

​true​ に設定した場合は、ヘッダー値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

quoteValues​

Boolean​

​false​

​true​ に設定した場合は、特殊文字が含まれる値を含めて、すべての値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

separator​

String​

​,​

項目間を分離する文字。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/csv​

# CSV 形式 MIME タイプ: `application/csv` ID: `csv` CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。 CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。 詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#例)例 次の例は、CSV 形式の使用方法を示しています。 - [例: CSV データを表す](#example1) - [例: CSV データをストリーミングする](#example2) ### [](#example1)例: CSV データを表す 次の例は、DataWeave で CSV データを表す方法を示しています。 #### [](#入力)入力 次のサンプルデータは、DataWeave ソースの入力として機能します。 ```csv name,lastname,age,gender Mariano,de Achaval,37,male Paula,de Estrada,37,female ``` #### [](#ソース)ソース この DataWeave スクリプトは、CSV 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この DataWeave スクリプトは、次の出力を生成します。 ```dataweave [ { name: "Mariano", lastname: "de Achaval", age: "37", gender: "male" }, { name: "Paula", lastname: "de Estrada", age: "37", gender: "female" } ] ``` ### [](#example2)例: CSV データをストリーミングする デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。 #### [](#入力-2)入力 CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。 ストリーミング例の CSV ファイル入力 (切り捨てられています): ```csv street,city,zip,state,beds,baths,sale_date 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018 51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018 2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018 5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018 ``` #### [](#xml-設定)XML 設定 `streaming`​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。 ```xml { zipcode: row.zip })]]> ``` - この例では、​`outputMimeType="application/csv; streaming=true"`​ を設定して、CSV 入力をストリーミングするように Read 操作 (​``​) を設定します。入力 CSV ファイルは、​`${app.home}`​ の場所であるプロジェクトディレクトリ ​`src/main/resources`​ にあります。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、​`map`​ 関数を使用して CSV ペイロードの各行を反復処理し、​`zip`​ 列の各項目の値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-2)出力 CSV ストリーミングの例では、次の出力が生成されます。 ```json [ { "zipcode": "95838" }, { "zipcode": "95823" }, { "zipcode": "95815" }, { "zipcode": "95815" }, { "zipcode": "95824" }, { "zipcode": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

quote

String

"

引用符で使用する文字。

separator

String

,

項目間を分離する文字。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

lineSeparator

String

New Line (改行)

CSV を作成するときに使用する行区切り文字 (​「\r\n」​ など)。デフォルトでは、DataWeave ではシステムの行区切り文字を使用します。

quote

String

"

引用符で使用する文字。

quoteHeader

Boolean

false

true​ に設定した場合は、ヘッダー値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

quoteValues

Boolean

false

true​ に設定した場合は、特殊文字のある値を含めて、すべての値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

separator

String

,

項目間を分離する文字。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/csv

# CSV 形式 MIME タイプ: `application/csv` ID: `csv` CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。 CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。 詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#例)例 次の例は、CSV 形式の使用方法を示しています。 - [例: CSV データを表す](#example1) - [例: CSV データをストリーミングする](#example2) ### [](#example1)例: CSV データを表す 次の例は、DataWeave で CSV データを表す方法を示しています。 #### [](#入力)入力 次のサンプルデータは、DataWeave ソースの入力として機能します。 ```csv name,lastname,age,gender Mariano,de Achaval,37,male Paula,de Estrada,37,female ``` #### [](#ソース)ソース この DataWeave スクリプトは、CSV 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この DataWeave スクリプトは、次の出力を生成します。 ```dataweave [ { name: "Mariano", lastname: "de Achaval", age: "37", gender: "male" }, { name: "Paula", lastname: "de Estrada", age: "37", gender: "female" } ] ``` ### [](#example2)例: CSV データをストリーミングする デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。 #### [](#入力-2)入力 CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。 ストリーミング例の CSV ファイル入力 (切り捨てられています): ```csv street,city,zip,state,beds,baths,sale_date 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018 51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018 2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018 5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018 ``` #### [](#xml-設定)XML 設定 `streaming`​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。 ```xml { zipcode: row.zip })]]> ``` - この例では、​`outputMimeType="application/csv; streaming=true"`​ を設定して、CSV 入力をストリーミングするように Read 操作 (​``​) を設定します。入力 CSV ファイルは、​`${app.home}`​ の場所であるプロジェクトディレクトリ ​`src/main/resources`​ にあります。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、​`map`​ 関数を使用して CSV ペイロードの各行を反復処理し、​`zip`​ 列の各項目の値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-2)出力 CSV ストリーミングの例では、次の出力が生成されます。 ```json [ { "zipcode": "95838" }, { "zipcode": "95823" }, { "zipcode": "95815" }, { "zipcode": "95815" }, { "zipcode": "95824" }, { "zipcode": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

quote

String

"

引用符で使用する文字。

separator

String

,

項目間を分離する文字。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

lineSeparator

String

New Line (改行)

CSV を作成するときに使用する行区切り文字 (​「\r\n」​ など)。デフォルトでは、DataWeave ではシステムの行区切り文字を使用します。

quote

String

"

引用符で使用する文字。

quoteHeader

Boolean

false

true​ に設定した場合は、ヘッダー値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

quoteValues

Boolean

false

true​ に設定した場合は、特殊文字のある値を含めて、すべての値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

separator

String

,

項目間を分離する文字。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/csv

# CSV 形式 MIME タイプ: `application/csv` ID: `csv` CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。 CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。 詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#例)例 次の例は、CSV 形式の使用方法を示しています。 - [例: CSV データを表す](#example1) - [例: CSV データをストリーミングする](#example2) ### [](#example1)例: CSV データを表す 次の例は、DataWeave で CSV データを表す方法を示しています。 #### [](#入力)入力 次のサンプルデータは、DataWeave ソースの入力として機能します。 ```csv name,lastname,age,gender Mariano,de Achaval,37,male Paula,de Estrada,37,female ``` #### [](#ソース)ソース この DataWeave スクリプトは、CSV 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この DataWeave スクリプトは、次の出力を生成します。 ```dataweave [ { name: "Mariano", lastname: "de Achaval", age: "37", gender: "male" }, { name: "Paula", lastname: "de Estrada", age: "37", gender: "female" } ] ``` ### [](#example2)例: CSV データをストリーミングする デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。 #### [](#入力-2)入力 CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。 ストリーミング例の CSV ファイル入力 (切り捨てられています): ```csv street,city,zip,state,beds,baths,sale_date 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018 51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018 2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018 5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018 ``` #### [](#xml-設定)XML 設定 `streaming`​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。 ```xml { zipcode: row.zip })]]> ``` - この例では、​`outputMimeType="application/csv; streaming=true"`​ を設定して、CSV 入力をストリーミングするように Read 操作 (​``​) を設定します。入力 CSV ファイルは、​`${app.home}`​ の場所であるプロジェクトディレクトリ ​`src/main/resources`​ にあります。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、​`map`​ 関数を使用して CSV ペイロードの各行を反復処理し、​`zip`​ 列の各項目の値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-2)出力 CSV ストリーミングの例では、次の出力が生成されます。 ```json [ { "zipcode": "95838" }, { "zipcode": "95823" }, { "zipcode": "95815" }, { "zipcode": "95815" }, { "zipcode": "95824" }, { "zipcode": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

quote

String

"

引用符で使用する文字。

separator

String

,

項目間を分離する文字。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

lineSeparator

String

New Line (改行)

CSV を作成するときに使用する行区切り文字 (​「\r\n」​ など)。デフォルトでは、DataWeave ではシステムの行区切り文字を使用します。

quote

String

"

引用符で使用する文字。

quoteHeader

Boolean

false

true​ に設定した場合は、ヘッダー値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

quoteValues

Boolean

false

true​ に設定した場合は、特殊文字のある値を含めて、すべての値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

separator

String

,

項目間を分離する文字。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/csv

# CSV 形式 MIME タイプ: `application/csv` ID: `csv` CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。 CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。 詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#例)例 次の例は、CSV 形式の使用方法を示しています。 - [例: CSV データを表す](#example1) - [例: CSV データをストリーミングする](#example2) ### [](#example1)例: CSV データを表す 次の例は、DataWeave で CSV データを表す方法を示しています。 #### [](#入力)入力 次のサンプルデータは、DataWeave ソースの入力として機能します。 ```csv name,lastname,age,gender Mariano,de Achaval,37,male Paula,de Estrada,37,female ``` #### [](#ソース)ソース この DataWeave スクリプトは、CSV 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この DataWeave スクリプトは、次の出力を生成します。 ```dataweave [ { name: "Mariano", lastname: "de Achaval", age: "37", gender: "male" }, { name: "Paula", lastname: "de Estrada", age: "37", gender: "female" } ] ``` ### [](#example2)例: CSV データをストリーミングする デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。 #### [](#入力-2)入力 CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。 ストリーミング例の CSV ファイル入力 (切り捨てられています): ```csv street,city,zip,state,beds,baths,sale_date 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018 51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018 2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018 6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018 5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018 ``` #### [](#xml-設定)XML 設定 `streaming`​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。 ```xml { zipcode: row.zip })]]> ``` - この例では、​`outputMimeType="application/csv; streaming=true"`​ を設定して、CSV 入力をストリーミングするように Read 操作 (​``​) を設定します。入力 CSV ファイルは、​`${app.home}`​ の場所であるプロジェクトディレクトリ ​`src/main/resources`​ にあります。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、​`map`​ 関数を使用して CSV ペイロードの各行を反復処理し、​`zip`​ 列の各項目の値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-2)出力 CSV ストリーミングの例では、次の出力が生成されます。 ```json [ { "zipcode": "95838" }, { "zipcode": "95823" }, { "zipcode": "95815" }, { "zipcode": "95815" }, { "zipcode": "95824" }, { "zipcode": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

quote

String

"

引用符で使用する文字。

separator

String

,

項目間を分離する文字。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

lineSeparator

String

New Line (改行)

CSV を作成するときに使用する行区切り文字 (​「\r\n」​など)。デフォルトでは、DataWeave ではシステムの行区切り文字を使用します。

quote

String

"

引用符で使用する文字。

quoteHeader

Boolean

false

true​ に設定した場合は、ヘッダー値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

quoteValues

Boolean

false

true​ に設定した場合は、特殊文字のある値を含めて、すべての値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

separator

String

,

項目間を分離する文字。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/csv

# currentMilliseconds ## [](#currentmilliseconds1)currentMilliseconds(): Number 現在の時刻をミリ秒単位で返します。 ### [](#例)例 次の例では、この関数が実行された時刻をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "currentMilliseconds" : currentMilliseconds() } ``` #### [](#出力)出力 ```XML { "currentMilliseconds": 1532923168900 } ``` # currentMilliseconds ## [](#currentmilliseconds1)currentMilliseconds(): Number 現在の時刻をミリ秒単位で返します。 ### [](#例)例 次の例では、この関数が実行された時刻をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "currentMilliseconds" : currentMilliseconds() } ``` #### [](#出力)出力 ```XML { "currentMilliseconds": 1532923168900 } ``` # currentMilliseconds ## [](#currentmilliseconds1)currentMilliseconds(): Number 現在の時刻をミリ秒単位で返します。 ### [](#例)例 次の例では、この関数が実行された時刻をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "currentMilliseconds" : currentMilliseconds() } ``` #### [](#出力)出力 ```XML { "currentMilliseconds": 1532923168900 } ``` # currentMilliseconds ## [](#currentmilliseconds1)currentMilliseconds(): Number 現在の時刻をミリ秒単位で返します。 ### [](#例)例 次の例では、この関数が実行された時刻をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "currentMilliseconds" : currentMilliseconds() } ``` #### [](#出力)出力 ```XML { "currentMilliseconds": 1532923168900 } ``` # currentMilliseconds ## [](#currentmilliseconds1)currentMilliseconds(): Number 現在の時刻をミリ秒単位で返します。 ### [](#例)例 次の例では、この関数が実行された時刻をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "currentMilliseconds" : currentMilliseconds() } ``` #### [](#出力)出力 ```XML { "currentMilliseconds": 1532923168900 } ``` # currentMilliseconds ## [](#currentmilliseconds1)currentMilliseconds(): Number 現在の時刻をミリ秒単位で返します。 ### [](#例)例 次の例では、この関数が実行された時刻をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "currentMilliseconds" : currentMilliseconds() } ``` #### [](#出力)出力 ```XML { "currentMilliseconds": 1532923168900 } ``` # dasherize ## [](#dasherize1)dasherize(String): String 文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。 スペース、アンダースコア、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、入力のスペース、アンダースコア、キャメルケースを置き換えます。 入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : dasherize("customer"), "b" : dasherize("customer_first_name"), "c" : dasherize("customer NAME"), "d" : dasherize("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer-first-name", "c": "customer-name", "d": "customer-name" } ``` ## [](#dasherize2)dasherize(Null): Null `dasherize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # dasherize ## [](#dasherize1)dasherize(text: String): String 文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。 スペース、アンダースコア、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、入力のスペース、アンダースコア、キャメルケースを置き換えます。 入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : dasherize("customer"), "b" : dasherize("customer_first_name"), "c" : dasherize("customer NAME"), "d" : dasherize("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer-first-name", "c": "customer-name", "d": "customer-name" } ``` ## [](#dasherize2)dasherize(text: Null): Null `dasherize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # dasherize ## [](#dasherize1)dasherize(text: String): String 文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。 スペース、アンダースコア、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のスペース、アンダースコア、キャメルケースを置き換えます。 入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : dasherize("customer"), "b" : dasherize("customer_first_name"), "c" : dasherize("customer NAME"), "d" : dasherize("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer-first-name", "c": "customer-name", "d": "customer-name" } ``` ## [](#dasherize2)dasherize(text: Null): Null `dasherize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # dasherize ## [](#dasherize1)dasherize(text: String): String 文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。 スペース、アンダースコア、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のスペース、アンダースコア、キャメルケースを置き換えます。 入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : dasherize("customer"), "b" : dasherize("customer_first_name"), "c" : dasherize("customer NAME"), "d" : dasherize("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer-first-name", "c": "customer-name", "d": "customer-name" } ``` ## [](#dasherize2)dasherize(text: Null): Null `dasherize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # dasherize ## [](#dasherize1)dasherize(text: String): String 文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。 スペース、アンダースコア、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のスペース、アンダースコア、キャメルケースを置き換えます。 入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : dasherize("customer"), "b" : dasherize("customer_first_name"), "c" : dasherize("customer NAME"), "d" : dasherize("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer-first-name", "c": "customer-name", "d": "customer-name" } ``` ## [](#dasherize2)dasherize(text: Null): Null `dasherize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # dasherize ## [](#dasherize1)dasherize(text: String): String 文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。 スペース、アンダースコア、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のスペース、アンダースコア、キャメルケースを置き換えます。 入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : dasherize("customer"), "b" : dasherize("customer_first_name"), "c" : dasherize("customer NAME"), "d" : dasherize("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer-first-name", "c": "customer-name", "d": "customer-name" } ``` ## [](#dasherize2)dasherize(text: Null): Null `dasherize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # DataFormat (dw::extension::DataFormat) このモジュールには、DataWeave 言語の新しいデータ形式の登録に必要なものが含まれます。 例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。 ## [](#型)型 - [DataFormat 型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-dataformat-types) ## [](#アノテーション)アノテーション - [DataFormat アノテーション](https://docs.mulesoft.com/jp/dataweave/2.3/dw-dataformat-annotations) # DataFormat (dw::extension::DataFormat) このモジュールにより、DataWeave 言語の新しいデータ形式を登録するためのリソースが提供されます。 例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。 ## [](#型)型 - [DataFormat 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-dataformat-types) ## [](#annotations-アノテーション)Annotations (アノテーション) - [DataFormat アノテーション](https://docs.mulesoft.com/jp/dataweave/2.4/dw-dataformat-annotations) # DataFormat (dw::extension::DataFormat) このモジュールにより、DataWeave 言語の新しいデータ形式を登録するためのリソースが提供されます。 例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。 ## [](#型)型 - [DataFormat 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dataformat-types) ## [](#アノテーション)アノテーション - [DataFormat アノテーション](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dataformat-annotations) # DataFormat (dw::extension::DataFormat) このモジュールにより、DataWeave 言語の新しいデータ形式を登録するためのリソースが提供されます。 例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。 ## [](#型)型 - [DataFormat 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dataformat-types) ## [](#アノテーション)アノテーション - [DataFormat アノテーション](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dataformat-annotations) # DataFormat (dw::extension::DataFormat) このモジュールにより、DataWeave 言語の新しいデータ形式を登録するためのリソースが提供されます。 例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。 ## [](#型)型 - [DataFormat 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dataformat-types) ## [](#アノテーション)アノテーション - [DataFormat アノテーション](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dataformat-annotations) # DataFormat (dw::extension::DataFormat) このモジュールにより、DataWeave 言語の新しいデータ形式を登録するためのリソースが提供されます。 例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。 ## [](#型)型 - [DataFormat 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dataformat-types) ## [](#アノテーション)アノテーション - [DataFormat アノテーション](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dataformat-annotations) # DataFormat アノテーション (dw::extension::DataFormat)
アノテーション 定義 説明

DataFormatExtension

​@DataFormatExtension()​

カスタムデータ形式を表す変数を見つけるために DataWeave エンジンが使用する登録フック。例については、 「Custom Data Formats Example (カスタムデータ形式の例)」の README​ を参照してください。

# DataFormat アノテーション (dw::extension::DataFormat)
アノテーション 定義 説明

DataFormatExtension

​@DataFormatExtension()​

カスタムデータ形式を表す変数を見つけるために DataWeave エンジンが使用する登録フック。例については、 「Custom Data Formats Example (カスタムデータ形式の例)」の README​ を参照してください。

# DataFormat アノテーション (dw::extension::DataFormat)
アノテーション 定義 説明

DataFormatExtension

@DataFormatExtension()

カスタムデータ形式を表す変数を見つけるために DataWeave エンジンが使用する登録フック。例については、 「Custom Data Formats Example (カスタムデータ形式の例)」の README​ を参照してください。

# DataFormat アノテーション (dw::extension::DataFormat)
アノテーション 定義 説明

DataFormatExtension

@DataFormatExtension()

カスタムデータ形式を表す変数を見つけるために DataWeave エンジンが使用する登録フック。例については、 「Custom Data Formats Example (カスタムデータ形式の例)」の README​ を参照してください。

# DataFormat アノテーション (dw::extension::DataFormat)
アノテーション 定義 説明

DataFormatExtension

@DataFormatExtension()

カスタムデータ形式を表す変数を見つけるために DataWeave エンジンが使用する登録フック。例については、 「Custom Data Formats Example (カスタムデータ形式の例)」の README​ を参照してください。

# DataFormat アノテーション (dw::extension::DataFormat)
アノテーション 定義 説明

DataFormatExtension

@DataFormatExtension()

カスタムデータ形式を表す変数を見つけるために DataWeave エンジンが使用する登録フック。例については、 「Custom Data Formats Example (カスタムデータ形式の例)」の README​ を参照してください。

# DataFormat 型 (dw::extension::DataFormat) DataFormat モジュールには、DataWeave 言語の新しいデータ形式を登録するために必要なものが含まれます。例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。
型 定義 説明

DataFormat

type DataFormat = { binaryFormat?: Boolean, defaultCharset?: String, fileExtensions?: Array<String>, acceptedMimeTypes: Array<MimeType>, reader: (content: Binary, charset: String, settings: ReaderSettings) -> Any, writer: (value: Any, settings: WriterSettings) -> Binary }

DataFormat 定義を表します。

  • binaryFormat?: Boolean​: これがテキストではなくバイナリ表現のデータ形式の場合は True、存在しないは false です。

  • defaultCharset?: String​: この形式のデフォルトの文字セット (ある場合)。

  • fileExtensions?: Array<String>​: このデータ形式に割り当てる必要がある「.」付きのファイル拡張子 (「.json」、「.xml」など) のリストを返します。

  • acceptedMimeTypes: Array<MimeType>​: 受け入れられる MimeType のリスト。

  • reader: (content: Binary, charset: String, settings: ReaderSettings) → Any​: この関数は、未加工のコンテンツを読み取って DataWeave 正規モデルに変換します。

  • writer: (value:Any, settings:WriterSettings) → Binary​: この関数は、DataWeave 正規モデルをバイナリコンテンツに書き込みます。

EmptySettings

​type EmptySettings = Object

設定のない構成を表します。

EncodingSettings

​type EncodingSettings = { encoding?: String }

エンコード設定を表します。

  • encoding?: String​: このライターで使用するエンコード。

MimeType

​type MimeType = String

MimeType を表します (​application/json​ など)。

Settings

​type Settings = Object

リーダーまたはライター構成設定を表します。

# DataFormat 型 (dw::extension::DataFormat) DataFormat モジュールにより、DataWeave 言語の新しいデータ形式を登録するためのリソースが提供されます。例については、 [「Custom Data Formats Example (カスタムデータ形式の例)」](https://github.com/mulesoft-labs/data-weave-custom-data-format)​を参照してください。
型 定義 説明

DataFormat

type DataFormat = { binaryFormat?: Boolean, defaultCharset?: String, fileExtensions?: Array<String>, acceptedMimeTypes: Array<MimeType>, reader: (content: Binary, charset: String, settings: ReaderSettings) -> Any, writer: (value: Any, settings: WriterSettings) -> Binary }

DataFormat 定義を表します。

  • binaryFormat?: Boolean​: これがテキストではなくバイナリとして表されるデータ形式の場合は true。存在しない場合は false。

  • defaultCharset?: String​: この形式のデフォルトの文字セット (ある場合)。

  • fileExtensions?: Array<String>​: このデータ形式に割り当てる ​.​ を含めたファイル拡張子 (たとえば、​.json​、​`.xml​) のリストを返します。

  • acceptedMimeTypes: Array<MimeType>​: 受け入れる MIME タイプのリスト。

  • reader: (content: Binary, charset: String, settings: ReaderSettings) → Any​: 未加工コンテンツを読み取り、DataWeave 正規モデルに変換する関数。

  • writer: (value:Any, settings:WriterSettings) → Binary​: DataWeave 正規モデルをバイナリコンテンツに書き込む関数。

EmptySettings

​type EmptySettings = Object

何も設定されていない設定を表します。

EncodingSettings

​type EncodingSettings = { encoding?: String }

エンコード設定を表します。

  • encoding?: String​: ライターで出力に使用されるエンコード。デフォルトは「UTF-8」です。

MimeType

​type MimeType = String

MIME タイプを表します (​application/json​ など)。

DataWeave バージョン 2.2.0 で導入されました。​

Settings

​type Settings = Object

リーダーまたはライターの設定。

DataWeave バージョン 2.2.0 で導入されました。​

# DataFormat 型 (dw::extension::DataFormat)
型 定義 説明

DataFormat

type DataFormat = { binaryFormat?: Boolean, defaultCharset?: String, fileExtensions?: Array<String>, acceptedMimeTypes: Array<MimeType>, reader: (content: Binary, charset: String, settings: ReaderSettings) -> Any, writer: (value: Any, settings: WriterSettings) -> Binary }

DataFormat​ 定義を表し、次の項目が含まれます。

  • binaryFormat​: これがテキストではなくバイナリ表現のデータ形式の場合は true。存在しない場合は false。

  • defaultCharset​: この形式のデフォルトの文字セット (ある場合)。

  • fileExtensions​: このデータ形式に割り当てる <2>.</2> を含めたファイル拡張子 (たとえば、​.json​、​.xml​) のリストを返します。

  • acceptedMimeTypes​: 受け入れる MIME タイプのリスト。

  • reader​: 未加工コンテンツを読み取り、DataWeave 正規モデルに変換する関数。

  • writer​: DataWeave 正規モデルをバイナリコンテンツに書き込む関数。

DataWeave バージョン 2.2.0 で導入されました。​

EmptySettings

type EmptySettings = Object

何も設定されていない設定を表します。

DataWeave バージョン 2.2.0 で導入されました。​

EncodingSettings

type EncodingSettings = { encoding?: String {defaultValue: "UTF-8"} }

エンコード設定を表し、次の項目が含まれます。

  • encoding​: ライターで出力に使用されるエンコード。デフォルトは「UTF-8」です。

DataWeave バージョン 2.2.0 で導入されました。​

MimeType

type MimeType = String

MIME タイプを表します (​application/json​ など)。

DataWeave バージョン 2.2.0 で導入されました。​

Settings

type Settings = Object

リーダーまたはライターの設定。

DataWeave バージョン 2.2.0 で導入されました。​

# DataFormat 型 (dw::extension::DataFormat)
型 定義 説明

DataFormat

type DataFormat = { binaryFormat?: Boolean, defaultCharset?: String, fileExtensions?: Array<String>, acceptedMimeTypes: Array<MimeType>, reader: (content: Binary, charset: String, settings: ReaderSettings) -> Any, writer: (value: Any, settings: WriterSettings) -> Binary }

DataFormat​ 定義を表し、次の項目が含まれます。

  • binaryFormat​: これがテキストではなくバイナリ表現のデータ形式の場合は true。存在しない場合は false。

  • defaultCharset​: この形式のデフォルトの文字セット (ある場合)。

  • fileExtensions​: このデータ形式に割り当てる <2>.</2> を含めたファイル拡張子 (たとえば、​.json​、​.xml​) のリストを返します。

  • acceptedMimeTypes​: 受け入れる MIME タイプのリスト。

  • reader​: 未加工コンテンツを読み取り、DataWeave 正規モデルに変換する関数。

  • writer​: DataWeave 正規モデルをバイナリコンテンツに書き込む関数。

DataWeave バージョン 2.2.0 で導入されました。​

EmptySettings

type EmptySettings = Object

何も設定されていない設定を表します。

DataWeave バージョン 2.2.0 で導入されました。​

EncodingSettings

type EncodingSettings = { encoding?: String {defaultValue: "UTF-8"} }

エンコード設定を表し、次の項目が含まれます。

  • encoding​: ライターで出力に使用されるエンコード。デフォルトは「UTF-8」です。

DataWeave バージョン 2.2.0 で導入されました。​

MimeType

type MimeType = String

MIME タイプを表します (​application/json​ など)。

DataWeave バージョン 2.2.0 で導入されました。​

Settings

type Settings = Object

リーダーまたはライターの設定。

DataWeave バージョン 2.2.0 で導入されました。​

# DataFormat 型 (dw::extension::DataFormat)
型 定義 説明

DataFormat

type DataFormat = { binaryFormat?: Boolean, defaultCharset?: String, fileExtensions?: Array<String>, acceptedMimeTypes: Array<MimeType>, reader: (content: Binary, charset: String, settings: ReaderSettings) -> Any, writer: (value: Any, settings: WriterSettings) -> Binary }

DataFormat​ 定義を表し、次の項目が含まれます。

  • binaryFormat​: これがテキストではなくバイナリ表現のデータ形式の場合は true。存在しない場合は false。

  • defaultCharset​: この形式のデフォルトの文字セット (ある場合)。

  • fileExtensions​: このデータ形式に割り当てる <2>.</2> を含めたファイル拡張子 (たとえば、​.json​、​.xml​) のリストを返します。

  • acceptedMimeTypes​: 受け入れる MIME タイプのリスト。

  • reader​: 未加工コンテンツを読み取り、DataWeave 正規モデルに変換する関数。

  • writer​: DataWeave 正規モデルをバイナリコンテンツに書き込む関数。

DataWeave バージョン 2.2.0 で導入されました。​

EmptySettings

type EmptySettings = Object

何も設定されていない設定を表します。

DataWeave バージョン 2.2.0 で導入されました。​

EncodingSettings

type EncodingSettings = { encoding?: String {defaultValue: "UTF-8"} }

エンコード設定を表し、次の項目が含まれます。

  • encoding​: ライターで出力に使用されるエンコード。デフォルトは「UTF-8」です。

DataWeave バージョン 2.2.0 で導入されました。​

MimeType

type MimeType = String

MIME タイプを表します (​application/json​ など)。

DataWeave バージョン 2.2.0 で導入されました。​

Settings

type Settings = Object

リーダーまたはライターの設定。

DataWeave バージョン 2.2.0 で導入されました。​

# DataFormat 型 (dw::extension::DataFormat)
型 定義 説明

DataFormat

type DataFormat = { binaryFormat?: Boolean, defaultCharset?: String, fileExtensions?: Array<String>, acceptedMimeTypes: Array<MimeType>, reader: (content: Binary, charset: String, settings: ReaderSettings) -> Any, writer: (value: Any, settings: WriterSettings) -> Binary }

DataFormat​ 定義を表し、次の項目が含まれます。

  • binaryFormat​: これがテキストではなくバイナリ表現のデータ形式の場合は true。存在しない場合は false。

  • defaultCharset​: この形式のデフォルトの文字セット (ある場合)。

  • fileExtensions​: このデータ形式に割り当てる ​.​ を含めたファイル拡張子 (たとえば、​.json​、​.xml​) のリストを返します。

  • acceptedMimeTypes​: 受け入れる MIME タイプのリスト。

  • reader​: 未加工コンテンツを読み取り、DataWeave 正規モデルに変換する関数。

  • writer​: DataWeave 正規モデルをバイナリコンテンツに書き込む関数。

DataWeave バージョン 2.2.0 で導入されました。​

EmptySettings

type EmptySettings = Object

何も設定されていない設定を表します。

DataWeave バージョン 2.2.0 で導入されました。​

EncodingSettings

type EncodingSettings = { encoding?: String {defaultValue: "UTF-8"} }

エンコード設定を表し、次の項目が含まれます。

  • encoding​: ライターで出力に使用されるエンコード。デフォルトは「UTF-8」です。

DataWeave バージョン 2.2.0 で導入されました。​

MimeType

type MimeType = String

MIME タイプを表します (​application/json​ など)。

DataWeave バージョン 2.2.0 で導入されました。​

Settings

type Settings = Object

リーダーまたはライターの設定。

DataWeave バージョン 2.2.0 で導入されました。​

# dataFormatsDescriptor ## [](#dataformatsdescriptor1)dataFormatsDescriptor(): Array DataWeave の現在のインスタンスにインストールされているすべての ​`DataFormatDescriptor`​ 値の配列を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#例)例 次の例では、さまざまな入力での ​`dataFormatsDescriptor`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime --- dataFormatsDescriptor() ``` #### [](#出力)出力 ```Json [ { "id": "json", "binary": false, "defaultEncoding": "UTF-8", "extensions": [ ".json" ], "defaultMimeType": "application/json", "acceptedMimeTypes": [ "application/json" ], "readerProperties": [ { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] } ], "writerProperties": [ { "name": "writeAttributes", "optional": true, "defaultValue": false, "description": "Indicates that if a key has attributes, they are going to be added as children key-value pairs of the key that contains them. The attribute new key name will start with @.", "possibleValues": [ true, false ] }, { "name": "skipNullOn", "optional": true, "defaultValue": "None", "description": "Indicates where is should skips null values if any or not. By default it doesn't skip.", "possibleValues": [ "arrays", "objects", "everywhere" ] } ] }, { "id": "xml", "binary": false, "extensions": [ ".xml" ], "defaultMimeType": "application/xml", "acceptedMimeTypes": [ "application/xml" ], "readerProperties": [ { "name": "supportDtd", "optional": true, "defaultValue": true, "description": "Whether DTD handling is enabled or disabled; disabling means both internal and external subsets will just be skipped unprocessed.", "possibleValues": [ true, false ] }, { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] }, { "name": "maxEntityCount", "optional": true, "defaultValue": 1, "description": "The maximum number of entity expansions. The limit is in place to avoid Billion Laughs attacks.", "possibleValues": [ ] } ], "writerProperties": [ { "name": "writeDeclaration", "optional": true, "defaultValue": true, "description": "Indicates whether to write the XML header declaration or not.", "possibleValues": [ true, false ] }, { "name": "indent", "optional": true, "defaultValue": true, "description": "Indicates whether to indent the code for better readability or to compress it into a single line.", "possibleValues": [ true, false ] } ] } ] ``` # dataFormatsDescriptor ## [](#dataformatsdescriptor1)dataFormatsDescriptor(): Array DataWeave の現在のインスタンスにインストールされているすべての ​`DataFormatDescriptor`​ 値の配列を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#例)例 次の例では、さまざまな入力での ​`dataFormatsDescriptor`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime --- dataFormatsDescriptor() ``` #### [](#出力)出力 ```Json [ { "id": "json", "binary": false, "defaultEncoding": "UTF-8", "extensions": [ ".json" ], "defaultMimeType": "application/json", "acceptedMimeTypes": [ "application/json" ], "readerProperties": [ { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] } ], "writerProperties": [ { "name": "writeAttributes", "optional": true, "defaultValue": false, "description": "Indicates that if a key has attributes, they are going to be added as children key-value pairs of the key that contains them. The attribute new key name will start with @.", "possibleValues": [ true, false ] }, { "name": "skipNullOn", "optional": true, "defaultValue": "None", "description": "Indicates where is should skips null values if any or not. By default it doesn't skip.", "possibleValues": [ "arrays", "objects", "everywhere" ] } ] }, { "id": "xml", "binary": false, "extensions": [ ".xml" ], "defaultMimeType": "application/xml", "acceptedMimeTypes": [ "application/xml" ], "readerProperties": [ { "name": "supportDtd", "optional": true, "defaultValue": true, "description": "Whether DTD handling is enabled or disabled; disabling means both internal and external subsets will just be skipped unprocessed.", "possibleValues": [ true, false ] }, { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] }, { "name": "maxEntityCount", "optional": true, "defaultValue": 1, "description": "The maximum number of entity expansions. The limit is in place to avoid Billion Laughs attacks.", "possibleValues": [ ] } ], "writerProperties": [ { "name": "writeDeclaration", "optional": true, "defaultValue": true, "description": "Indicates whether to write the XML header declaration or not.", "possibleValues": [ true, false ] }, { "name": "indent", "optional": true, "defaultValue": true, "description": "Indicates whether to indent the code for better readability or to compress it into a single line.", "possibleValues": [ true, false ] } ] } ] ``` # dataFormatsDescriptor ## [](#dataformatsdescriptor1)dataFormatsDescriptor(): Array DataWeave の現在のインスタンスにインストールされているすべての ​`DataFormatDescriptor`​ 値の配列を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#例)例 次の例では、さまざまな入力での ​`dataFormatsDescriptor`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime --- dataFormatsDescriptor() ``` #### [](#出力)出力 ```Json [ { "id": "json", "binary": false, "defaultEncoding": "UTF-8", "extensions": [ ".json" ], "defaultMimeType": "application/json", "acceptedMimeTypes": [ "application/json" ], "readerProperties": [ { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] } ], "writerProperties": [ { "name": "writeAttributes", "optional": true, "defaultValue": false, "description": "Indicates that if a key has attributes, they are going to be added as children key-value pairs of the key that contains them. The attribute new key name will start with @.", "possibleValues": [ true, false ] }, { "name": "skipNullOn", "optional": true, "defaultValue": "None", "description": "Indicates where is should skips null values if any or not. By default it doesn't skip.", "possibleValues": [ "arrays", "objects", "everywhere" ] } ] }, { "id": "xml", "binary": false, "extensions": [ ".xml" ], "defaultMimeType": "application/xml", "acceptedMimeTypes": [ "application/xml" ], "readerProperties": [ { "name": "supportDtd", "optional": true, "defaultValue": true, "description": "Whether DTD handling is enabled or disabled; disabling means both internal and external subsets will just be skipped unprocessed.", "possibleValues": [ true, false ] }, { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] }, { "name": "maxEntityCount", "optional": true, "defaultValue": 1, "description": "The maximum number of entity expansions. The limit is in place to avoid Billion Laughs attacks.", "possibleValues": [ ] } ], "writerProperties": [ { "name": "writeDeclaration", "optional": true, "defaultValue": true, "description": "Indicates whether to write the XML header declaration or not.", "possibleValues": [ true, false ] }, { "name": "indent", "optional": true, "defaultValue": true, "description": "Indicates whether to indent the code for better readability or to compress it into a single line.", "possibleValues": [ true, false ] } ] } ] ``` # dataFormatsDescriptor ## [](#dataformatsdescriptor1)dataFormatsDescriptor(): Array DataWeave の現在のインスタンスにインストールされているすべての ​`DataFormatDescriptor`​ 値の配列を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#例)例 次の例では、さまざまな入力での ​`dataFormatsDescriptor`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime --- dataFormatsDescriptor() ``` #### [](#出力)出力 ```Json [ { "id": "json", "binary": false, "defaultEncoding": "UTF-8", "extensions": [ ".json" ], "defaultMimeType": "application/json", "acceptedMimeTypes": [ "application/json" ], "readerProperties": [ { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] } ], "writerProperties": [ { "name": "writeAttributes", "optional": true, "defaultValue": false, "description": "Indicates that if a key has attributes, they are going to be added as children key-value pairs of the key that contains them. The attribute new key name will start with @.", "possibleValues": [ true, false ] }, { "name": "skipNullOn", "optional": true, "defaultValue": "None", "description": "Indicates where is should skips null values if any or not. By default it doesn't skip.", "possibleValues": [ "arrays", "objects", "everywhere" ] } ] }, { "id": "xml", "binary": false, "extensions": [ ".xml" ], "defaultMimeType": "application/xml", "acceptedMimeTypes": [ "application/xml" ], "readerProperties": [ { "name": "supportDtd", "optional": true, "defaultValue": true, "description": "Whether DTD handling is enabled or disabled; disabling means both internal and external subsets will just be skipped unprocessed.", "possibleValues": [ true, false ] }, { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] }, { "name": "maxEntityCount", "optional": true, "defaultValue": 1, "description": "The maximum number of entity expansions. The limit is in place to avoid Billion Laughs attacks.", "possibleValues": [ ] } ], "writerProperties": [ { "name": "writeDeclaration", "optional": true, "defaultValue": true, "description": "Indicates whether to write the XML header declaration or not.", "possibleValues": [ true, false ] }, { "name": "indent", "optional": true, "defaultValue": true, "description": "Indicates whether to indent the code for better readability or to compress it into a single line.", "possibleValues": [ true, false ] } ] } ] ``` # dataFormatsDescriptor ## [](#dataformatsdescriptor1)dataFormatsDescriptor(): Array DataWeave の現在のインスタンスにインストールされているすべての ​`DataFormatDescriptor`​ 値の配列を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#例)例 次の例では、さまざまな入力での ​`dataFormatsDescriptor`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime --- dataFormatsDescriptor() ``` #### [](#出力)出力 ```Json [ { "id": "json", "binary": false, "defaultEncoding": "UTF-8", "extensions": [ ".json" ], "defaultMimeType": "application/json", "acceptedMimeTypes": [ "application/json" ], "readerProperties": [ { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] } ], "writerProperties": [ { "name": "writeAttributes", "optional": true, "defaultValue": false, "description": "Indicates that if a key has attributes, they are going to be added as children key-value pairs of the key that contains them. The attribute new key name will start with @.", "possibleValues": [ true, false ] }, { "name": "skipNullOn", "optional": true, "defaultValue": "None", "description": "Indicates where is should skips null values if any or not. By default it doesn't skip.", "possibleValues": [ "arrays", "objects", "everywhere" ] } ] }, { "id": "xml", "binary": false, "extensions": [ ".xml" ], "defaultMimeType": "application/xml", "acceptedMimeTypes": [ "application/xml" ], "readerProperties": [ { "name": "supportDtd", "optional": true, "defaultValue": true, "description": "Whether DTD handling is enabled or disabled; disabling means both internal and external subsets will just be skipped unprocessed.", "possibleValues": [ true, false ] }, { "name": "streaming", "optional": true, "defaultValue": false, "description": "Used for streaming input (use only if entries are accessed sequentially).", "possibleValues": [ true, false ] }, { "name": "maxEntityCount", "optional": true, "defaultValue": 1, "description": "The maximum number of entity expansions. The limit is in place to avoid Billion Laughs attacks.", "possibleValues": [ ] } ], "writerProperties": [ { "name": "writeDeclaration", "optional": true, "defaultValue": true, "description": "Indicates whether to write the XML header declaration or not.", "possibleValues": [ true, false ] }, { "name": "indent", "optional": true, "defaultValue": true, "description": "Indicates whether to indent the code for better readability or to compress it into a single line.", "possibleValues": [ true, false ] } ] } ] ``` # DataWeave (dw) 形式 MIME タイプ: `application/dw`​ ID: `dw`​ DataWeave (dw) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。

この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。

## [](#examples)例: XML を DataWeave (dw) 形式で表す 次の例は、XML 入力を DataWeave (dw) 形式に変換する方法を示しています。 ### [](#入力)入力 この例では、次の XML スニペットを入力として使用します。 ```xml Mariano DeAchaval Leandro Shokida ``` #### [](#出力)出力 DataWeave 形式の出力 ```dataweave { employees: { employee: { firstname: "Mariano", lastname: "DeAchaval" }, employee: { firstname: "Leandro", lastname: "Shokida" } } } as Object {encoding: "UTF-8", mimeType: "text/xml"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

externalResources​

Boolean​

​false​

​readUrl​ で外部エンティティを読み取れるようにします。

有効な値は、​true​ または ​false​ です。

javaModule​

Boolean​

​false​

Java Module 関数を読み込めるようにします。

有効な値は、​true​ または ​false​ です。

onlyData​

Boolean​

​false​

​true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

privileges​

String​

​''​

​'Resources,Properties'​ など、形式で使用する権限のカンマ区切りリストを受け入れます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

ignoreSchema​

Boolean​

​false​

​true​ に設定すると、スキーマを無視します。

有効な値は、​true​ または ​false​ です。

indent​

String​

​' '​

インデントで使用する文字列。

maxCollectionSize​

Number​

​-1​

配列またはオブジェクトで許容される最大要素数。​-1​ は、制限がないことを示します。

onlyData​

Boolean​

​true​

​true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/dw​

# DataWeave (dw) 形式 MIME タイプ: `application/dw` ID: `dw` DataWeave (dw) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。

この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。

## [](#examples)例: XML を DataWeave (dw) 形式で表す 次の例は、XML 入力を DataWeave (dw) 形式に変換する方法を示しています。 ### [](#入力)入力 この例では、次の XML スニペットを入力として使用します。 ```xml Mariano DeAchaval Leandro Shokida ``` #### [](#出力)出力 DataWeave 形式の出力 ```dataweave { employees: { employee: { firstname: "Mariano", lastname: "DeAchaval" }, employee: { firstname: "Leandro", lastname: "Shokida" } } } as Object {encoding: "UTF-8", mimeType: "text/xml"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

externalResources

Boolean

false

readUrl​ で外部エンティティを読み取れるようにします。

有効な値は、​true​ または ​false​ です。

javaModule

Boolean

false

Java Module 関数を読み込めるようにします。

有効な値は、​true​ または ​false​ です。

onlyData

Boolean

false

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

privileges

String

''

'Resources,Properties'​ など、形式で使用する権限のカンマ区切りリストを受け入れます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

ignoreSchema

Boolean

false

true​ に設定すると、スキーマを無視します。

有効な値は、​true​ または ​false​ です。

indent

String

' '

インデントで使用する文字列。

maxCollectionSize

Number

-1

配列またはオブジェクトで許容される最大要素数。 -1​ は、制限がないことを示します。

onlyData

Boolean

true

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/dw

# DataWeave (dw) 形式 MIME タイプ: `application/dw` ID: `dw` DataWeave (dw) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。

この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。

## [](#examples)例: XML を DataWeave (dw) 形式で表す 次の例は、XML 入力を DataWeave (dw) 形式に変換する方法を示しています。 ### [](#入力)入力 この例では、次の XML スニペットを入力として使用します。 ```xml Mariano DeAchaval Leandro Shokida ``` #### [](#出力)出力 DataWeave 形式の出力 ```dataweave { employees: { employee: { firstname: "Mariano", lastname: "DeAchaval" }, employee: { firstname: "Leandro", lastname: "Shokida" } } } as Object {encoding: "UTF-8", mimeType: "text/xml"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

externalResources

Boolean

false

readUrl​ で外部エンティティを読み取れるようにします。

有効な値は、​true​ または ​false​ です。

javaModule

Boolean

false

Java Module 関数を読み込めるようにします。

有効な値は、​true​ または ​false​ です。

onlyData

Boolean

false

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

privileges

String

''

'Resources,Properties'​ など、形式で使用する権限のカンマ区切りリストを受け入れます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

ignoreSchema

Boolean

false

true​ に設定すると、スキーマを無視します。

有効な値は、​true​ または ​false​ です。

indent

String

' '

インデントで使用する文字列。

maxCollectionSize

Number

-1

配列またはオブジェクトで許容される最大要素数。 -1​ は、制限がないことを示します。

onlyData

Boolean

true

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/dw

# DataWeave (dw) 形式 MIME タイプ: `application/dw` ID: `dw` DataWeave (dw) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。

この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。

## [](#examples)例: XML を DataWeave (dw) 形式で表す 次の例は、XML 入力を DataWeave (dw) 形式に変換する方法を示しています。 ### [](#入力)入力 この例では、次の XML スニペットを入力として使用します。 ```xml Mariano DeAchaval Leandro Shokida ``` #### [](#出力)出力 DataWeave 形式の出力 ```dataweave { employees: { employee: { firstname: "Mariano", lastname: "DeAchaval" }, employee: { firstname: "Leandro", lastname: "Shokida" } } } as Object {encoding: "UTF-8", mimeType: "text/xml"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

externalResources

Boolean

false

readUrl​ で外部エンティティを読み取れるようにします。

有効な値は、​true​ または ​false​ です。

javaModule

Boolean

false

Java Module 関数を読み込めるようにします。

有効な値は、​true​ または ​false​ です。

onlyData

Boolean

false

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

privileges

String

''

'Resources,Properties'​ など、形式で使用する権限のカンマ区切りリストを受け入れます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

ignoreSchema

Boolean

false

true​ に設定すると、スキーマを無視します。

有効な値は、​true​ または ​false​ です。

indent

String

' '

インデントで使用する文字列。

maxCollectionSize

Number

-1

配列またはオブジェクトで許容される最大要素数。 -1​ は、制限がないことを示します。

onlyData

Boolean

true

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/dw

# DataWeave (dw) 形式 MIME タイプ: `application/dw` ID: `dw` DataWeave (dw) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。

この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。

## [](#examples)例: XML を DataWeave (dw) 形式で表す 次の例は、XML 入力を DataWeave (dw) 形式に変換する方法を示しています。 ### [](#入力)入力 この例では、次の XML スニペットを入力として使用します。 ```xml Mariano DeAchaval Leandro Shokida ``` #### [](#出力)出力 DataWeave 形式の出力 ```dataweave { employees: { employee: { firstname: "Mariano", lastname: "DeAchaval" }, employee: { firstname: "Leandro", lastname: "Shokida" } } } as Object {encoding: "UTF-8", mimeType: "text/xml"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

externalResources

Boolean

false

readUrl​ で外部エンティティを読み取れるようにします。

有効な値は、​true​ または ​false​ です。

javaModule

Boolean

false

Java Module 関数を読み込めるようにします。

有効な値は、​true​ または ​false​ です。

onlyData

Boolean

false

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

privileges

String

''

'Resources,Properties'​ など、形式で使用する権限のカンマ区切りリストを受け入れます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

ignoreSchema

Boolean

false

true​ に設定すると、スキーマを無視します。

有効な値は、​true​ または ​false​ です。

indent

String

' '

インデントで使用する文字列。

maxCollectionSize

Number

-1

配列またはオブジェクトで許容される最大要素数。 -1​ は、制限がないことを示します。

onlyData

Boolean

true

true​ に設定すると、データのみを処理し、関数などの他の型のコンテンツは処理しません。​onlyData​ モードでは、DataWeave パーサーの実行時間が短縮されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/dw

# DataWeave Release Notes Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] 各 DataWeave バージョンのリリースノートには、新機能や DataWeave リリースに関するその他の情報に加えて、バグ修正、互換性情報、パッチ更新リリースの詳細が含まれます。 - [DataWeave 2.13.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.13.0-release-notes) - [DataWeave 2.12.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.12.0-release-notes) - [DataWeave 2.11.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.11.0-release-notes) - [DataWeave 2.9.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.9.0-release-notes) - [DataWeave 2.6.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.6.0-release-notes) - [DataWeave 2.4.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.4.0-release-notes) (This version of the product has reached [End of Life](https://www.salesforce.com/en-us/wp-content/uploads/sites/4/documents/legal/Agreements/versioning-back-support-policy.pdf).) ## [](#このリリースの新機能)このリリースの新機能 Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::release-notes::partial$dataweave/dataweave-whats-new-2.5.0.adoc\[\] ## [](#dataweave-と-mule)DataWeave と Mule DataWeave 2.5.0 は Mule 4.5.0 リリースにバンドルされています。Mule リリースについての詳細は、​[「Mule Runtime Engine 4.5.0 リリースノート」](#release-notes::mule-runtime/mule-4.5.0-release-notes.adoc)​を参照してください。 # DataWeave Release Notes Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] 各 DataWeave バージョンのリリースノートには、新機能や DataWeave リリースに関するその他の情報に加えて、バグ修正、互換性情報、パッチ更新リリースの詳細が含まれます。 - [DataWeave 2.13.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.13.0-release-notes) - [DataWeave 2.12.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.12.0-release-notes) - [DataWeave 2.11.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.11.0-release-notes) - [DataWeave 2.9.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.9.0-release-notes) - [DataWeave 2.6.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.6.0-release-notes) - [DataWeave 2.4.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.4.0-release-notes) (This version of the product has reached [End of Life](https://www.salesforce.com/en-us/wp-content/uploads/sites/4/documents/legal/Agreements/versioning-back-support-policy.pdf).) ## [](#このリリースの新機能)このリリースの新機能 Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::release-notes::partial$dataweave/dataweave-whats-new-2.5.0.adoc\[\] ## [](#dataweave-と-mule)DataWeave と Mule DataWeave 2.5.0 は Mule 4.5.0 リリースにバンドルされています。Mule リリースについての詳細は、​[「Mule Runtime Engine 4.5.0 リリースノート」](#release-notes::mule-runtime/mule-4.5.0-release-notes.adoc)​を参照してください。 # DataWeave Release Notes Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] 各 DataWeave バージョンのリリースノートには、新機能や DataWeave リリースに関するその他の情報に加えて、バグ修正、互換性情報、パッチ更新リリースの詳細が含まれます。 - [DataWeave 2.13.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.13.0-release-notes) - [DataWeave 2.12.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.12.0-release-notes) - [DataWeave 2.11.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.11.0-release-notes) - [DataWeave 2.9.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.9.0-release-notes) - [DataWeave 2.6.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.6.0-release-notes) - [DataWeave 2.4.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.4.0-release-notes) (This version of the product has reached [End of Life](https://www.salesforce.com/en-us/wp-content/uploads/sites/4/documents/legal/Agreements/versioning-back-support-policy.pdf).) ## [](#このリリースの新機能)このリリースの新機能 Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::release-notes::partial$dataweave/dataweave-whats-new-2.5.0.adoc\[\] ## [](#dataweave-と-mule)DataWeave と Mule DataWeave 2.5.0 は Mule 4.5.0 リリースにバンドルされています。Mule リリースについての詳細は、​[「Mule Runtime Engine 4.5.0 リリースノート」](#release-notes::mule-runtime/mule-4.5.0-release-notes.adoc)​を参照してください。 # DataWeave Release Notes Unresolved include directive in modules/ROOT/pages/dataweave-release-notes.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] 各 DataWeave バージョンのリリースノートには、新機能や DataWeave リリースに関するその他の情報に加えて、バグ修正、互換性情報、パッチ更新リリースの詳細が含まれます。 - [DataWeave 2.13.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.13.0-release-notes) - [DataWeave 2.12.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.12.0-release-notes) - [DataWeave 2.11.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.11.0-release-notes) - [DataWeave 2.9.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.9.0-release-notes) - [DataWeave 2.6.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.6.0-release-notes) - [DataWeave 2.4.0](https://docs.mulesoft.com/jp/release-notes/dataweave/dataweave-2.4.0-release-notes) (This version of the product has reached [End of Life](https://www.salesforce.com/en-us/wp-content/uploads/sites/4/documents/legal/Agreements/versioning-back-support-policy.pdf).) ## [](#dataweave-と-mule)DataWeave と Mule DataWeave 2.7.0 は Mule 4.7.0 リリースにバンドルされています。Mule リリースについての詳細は、​[「Mule Runtime Engine 4.7.0 リリースノート」](#release-notes::mule-runtime/mule-4.7.0-release-notes.adoc)​を参照してください。 # DataWeave クイックスタート このガイドでは、サンプルデータに対して DataWeave バージョン 2 スクリプトを実行します。外部データソースは使用しません。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 例を使用して、いくつかの重要な DataWeave の概念について説明します。ユーザーは準備が整ったときにこの概念をさらに深く探索することができます。また、これらの例は、Transform Message コンポーネントを DataWeave プレイグラウンドに変換する方法も示しています。 スクリプトを実行するには、スクリプトを ​[Studio](https://docs.mulesoft.com/studio/)​ の Transform Message コンポーネントのソースコード領域にコピーします。その後、結果をコンポーネントの ​**\[Preview (プレビュー)\]**​ ペインで参照します。また、ファイルからコンテンツを読み込んで、DataWeave スクリプトがそのコンテンツに対してアクションを実行できるようにします。ここにある DataWeave の例やドキュメントの他の場所にある例に慣れたら、DataWeave プレイグラウンドを使用して、サンプルデータに対して独自の DataWeave スクリプトを記述する練習をすることができます。 ![基本的な JSON 出力が表示されている Anypoint Studio のスクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-script-studio-basic.png) この図は、センターキャンバスの ​**testingscriptFlow**​ 内の Transform Message コンポーネントを示しています。Studio キャンバスの下の ​**\[Transform Message\]**​ タブでは、ソースコード領域に DataWeave スクリプトが表示され、​**\[Preview (プレビュー)\]**​ ペインに結果が表示されます。 ## [](#前提条件)前提条件 [Studio 7](https://docs.mulesoft.com/studio/to-download-and-install-studio)​ が必要です。 バージョン 7.3 または 7.2.3 をお勧めします。このガイドでは他の Studio 7 バージョンはテストされていません。 Studio をインストールしたら、Transform Message コンポーネントを使用してプロジェクトをセットアップする必要があります。​[Studio でのプロジェクトのセットアップ](#setup)​を参照してください。 ## [](#setup)Studio でのプロジェクトのセットアップ DataWeave プレイグラウンドとして機能する Mule プロジェクトをセットアップします。 1. Studio で、​**\[File (ファイル)\]**​ → ​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックして、Mule プロジェクトを作成します。 2. プロジェクトの名前 ​`testscript`​ を入力して、​**\[Finish (完了)\]**​ をクリックします。 3. 新しいプロジェクトの ​**\[Mule Palette (Mule パレット)\]**​ タブから ​**\[Core (コア)\]**​ をクリックし、​**\[Transform Message\]**​ コンポーネントを Studio キャンバスにドラッグします。 ![Anypoint Studio の Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-script-studio.png) (A) ​**\[Mule Palette (Mule パレット)\]**​ タブ (B) Transform Message コンポーネントを含む Studio キャンバス (C) ​**\[Transform Message\]**​ タブ 4. **\[Transform Message\]**​ タブで ​**\[Preview (プレビュー)\]**​ (右端) をクリックして \[Preview (プレビュー)\] ペインを開き、​**\[Preview (プレビュー)\]**​ の横にある​_空_​の長方形をクリックしてソースコード領域を展開します。 ![Anypoint Studio の出力ペイロードが表示されている \[Transform Message\] タブ](_images/studio-transform-msg-tab.png) 左のソースコード領域で DataWeave スクリプトを追加し、右の \[Preview (プレビュー)\] ペインでスクリプトの出力を参照します。 5. [スクリプティングの開始](#start_scripting)​に進みます。 ## [](#start_scripting)スクリプティングの開始 1. [1 つの文字列への 2 つの文字列の連結](#step_1) 2. [XML 出力への JSON 入力の変換](#step_2) 3. [サポートされるデータ型について](#step_3) 4. [入力としての DataWeave 変数の定義および使用](#step_4) 5. [DataWeave 変数での DataWeave 関数の使用](#step_5) 6. [入力からのコンテンツの読み取り、変換、選択](#step_6) 7. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7) 8. [配列からオブジェクトへの要素のマップ](#step_8) 9. [オブジェクトから配列への値の取り込み](#step_9) 10. [項目のマップとマージ](#step_10) ### [](#step_1)1 つの文字列への 2 つの文字列の連結 2 つの文字列 (「hello」と「World」) を 1 つの文字列 (「helloWorld」) に連結する簡単な DataWeave スクリプトから始めます。 ![JSON 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-helloWorld.png) 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { myString: ("hello" ++ "World") } ``` - DataWeave スクリプトの本文にはキー-値ペア (​`{ myString: ("hello" ++ "World") }`​) が含まれます。この入力オブジェクトの値は、文字列「hello」と「World」を 1 つの文字列「helloWorld」に連結するための DataWeave 式 (​`("hello" ++ "World")`​) です。 準備が整ったら、文字列の連結で使用する DataWeave ​[++](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-plusplus)​ 関数についての詳細を確認してください。 - 3 つのダッシュ (​`---`​) の上にあるすべてのコンテンツがスクリプトのヘッダーです。 これには、出力形式 ​`application/json`​ を指定するディレクティブを含め、重要なディレクティブが含まれます。準備が整ったら、​[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "helloWorld" } ``` 3. [XML 出力への JSON 入力の変換](#step_2)​に進みます。 ### [](#step_2)XML 出力への JSON 入力の変換 多くのインテグレーションで形式間の変換が必要とされます。この手順では、​`output`​ ディレクティブを使用して、JSON 入力から XML 出力を生成します。 ![XML 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-helloWorld-xml.png) 1. ソースコード領域内の現在のスクリプトの本文を​[1 つの文字列への 2 つの文字列の連結](#step_1)​の JSON 出力に置き換えて、​`output application/json`​ ディレクティブを ​`output application/xml`​ に変更します。 ```dw %dw 2.0 output application/xml --- { "myString" : ("helloWorld") } ``` 2. **\[Preview (プレビュー)\]**​ ペインで XML 出力を参照します。 ```xml helloWorld ``` 入力 JSON オブジェクト ​`{ "myString" : ("helloWorld") }`​ の ​`"myString"`​ キーは XML 出力のルート要素に変換され、連結された文字列はその XML オブジェクトの値になります。したがって、XML 出力は ​`helloWorld`​ になります。この出力の前に、XML バージョンとエンコードを特定する標準 XML 宣言が配置されています。
XML 出力のルートノードとして機能する​単一​キーがない場合 (たとえば、入力が単に ​("helloWorld")​ の場合)、XML への変換は失敗し、ソースコード領域に黄色の警告 (​!​) が表示されます。警告メッセージは、​Trying to output non-whitespace characters outside main element tree​ です。必要に応じて、この警告が生成されるように自分で試してみることができます。
DataWeave では、多くの出力形式と入力形式がサポートされます。準備が整ったら、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats)​についての詳細を確認してください。 3. [サポートされるデータ型について](#step_3)​に進みます。 ### [](#step_3)サポートされるデータ型について ここでは、サポートされるさまざまなデータ型を紹介し、スクリプトへのコメントの追加方法を示す簡単な DataWeave スクリプトを提供します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { /* * A multi-line * comment here. */ myString: "hello world", myNumber: 123, myFloatingPointNumber: 123.456, myVeryBigNumber: 12341234134123412341234123, myDate: |2018-12-07|, myTime: |11:55:56|, myDateTime: |2018-10-01T23:57:59-03:00|, myBoolean: true, myArray: [ 1, 2, 3, 5, 8], myMixedArray: [ 1, 2, "blah", { hello: "there" } ], myObjectKeyValuePair: { innerKey: "innerValue" }, myObjectWithConditionalField: { a : { b : 1, ( c : 2 ) if true, (d : 4) if false } }, myNull: null, myBinary: "abcd1234123" as Binary //A one-line comment here. } ``` DataWeave では、​`/* */`​ マークアップ内の複数行のコメントと、スラッシュ (​`//`​) の後の単一行のコメントがサポートされます。また、キー-値ペア (​`myString: "hello world"`​、​`myNumber: 123`​ など) 内のコロン (​`:`​) の後に表示される多くのデータ型もサポートされます。この型には、文字列 (引用符 ​`""`​ で囲まれる)、数値、日時構造 (パイプ ​`||`​ 内)、ブール (​`true`​ と ​`false`​)、配列 (角括弧 ​`[]`​ 内)、JSON に似たオブジェクト (中括弧 ​`{}`​ 内のキー-値構造)、​`null`​、バイナリがあります。このトピックについての詳細を確認する準備が整ったら、​[「DataWeave の型」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types)​を参照してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "hello world", "myNumber": 123, "myFloatingPointNumber": 123.456, "myVeryBigNumber": 12341234134123412341234123, "myDate": "2018-12-07", "myTime": "11:55:56", "myDateTime": "2018-10-01T23:57:59-03:00", "myBoolean": true, "myArray": [ 1, 2, 3, 5, 8 ], "myMixedArray": [ 1, 2, "blah", { "hello": "there" } ], "myObjectKeyValuePair": { "innerKey": "innerValue" }, "myObjectWithConditionalField": { "a": { "b": 1, "c": 2 } }, "myNull": null, "myBinary": "abcd1234123" } ``` 3. [入力としての DataWeave 変数の定義および使用](#step_4)​に進みます。 ### [](#step_4)入力としての DataWeave 変数の定義および使用 ここでは、DataWeave 変数 ​`myJson`​ の値を出力する簡単な DataWeave スクリプトを試します。スクリプトのヘッダー内の ​`var`​ ディレクトリを使用して、変数を設定します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { "hello" : "world" } output application/json --- myJson ``` JSON オブジェクト (​`{ "hello" : "world" }`​) は、スクリプトのヘッダー内の ​`myJson`​ 変数として定義されます。準備が整ったら、​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで出力を参照します。 ```json { "hello": "world" } ``` 3. [DataWeave 変数での DataWeave 関数の使用](#step_5)​に進みます。 ### [](#step_5)DataWeave 変数での DataWeave 関数の使用 ここでは、DataWeave 変数 (​`myJson`​) 内で DataWeave ​`avg`​ 関数を使用して、2 つの数値セットの平均を取得するスクリプトを試します。 ![Anypoint Studio で変数を使用する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-script-studio-var.png) 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { a: avg([1, 1000]), b: avg([1, 2, 3]) } output application/json --- myJson ``` スクリプトの本文に ​`myJson`​ を追加すると、ここの ​`avg`​ 関数が呼び出され、計算された平均が JSON オブジェクト内に生成されます。これは、​**\[Preview (プレビュー)\]**​ ペインで参照できます。構造 ​`[1, 1000]`​ および ​`[1, 2, 3]`​ は​[配列](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types#dw_type_array)​です。準備が整ったら、​[avg](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-avg)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "a": 500.5, "b": 2.0 } ``` 3. [入力からのコンテンツの読み取り、変換、選択](#step_6)​に進みます。 ### [](#step_6)入力からのコンテンツの読み取り、変換、選択 ここでは、XML 入力を読み取って JSON に変換し、​`car`​ 要素のコンテンツのみを選択する、より複雑なスクリプトを試します。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myRead = read("red", "application/xml") output application/json --- { mySelection : myRead.car } ``` この例のプレビューで問題が発生した場合は、​`myRead.car`​ を ​`myRead."car"`​ に変更してください。準備が整ったら、​[read](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-read)​ 関数、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats)​、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors)​についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "mySelection": { "color": "red" } } ``` 3. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7)​に進みます。 ### [](#step_7)DataWeave 関数を使用したファイルのコンテンツの読み取り ここでは、​`readUrl`​ を使用して、Studio の ​`src/main/resources`​ フォルダー内のファイルのコンテンツを読み取ります。このコンテンツを DataWeave スクリプトのサンプルデータとして使用できます。 1. ファイルを追加するには、​**\[Package Explorer\]**​ タブで ​`src/main/resources`​ フォルダーを右クリックし、​**\[New (新規)\]**​ → ​**\[File (ファイル)\]**​ に移動して、該当のファイルのファイル名 ​`myJson.json`​ を入力し、​**\[Finish (完了)\]**​ をクリックします。 2. `src/main/resources`​ から、​**\[myJson.json\]**​ タブ (または ​**\[myJson.json\]**​ タブの ​**\[Source (ソース)\]**​ サブタブ内 (ある場合)) に次のサンプルコンテンツを入力して保存します。 ```json { "hello": "world" } ``` ![Anypoint Studio のサンプルコンテンツが表示されている \[Package Explorer\] タブ](_images/dw-tut-sample-file.png) Figure 1. Studio 内の myJson.json 3. **\[testscript\]**​ タブ内の Transform Message コンポーネントに戻り、現在のスクリプトを、​`readUrl`​ を使用してファイルから JSON コンテンツを読み取るスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- readUrl("classpath://myJson.json", "application/json") ``` 準備が整ったら、​[readUrl](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-readurl)​ 関数についての詳細を確認してください。 4. **\[Preview (プレビュー)\]**​ ペインで一致の出力を参照します。 ```json { "hello": "world" } ``` Transform Message コンポーネントのメタデータ型を介してファイルのコンテンツを読み込むこともできます。この手順については、後で​[長いペイロードを使用する例の実行](#med_large_payload)​で説明します。この手順では、ここで作成した ​`myJson.json`​ ファイルを使用します。 5. [配列からオブジェクトへの要素のマップ](#step_8)​に進みます。 ### [](#step_8)配列からオブジェクトへの要素のマップ ほぼすべてのインテグレーションでデータマッピングが必要とされます。ここでは、配列内の要素を JSON オブジェクトのキーと値にマップします。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { ( ["a", "b", "c"] map ((value, index) -> { (index): value }) ) } ``` `map`​ 関数は左の配列を反復処理し、右のラムダ (匿名関数) (​`((value, index) → { (index): value })`​) をその配列の要素に適用します。ラムダは​[名前付きパラメーター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-functions-lambdas#_use_named_parameters_in_a_lambda)​ (​`value`​ および ​`index`​) を使用して、配列から値とインデックスを選択し、JSON オブジェクトにキー-値ペアを入力します。​[map](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-map)​ についての詳細を確認し、準備が整ったら、​`map`​ を ​[mapObject](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-mapobject)​ と比較してください。これはオブジェクトを入力として使用します。 2. 出力をプレビューします。 ```json { "0": "a", "1": "b", "2": "c" } ``` 3. [オブジェクトから配列への値の取り込み](#step_9)​に進みます。 ### [](#step_9)オブジェクトから配列への値の取り込み ここでは、DataWeave ​`pluck`​ 関数を使用して JSON オブジェクトの値を反復処理し、値を配列に出力します。 1. ソースコード領域のコンテンツを、JSON オブジェクトで ​`pluck`​ を使用するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { "0": "a", "1": "b", "2": "c" } pluck ((value) -> value) ``` 入力オブジェクトが ​`map`​ の例の​[出力](#output_map)​に一致し、出力の配列が ​`map`​ の例の​[入力](#input_map)​に一致します。準備が整ったら、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-pluck)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json [ "a", "b", "c" ] ``` 3. [項目のマップとマージ](#step_10)​に進みます。 ### [](#step_10)項目のマップとマージ ここでは、別々の配列内のアイテムから項目をマップおよびマージする、より複雑な例を試します。ここでの重要な点を簡単に述べると、一部のインテグレーションで必要とされる、より複雑なマッピングと変換の処理に DataWeave 機能の味わいを提供していることです。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myVar = [ { bookId: 101, title: "world history", price: "19.99" }, { bookId: 202, title: 'the great outdoors', price: "15.99" } ] var myVar2 = [ { bookId: 101, author: "john doe" }, { bookId: 202, author: "jane doe" } ] output application/json --- myVar map (item, index) -> using (id = item.bookId) { "id" : id, "topic" : item.title, "cost" : item.price as Number, (myVar2 filter ($.*bookId contains id) map (item) -> { author : item.author }) } ``` この言語をさらに探索する準備が整ったら、終了間近で使用する ​[filter](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-filter)​ 関数が ​`myVar2`​ 変数の配列から ​`author`​ 値をどのように返すかについて確認してください。​`as`​ が行 ​`"cost" : item.price as Number,`​ 内のデータ型と連携し、​`"19.99"`​ のような入力文字列を ​`19.99`​ のような数値に強制的に変換する方法についての詳細は、​[DataWeave の型強制](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types-coercion)​について確認してください。(​`using (id = item.bookId)`​ に示されている) ​`using`​ を使用してスクリプト内で​[ローカル DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables#example_local_variable)​をどのように作成できるかを確認してください。 2. 出力をプレビューします。 ```json [ { "id": "101", "topic": "world history", "cost": 19.99, "author": "john doe" }, { "id": "202", "topic": "the great outdoors", "cost": 15.99, "author": "jane doe" } ] ``` 3. [DataWeave の他の例を試す](#more_examples)​に進みます。 ## [](#more_examples)DataWeave の他の例を試す これで DataWeave の例を自分で実行する準備ができました。DataWeave 言語についてさらに多くのことを知りたい場合は、DataWeave プレイグラウンドでドキュメント内にある例をいつでも実行できます。例をカスタマイズし、それを使用して独自のスクリプトを開始できます。
payload​ を使用して入力データを参照する例 (​contains​ や ​mapObject​ 関数の例など) の場合、​ペイロードに対してアクションを実行する例の実行​で説明されている技法を使用してペイロード関連の問題を回避できます。
1. Studio で試すことができるさらに多くの例があります。 - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​: DataWeave 関数モジュールに関するドキュメントには、DataWeave 関数を使用する多くの例が用意されています。 - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-pattern-matching) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) - [DataWeave 関数の定義](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-functions) 2. [次のステップ](#next_steps)​に進みます。 ### [](#provide_payload)ペイロードに対してアクションを実行する例の実行 DataWeave では、​`payload`​ は、​[Mule メッセージ](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-message#_message_payload)​のコンテンツを保持する組み込み Mule Runtime 変数です。これを使用すると、​`payload`​ を DataWeave スクリプトに入力するだけでメッセージの本文を取得できます。多くの場合、このコンテンツはドキュメントで「ペイロード」と呼ばれます。 `payload`​ を使用して Mule メッセージのコンテンツを取得する DataWeave の例を試すには、いくつかのオプションがあります。 - [短いペイロードを使用する例の実行](#small_payload)​: DataWeave 変数を使用できます。 - [長いペイロードを使用する例の実行](#med_large_payload)​: ファイルを介してペイロードコンテンツを追加します。この技法は、短いペイロードでも機能します。 実行中の Mule アプリケーションを必要とする選択肢 (​[Set Payload](https://docs.mulesoft.com/jp/mule-runtime/4.3/set-payload-transformer-reference)​ の使用など) は、ここでは対象になっていませんが、​[次のステップ](#next_steps)​で紹介されています。 #### [](#small_payload)短いペイロードを使用する例の実行 数行のサンプルデータを使用する短い例では、入力ペイロードを変数に変換できます。DataWeave スクリプトのヘッダー内の DataWeave 変数 (​`var`​) にペイロードのコンテンツをコピーするだけです。次にスクリプトの本文で、その変数を参照する新しい変数の名前で ​`payload`​ を置き換えます。 1. ソースコード領域で次のスクリプトから開始します。 ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` これをまだプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-payload-example.png) 2. ここでは、​`payload`​ を使用して、存在しない Mule メッセージのコンテンツを入力するのではなく、何らかのサンプル入力を使用するようにこの例を変更します。 1. スクリプトで読み取ることができる入力データを提供する ​`myInput`​ DataWeave 変数を追加し、スクリプトの本文内の Mule ​`payload`​ 変数を DataWeave ​`myInput`​ 変数に変更します。 ```DataWeave %dw 2.0 var myInput = read(" 1 3 2 ", "application/xml") output application/json --- ContainsRequestedItem: myInput.root.*order.*items contains "3" ``` 2. 結果をプレビューします。 ```json { "ContainsRequestedItem": true } ``` 準備が整ったら、​[contains](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-contains)​ 関数および組み込み ​`payload`​ 変数に関する詳細を​[「定義済み変数」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables-context)​で確認してください。 #### [](#med_large_payload)長いペイロードを使用する例の実行 多数の行があるサンプルデータを使用する DataWeave 例では、Transform Message を介してメタデータ型を作成することを考慮します。メタデータ型は、サンプルデータを含むローカルファイルを受け入れることができます。 1. [readUrl](#readurl_ex)​ の例を使用して、Studio で ​`src/main/resources/myJson.json`​ を作成します。 Studio にファイルがすでにある場合は、このステップを省略できます。次のステップでは、このファイルのコンテンツをペイロードとして使用する方法を示します。 2. \[Transform Message\] タブのソースコード領域の現在のスクリプトを、入力のペイロードを選択するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- payload ``` 3. ペイロードはまだ存在しないため、ここでペイロードをプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-payload-example2.png) 4. ここで、簡単な JSON オブジェクトを Transform Message のペイロードとして提供します。 1. **\[Transform Message\]**​ タブで、​**\[Preview (プレビュー)\]**​ ボタンの​_左端_​の長方形をクリックすると、列形式のグラフィカルビューがソースコード領域の横に開きます。 ![Anypoint Studio でメタデータを定義する Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.3/_images/studio-define-payload.png) 長方形の上にマウスポインターを置くと、​**\[Show Graphic (グラフィックを表示)\]**​ の表示ラベルが表示されます。 2. **\[Transform Message\]**​ タブの左端の列で ​**\[Payload: Unknown (ペイロード: 不明)\]**​ を見つけて、​**\[Define metadata (メタデータを定義)\]**​ をクリックします。 **\[Define metadata (メタデータを定義)\]**​ リンクが表示されない場合は、左端の列で ​**\[Payload: (ペイロード:)\]**​ エントリを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ をクリックすると、​**\[Select metadata type (メタデータ型を選択)\]**​ ダイアログが開きます。 5. ここで、(​[readUrl](#readurl_ex)​ の例で作成した) ​`myJson.json`​ のコンテンツを Transform Message コンポーネントに読み込みます。 1. **\[+Add (+追加)\]**​ をクリックして、​**\[Create new type (新しい型の作成)\]**​ ダイアログを開きます。 2. ダイアログで ​**\[Type id (型 id)\]**​ に「​`myJsonType`​」と入力し、​**\[Create type (型を作成)\]**​ をクリックします。 ![新しい型を作成するダイアログ](/mulesoft/current/ja-jp/dataweave/2.3/_images/studio-create-type.png) 3. 開いている ​**\[Select metadata type (メタデータ型を選択)\]**​ に戻り、​**\[Type (型)\]**​ ドロップダウンメニューから ​**\[JSON\]**​ を選択します。 ![型を選択する \[Select metadata type (メタデータ型を選択)\] ダイアログ](_images/studio_select_metadata_type.png) 4. 新しい型の下で、​**\[Schema (スキーマ)\]**​ を ​**\[Example (例)\]**​ に変更します (上の図を参照)。 5. 省略記号 (​**…​**​) のあるナビゲーションボタンを使用して ​`src/main/resources/myJson.json`​ を見つけて、​**\[Open (開く)\]**​ をクリックします。ファイルのコンテンツの構造 (​`hello: _String_`​) が ​**\[Select metadata type (メタデータ型を選択)\]**​ ウィンドウに表示されます。 6. ここで、​**\[Select (選択)\]**​ をクリックし、ファイルのコンテンツをメッセージペイロードに読み込みます。 7. \[Preview (プレビュー)\] ペインに ​`myJson.json`​ からの JSON オブジェクトが表示されます。 必要に応じて、​**\[Preview (プレビュー)\]**​ をクリックして、\[Preview (プレビュー)\] ペインを開くことができます。 8. ここで、​**\[Preview (プレビュー)\]**​ ボタンの横にある​_空_​の長方形をクリックし、ソースコード領域を開きます。スクリプトの本文を ​`payload.hello`​ に変更し、既存の DataWeave ヘッダーコンテンツを保持します。 \[Preview (プレビュー)\] ペインにはペイロードの値 (​`"world"`​) のみが含まれます。 以下は、Studio にこの例がどのように表示されるかを示しています。 ![Anypoint Studio で「world」という単語を JSON 形式で出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dw-tut-world.png) 準備が整ったら、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors)​についての詳細を確認してください。 ## [](#next_steps)次のステップ - Studio UI で Mule アプリケーションの開発とデータマッピングを開始するには、[チュートリアル: Database Connector と DataWeave を使用する Mule アプリケーションの作成](https://docs.mulesoft.com/jp/mule-runtime/4.3/mule-app-tutorial)を参照してください。 - Transform Message コンポーネント以外にも多くの Mule Connector、モジュール、コアコンポーネントが​**「fx」**​項目で DataWeave セレクターと短い DataWeave 式を受け入れます。 これらのコンポーネントについての詳細は、​[「Mule コンポーネント」](https://docs.mulesoft.com/jp/mule-runtime/4.3/mule-components)​で学習できます。 実行中の Mule アプリケーションでサンプルデータを試す場合、Transform Message と連携するかどうかにかかわらず、外部データソースを使用するのではなく以下のコアコンポーネントを使用できます。 - [Set Payload](https://docs.mulesoft.com/jp/mule-runtime/4.3/set-payload-transformer-reference)​。Mule イベントのペイロードのコンテンツを提供します。 - [Set Variable](https://docs.mulesoft.com/jp/mule-runtime/4.3/variable-transformer-reference)​。Mule イベントの​[変数](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-variables)​内でコンテンツを作成します。 - [Scheduler](https://docs.mulesoft.com/jp/mule-runtime/4.3/scheduler-concept)​。Mule イベントの通常の生成をトリガーします。 - [Logger](https://docs.mulesoft.com/jp/mule-runtime/4.3/logger-component-reference)​。Studio コンソールで、記録された出力と問題を参照します。 このいくつかのコンポーネントの使用例を以下に示します。 ![Anypoint Studio で「helloWorld」を出力するフロー](/mulesoft/current/ja-jp/dataweave/2.3/_images/studio-hello-world.png) - Set Payload の​**「fx」**​値を ​`output application/json --- { hello : "world"}`​ に設定します。 - Logger の​**「fx」**​値は ​`payload`​ に設定されています。これは、プロジェクトの UI と XML 設定ファイルでは ​`#[payload]`​ のように表示されます。 - _実行中_​の Mule アプリケーション (​`testscript`​) の ​**\[Console (コンソール)\]**​ タブに Set Payload からのペイロードが表示されます。 # DataWeave クイックスタート このガイドでは、サンプルデータに対して DataWeave 2.0 スクリプトを実行します。外部データソースは使用しません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 例を使用して、いくつかの重要な DataWeave の概念について説明します。ユーザーは準備が整ったときにこの概念をさらに深く探索することができます。また、これらの例は、Transform Message コンポーネントを DataWeave プレイグラウンドに変換する方法も示しています。 スクリプトを実行するには、スクリプトを ​[Studio](https://docs.mulesoft.com/studio/)​ の Transform Message コンポーネントのソースコード領域にコピーします。その後、結果をコンポーネントの ​**\[Preview (プレビュー)\]**​ ペインで参照します。また、ファイルからコンテンツを読み込んで、DataWeave スクリプトがそのコンテンツに対してアクションを実行できるようにします。ここにある DataWeave の例やドキュメントの他の場所にある例に慣れたら、DataWeave プレイグラウンドを使用して、サンプルデータに対して独自の DataWeave スクリプトを記述する練習をすることができます。 ![基本的な JSON 出力が表示されている Anypoint Studio のスクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-script-studio-basic.png) この図は、センターキャンバスの ​**testingscriptFlow**​ 内の Transform Message コンポーネントを示しています。Studio キャンバスの下の ​**\[Transform Message\]**​ タブでは、ソースコード領域に DataWeave スクリプトが表示され、​**\[Preview (プレビュー)\]**​ ペインに結果が表示されます。 ## [](#前提条件)前提条件 [Studio 7](https://docs.mulesoft.com/studio/to-download-and-install-studio)​ が必要です。 バージョン 7.3 または 7.2.3 をお勧めします。このガイドでは他の Studio 7 バージョンはテストされていません。 Studio をインストールしたら、Transform Message コンポーネントを使用してプロジェクトをセットアップする必要があります。​[Studio でのプロジェクトのセットアップ](#setup)​を参照してください。 ## [](#setup)Studio でのプロジェクトのセットアップ DataWeave プレイグラウンドとして機能する Mule プロジェクトをセットアップします。 1. Studio で、​**\[File (ファイル)\]**​ → ​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックして、Mule プロジェクトを作成します。 2. プロジェクトの名前 ​`testscript`​ を入力して、​**\[Finish (完了)\]**​ をクリックします。 3. 新しいプロジェクトの ​**\[Mule Palette (Mule パレット)\]**​ タブから ​**\[Core (コア)\]**​ をクリックし、​**\[Transform Message\]**​ コンポーネントを Studio キャンバスにドラッグします。 ![Anypoint Studio の Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-script-studio.png) (A) ​**\[Mule Palette (Mule パレット)\]**​ タブ (B) Transform Message コンポーネントを含む Studio キャンバス (C) ​**\[Transform Message\]**​ タブ 4. **\[Transform Message\]**​ タブで ​**\[Preview (プレビュー)\]**​ (右端) をクリックして \[Preview (プレビュー)\] ペインを開き、​**\[Preview (プレビュー)\]**​ の横にある​_空_​の長方形をクリックしてソースコード領域を展開します。 ![Anypoint Studio の出力ペイロードが表示されている \[Transform Message\] タブ](_images/studio-transform-msg-tab.png) 左のソースコード領域で DataWeave スクリプトを追加し、右の \[Preview (プレビュー)\] ペインでスクリプトの出力を参照します。 5. [スクリプティングの開始](#start_scripting)​に進みます。 ## [](#start_scripting)スクリプティングの開始 1. [1 つの文字列への 2 つの文字列の連結](#step_1) 2. [XML 出力への JSON 入力の変換](#step_2) 3. [サポートされるデータ型について](#step_3) 4. [入力としての DataWeave 変数の定義および使用](#step_4) 5. [DataWeave 変数での DataWeave 関数の使用](#step_5) 6. [入力からのコンテンツの読み取り、変換、選択](#step_6) 7. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7) 8. [配列からオブジェクトへの要素のマップ](#step_8) 9. [オブジェクトから配列への値の取り込み](#step_9) 10. [項目のマップとマージ](#step_10) ### [](#step_1)1 つの文字列への 2 つの文字列の連結 2 つの文字列 (「hello」と「World」) を 1 つの文字列 (「helloWorld」) に連結する簡単な DataWeave スクリプトから始めます。 ![JSON 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-helloWorld.png) 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { myString: ("hello" ++ "World") } ``` - DataWeave スクリプトの本文にはキー-値ペア (​`{ myString: ("hello" ++ "World") }`​) が含まれます。この入力オブジェクトの値は、文字列「hello」と「World」を 1 つの文字列「helloWorld」に連結するための DataWeave 式 (​`("hello" ++ "World")`​) です。 準備が整ったら、文字列の連結で使用する DataWeave ​[++](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-plusplus)​ 関数についての詳細を確認してください。 - 3 つのダッシュ (​`---`​) の上にあるすべてのコンテンツがスクリプトのヘッダーです。 これには、出力形式 ​`application/json`​ を指定するディレクティブを含め、重要なディレクティブが含まれます。準備が整ったら、​[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "helloWorld" } ``` 3. [XML 出力への JSON 入力の変換](#step_2)​に進みます。 ### [](#step_2)XML 出力への JSON 入力の変換 多くのインテグレーションで形式間の変換が必要とされます。この手順では、​`output`​ ディレクティブを使用して、JSON 入力から XML 出力を生成します。 ![XML 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-helloWorld-xml.png) 1. ソースコード領域内の現在のスクリプトの本文を​[1 つの文字列への 2 つの文字列の連結](#step_1)​の JSON 出力に置き換えて、​`output application/json`​ ディレクティブを ​`output application/xml`​ に変更します。 ```dw %dw 2.0 output application/xml --- { "myString" : ("helloWorld") } ``` 2. **\[Preview (プレビュー)\]**​ ペインで XML 出力を参照します。 ```xml helloWorld ``` 入力 JSON オブジェクト ​`{ "myString" : ("helloWorld") }`​ の ​`"myString"`​ キーは XML 出力のルート要素に変換され、連結された文字列はその XML オブジェクトの値になります。したがって、XML 出力は ​`helloWorld`​ になります。この出力の前に、XML バージョンとエンコードを特定する標準 XML 宣言が配置されています。
XML 出力のルートノードとして機能する​単一​キーがない場合 (たとえば、入力が単に ​("helloWorld")​ の場合)、XML への変換は失敗し、ソースコード領域に黄色の警告 (​!​) が表示されます。警告メッセージは、​Trying to output non-whitespace characters outside main element tree​ です。必要に応じて、この警告が生成されるように自分で試してみることができます。
DataWeave では、多くの出力形式と入力形式がサポートされます。準備が整ったら、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats)​についての詳細を確認してください。 3. [サポートされるデータ型について](#step_3)​に進みます。 ### [](#step_3)サポートされるデータ型について ここでは、サポートされるさまざまなデータ型を紹介し、スクリプトへのコメントの追加方法を示す簡単な DataWeave スクリプトを提供します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { /* * A multi-line * comment here. */ myString: "hello world", myNumber: 123, myFloatingPointNumber: 123.456, myVeryBigNumber: 12341234134123412341234123, myDate: |2018-12-07|, myTime: |11:55:56|, myDateTime: |2018-10-01T23:57:59-03:00|, myBoolean: true, myArray: [ 1, 2, 3, 5, 8], myMixedArray: [ 1, 2, "blah", { hello: "there" } ], myObjectKeyValuePair: { innerKey: "innerValue" }, myObjectWithConditionalField: { a : { b : 1, ( c : 2 ) if true, (d : 4) if false } }, myNull: null, myBinary: "abcd1234123" as Binary //A one-line comment here. } ``` DataWeave では、​`/* */`​ マークアップ内の複数行のコメントと、スラッシュ (​`//`​) の後の単一行のコメントがサポートされます。また、キー-値ペア (​`myString: "hello world"`​、​`myNumber: 123`​ など) 内のコロン (​`:`​) の後に表示される多くのデータ型もサポートされます。この型には、文字列 (引用符 ​`""`​ で囲まれる)、数値、日時構造 (パイプ ​`||`​ 内)、ブール (​`true`​ と ​`false`​)、配列 (角括弧 ​`[]`​ 内)、JSON に似たオブジェクト (中括弧 ​`{}`​ 内のキー-値構造)、​`null`​、バイナリがあります。このトピックについての詳細を確認する準備が整ったら、​[「DataWeave の型」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types)​を参照してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "hello world", "myNumber": 123, "myFloatingPointNumber": 123.456, "myVeryBigNumber": 12341234134123412341234123, "myDate": "2018-12-07", "myTime": "11:55:56", "myDateTime": "2018-10-01T23:57:59-03:00", "myBoolean": true, "myArray": [ 1, 2, 3, 5, 8 ], "myMixedArray": [ 1, 2, "blah", { "hello": "there" } ], "myObjectKeyValuePair": { "innerKey": "innerValue" }, "myObjectWithConditionalField": { "a": { "b": 1, "c": 2 } }, "myNull": null, "myBinary": "abcd1234123" } ``` 3. [入力としての DataWeave 変数の定義および使用](#step_4)​に進みます。 ### [](#step_4)入力としての DataWeave 変数の定義および使用 ここでは、DataWeave 変数 ​`myJson`​ の値を出力する簡単な DataWeave スクリプトを試します。スクリプトのヘッダー内の ​`var`​ ディレクトリを使用して、変数を設定します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { "hello" : "world" } output application/json --- myJson ``` JSON オブジェクト (​`{ "hello" : "world" }`​) は、スクリプトのヘッダー内の ​`myJson`​ 変数として定義されます。準備が整ったら、​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで出力を参照します。 ```json { "hello": "world" } ``` 3. [DataWeave 変数での DataWeave 関数の使用](#step_5)​に進みます。 ### [](#step_5)DataWeave 変数での DataWeave 関数の使用 ここでは、DataWeave 変数 (​`myJson`​) 内で DataWeave ​`avg`​ 関数を使用して、2 つの数値セットの平均を取得するスクリプトを試します。 ![Anypoint Studio で変数を使用する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-script-studio-var.png) 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { a: avg([1, 1000]), b: avg([1, 2, 3]) } output application/json --- myJson ``` スクリプトの本文に ​`myJson`​ を追加すると、ここの ​`avg`​ 関数が呼び出され、計算された平均が JSON オブジェクト内に生成されます。これは、​**\[Preview (プレビュー)\]**​ ペインで参照できます。構造 ​`[1, 1000]`​ および ​`[1, 2, 3]`​ は​[配列](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types#dw_type_array)​です。準備が整ったら、​[avg](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-avg)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "a": 500.5, "b": 2.0 } ``` 3. [入力からのコンテンツの読み取り、変換、選択](#step_6)​に進みます。 ### [](#step_6)入力からのコンテンツの読み取り、変換、選択 ここでは、XML 入力を読み取って JSON に変換し、​`car`​ 要素のコンテンツのみを選択する、より複雑なスクリプトを試します。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myRead = read("red", "application/xml") output application/json --- { mySelection : myRead.car } ``` この例のプレビューで問題が発生した場合は、​`myRead.car`​ を ​`myRead."car"`​ に変更してください。準備が整ったら、​[read](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-read)​ 関数、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats)​、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors)​についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "mySelection": { "color": "red" } } ``` 3. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7)​に進みます。 ### [](#step_7)DataWeave 関数を使用したファイルのコンテンツの読み取り ここでは、​`readUrl`​ を使用して、Studio の ​`src/main/resources`​ フォルダー内のファイルのコンテンツを読み取ります。このコンテンツを DataWeave スクリプトのサンプルデータとして使用できます。 1. ファイルを追加するには、​**\[Package Explorer\]**​ タブで ​`src/main/resources`​ フォルダーを右クリックし、​**\[New (新規)\]**​ → ​**\[File (ファイル)\]**​ に移動して、該当のファイルのファイル名 ​`myJson.json`​ を入力し、​**\[Finish (完了)\]**​ をクリックします。 2. `src/main/resources`​ から、​**\[myJson.json\]**​ タブ (または ​**\[myJson.json\]**​ タブの ​**\[Source (ソース)\]**​ サブタブ内 (ある場合)) に次のサンプルコンテンツを入力して保存します。 ```json { "hello": "world" } ``` ![Anypoint Studio のサンプルコンテンツが表示されている \[Package Explorer\] タブ](_images/dw-tut-sample-file.png) Figure 1. Studio 内の myJson.json 3. **\[testscript\]**​ タブ内の Transform Message コンポーネントに戻り、現在のスクリプトを、​`readUrl`​ を使用してファイルから JSON コンテンツを読み取るスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- readUrl("classpath://myJson.json", "application/json") ``` 準備が整ったら、​[readUrl](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-readurl)​ 関数についての詳細を確認してください。 4. **\[Preview (プレビュー)\]**​ ペインで一致の出力を参照します。 ```json { "hello": "world" } ``` Transform Message コンポーネントのメタデータ型を介してファイルのコンテンツを読み込むこともできます。この手順については、後で​[長いペイロードを使用する例の実行](#med_large_payload)​で説明します。この手順では、ここで作成した ​`myJson.json`​ ファイルを使用します。 5. [配列からオブジェクトへの要素のマップ](#step_8)​に進みます。 ### [](#step_8)配列からオブジェクトへの要素のマップ ほぼすべてのインテグレーションでデータマッピングが必要とされます。ここでは、配列内の要素を JSON オブジェクトのキーと値にマップします。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { ( ["a", "b", "c"] map ((value, index) -> { (index): value }) ) } ``` `map`​ 関数は左の配列を反復処理し、右のラムダ (匿名関数) (​`((value, index) → { (index): value })`​) をその配列の要素に適用します。ラムダは​[名前付きパラメーター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-functions-lambdas#_use_named_parameters_in_a_lambda)​ (​`value`​ および ​`index`​) を使用して、配列から値とインデックスを選択し、JSON オブジェクトにキー-値ペアを入力します。​[map](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-map)​ についての詳細を確認し、準備が整ったら、​`map`​ を ​[mapObject](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-mapobject)​ と比較してください。これはオブジェクトを入力として使用します。 2. 出力をプレビューします。 ```json { "0": "a", "1": "b", "2": "c" } ``` 3. [オブジェクトから配列への値の取り込み](#step_9)​に進みます。 ### [](#step_9)オブジェクトから配列への値の取り込み ここでは、DataWeave ​`pluck`​ 関数を使用して JSON オブジェクトの値を反復処理し、値を配列に出力します。 1. ソースコード領域のコンテンツを、JSON オブジェクトで ​`pluck`​ を使用するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { "0": "a", "1": "b", "2": "c" } pluck ((value) -> value) ``` 入力オブジェクトが ​`map`​ の例の​[出力](#output_map)​に一致し、出力の配列が ​`map`​ の例の​[入力](#input_map)​に一致します。準備が整ったら、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-pluck)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json [ "a", "b", "c" ] ``` 3. [項目のマップとマージ](#step_10)​に進みます。 ### [](#step_10)項目のマップとマージ ここでは、別々の配列内のアイテムから項目をマップおよびマージする、より複雑な例を試します。ここでの重要な点を簡単に述べると、一部のインテグレーションで必要とされる、より複雑なマッピングと変換の処理に DataWeave 機能の味わいを提供していることです。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myVar = [ { bookId: 101, title: "world history", price: "19.99" }, { bookId: 202, title: 'the great outdoors', price: "15.99" } ] var myVar2 = [ { bookId: 101, author: "john doe" }, { bookId: 202, author: "jane doe" } ] output application/json --- myVar map (item, index) -> using (id = item.bookId) { "id" : id, "topic" : item.title, "cost" : item.price as Number, (myVar2 filter ($.*bookId contains id) map (item) -> { author : item.author }) } ``` この言語をさらに探索する準備が整ったら、終了間近で使用する ​[filter](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-filter)​ 関数が ​`myVar2`​ 変数の配列から ​`author`​ 値をどのように返すかについて確認してください。​`as`​ が行 ​`"cost" : item.price as Number,`​ 内のデータ型と連携し、​`"19.99"`​ のような入力文字列を ​`19.99`​ のような数値に強制的に変換する方法についての詳細は、​[DataWeave の型強制](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types-coercion)​について確認してください。(​`using (id = item.bookId)`​ に示されている) ​`using`​ を使用してスクリプト内で​[ローカル DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables#example_local_variable)​をどのように作成できるかを確認してください。 2. 出力をプレビューします。 ```json [ { "id": "101", "topic": "world history", "cost": 19.99, "author": "john doe" }, { "id": "202", "topic": "the great outdoors", "cost": 15.99, "author": "jane doe" } ] ``` 3. [DataWeave の他の例を試す](#more_examples)​に進みます。 ## [](#more_examples)DataWeave の他の例を試す これで DataWeave の例を自分で実行する準備ができました。DataWeave 言語についてさらに多くのことを知りたい場合は、DataWeave プレイグラウンドでドキュメント内にある例をいつでも実行できます。例をカスタマイズし、それを使用して独自のスクリプトを開始できます。
payload​ を使用して入力データを参照する例 (​contains​ や ​mapObject​ 関数の例など) の場合、​ペイロードに対してアクションを実行する例の実行​で説明されている技法を使用してペイロード関連の問題を回避できます。
1. Studio で試すことができるさらに多くの例があります。 - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions)​: DataWeave 関数モジュールに関するドキュメントには、DataWeave 関数を使用する多くの例が用意されています。 - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-pattern-matching) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) - [DataWeave 関数の定義](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-functions) 2. [次のステップ](#next_steps)​に進みます。 ### [](#provide_payload)ペイロードに対してアクションを実行する例の実行 DataWeave では、​`payload`​ は、​[Mule メッセージ](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message#_message_payload)​のコンテンツを保持する組み込み Mule Runtime 変数です。これを使用すると、​`payload`​ を DataWeave スクリプトに入力するだけでメッセージの本文を取得できます。多くの場合、このコンテンツはドキュメントで「ペイロード」と呼ばれます。 `payload`​ を使用して Mule メッセージのコンテンツを取得する DataWeave の例を試すには、いくつかのオプションがあります。 - [短いペイロードを使用する例の実行](#small_payload)​: DataWeave 変数を使用できます。 - [長いペイロードを使用する例の実行](#med_large_payload)​: ファイルを介してペイロードコンテンツを追加します。この技法は、短いペイロードでも機能します。 実行中の Mule アプリケーションを必要とする選択肢 (​[Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​ の使用など) は、ここでは対象になっていませんが、​[次のステップ](#next_steps)​で紹介されています。 #### [](#small_payload)短いペイロードを使用する例の実行 数行のサンプルデータを使用する短い例では、入力ペイロードを変数に変換できます。DataWeave スクリプトのヘッダー内の DataWeave 変数 (​`var`​) にペイロードのコンテンツをコピーするだけです。次にスクリプトの本文で、その変数を参照する新しい変数の名前で ​`payload`​ を置き換えます。 1. ソースコード領域で次のスクリプトから開始します。 ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` これをまだプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-payload-example.png) 2. ここでは、​`payload`​ を使用して、存在しない Mule メッセージのコンテンツを入力するのではなく、何らかのサンプル入力を使用するようにこの例を変更します。 1. スクリプトで読み取ることができる入力データを提供する ​`myInput`​ DataWeave 変数を追加し、スクリプトの本文内の Mule ​`payload`​ 変数を DataWeave ​`myInput`​ 変数に変更します。 ```DataWeave %dw 2.0 var myInput = read(" 1 3 2 ", "application/xml") output application/json --- ContainsRequestedItem: myInput.root.*order.*items contains "3" ``` 2. 結果をプレビューします。 ```json { "ContainsRequestedItem": true } ``` 準備が整ったら、​[contains](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-contains)​ 関数および組み込み ​`payload`​ 変数に関する詳細を​[「定義済み変数」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables-context)​で確認してください。 #### [](#med_large_payload)長いペイロードを使用する例の実行 多数の行があるサンプルデータを使用する DataWeave 例では、Transform Message を介してメタデータ型を作成することを考慮します。メタデータ型は、サンプルデータを含むローカルファイルを受け入れることができます。 1. [readUrl](#readurl_ex)​ の例を使用して、Studio で ​`src/main/resources/myJson.json`​ を作成します。 Studio にファイルがすでにある場合は、このステップを省略できます。次のステップでは、このファイルのコンテンツをペイロードとして使用する方法を示します。 2. \[Transform Message\] タブのソースコード領域の現在のスクリプトを、入力のペイロードを選択するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- payload ``` 3. ペイロードはまだ存在しないため、ここでペイロードをプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-payload-example2.png) 4. ここで、簡単な JSON オブジェクトを Transform Message のペイロードとして提供します。 1. **\[Transform Message\]**​ タブで、​**\[Preview (プレビュー)\]**​ ボタンの​_左端_​の長方形をクリックすると、列形式のグラフィカルビューがソースコード領域の横に開きます。 ![Anypoint Studio でメタデータを定義する Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.4/_images/studio-define-payload.png) 長方形の上にマウスポインターを置くと、​**\[Show Graphic (グラフィックを表示)\]**​ の表示ラベルが表示されます。 2. **\[Transform Message\]**​ タブの左端の列で ​**\[Payload: Unknown (ペイロード: 不明)\]**​ を見つけて、​**\[Define metadata (メタデータを定義)\]**​ をクリックします。 **\[Define metadata (メタデータを定義)\]**​ リンクが表示されない場合は、左端の列で ​**\[Payload: (ペイロード:)\]**​ エントリを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ をクリックすると、​**\[Select metadata type (メタデータ型を選択)\]**​ ダイアログが開きます。 5. ここで、(​[readUrl](#readurl_ex)​ の例で作成した) ​`myJson.json`​ のコンテンツを Transform Message コンポーネントに読み込みます。 1. **\[+Add (+追加)\]**​ をクリックして、​**\[Create new type (新しい型の作成)\]**​ ダイアログを開きます。 2. ダイアログで ​**\[Type id (型 id)\]**​ に「​`myJsonType`​」と入力し、​**\[Create type (型を作成)\]**​ をクリックします。 ![新しい型を作成するダイアログ](/mulesoft/current/ja-jp/dataweave/2.4/_images/studio-create-type.png) 3. 開いている ​**\[Select metadata type (メタデータ型を選択)\]**​ に戻り、​**\[Type (型)\]**​ ドロップダウンメニューから ​**\[JSON\]**​ を選択します。 ![型を選択する \[Select metadata type (メタデータ型を選択)\] ダイアログ](_images/studio_select_metadata_type.png) 4. 新しい型の下で、​**\[Schema (スキーマ)\]**​ を ​**\[Example (例)\]**​ に変更します (上の図を参照)。 5. 省略記号 (​**…​**​) のあるナビゲーションボタンを使用して ​`src/main/resources/myJson.json`​ を見つけて、​**\[Open (開く)\]**​ をクリックします。ファイルのコンテンツの構造 (​`hello: _String_`​) が ​**\[Select metadata type (メタデータ型を選択)\]**​ ウィンドウに表示されます。 6. ここで、​**\[Select (選択)\]**​ をクリックし、ファイルのコンテンツをメッセージペイロードに読み込みます。 7. \[Preview (プレビュー)\] ペインに ​`myJson.json`​ からの JSON オブジェクトが表示されます。 必要に応じて、​**\[Preview (プレビュー)\]**​ をクリックして、\[Preview (プレビュー)\] ペインを開くことができます。 8. ここで、​**\[Preview (プレビュー)\]**​ ボタンの横にある​_空_​の長方形をクリックし、ソースコード領域を開きます。スクリプトの本文を ​`payload.hello`​ に変更し、既存の DataWeave ヘッダーコンテンツを保持します。 \[Preview (プレビュー)\] ペインにはペイロードの値 (​`"world"`​) のみが含まれます。 以下は、Studio にこの例がどのように表示されるかを示しています。 ![Anypoint Studio で「world」という単語を JSON 形式で出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dw-tut-world.png) 準備が整ったら、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors)​についての詳細を確認してください。 ## [](#next_steps)次のステップ - Studio UI で Mule アプリケーションの開発とデータマッピングを開始するには、[Tutorial: Create a Mule app that uses the Database Connector and DataWeave](https://docs.mulesoft.com/mule-runtime/latest/mule-app-tutorial)を参照してください。 - Transform Message コンポーネント以外にも多くの Mule Connector、モジュール、コアコンポーネントが​**「fx」**​項目で DataWeave セレクターと短い DataWeave 式を受け入れます。 これらのコンポーネントについての詳細は、​[「Mule コンポーネント」](https://docs.mulesoft.com/mule-runtime/latest/mule-components)​で学習できます。 実行中の Mule アプリケーションでサンプルデータを試す場合、Transform Message と連携するかどうかにかかわらず、外部データソースを使用するのではなく以下のコアコンポーネントを使用できます。 - [Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​。Mule イベントのペイロードのコンテンツを提供します。 - [Set Variable](https://docs.mulesoft.com/mule-runtime/latest/variable-transformer-reference)​。Mule イベントの​[変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​内でコンテンツを作成します。 - [Scheduler](https://docs.mulesoft.com/mule-runtime/latest/scheduler-concept)​。Mule イベントの通常の生成をトリガーします。 - [Logger](https://docs.mulesoft.com/mule-runtime/latest/logger-component-reference)​。Studio コンソールで、記録された出力と問題を参照します。 このいくつかのコンポーネントの使用例を以下に示します。 ![Anypoint Studio で「helloWorld」を出力するフロー](/mulesoft/current/ja-jp/dataweave/2.4/_images/studio-hello-world.png) - Set Payload の​**「fx」**​値を ​`output application/json --- { hello : "world"}`​ に設定します。 - Logger の​**「fx」**​値は ​`payload`​ に設定されています。これは、プロジェクトの UI と XML 設定ファイルでは ​`#[payload]`​ のように表示されます。 - _実行中_​の Mule アプリケーション (​`testscript`​) の ​**\[Console (コンソール)\]**​ タブに Set Payload からのペイロードが表示されます。 # DataWeave クイックスタート このガイドでは、サンプルデータに対して DataWeave 2.0 スクリプトを実行します。外部データソースは使用しません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 例を使用して、いくつかの重要な DataWeave の概念について説明します。ユーザーは準備が整ったときにこの概念をさらに深く探索することができます。また、これらの例は、Transform Message コンポーネントを DataWeave プレイグラウンドに変換する方法も示しています。 スクリプトを実行するには、スクリプトを ​[Studio](https://docs.mulesoft.com/studio/)​ の Transform Message コンポーネントのソースコード領域にコピーします。その後、結果をコンポーネントの ​**\[Preview (プレビュー)\]**​ ペインで参照します。また、ファイルからコンテンツを読み込んで、DataWeave スクリプトがそのコンテンツに対してアクションを実行できるようにします。ここにある DataWeave の例やドキュメントの他の場所にある例に慣れたら、DataWeave プレイグラウンドを使用して、サンプルデータに対して独自の DataWeave スクリプトを記述する練習をすることができます。 ![基本的な JSON 出力が表示されている Anypoint Studio のスクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-script-studio-basic.png) この図は、センターキャンバスの ​**testingscriptFlow**​ 内の Transform Message コンポーネントを示しています。Studio キャンバスの下の ​**\[Transform Message\]**​ タブでは、ソースコード領域に DataWeave スクリプトが表示され、​**\[Preview (プレビュー)\]**​ ペインに結果が表示されます。 ## [](#前提条件)前提条件 [Studio 7](https://docs.mulesoft.com/studio/to-download-and-install-studio)​ が必要です。 バージョン 7.3 または 7.2.3 をお勧めします。このガイドでは他の Studio 7 バージョンはテストされていません。 Studio をインストールしたら、Transform Message コンポーネントを使用してプロジェクトをセットアップする必要があります。​[Studio でのプロジェクトのセットアップ](#setup)​ を参照してください。 ## [](#setup)Studio でのプロジェクトのセットアップ DataWeave プレイグラウンドとして機能する Mule プロジェクトをセットアップします。 1. Studio で、​**\[File (ファイル)\]**​ → ​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックして、Mule プロジェクトを作成します。 2. プロジェクトの名前 ​`testscript`​ を入力して、​**\[Finish (完了)\]**​ をクリックします。 3. 新しいプロジェクトの ​**\[Mule Palette (Mule パレット)\]**​ タブから ​**\[Core (コア)\]**​ をクリックし、​**\[Transform Message\]**​ コンポーネントを Studio キャンバスにドラッグします。 ![Anypoint Studio の Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-script-studio.png) (A) ​**\[Mule Palette (Mule パレット)\]**​ タブ (B) Transform Message コンポーネントを含む Studio キャンバス (C) ​**\[Transform Message\]**​ タブ 4. **\[Transform Message\]**​ タブで ​**\[Preview (プレビュー)\]**​ (右端) をクリックして \[Preview (プレビュー)\] ペインを開き、​**\[Preview (プレビュー)\]**​ の横にある​_空_​の長方形をクリックしてソースコード領域を展開します。 ![Anypoint Studio の出力ペイロードが表示されている \[Transform Message\] タブ](_images/studio-transform-msg-tab.png) 左のソースコード領域で DataWeave スクリプトを追加し、右の \[Preview (プレビュー)\] ペインでスクリプトの出力を参照します。 5. [スクリプティングの開始](#start_scripting)​に進みます。 ## [](#start_scripting)スクリプティングの開始 1. [1 つの文字列への 2 つの文字列の連結](#step_1) 2. [XML 出力への JSON 入力の変換](#step_2) 3. [サポートされるデータ型について](#step_3) 4. [入力としての DataWeave 変数の定義および使用](#step_4) 5. [DataWeave 変数での DataWeave 関数の使用](#step_5) 6. [入力からのコンテンツの読み取り、変換、選択](#step_6) 7. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7) 8. [配列からオブジェクトへの要素のマップ](#step_8) 9. [オブジェクトから配列への値の取り込み](#step_9) 10. [項目のマップとマージ](#step_10) ### [](#step_1)1 つの文字列への 2 つの文字列の連結 2 つの文字列 (「hello」と「World」) を 1 つの文字列 (「helloWorld」) に連結する簡単な DataWeave スクリプトから始めます。 ![JSON 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-helloWorld.png) 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { myString: ("hello" ++ "World") } ``` - DataWeave スクリプトの本文にはキー-値ペア (​`{ myString: ("hello" ++ "World") }`​) が含まれます。この入力オブジェクトの値は、文字列「hello」と「World」を 1 つの文字列「helloWorld」に連結するための DataWeave 式 (​`("hello" ++ "World")`​) です。 準備が整ったら、文字列の連結で使用する DataWeave ​[++](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-plusplus)​ 関数についての詳細を確認してください。 - 3 つのダッシュ (​`---`​) の上にあるすべてのコンテンツがスクリプトのヘッダーです。 これには、出力形式 ​`application/json`​ を指定するディレクティブを含め、重要なディレクティブが含まれます。準備が整ったら、​[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "helloWorld" } ``` 3. [XML 出力への JSON 入力の変換](#step_2)​に進みます。 ### [](#step_2)XML 出力への JSON 入力の変換 多くのインテグレーションで形式間の変換が必要とされます。この手順では、​`output`​ ディレクティブを使用して、JSON 入力から XML 出力を生成します。 ![XML 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-helloWorld-xml.png) 1. ソースコード領域内の現在のスクリプトの本文を​[1 つの文字列への 2 つの文字列の連結](#step_1)​の JSON 出力に置き換えて、​`output application/json`​ ディレクティブを ​`output application/xml`​ に変更します。 ```dw %dw 2.0 output application/xml --- { "myString" : ("helloWorld") } ``` 2. **\[Preview (プレビュー)\]**​ ペインで XML 出力を参照します。 ```xml helloWorld ``` 入力 JSON オブジェクト ​`{ "myString" : ("helloWorld") }`​ の ​`"myString"`​ キーは XML 出力のルート要素に変換され、連結された文字列はその XML オブジェクトの値になります。したがって、XML 出力は ​`helloWorld`​ になります。この出力の前に、XML バージョンとエンコードを特定する標準 XML 宣言が配置されています。
XML 出力のルートノードとして機能する​単一​キーがない場合 (たとえば、入力が単に ​("helloWorld")​ の場合)、XML への変換は失敗し、ソースコード領域に黄色の警告 (​!​) が表示されます。警告メッセージは、​Trying to output non-whitespace characters outside main element tree​ です。必要に応じて、この警告が生成されるように自分で試してみることができます。
DataWeave では、多くの出力形式と入力形式がサポートされます。準備が整ったら、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats)​についての詳細を確認してください。 3. [サポートされるデータ型について](#step_3)​に進みます。 ### [](#step_3)サポートされるデータ型について ここでは、サポートされるさまざまなデータ型を紹介し、スクリプトへのコメントの追加方法を示す簡単な DataWeave スクリプトを提供します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { /* * A multi-line * comment here. */ myString: "hello world", myNumber: 123, myFloatingPointNumber: 123.456, myVeryBigNumber: 12341234134123412341234123, myDate: |2018-12-07|, myTime: |11:55:56|, myDateTime: |2018-10-01T23:57:59-03:00|, myBoolean: true, myArray: [ 1, 2, 3, 5, 8], myMixedArray: [ 1, 2, "blah", { hello: "there" } ], myObjectKeyValuePair: { innerKey: "innerValue" }, myObjectWithConditionalField: { a : { b : 1, ( c : 2 ) if true, (d : 4) if false } }, myNull: null, myBinary: "abcd1234123" as Binary //A one-line comment here. } ``` DataWeave では、​`/* */`​ マークアップ内の複数行のコメントと、スラッシュ (​`//`​) の後の単一行のコメントがサポートされます。また、キー-値ペア (​`myString: "hello world"`​、​`myNumber: 123`​ など) 内のコロン (​`:`​) の後に表示される多くのデータ型もサポートされます。この型には、文字列 (引用符 ​`""`​ で囲まれる)、数値、日時構造 (パイプ ​`||`​ 内)、ブール (​`true`​ と ​`false`​)、配列 (角括弧 ​`[]`​ 内)、JSON に似たオブジェクト (中括弧 ​`{}`​ 内のキー-値構造)、​`null`​、バイナリがあります。このトピックについての詳細を確認する準備が整ったら、​[「DataWeave の型」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types)​を参照してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "hello world", "myNumber": 123, "myFloatingPointNumber": 123.456, "myVeryBigNumber": 12341234134123412341234123, "myDate": "2018-12-07", "myTime": "11:55:56", "myDateTime": "2018-10-01T23:57:59-03:00", "myBoolean": true, "myArray": [ 1, 2, 3, 5, 8 ], "myMixedArray": [ 1, 2, "blah", { "hello": "there" } ], "myObjectKeyValuePair": { "innerKey": "innerValue" }, "myObjectWithConditionalField": { "a": { "b": 1, "c": 2 } }, "myNull": null, "myBinary": "abcd1234123" } ``` 3. [入力としての DataWeave 変数の定義および使用](#step_4)​に進みます。 ### [](#step_4)入力としての DataWeave 変数の定義および使用 ここでは、DataWeave 変数 ​`myJson`​ の値を出力する簡単な DataWeave スクリプトを試します。スクリプトのヘッダー内の ​`var`​ ディレクトリを使用して、変数を設定します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { "hello" : "world" } output application/json --- myJson ``` JSON オブジェクト (​`{ "hello" : "world" }`​) は、スクリプトのヘッダー内の ​`myJson`​ 変数として定義されます。準備が整ったら、​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで出力を参照します。 ```json { "hello": "world" } ``` 3. [DataWeave 変数での DataWeave 関数の使用](#step_5)​に進みます。 ### [](#step_5)DataWeave 変数での DataWeave 関数の使用 ここでは、DataWeave 変数 (​`myJson`​) 内で DataWeave ​`avg`​ 関数を使用して、2 つの数値セットの平均を取得するスクリプトを試します。 ![Anypoint Studio で変数を使用する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-script-studio-var.png) 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { a: avg([1, 1000]), b: avg([1, 2, 3]) } output application/json --- myJson ``` スクリプトの本文に ​`myJson`​ を追加すると、ここの ​`avg`​ 関数が呼び出され、計算された平均が JSON オブジェクト内に生成されます。これは、​**\[Preview (プレビュー)\]**​ ペインで参照できます。構造 ​`[1, 1000]`​ および ​`[1, 2, 3]`​ は​[配列](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types#dw_type_array)​です。準備が整ったら、​[avg](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-avg)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "a": 500.5, "b": 2.0 } ``` 3. [入力からのコンテンツの読み取り、変換、選択](#step_6)​に進みます。 ### [](#step_6)入力からのコンテンツの読み取り、変換、選択 ここでは、XML 入力を読み取って JSON に変換し、​`car`​ 要素のコンテンツのみを選択する、より複雑なスクリプトを試します。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myRead = read("red", "application/xml") output application/json --- { mySelection : myRead.car } ``` この例のプレビューで問題が発生した場合は、​`myRead.car`​ を ​`myRead."car"`​ に変更してください。準備が整ったら、​[read](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-read)​ 関数、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats)​、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors)​についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "mySelection": { "color": "red" } } ``` 3. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7)​に進みます。 ### [](#step_7)DataWeave 関数を使用したファイルのコンテンツの読み取り ここでは、​`readUrl`​ を使用して、Studio の ​`src/main/resources`​ フォルダー内のファイルのコンテンツを読み取ります。このコンテンツを DataWeave スクリプトのサンプルデータとして使用できます。 1. ファイルを追加するには、​**\[Package Explorer\]**​ タブで ​`src/main/resources`​ フォルダーを右クリックし、​**\[New (新規)\]**​ → ​**\[File (ファイル)\]**​ に移動して、該当のファイルのファイル名 ​`myJson.json`​ を入力し、​**\[Finish (完了)\]**​ をクリックします。 2. `src/main/resources`​ から、​**\[myJson.json\]**​ タブ (または ​**\[myJson.json\]**​ タブの ​**\[Source (ソース)\]**​ サブタブ内 (ある場合)) に次のサンプルコンテンツを入力して保存します。 ```json { "hello": "world" } ``` ![Anypoint Studio のサンプルコンテンツが表示されている \[Package Explorer\] タブ](_images/dw-tut-sample-file.png) Figure 1. Studio 内の myJson.json 3. **\[testscript\]**​ タブ内の Transform Message コンポーネントに戻り、現在のスクリプトを、​`readUrl`​ を使用してファイルから JSON コンテンツを読み取るスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- readUrl("classpath://myJson.json", "application/json") ``` 準備が整ったら、​[readUrl](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-readurl)​ 関数についての詳細を確認してください。 4. **\[Preview (プレビュー)\]**​ ペインで一致の出力を参照します。 ```json { "hello": "world" } ``` Transform Message コンポーネントのメタデータ型を介してファイルのコンテンツを読み込むこともできます。この手順については、後で​[長いペイロードを使用する例の実行](#med_large_payload)​で説明します。この手順では、ここで作成した ​`myJson.json`​ ファイルを使用します。 5. [配列からオブジェクトへの要素のマップ](#step_8)​に進みます。 ### [](#step_8)配列からオブジェクトへの要素のマップ ほぼすべてのインテグレーションでデータマッピングが必要とされます。ここでは、配列内の要素を JSON オブジェクトのキーと値にマップします。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { ( ["a", "b", "c"] map ((value, index) -> { (index): value }) ) } ``` `map`​ 関数は左の配列を反復処理し、右のラムダ (匿名関数) (​`((value, index) → { (index): value })`​) をその配列の要素に適用します。ラムダは​[名前付きパラメーター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-functions-lambdas#_use_named_parameters_in_a_lambda)​ (​`value`​ および ​`index`​) を使用して、配列から値とインデックスを選択し、JSON オブジェクトにキー-値ペアを入力します。​[map](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-map)​ についての詳細を確認し、準備が整ったら、​`map`​ を ​[mapObject](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-mapobject)​ と比較してください。これはオブジェクトを入力として使用します。 2. 出力をプレビューします。 ```json { "0": "a", "1": "b", "2": "c" } ``` 3. [オブジェクトから配列への値の取り込み](#step_9)​に進みます。 ### [](#step_9)オブジェクトから配列への値の取り込み ここでは、DataWeave ​`pluck`​ 関数を使用して JSON オブジェクトの値を反復処理し、値を配列に出力します。 1. ソースコード領域のコンテンツを、JSON オブジェクトで ​`pluck`​ を使用するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { "0": "a", "1": "b", "2": "c" } pluck ((value) -> value) ``` 入力オブジェクトが ​`map`​ の例の​[出力](#output_map)​に一致し、出力の配列が ​`map`​ の例の​[入力](#input_map)​に一致します。準備が整ったら、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-pluck)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json [ "a", "b", "c" ] ``` 3. [項目のマップとマージ](#step_10)​に進みます。 ### [](#step_10)項目のマップとマージ ここでは、別々の配列内のアイテムから項目をマップおよびマージする、より複雑な例を試します。ここでの重要な点を簡単に述べると、一部のインテグレーションで必要とされる、より複雑なマッピングと変換の処理に DataWeave 機能の味わいを提供していることです。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myVar = [ { bookId: 101, title: "world history", price: "19.99" }, { bookId: 202, title: 'the great outdoors', price: "15.99" } ] var myVar2 = [ { bookId: 101, author: "john doe" }, { bookId: 202, author: "jane doe" } ] output application/json --- myVar map (item, index) -> using (id = item.bookId) { "id" : id, "topic" : item.title, "cost" : item.price as Number, (myVar2 filter ($.*bookId contains id) map (item) -> { author : item.author }) } ``` この言語をさらに探索する準備が整ったら、終了間近で使用する ​[filter](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-filter)​ 関数が ​`myVar2`​ 変数の配列から ​`author`​ 値をどのように返すかについて確認してください。​`as`​ が行 ​`"cost" : item.price as Number,`​ 内のデータ型と連携し、​`"19.99"`​ のような入力文字列を ​`19.99`​ のような数値に強制的に変換する方法についての詳細は、​[DataWeave の型強制](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types-coercion)​について確認してください。(​`using (id = item.bookId)`​ に示されている) ​`using`​ を使用してスクリプト内で​[ローカル DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables#example_local_variable)​をどのように作成できるかを確認してください。 2. 出力をプレビューします。 ```json [ { "id": "101", "topic": "world history", "cost": 19.99, "author": "john doe" }, { "id": "202", "topic": "the great outdoors", "cost": 15.99, "author": "jane doe" } ] ``` 3. [DataWeave の他の例を試す](#more_examples)​に進みます。 ## [](#more_examples)DataWeave の他の例を試す これで DataWeave の例を自分で実行する準備ができました。DataWeave 言語についてさらに多くのことを知りたい場合は、DataWeave プレイグラウンドでドキュメント内にある例をいつでも実行できます。例をカスタマイズし、それを使用して独自のスクリプトを開始できます。
payload​ を使用して入力データを参照する例 (​contains​ や ​mapObject​ 関数の例など) の場合、​ペイロードに対してアクションを実行する例の実行​で説明されている技法を使用してペイロード関連の問題を回避できます。
1. Studio で試すことができるさらに多くの例があります。 - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions)​: DataWeave 関数モジュールに関するドキュメントには、DataWeave 関数を使用する多くの例が用意されています。 - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-pattern-matching) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) - [DataWeave 関数の定義](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-functions) 2. [次のステップ](#next_steps)​に進みます。 ### [](#provide_payload)ペイロードに対してアクションを実行する例の実行 DataWeave では、​`payload`​ は、​[Mule メッセージ](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message#_message_payload)​のコンテンツを保持する組み込み Mule Runtime 変数です。これを使用すると、​`payload`​ を DataWeave スクリプトに入力するだけでメッセージの本文を取得できます。多くの場合、このコンテンツはドキュメントで「ペイロード」と呼ばれます。 `payload`​ を使用して Mule メッセージのコンテンツを取得する DataWeave の例を試すには、いくつかのオプションがあります。 - [短いペイロードを使用する例の実行](#small_payload)​: DataWeave 変数を使用できます。 - [長いペイロードを使用する例の実行](#med_large_payload)​: ファイルを介してペイロードコンテンツを追加します。この技法は、短いペイロードでも機能します。 実行中の Mule アプリケーションを必要とする選択肢 (​[Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​ の使用など) は、ここでは対象になっていませんが、​[次のステップ](#next_steps)​で紹介されています。 #### [](#small_payload)短いペイロードを使用する例の実行 数行のサンプルデータを使用する短い例では、入力ペイロードを変数に変換できます。DataWeave スクリプトのヘッダー内の DataWeave 変数 (​`var`​) にペイロードのコンテンツをコピーするだけです。次にスクリプトの本文で、その変数を参照する新しい変数の名前で ​`payload`​ を置き換えます。 1. ソースコード領域で次のスクリプトから開始します。 ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` これをまだプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-payload-example.png) 2. ここでは、​`payload`​ を使用して、存在しない Mule メッセージのコンテンツを入力するのではなく、何らかのサンプル入力を使用するようにこの例を変更します。 1. スクリプトで読み取ることができる入力データを提供する ​`myInput`​ DataWeave 変数を追加し、スクリプトの本文内の Mule ​`payload`​ 変数を DataWeave ​`myInput`​ 変数に変更します。 ```DataWeave %dw 2.0 var myInput = read(" 1 3 2 ", "application/xml") output application/json --- ContainsRequestedItem: myInput.root.*order.*items contains "3" ``` 2. 結果をプレビューします。 ```json { "ContainsRequestedItem": true } ``` 準備が整ったら、​[contains](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-contains)​ 関数および組み込み ​`payload`​ 変数に関する詳細を​[「定義済み変数」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables-context)​で確認してください。 #### [](#med_large_payload)長いペイロードを使用する例の実行 多数の行があるサンプルデータを使用する DataWeave 例では、Transform Message を介してメタデータ型を作成することを考慮します。メタデータ型は、サンプルデータを含むローカルファイルを受け入れることができます。 1. [readUrl](#readurl_ex)​ の例を使用して、Studio で ​`src/main/resources/myJson.json`​ を作成します。 Studio にファイルがすでにある場合は、このステップを省略できます。次のステップでは、このファイルのコンテンツをペイロードとして使用する方法を示します。 2. \[Transform Message\] タブのソースコード領域の現在のスクリプトを、入力のペイロードを選択するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- payload ``` 3. ペイロードはまだ存在しないため、ここでペイロードをプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-payload-example2.png) 4. ここで、簡単な JSON オブジェクトを Transform Message のペイロードとして提供します。 1. **\[Transform Message\]**​ タブで、​**\[Preview (プレビュー)\]**​ ボタンの​_左端_​の長方形をクリックすると、列形式のグラフィカルビューがソースコード領域の横に開きます。 ![Anypoint Studio でメタデータを定義する Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.5/_images/studio-define-payload.png) 長方形の上にマウスポインターを置くと、​**\[Show Graphic (グラフィックを表示)\]**​ の表示ラベルが表示されます。 2. **\[Transform Message\]**​ タブの左端の列で ​**\[Payload: Unknown (ペイロード: 不明)\]**​ を見つけて、​**\[Define metadata (メタデータを定義)\]**​ をクリックします。 **\[Define metadata (メタデータを定義)\]**​ リンクが表示されない場合は、左端の列で ​**\[Payload: (ペイロード:)\]**​ エントリを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ をクリックすると、​**\[Select metadata type (メタデータ型を選択)\]**​ ダイアログが開きます。 5. ここで、(​[readUrl](#readurl_ex)​ の例で作成した) ​`myJson.json`​ のコンテンツを Transform Message コンポーネントに読み込みます。 1. **\[+Add (+追加)\]**​ をクリックして、​**\[Create new type (新しい型の作成)\]**​ ダイアログを開きます。 2. ダイアログで ​**\[Type id (型 id)\]**​ に「​`myJsonType`​」と入力し、​**\[Create type (型を作成)\]**​ をクリックします。 ![新しい型を作成するダイアログ](/mulesoft/current/ja-jp/dataweave/2.5/_images/studio-create-type.png) 3. 開いている ​**\[Select metadata type (メタデータ型を選択)\]**​ に戻り、​**\[Type (型)\]**​ ドロップダウンメニューから ​**\[JSON\]**​ を選択します。 ![型を選択する \[Select metadata type (メタデータ型を選択)\] ダイアログ](_images/studio_select_metadata_type.png) 4. 新しい型の下で、​**\[Schema (スキーマ)\]**​ を ​**\[Example (例)\]**​ に変更します (上の図を参照)。 5. 省略記号 (​**…​**​) のあるナビゲーションボタンを使用して ​`src/main/resources/myJson.json`​ を見つけて、​**\[Open (開く)\]**​ をクリックします。ファイルのコンテンツの構造 (​`hello: _String_`​) が ​**\[Select metadata type (メタデータ型を選択)\]**​ ウィンドウに表示されます。 6. ここで、​**\[Select (選択)\]**​ をクリックし、ファイルのコンテンツをメッセージペイロードに読み込みます。 7. \[Preview (プレビュー)\] ペインに ​`myJson.json`​ からの JSON オブジェクトが表示されます。 必要に応じて、​**\[Preview (プレビュー)\]**​ をクリックして、\[Preview (プレビュー)\] ペインを開くことができます。 8. ここで、​**\[Preview (プレビュー)\]**​ ボタンの横にある​_空_​の長方形をクリックし、ソースコード領域を開きます。スクリプトの本文を ​`payload.hello`​ に変更し、既存の DataWeave ヘッダーコンテンツを保持します。 \[Preview (プレビュー)\] ペインにはペイロードの値 (​`"world"`​) のみが含まれます。 以下は、Studio にこの例がどのように表示されるかを示しています。 ![Anypoint Studio で「world」という単語を JSON 形式で出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dw-tut-world.png) 準備が整ったら、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors)​についての詳細を確認してください。 ## [](#next_steps)次のステップ - Studio UI で Mule アプリケーションの開発とデータマッピングを開始するには、[Tutorial: Create a Mule app that uses the Database Connector and DataWeave](https://docs.mulesoft.com/mule-runtime/latest/mule-app-tutorial)を参照してください。 - Transform Message コンポーネント以外にも多くの Mule Connector、モジュール、コアコンポーネントが​**「fx」**​項目で DataWeave セレクターと短い DataWeave 式を受け入れます。 これらのコンポーネントについての詳細は、​[「Mule コンポーネント」](https://docs.mulesoft.com/mule-runtime/latest/mule-components)​で学習できます。 実行中の Mule アプリケーションでサンプルデータを試す場合、Transform Message と連携するかどうかにかかわらず、外部データソースを使用するのではなく以下のコアコンポーネントを使用できます。 - [Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​。Mule イベントのペイロードのコンテンツを提供します。 - [Set Variable](https://docs.mulesoft.com/mule-runtime/latest/variable-transformer-reference)​。Mule イベントの​[変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​内でコンテンツを作成します。 - [Scheduler](https://docs.mulesoft.com/mule-runtime/latest/scheduler-concept)​。Mule イベントの通常の生成をトリガーします。 - [Logger](https://docs.mulesoft.com/mule-runtime/latest/logger-component-reference)​。Studio コンソールで、記録された出力と問題を参照します。 このいくつかのコンポーネントの使用例を以下に示します。 ![Anypoint Studio で「helloWorld」を出力するフロー](/mulesoft/current/ja-jp/dataweave/2.5/_images/studio-hello-world.png) - Set Payload の​**「fx」**​値を ​`output application/json --- { hello : "world"}`​ に設定します。 - Logger の​**「fx」**​値は ​`payload`​ に設定されています。これは、プロジェクトの UI と XML 設定ファイルでは ​`#[payload]`​ のように表示されます。 - _実行中_​の Mule アプリケーション (​`testscript`​) の ​**\[Console (コンソール)\]**​ タブに Set Payload からのペイロードが表示されます。 # DataWeave クイックスタート このガイドでは、サンプルデータに対して DataWeave 2.0 スクリプトを実行します。外部データソースは使用しません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 例を使用して、いくつかの重要な DataWeave の概念について説明します。ユーザーは準備が整ったときにこの概念をさらに深く探索することができます。また、これらの例は、Transform Message コンポーネントを DataWeave プレイグラウンドに変換する方法も示しています。 スクリプトを実行するには、スクリプトを ​[Studio](https://docs.mulesoft.com/studio/)​ の Transform Message コンポーネントのソースコード領域にコピーします。その後、結果をコンポーネントの ​**\[Preview (プレビュー)\]**​ ペインで参照します。また、ファイルからコンテンツを読み込んで、DataWeave スクリプトがそのコンテンツに対してアクションを実行できるようにします。ここにある DataWeave の例やドキュメントの他の場所にある例に慣れたら、DataWeave プレイグラウンドを使用して、サンプルデータに対して独自の DataWeave スクリプトを記述する練習をすることができます。 ![基本的な JSON 出力が表示されている Anypoint Studio のスクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-script-studio-basic.png) この図は、センターキャンバスの ​**testingscriptFlow**​ 内の Transform Message コンポーネントを示しています。Studio キャンバスの下の ​**\[Transform Message\]**​ タブでは、ソースコード領域に DataWeave スクリプトが表示され、​**\[Preview (プレビュー)\]**​ ペインに結果が表示されます。 ## [](#前提条件)前提条件 [Studio 7](https://docs.mulesoft.com/studio/to-download-and-install-studio)​ が必要です。 バージョン 7.3 または 7.2.3 をお勧めします。このガイドでは他の Studio 7 バージョンはテストされていません。 Studio をインストールしたら、Transform Message コンポーネントを使用してプロジェクトをセットアップする必要があります。​[Studio でのプロジェクトのセットアップ](#setup)​を参照してください。 ## [](#setup)Studio でのプロジェクトのセットアップ DataWeave プレイグラウンドとして機能する Mule プロジェクトをセットアップします。 1. Studio で、​**\[File (ファイル)\]**​ → ​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックして、Mule プロジェクトを作成します。 2. プロジェクトの名前 ​`testscript`​ を入力して、​**\[Finish (完了)\]**​ をクリックします。 3. 新しいプロジェクトの ​**\[Mule Palette (Mule パレット)\]**​ タブから ​**\[Core (コア)\]**​ をクリックし、​**\[Transform Message\]**​ コンポーネントを Studio キャンバスにドラッグします。 ![Anypoint Studio の Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-script-studio.png) (A) ​**\[Mule Palette (Mule パレット)\]**​ タブ (B) Transform Message コンポーネントを含む Studio キャンバス (C) ​**\[Transform Message\]**​ タブ 4. **\[Transform Message\]**​ タブで ​**\[Preview (プレビュー)\]**​ (右端) をクリックして \[Preview (プレビュー)\] ペインを開き、​**\[Preview (プレビュー)\]**​ の横にある​_空_​の長方形をクリックしてソースコード領域を展開します。 ![Anypoint Studio の出力ペイロードが表示されている \[Transform Message\] タブ](_images/studio-transform-msg-tab.png) 左のソースコード領域で DataWeave スクリプトを追加し、右の \[Preview (プレビュー)\] ペインでスクリプトの出力を参照します。 5. [スクリプティングの開始](#start_scripting)​に進みます。 ## [](#start_scripting)スクリプティングの開始 1. [1 つの文字列への 2 つの文字列の連結](#step_1) 2. [XML 出力への JSON 入力の変換](#step_2) 3. [サポートされるデータ型について](#step_3) 4. [入力としての DataWeave 変数の定義および使用](#step_4) 5. [DataWeave 変数での DataWeave 関数の使用](#step_5) 6. [入力からのコンテンツの読み取り、変換、選択](#step_6) 7. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7) 8. [配列からオブジェクトへの要素のマップ](#step_8) 9. [オブジェクトから配列への値の取り込み](#step_9) 10. [項目のマップとマージ](#step_10) ### [](#step_1)1 つの文字列への 2 つの文字列の連結 2 つの文字列 (「hello」と「World」) を 1 つの文字列 (「helloWorld」) に連結する簡単な DataWeave スクリプトから始めます。 ![JSON 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-helloWorld.png) 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { myString: ("hello" ++ "World") } ``` - DataWeave スクリプトの本文にはキー-値ペア (​`{ myString: ("hello" ++ "World") }`​) が含まれます。この入力オブジェクトの値は、文字列「hello」と「World」を 1 つの文字列「helloWorld」に連結するための DataWeave 式 (​`("hello" ++ "World")`​) です。 準備が整ったら、文字列の連結で使用する DataWeave ​[++](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-plusplus)​ 関数についての詳細を確認してください。 - 3 つのダッシュ (​`---`​) の上にあるすべてのコンテンツがスクリプトのヘッダーです。 これには、出力形式 ​`application/json`​ を指定するディレクティブを含め、重要なディレクティブが含まれます。準備が整ったら、​[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "helloWorld" } ``` 3. [XML 出力への JSON 入力の変換](#step_2)​に進みます。 ### [](#step_2)XML 出力への JSON 入力の変換 多くのインテグレーションで形式間の変換が必要とされます。この手順では、​`output`​ ディレクティブを使用して、JSON 入力から XML 出力を生成します。 ![XML 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-helloWorld-xml.png) 1. ソースコード領域内の現在のスクリプトの本文を​[1 つの文字列への 2 つの文字列の連結](#step_1)​の JSON 出力に置き換えて、​`output application/json`​ ディレクティブを ​`output application/xml`​ に変更します。 ```dw %dw 2.0 output application/xml --- { "myString" : ("helloWorld") } ``` 2. **\[Preview (プレビュー)\]**​ ペインで XML 出力を参照します。 ```xml helloWorld ``` 入力 JSON オブジェクト ​`{ "myString" : ("helloWorld") }`​ の ​`"myString"`​ キーは XML 出力のルート要素に変換され、連結された文字列はその XML オブジェクトの値になります。したがって、XML 出力は ​`helloWorld`​ になります。この出力の前に、XML バージョンとエンコードを特定する標準 XML 宣言が配置されています。
XML 出力のルートノードとして機能する​単一​キーがない場合 (たとえば、入力が単に ​("helloWorld")​ の場合)、XML への変換は失敗し、ソースコード領域に黄色の警告 (​!​) が表示されます。警告メッセージは、​Trying to output non-whitespace characters outside main element tree​ です。必要に応じて、この警告が生成されるように自分で試してみることができます。
DataWeave では、多くの出力形式と入力形式がサポートされます。準備が整ったら、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats)​についての詳細を確認してください。 3. [サポートされるデータ型について](#step_3)​に進みます。 ### [](#step_3)サポートされるデータ型について ここでは、サポートされるさまざまなデータ型を紹介し、スクリプトへのコメントの追加方法を示す簡単な DataWeave スクリプトを提供します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { /* * A multi-line * comment here. */ myString: "hello world", myNumber: 123, myFloatingPointNumber: 123.456, myVeryBigNumber: 12341234134123412341234123, myDate: |2018-12-07|, myTime: |11:55:56|, myDateTime: |2018-10-01T23:57:59-03:00|, myBoolean: true, myArray: [ 1, 2, 3, 5, 8], myMixedArray: [ 1, 2, "blah", { hello: "there" } ], myObjectKeyValuePair: { innerKey: "innerValue" }, myObjectWithConditionalField: { a : { b : 1, ( c : 2 ) if true, (d : 4) if false } }, myNull: null, myBinary: "abcd1234123" as Binary //A one-line comment here. } ``` DataWeave では、​`/* */`​ マークアップ内の複数行のコメントと、スラッシュ (​`//`​) の後の単一行のコメントがサポートされます。また、キー-値ペア (​`myString: "hello world"`​、​`myNumber: 123`​ など) 内のコロン (​`:`​) の後に表示される多くのデータ型もサポートされます。この型には、文字列 (引用符 ​`""`​ で囲まれる)、数値、日時構造 (パイプ ​`||`​ 内)、ブール (​`true`​ と ​`false`​)、配列 (角括弧 ​`[]`​ 内)、JSON に似たオブジェクト (中括弧 ​`{}`​ 内のキー-値構造)、​`null`​、バイナリがあります。このトピックについての詳細を確認する準備が整ったら、​[「DataWeave の型」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types)​を参照してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "hello world", "myNumber": 123, "myFloatingPointNumber": 123.456, "myVeryBigNumber": 12341234134123412341234123, "myDate": "2018-12-07", "myTime": "11:55:56", "myDateTime": "2018-10-01T23:57:59-03:00", "myBoolean": true, "myArray": [ 1, 2, 3, 5, 8 ], "myMixedArray": [ 1, 2, "blah", { "hello": "there" } ], "myObjectKeyValuePair": { "innerKey": "innerValue" }, "myObjectWithConditionalField": { "a": { "b": 1, "c": 2 } }, "myNull": null, "myBinary": "abcd1234123" } ``` 3. [入力としての DataWeave 変数の定義および使用](#step_4)​に進みます。 ### [](#step_4)入力としての DataWeave 変数の定義および使用 ここでは、DataWeave 変数 ​`myJson`​ の値を出力する簡単な DataWeave スクリプトを試します。スクリプトのヘッダー内の ​`var`​ ディレクトリを使用して、変数を設定します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { "hello" : "world" } output application/json --- myJson ``` JSON オブジェクト (​`{ "hello" : "world" }`​) は、スクリプトのヘッダー内の ​`myJson`​ 変数として定義されます。準備が整ったら、​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで出力を参照します。 ```json { "hello": "world" } ``` 3. [DataWeave 変数での DataWeave 関数の使用](#step_5)​に進みます。 ### [](#step_5)DataWeave 変数での DataWeave 関数の使用 ここでは、DataWeave 変数 (​`myJson`​) 内で DataWeave ​`avg`​ 関数を使用して、2 つの数値セットの平均を取得するスクリプトを試します。 ![Anypoint Studio で変数を使用する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-script-studio-var.png) 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { a: avg([1, 1000]), b: avg([1, 2, 3]) } output application/json --- myJson ``` スクリプトの本文に ​`myJson`​ を追加すると、ここの ​`avg`​ 関数が呼び出され、計算された平均が JSON オブジェクト内に生成されます。これは、​**\[Preview (プレビュー)\]**​ ペインで参照できます。構造 ​`[1, 1000]`​ および ​`[1, 2, 3]`​ は​[配列](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types#dw_type_array)​です。準備が整ったら、​[avg](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-avg)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "a": 500.5, "b": 2.0 } ``` 3. [入力からのコンテンツの読み取り、変換、選択](#step_6)​に進みます。 ### [](#step_6)入力からのコンテンツの読み取り、変換、選択 ここでは、XML 入力を読み取って JSON に変換し、​`car`​ 要素のコンテンツのみを選択する、より複雑なスクリプトを試します。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myRead = read("red", "application/xml") output application/json --- { mySelection : myRead.car } ``` この例のプレビューで問題が発生した場合は、​`myRead.car`​ を ​`myRead."car"`​ に変更してください。準備が整ったら、​[read](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-read)​ 関数、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats)​、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors)​についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "mySelection": { "color": "red" } } ``` 3. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7)​に進みます。 ### [](#step_7)DataWeave 関数を使用したファイルのコンテンツの読み取り ここでは、​`readUrl`​ を使用して、Studio の ​`src/main/resources`​ フォルダー内のファイルのコンテンツを読み取ります。このコンテンツを DataWeave スクリプトのサンプルデータとして使用できます。 1. ファイルを追加するには、​**\[Package Explorer\]**​ タブで ​`src/main/resources`​ フォルダーを右クリックし、​**\[New (新規)\]**​ → ​**\[File (ファイル)\]**​ に移動して、該当のファイルのファイル名 ​`myJson.json`​ を入力し、​**\[Finish (完了)\]**​ をクリックします。 2. `src/main/resources`​ から、​**\[myJson.json\]**​ タブ (または ​**\[myJson.json\]**​ タブの ​**\[Source (ソース)\]**​ サブタブ内 (ある場合)) に次のサンプルコンテンツを入力して保存します。 ```json { "hello": "world" } ``` ![Anypoint Studio のサンプルコンテンツが表示されている \[Package Explorer\] タブ](_images/dw-tut-sample-file.png) Figure 1. Studio 内の myJson.json 3. **\[testscript\]**​ タブ内の Transform Message コンポーネントに戻り、現在のスクリプトを、​`readUrl`​ を使用してファイルから JSON コンテンツを読み取るスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- readUrl("classpath://myJson.json", "application/json") ``` 準備が整ったら、​[readUrl](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-readurl)​ 関数についての詳細を確認してください。 4. **\[Preview (プレビュー)\]**​ ペインで一致の出力を参照します。 ```json { "hello": "world" } ``` Transform Message コンポーネントのメタデータ型を介してファイルのコンテンツを読み込むこともできます。この手順については、後で​[長いペイロードを使用する例の実行](#med_large_payload)​で説明します。この手順では、ここで作成した ​`myJson.json`​ ファイルを使用します。 5. [配列からオブジェクトへの要素のマップ](#step_8)​に進みます。 ### [](#step_8)配列からオブジェクトへの要素のマップ ほぼすべてのインテグレーションでデータマッピングが必要とされます。ここでは、配列内の要素を JSON オブジェクトのキーと値にマップします。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { ( ["a", "b", "c"] map ((value, index) -> { (index): value }) ) } ``` `map`​ 関数は左の配列を反復処理し、右のラムダ (匿名関数) (​`((value, index) → { (index): value })`​) をその配列の要素に適用します。ラムダは​[名前付きパラメーター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-functions-lambdas#_use_named_parameters_in_a_lambda)​ (​`value`​ および ​`index`​) を使用して、配列から値とインデックスを選択し、JSON オブジェクトにキー-値ペアを入力します。​[map](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-map)​ についての詳細を確認し、準備が整ったら、​`map`​ を ​[mapObject](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-mapobject)​ と比較してください。これはオブジェクトを入力として使用します。 2. 出力をプレビューします。 ```json { "0": "a", "1": "b", "2": "c" } ``` 3. [オブジェクトから配列への値の取り込み](#step_9)​に進みます。 ### [](#step_9)オブジェクトから配列への値の取り込み ここでは、DataWeave ​`pluck`​ 関数を使用して JSON オブジェクトの値を反復処理し、値を配列に出力します。 1. ソースコード領域のコンテンツを、JSON オブジェクトで ​`pluck`​ を使用するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { "0": "a", "1": "b", "2": "c" } pluck ((value) -> value) ``` 入力オブジェクトが ​`map`​ の例の​[出力](#output_map)​に一致し、出力の配列が ​`map`​ の例の​[入力](#input_map)​に一致します。準備が整ったら、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-pluck)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json [ "a", "b", "c" ] ``` 3. [項目のマップとマージ](#step_10)​に進みます。 ### [](#step_10)項目のマップとマージ ここでは、別々の配列内のアイテムから項目をマップおよびマージする、より複雑な例を試します。ここでの重要な点を簡単に述べると、一部のインテグレーションで必要とされる、より複雑なマッピングと変換の処理に DataWeave 機能の味わいを提供していることです。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myVar = [ { bookId: 101, title: "world history", price: "19.99" }, { bookId: 202, title: 'the great outdoors', price: "15.99" } ] var myVar2 = [ { bookId: 101, author: "john doe" }, { bookId: 202, author: "jane doe" } ] output application/json --- myVar map (item, index) -> using (id = item.bookId) { "id" : id, "topic" : item.title, "cost" : item.price as Number, (myVar2 filter ($.*bookId contains id) map (item) -> { author : item.author }) } ``` この言語をさらに探索する準備が整ったら、終了間近で使用する ​[filter](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-filter)​ 関数が ​`myVar2`​ 変数の配列から ​`author`​ 値をどのように返すかについて確認してください。​`as`​ が行 ​`"cost" : item.price as Number,`​ 内のデータ型と連携し、​`"19.99"`​ のような入力文字列を ​`19.99`​ のような数値に強制的に変換する方法についての詳細は、​[DataWeave の型強制](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types-coercion)​について確認してください。(​`using (id = item.bookId)`​ に示されている) ​`using`​ を使用してスクリプト内で​[ローカル DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables#example_local_variable)​をどのように作成できるかを確認してください。 2. 出力をプレビューします。 ```json [ { "id": "101", "topic": "world history", "cost": 19.99, "author": "john doe" }, { "id": "202", "topic": "the great outdoors", "cost": 15.99, "author": "jane doe" } ] ``` 3. [DataWeave の他の例を試す](#more_examples)​に進みます。 ## [](#more_examples)DataWeave の他の例を試す これで DataWeave の例を自分で実行する準備ができました。DataWeave 言語についてさらに多くのことを知りたい場合は、DataWeave プレイグラウンドでドキュメント内にある例をいつでも実行できます。例をカスタマイズし、それを使用して独自のスクリプトを開始できます。
payload​ を使用して入力データを参照する例 (​contains​ や ​mapObject​ 関数の例など) の場合、​ペイロードに対してアクションを実行する例の実行​で説明されている技法を使用してペイロード関連の問題を回避できます。
1. Studio で試すことができるさらに多くの例があります。 - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions)​: DataWeave 関数モジュールに関するドキュメントには、DataWeave 関数を使用する多くの例が用意されています。 - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-pattern-matching) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) - [DataWeave 関数の定義](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-functions) 2. [次のステップ](#next_steps)​に進みます。 ### [](#provide_payload)ペイロードに対してアクションを実行する例の実行 DataWeave では、​`payload`​ は、​[Mule メッセージ](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message#_message_payload)​のコンテンツを保持する組み込み Mule Runtime 変数です。これを使用すると、​`payload`​ を DataWeave スクリプトに入力するだけでメッセージの本文を取得できます。多くの場合、このコンテンツはドキュメントで「ペイロード」と呼ばれます。 `payload`​ を使用して Mule メッセージのコンテンツを取得する DataWeave の例を試すには、いくつかのオプションがあります。 - [短いペイロードを使用する例の実行](#small_payload)​: DataWeave 変数を使用できます。 - [長いペイロードを使用する例の実行](#med_large_payload)​: ファイルを介してペイロードコンテンツを追加します。この技法は、短いペイロードでも機能します。 実行中の Mule アプリケーションを必要とする選択肢 (​[Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​ の使用など) は、ここでは対象になっていませんが、​[次のステップ](#next_steps)​で紹介されています。 #### [](#small_payload)短いペイロードを使用する例の実行 数行のサンプルデータを使用する短い例では、入力ペイロードを変数に変換できます。DataWeave スクリプトのヘッダー内の DataWeave 変数 (​`var`​) にペイロードのコンテンツをコピーするだけです。次にスクリプトの本文で、その変数を参照する新しい変数の名前で ​`payload`​ を置き換えます。 1. ソースコード領域で次のスクリプトから開始します。 ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` これをまだプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-payload-example.png) 2. ここでは、​`payload`​ を使用して、存在しない Mule メッセージのコンテンツを入力するのではなく、何らかのサンプル入力を使用するようにこの例を変更します。 1. スクリプトで読み取ることができる入力データを提供する ​`myInput`​ DataWeave 変数を追加し、スクリプトの本文内の Mule ​`payload`​ 変数を DataWeave ​`myInput`​ 変数に変更します。 ```DataWeave %dw 2.0 var myInput = read(" 1 3 2 ", "application/xml") output application/json --- ContainsRequestedItem: myInput.root.*order.*items contains "3" ``` 2. 結果をプレビューします。 ```json { "ContainsRequestedItem": true } ``` 準備が整ったら、​[contains](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-contains)​ 関数および組み込み ​`payload`​ 変数に関する詳細を​[「定義済み変数」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables-context)​で確認してください。 #### [](#med_large_payload)長いペイロードを使用する例の実行 多数の行があるサンプルデータを使用する DataWeave 例では、Transform Message を介してメタデータ型を作成することを考慮します。メタデータ型は、サンプルデータを含むローカルファイルを受け入れることができます。 1. [readUrl](#readurl_ex)​ の例を使用して、Studio で ​`src/main/resources/myJson.json`​ を作成します。 Studio にファイルがすでにある場合は、このステップを省略できます。次のステップでは、このファイルのコンテンツをペイロードとして使用する方法を示します。 2. \[Transform Message\] タブのソースコード領域の現在のスクリプトを、入力のペイロードを選択するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- payload ``` 3. ペイロードはまだ存在しないため、ここでペイロードをプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-payload-example2.png) 4. ここで、簡単な JSON オブジェクトを Transform Message のペイロードとして提供します。 1. **\[Transform Message\]**​ タブで、​**\[Preview (プレビュー)\]**​ ボタンの​_左端_​の長方形をクリックすると、列形式のグラフィカルビューがソースコード領域の横に開きます。 ![Anypoint Studio でメタデータを定義する Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.6/_images/studio-define-payload.png) 長方形の上にマウスポインターを置くと、​**\[Show Graphic (グラフィックを表示)\]**​ の表示ラベルが表示されます。 2. **\[Transform Message\]**​ タブの左端の列で ​**\[Payload: Unknown (ペイロード: 不明)\]**​ を見つけて、​**\[Define metadata (メタデータを定義)\]**​ をクリックします。 **\[Define metadata (メタデータを定義)\]**​ リンクが表示されない場合は、左端の列で ​**\[Payload: (ペイロード:)\]**​ エントリを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ をクリックすると、​**\[Select metadata type (メタデータ型を選択)\]**​ ダイアログが開きます。 5. ここで、(​[readUrl](#readurl_ex)​ の例で作成した) ​`myJson.json`​ のコンテンツを Transform Message コンポーネントに読み込みます。 1. **\[+Add (+追加)\]**​ をクリックして、​**\[Create new type (新しい型の作成)\]**​ ダイアログを開きます。 2. ダイアログで ​**\[Type id (型 id)\]**​ に「​`myJsonType`​」と入力し、​**\[Create type (型を作成)\]**​ をクリックします。 ![新しい型を作成するダイアログ](/mulesoft/current/ja-jp/dataweave/2.6/_images/studio-create-type.png) 3. 開いている ​**\[Select metadata type (メタデータ型を選択)\]**​ に戻り、​**\[Type (型)\]**​ ドロップダウンメニューから ​**\[JSON\]**​ を選択します。 ![型を選択する \[Select metadata type (メタデータ型を選択)\] ダイアログ](_images/studio_select_metadata_type.png) 4. 新しい型の下で、​**\[Schema (スキーマ)\]**​ を ​**\[Example (例)\]**​ に変更します (上の図を参照)。 5. 省略記号 (​**…​**​) のあるナビゲーションボタンを使用して ​`src/main/resources/myJson.json`​ を見つけて、​**\[Open (開く)\]**​ をクリックします。ファイルのコンテンツの構造 (​`hello: _String_`​) が ​**\[Select metadata type (メタデータ型を選択)\]**​ ウィンドウに表示されます。 6. ここで、​**\[Select (選択)\]**​ をクリックし、ファイルのコンテンツをメッセージペイロードに読み込みます。 7. \[Preview (プレビュー)\] ペインに ​`myJson.json`​ からの JSON オブジェクトが表示されます。 必要に応じて、​**\[Preview (プレビュー)\]**​ をクリックして、\[Preview (プレビュー)\] ペインを開くことができます。 8. ここで、​**\[Preview (プレビュー)\]**​ ボタンの横にある​_空_​の長方形をクリックし、ソースコード領域を開きます。スクリプトの本文を ​`payload.hello`​ に変更し、既存の DataWeave ヘッダーコンテンツを保持します。 \[Preview (プレビュー)\] ペインにはペイロードの値 (​`"world"`​) のみが含まれます。 以下は、Studio にこの例がどのように表示されるかを示しています。 ![Anypoint Studio で「world」という単語を JSON 形式で出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dw-tut-world.png) 準備が整ったら、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors)​についての詳細を確認してください。 ## [](#next_steps)次のステップ - Studio UI で Mule アプリケーションの開発とデータマッピングを開始するには、[Tutorial: Create a Mule app that uses the Database Connector and DataWeave](https://docs.mulesoft.com/mule-runtime/latest/mule-app-tutorial)を参照してください。 - Transform Message コンポーネント以外にも多くの Mule Connector、モジュール、コアコンポーネントが​**「fx」**​項目で DataWeave セレクターと短い DataWeave 式を受け入れます。 これらのコンポーネントについての詳細は、​[「Mule コンポーネント」](https://docs.mulesoft.com/mule-runtime/latest/mule-components)​で学習できます。 実行中の Mule アプリケーションでサンプルデータを試す場合、Transform Message と連携するかどうかにかかわらず、外部データソースを使用するのではなく以下のコアコンポーネントを使用できます。 - [Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​。Mule イベントのペイロードのコンテンツを提供します。 - [Set Variable](https://docs.mulesoft.com/mule-runtime/latest/variable-transformer-reference)​。Mule イベントの​[変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​内でコンテンツを作成します。 - [Scheduler](https://docs.mulesoft.com/mule-runtime/latest/scheduler-concept)​。Mule イベントの通常の生成をトリガーします。 - [Logger](https://docs.mulesoft.com/mule-runtime/latest/logger-component-reference)​。Studio コンソールで、記録された出力と問題を参照します。 このいくつかのコンポーネントの使用例を以下に示します。 ![Anypoint Studio で「helloWorld」を出力するフロー](/mulesoft/current/ja-jp/dataweave/2.6/_images/studio-hello-world.png) - Set Payload の​**「fx」**​値を ​`output application/json --- { hello : "world"}`​ に設定します。 - Logger の​**「fx」**​値は ​`payload`​ に設定されています。これは、プロジェクトの UI と XML 設定ファイルでは ​`#[payload]`​ のように表示されます。 - _実行中_​の Mule アプリケーション (​`testscript`​) の ​**\[Console (コンソール)\]**​ タブに Set Payload からのペイロードが表示されます。 # DataWeave クイックスタート このガイドでは、サンプルデータに対して DataWeave 2.0 スクリプトを実行します。外部データソースは使用しません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 例を使用して、いくつかの重要な DataWeave の概念について説明します。ユーザーは準備が整ったときにこの概念をさらに深く探索することができます。また、これらの例は、Transform Message コンポーネントを DataWeave プレイグラウンドに変換する方法も示しています。 スクリプトを実行するには、スクリプトを ​[Studio](https://docs.mulesoft.com/studio/)​ の Transform Message コンポーネントのソースコード領域にコピーします。その後、結果をコンポーネントの ​**\[Preview (プレビュー)\]**​ ペインで参照します。また、ファイルからコンテンツを読み込んで、DataWeave スクリプトがそのコンテンツに対してアクションを実行できるようにします。ここにある DataWeave の例やドキュメントの他の場所にある例に慣れたら、DataWeave プレイグラウンドを使用して、サンプルデータに対して独自の DataWeave スクリプトを記述する練習をすることができます。 ![基本的な JSON 出力が表示されている Anypoint Studio のスクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-script-studio-basic.png) この図は、センターキャンバスの ​**testingscriptFlow**​ 内の Transform Message コンポーネントを示しています。Studio キャンバスの下の ​**\[Transform Message\]**​ タブでは、ソースコード領域に DataWeave スクリプトが表示され、​**\[Preview (プレビュー)\]**​ ペインに結果が表示されます。 ## [](#前提条件)前提条件 [Studio 7](https://docs.mulesoft.com/studio/to-download-and-install-studio)​ が必要です。 バージョン 7.3 または 7.2.3 をお勧めします。このガイドでは他の Studio 7 バージョンはテストされていません。 Studio をインストールしたら、Transform Message コンポーネントを使用してプロジェクトをセットアップする必要があります。​[Studio でのプロジェクトのセットアップ](#setup)​を参照してください。 ## [](#setup)Studio でのプロジェクトのセットアップ DataWeave プレイグラウンドとして機能する Mule プロジェクトをセットアップします。 1. Studio で、​**\[File (ファイル)\]**​ → ​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックして、Mule プロジェクトを作成します。 2. プロジェクトの名前 ​`testscript`​ を入力して、​**\[Finish (完了)\]**​ をクリックします。 3. 新しいプロジェクトの ​**\[Mule Palette (Mule パレット)\]**​ タブから ​**\[Core (コア)\]**​ をクリックし、​**\[Transform Message\]**​ コンポーネントを Studio キャンバスにドラッグします。 ![Anypoint Studio の Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-script-studio.png) (A) ​**\[Mule Palette (Mule パレット)\]**​ タブ (B) Transform Message コンポーネントを含む Studio キャンバス (C) ​**\[Transform Message\]**​ タブ 4. **\[Transform Message\]**​ タブで ​**\[Preview (プレビュー)\]**​ (右端) をクリックして \[Preview (プレビュー)\] ペインを開き、​**\[Preview (プレビュー)\]**​ の横にある​_空_​の長方形をクリックしてソースコード領域を展開します。 ![Anypoint Studio の出力ペイロードが表示されている \[Transform Message\] タブ](_images/studio-transform-msg-tab.png) 左のソースコード領域で DataWeave スクリプトを追加し、右の \[Preview (プレビュー)\] ペインでスクリプトの出力を参照します。 5. [スクリプティングの開始](#start_scripting)​に進みます。 ## [](#start_scripting)スクリプティングの開始 1. [1 つの文字列への 2 つの文字列の連結](#step_1) 2. [XML 出力への JSON 入力の変換](#step_2) 3. [サポートされるデータ型について](#step_3) 4. [入力としての DataWeave 変数の定義および使用](#step_4) 5. [DataWeave 変数での DataWeave 関数の使用](#step_5) 6. [入力からのコンテンツの読み取り、変換、選択](#step_6) 7. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7) 8. [配列からオブジェクトへの要素のマップ](#step_8) 9. [オブジェクトから配列への値の取り込み](#step_9) 10. [項目のマップとマージ](#step_10) ### [](#step_1)1 つの文字列への 2 つの文字列の連結 2 つの文字列 (「hello」と「World」) を 1 つの文字列 (「helloWorld」) に連結する簡単な DataWeave スクリプトから始めます。 ![JSON 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-helloWorld.png) 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { myString: ("hello" ++ "World") } ``` - DataWeave スクリプトの本文にはキー-値ペア (​`{ myString: ("hello" ++ "World") }`​) が含まれます。この入力オブジェクトの値は、文字列「hello」と「World」を 1 つの文字列「helloWorld」に連結するための DataWeave 式 (​`("hello" ++ "World")`​) です。 準備が整ったら、文字列の連結で使用する DataWeave ​[++](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-plusplus)​ 関数についての詳細を確認してください。 - 3 つのダッシュ (​`---`​) の上にあるすべてのコンテンツがスクリプトのヘッダーです。 これには、出力形式 ​`application/json`​ を指定するディレクティブを含め、重要なディレクティブが含まれます。準備が整ったら、​[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "helloWorld" } ``` 3. [XML 出力への JSON 入力の変換](#step_2)​に進みます。 ### [](#step_2)XML 出力への JSON 入力の変換 多くのインテグレーションで形式間の変換が必要とされます。この手順では、​`output`​ ディレクティブを使用して、JSON 入力から XML 出力を生成します。 ![XML 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-helloWorld-xml.png) 1. ソースコード領域内の現在のスクリプトの本文を​[1 つの文字列への 2 つの文字列の連結](#step_1)​の JSON 出力に置き換えて、​`output application/json`​ ディレクティブを ​`output application/xml`​ に変更します。 ```dw %dw 2.0 output application/xml --- { "myString" : ("helloWorld") } ``` 2. **\[Preview (プレビュー)\]**​ ペインで XML 出力を参照します。 ```xml helloWorld ``` 入力 JSON オブジェクト ​`{ "myString" : ("helloWorld") }`​ の ​`"myString"`​ キーは XML 出力のルート要素に変換され、連結された文字列はその XML オブジェクトの値になります。したがって、XML 出力は ​`helloWorld`​ になります。この出力の前に、XML バージョンとエンコードを特定する標準 XML 宣言が配置されています。
XML 出力のルートノードとして機能する​単一​キーがない場合 (たとえば、入力が単に ​("helloWorld")​ の場合)、XML への変換は失敗し、ソースコード領域に黄色の警告 (​!​) が表示されます。警告メッセージは、​Trying to output non-whitespace characters outside main element tree​ です。必要に応じて、この警告が生成されるように自分で試してみることができます。
DataWeave では、多くの出力形式と入力形式がサポートされます。準備が整ったら、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats)​についての詳細を確認してください。 3. [サポートされるデータ型について](#step_3)​に進みます。 ### [](#step_3)サポートされるデータ型について ここでは、サポートされるさまざまなデータ型を紹介し、スクリプトへのコメントの追加方法を示す簡単な DataWeave スクリプトを提供します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { /* * A multi-line * comment here. */ myString: "hello world", myNumber: 123, myFloatingPointNumber: 123.456, myVeryBigNumber: 12341234134123412341234123, myDate: |2018-12-07|, myTime: |11:55:56|, myDateTime: |2018-10-01T23:57:59-03:00|, myBoolean: true, myArray: [ 1, 2, 3, 5, 8], myMixedArray: [ 1, 2, "blah", { hello: "there" } ], myObjectKeyValuePair: { innerKey: "innerValue" }, myObjectWithConditionalField: { a : { b : 1, ( c : 2 ) if true, (d : 4) if false } }, myNull: null, myBinary: "abcd1234123" as Binary //A one-line comment here. } ``` DataWeave では、​`/* */`​ マークアップ内の複数行のコメントと、スラッシュ (​`//`​) の後の単一行のコメントがサポートされます。また、キー-値ペア (​`myString: "hello world"`​、​`myNumber: 123`​ など) 内のコロン (​`:`​) の後に表示される多くのデータ型もサポートされます。この型には、文字列 (引用符 ​`""`​ で囲まれる)、数値、日時構造 (パイプ ​`||`​ 内)、ブール (​`true`​ と ​`false`​)、配列 (角括弧 ​`[]`​ 内)、JSON に似たオブジェクト (中括弧 ​`{}`​ 内のキー-値構造)、​`null`​、バイナリがあります。このトピックについての詳細を確認する準備が整ったら、​[「DataWeave の型」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types)​を参照してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "hello world", "myNumber": 123, "myFloatingPointNumber": 123.456, "myVeryBigNumber": 12341234134123412341234123, "myDate": "2018-12-07", "myTime": "11:55:56", "myDateTime": "2018-10-01T23:57:59-03:00", "myBoolean": true, "myArray": [ 1, 2, 3, 5, 8 ], "myMixedArray": [ 1, 2, "blah", { "hello": "there" } ], "myObjectKeyValuePair": { "innerKey": "innerValue" }, "myObjectWithConditionalField": { "a": { "b": 1, "c": 2 } }, "myNull": null, "myBinary": "abcd1234123" } ``` 3. [入力としての DataWeave 変数の定義および使用](#step_4)​に進みます。 ### [](#step_4)入力としての DataWeave 変数の定義および使用 ここでは、DataWeave 変数 ​`myJson`​ の値を出力する簡単な DataWeave スクリプトを試します。スクリプトのヘッダー内の ​`var`​ ディレクトリを使用して、変数を設定します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { "hello" : "world" } output application/json --- myJson ``` JSON オブジェクト (​`{ "hello" : "world" }`​) は、スクリプトのヘッダー内の ​`myJson`​ 変数として定義されます。準備が整ったら、​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで出力を参照します。 ```json { "hello": "world" } ``` 3. [DataWeave 変数での DataWeave 関数の使用](#step_5)​に進みます。 ### [](#step_5)DataWeave 変数での DataWeave 関数の使用 ここでは、DataWeave 変数 (​`myJson`​) 内で DataWeave ​`avg`​ 関数を使用して、2 つの数値セットの平均を取得するスクリプトを試します。 ![Anypoint Studio で変数を使用する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-script-studio-var.png) 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { a: avg([1, 1000]), b: avg([1, 2, 3]) } output application/json --- myJson ``` スクリプトの本文に ​`myJson`​ を追加すると、ここの ​`avg`​ 関数が呼び出され、計算された平均が JSON オブジェクト内に生成されます。これは、​**\[Preview (プレビュー)\]**​ ペインで参照できます。構造 ​`[1, 1000]`​ および ​`[1, 2, 3]`​ は​[配列](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types#dw_type_array)​です。準備が整ったら、​[avg](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-avg)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "a": 500.5, "b": 2.0 } ``` 3. [入力からのコンテンツの読み取り、変換、選択](#step_6)​に進みます。 ### [](#step_6)入力からのコンテンツの読み取り、変換、選択 ここでは、XML 入力を読み取って JSON に変換し、​`car`​ 要素のコンテンツのみを選択する、より複雑なスクリプトを試します。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myRead = read("red", "application/xml") output application/json --- { mySelection : myRead.car } ``` この例のプレビューで問題が発生した場合は、​`myRead.car`​ を ​`myRead."car"`​ に変更してください。準備が整ったら、​[read](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-read)​ 関数、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats)​、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors)​についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "mySelection": { "color": "red" } } ``` 3. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7)​に進みます。 ### [](#step_7)DataWeave 関数を使用したファイルのコンテンツの読み取り ここでは、​`readUrl`​ を使用して、Studio の ​`src/main/resources`​ フォルダー内のファイルのコンテンツを読み取ります。このコンテンツを DataWeave スクリプトのサンプルデータとして使用できます。 1. ファイルを追加するには、​**\[Package Explorer\]**​ タブで ​`src/main/resources`​ フォルダーを右クリックし、​**\[New (新規)\]**​ → ​**\[File (ファイル)\]**​ に移動して、該当のファイルのファイル名 ​`myJson.json`​ を入力し、​**\[Finish (完了)\]**​ をクリックします。 2. `src/main/resources`​ から、​**\[myJson.json\]**​ タブ (または ​**\[myJson.json\]**​ タブの ​**\[Source (ソース)\]**​ サブタブ内 (ある場合)) に次のサンプルコンテンツを入力して保存します。 ```json { "hello": "world" } ``` ![Anypoint Studio のサンプルコンテンツが表示されている \[Package Explorer\] タブ](_images/dw-tut-sample-file.png) Figure 1. Studio 内の myJson.json 3. **\[testscript\]**​ タブ内の Transform Message コンポーネントに戻り、現在のスクリプトを、​`readUrl`​ を使用してファイルから JSON コンテンツを読み取るスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- readUrl("classpath://myJson.json", "application/json") ``` 準備が整ったら、​[readUrl](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-readurl)​ 関数についての詳細を確認してください。 4. **\[Preview (プレビュー)\]**​ ペインで一致の出力を参照します。 ```json { "hello": "world" } ``` Transform Message コンポーネントのメタデータ型を介してファイルのコンテンツを読み込むこともできます。この手順については、後で​[長いペイロードを使用する例の実行](#med_large_payload)​で説明します。この手順では、ここで作成した ​`myJson.json`​ ファイルを使用します。 5. [配列からオブジェクトへの要素のマップ](#step_8)​に進みます。 ### [](#step_8)配列からオブジェクトへの要素のマップ ほぼすべてのインテグレーションでデータマッピングが必要とされます。ここでは、配列内の要素を JSON オブジェクトのキーと値にマップします。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { ( ["a", "b", "c"] map ((value, index) -> { (index): value }) ) } ``` `map`​ 関数は左の配列を反復処理し、右のラムダ (匿名関数) (​`((value, index) → { (index): value })`​) をその配列の要素に適用します。ラムダは​[名前付きパラメーター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-functions-lambdas#_use_named_parameters_in_a_lambda)​ (​`value`​ および ​`index`​) を使用して、配列から値とインデックスを選択し、JSON オブジェクトにキー-値ペアを入力します。​[map](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-map)​ についての詳細を確認し、準備が整ったら、​`map`​ を ​[mapObject](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-mapobject)​ と比較してください。これはオブジェクトを入力として使用します。 2. 出力をプレビューします。 ```json { "0": "a", "1": "b", "2": "c" } ``` 3. [オブジェクトから配列への値の取り込み](#step_9)​に進みます。 ### [](#step_9)オブジェクトから配列への値の取り込み ここでは、DataWeave ​`pluck`​ 関数を使用して JSON オブジェクトの値を反復処理し、値を配列に出力します。 1. ソースコード領域のコンテンツを、JSON オブジェクトで ​`pluck`​ を使用するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { "0": "a", "1": "b", "2": "c" } pluck ((value) -> value) ``` 入力オブジェクトが ​`map`​ の例の​[出力](#output_map)​に一致し、出力の配列が ​`map`​ の例の​[入力](#input_map)​に一致します。準備が整ったら、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-pluck)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json [ "a", "b", "c" ] ``` 3. [項目のマップとマージ](#step_10)​に進みます。 ### [](#step_10)項目のマップとマージ ここでは、別々の配列内のアイテムから項目をマップおよびマージする、より複雑な例を試します。ここでの重要な点を簡単に述べると、一部のインテグレーションで必要とされる、より複雑なマッピングと変換の処理に DataWeave 機能の味わいを提供していることです。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myVar = [ { bookId: 101, title: "world history", price: "19.99" }, { bookId: 202, title: 'the great outdoors', price: "15.99" } ] var myVar2 = [ { bookId: 101, author: "john doe" }, { bookId: 202, author: "jane doe" } ] output application/json --- myVar map (item, index) -> using (id = item.bookId) { "id" : id, "topic" : item.title, "cost" : item.price as Number, (myVar2 filter ($.*bookId contains id) map (item) -> { author : item.author }) } ``` この言語をさらに探索する準備が整ったら、終了間近で使用する ​[filter](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-filter)​ 関数が ​`myVar2`​ 変数の配列から ​`author`​ 値をどのように返すかについて確認してください。​`as`​ が行 ​`"cost" : item.price as Number,`​ 内のデータ型と連携し、​`"19.99"`​ のような入力文字列を ​`19.99`​ のような数値に強制的に変換する方法についての詳細は、​[DataWeave の型強制](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types-coercion)​について確認してください。(​`using (id = item.bookId)`​ に示されている) ​`using`​ を使用してスクリプト内で​[ローカル DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables#example_local_variable)​をどのように作成できるかを確認してください。 2. 出力をプレビューします。 ```json [ { "id": "101", "topic": "world history", "cost": 19.99, "author": "john doe" }, { "id": "202", "topic": "the great outdoors", "cost": 15.99, "author": "jane doe" } ] ``` 3. [DataWeave の他の例を試す](#more_examples)​に進みます。 ## [](#more_examples)DataWeave の他の例を試す これで DataWeave の例を自分で実行する準備ができました。DataWeave 言語についてさらに多くのことを知りたい場合は、DataWeave プレイグラウンドでドキュメント内にある例をいつでも実行できます。例をカスタマイズし、それを使用して独自のスクリプトを開始できます。
payload​ を使用して入力データを参照する例 (​contains​ や ​mapObject​ 関数の例など) の場合、​ペイロードに対してアクションを実行する例の実行​で説明されている技法を使用してペイロード関連の問題を回避できます。
1. Studio で試すことができるさらに多くの例があります。 - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions)​: DataWeave 関数モジュールに関するドキュメントには、DataWeave 関数を使用する多くの例が用意されています。 - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-pattern-matching) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) - [DataWeave 関数の定義](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-functions) 2. [次のステップ](#next_steps)​に進みます。 ### [](#provide_payload)ペイロードに対してアクションを実行する例の実行 DataWeave では、​`payload`​ は、​[Mule メッセージ](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message#_message_payload)​のコンテンツを保持する組み込み Mule Runtime 変数です。これを使用すると、​`payload`​ を DataWeave スクリプトに入力するだけでメッセージの本文を取得できます。多くの場合、このコンテンツはドキュメントで「ペイロード」と呼ばれます。 `payload`​ を使用して Mule メッセージのコンテンツを取得する DataWeave の例を試すには、いくつかのオプションがあります。 - [短いペイロードを使用する例の実行](#small_payload)​: DataWeave 変数を使用できます。 - [長いペイロードを使用する例の実行](#med_large_payload)​: ファイルを介してペイロードコンテンツを追加します。この技法は、短いペイロードでも機能します。 実行中の Mule アプリケーションを必要とする選択肢 (​[Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​ の使用など) は、ここでは対象になっていませんが、​[次のステップ](#next_steps)​で紹介されています。 #### [](#small_payload)短いペイロードを使用する例の実行 数行のサンプルデータを使用する短い例では、入力ペイロードを変数に変換できます。DataWeave スクリプトのヘッダー内の DataWeave 変数 (​`var`​) にペイロードのコンテンツをコピーするだけです。次にスクリプトの本文で、その変数を参照する新しい変数の名前で ​`payload`​ を置き換えます。 1. ソースコード領域で次のスクリプトから開始します。 ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` これをまだプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-payload-example.png) 2. ここでは、​`payload`​ を使用して、存在しない Mule メッセージのコンテンツを入力するのではなく、何らかのサンプル入力を使用するようにこの例を変更します。 1. スクリプトで読み取ることができる入力データを提供する ​`myInput`​ DataWeave 変数を追加し、スクリプトの本文内の Mule ​`payload`​ 変数を DataWeave ​`myInput`​ 変数に変更します。 ```DataWeave %dw 2.0 var myInput = read(" 1 3 2 ", "application/xml") output application/json --- ContainsRequestedItem: myInput.root.*order.*items contains "3" ``` 2. 結果をプレビューします。 ```json { "ContainsRequestedItem": true } ``` 準備が整ったら、​[contains](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-contains)​ 関数および組み込み ​`payload`​ 変数に関する詳細を​[「定義済み変数」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables-context)​で確認してください。 #### [](#med_large_payload)長いペイロードを使用する例の実行 多数の行があるサンプルデータを使用する DataWeave 例では、Transform Message を介してメタデータ型を作成することを考慮します。メタデータ型は、サンプルデータを含むローカルファイルを受け入れることができます。 1. [readUrl](#readurl_ex)​ の例を使用して、Studio で ​`src/main/resources/myJson.json`​ を作成します。 Studio にファイルがすでにある場合は、このステップを省略できます。次のステップでは、このファイルのコンテンツをペイロードとして使用する方法を示します。 2. \[Transform Message\] タブのソースコード領域の現在のスクリプトを、入力のペイロードを選択するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- payload ``` 3. ペイロードはまだ存在しないため、ここでペイロードをプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-payload-example2.png) 4. ここで、簡単な JSON オブジェクトを Transform Message のペイロードとして提供します。 1. **\[Transform Message\]**​ タブで、​**\[Preview (プレビュー)\]**​ ボタンの​_左端_​の長方形をクリックすると、列形式のグラフィカルビューがソースコード領域の横に開きます。 ![Anypoint Studio でメタデータを定義する Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.7/_images/studio-define-payload.png) 長方形の上にマウスポインターを置くと、​**\[Show Graphic (グラフィックを表示)\]**​ の表示ラベルが表示されます。 2. **\[Transform Message\]**​ タブの左端の列で ​**\[Payload: Unknown (ペイロード: 不明)\]**​ を見つけて、​**\[Define metadata (メタデータを定義)\]**​ をクリックします。 **\[Define metadata (メタデータを定義)\]**​ リンクが表示されない場合は、左端の列で ​**\[Payload: (ペイロード:)\]**​ エントリを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ をクリックすると、​**\[Select metadata type (メタデータ型を選択)\]**​ ダイアログが開きます。 5. ここで、(​[readUrl](#readurl_ex)​ の例で作成した) ​`myJson.json`​ のコンテンツを Transform Message コンポーネントに読み込みます。 1. **\[+Add (+追加)\]**​ をクリックして、​**\[Create new type (新しい型の作成)\]**​ ダイアログを開きます。 2. ダイアログで ​**\[Type id (型 id)\]**​ に「​`myJsonType`​」と入力し、​**\[Create type (型を作成)\]**​ をクリックします。 ![新しい型を作成するダイアログ](/mulesoft/current/ja-jp/dataweave/2.7/_images/studio-create-type.png) 3. 開いている ​**\[Select metadata type (メタデータ型を選択)\]**​ に戻り、​**\[Type (型)\]**​ ドロップダウンメニューから ​**\[JSON\]**​ を選択します。 ![型を選択する \[Select metadata type (メタデータ型を選択)\] ダイアログ](_images/studio_select_metadata_type.png) 4. 新しい型の下で、​**\[Schema (スキーマ)\]**​ を ​**\[Example (例)\]**​ に変更します (上の図を参照)。 5. 省略記号 (​**…​**​) のあるナビゲーションボタンを使用して ​`src/main/resources/myJson.json`​ を見つけて、​**\[Open (開く)\]**​ をクリックします。ファイルのコンテンツの構造 (​`hello: _String_`​) が ​**\[Select metadata type (メタデータ型を選択)\]**​ ウィンドウに表示されます。 6. ここで、​**\[Select (選択)\]**​ をクリックし、ファイルのコンテンツをメッセージペイロードに読み込みます。 7. \[Preview (プレビュー)\] ペインに ​`myJson.json`​ からの JSON オブジェクトが表示されます。 必要に応じて、​**\[Preview (プレビュー)\]**​ をクリックして、\[Preview (プレビュー)\] ペインを開くことができます。 8. ここで、​**\[Preview (プレビュー)\]**​ ボタンの横にある​_空_​の長方形をクリックし、ソースコード領域を開きます。スクリプトの本文を ​`payload.hello`​ に変更し、既存の DataWeave ヘッダーコンテンツを保持します。 \[Preview (プレビュー)\] ペインにはペイロードの値 (​`"world"`​) のみが含まれます。 以下は、Studio にこの例がどのように表示されるかを示しています。 ![Anypoint Studio で「world」という単語を JSON 形式で出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dw-tut-world.png) 準備が整ったら、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors)​についての詳細を確認してください。 ## [](#next_steps)次のステップ - Studio UI で Mule アプリケーションの開発とデータマッピングを開始するには、[Tutorial: Create a Mule app that uses the Database Connector and DataWeave](https://docs.mulesoft.com/mule-runtime/latest/mule-app-tutorial)を参照してください。 - Transform Message コンポーネント以外にも多くの Mule Connector、モジュール、コアコンポーネントが​**「fx」**​項目で DataWeave セレクターと短い DataWeave 式を受け入れます。 これらのコンポーネントについての詳細は、​[「Mule コンポーネント」](https://docs.mulesoft.com/mule-runtime/latest/mule-components)​で学習できます。 実行中の Mule アプリケーションでサンプルデータを試す場合、Transform Message と連携するかどうかにかかわらず、外部データソースを使用するのではなく以下のコアコンポーネントを使用できます。 - [Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​。Mule イベントのペイロードのコンテンツを提供します。 - [Set Variable](https://docs.mulesoft.com/mule-runtime/latest/variable-transformer-reference)​。Mule イベントの​[変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​内でコンテンツを作成します。 - [Scheduler](https://docs.mulesoft.com/mule-runtime/latest/scheduler-concept)​。Mule イベントの通常の生成をトリガーします。 - [Logger](https://docs.mulesoft.com/mule-runtime/latest/logger-component-reference)​。Studio コンソールで、記録された出力と問題を参照します。 このいくつかのコンポーネントの使用例を以下に示します。 ![Anypoint Studio で「helloWorld」を出力するフロー](/mulesoft/current/ja-jp/dataweave/2.7/_images/studio-hello-world.png) - Set Payload の​**「fx」**​値を ​`output application/json --- { hello : "world"}`​ に設定します。 - Logger の​**「fx」**​値は ​`payload`​ に設定されています。これは、プロジェクトの UI と XML 設定ファイルでは ​`#[payload]`​ のように表示されます。 - _実行中_​の Mule アプリケーション (​`testscript`​) の ​**\[Console (コンソール)\]**​ タブに Set Payload からのペイロードが表示されます。 # DataWeave クイックスタート このガイドでは、サンプルデータに対して DataWeave 2.0 スクリプトを実行します。外部データソースは使用しません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 例を使用して、いくつかの重要な DataWeave の概念について説明します。ユーザーは準備が整ったときにこの概念をさらに深く探索することができます。また、これらの例は、Transform Message コンポーネントを DataWeave プレイグラウンドに変換する方法も示しています。 スクリプトを実行するには、スクリプトを ​[Studio](https://docs.mulesoft.com/studio/)​ の Transform Message コンポーネントのソースコード領域にコピーします。その後、結果をコンポーネントの ​**\[Preview (プレビュー)\]**​ ペインで参照します。また、ファイルからコンテンツを読み込んで、DataWeave スクリプトがそのコンテンツに対してアクションを実行できるようにします。ここにある DataWeave の例やドキュメントの他の場所にある例に慣れたら、DataWeave プレイグラウンドを使用して、サンプルデータに対して独自の DataWeave スクリプトを記述する練習をすることができます。 ![基本的な JSON 出力が表示されている Anypoint Studio のスクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-script-studio-basic.png) この図は、センターキャンバスの ​**testingscriptFlow**​ 内の Transform Message コンポーネントを示しています。Studio キャンバスの下の ​**\[Transform Message\]**​ タブでは、ソースコード領域に DataWeave スクリプトが表示され、​**\[Preview (プレビュー)\]**​ ペインに結果が表示されます。 ## [](#前提条件)前提条件 [Studio 7](https://docs.mulesoft.com/studio/to-download-and-install-studio)​ が必要です。 バージョン 7.3 または 7.2.3 をお勧めします。このガイドでは他の Studio 7 バージョンはテストされていません。 Studio をインストールしたら、Transform Message コンポーネントを使用してプロジェクトをセットアップする必要があります。​[Studio でのプロジェクトのセットアップ](#setup)​を参照してください。 ## [](#setup)Studio でのプロジェクトのセットアップ DataWeave プレイグラウンドとして機能する Mule プロジェクトをセットアップします。 1. Studio で、​**\[File (ファイル)\]**​ → ​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックして、Mule プロジェクトを作成します。 2. プロジェクトの名前 ​`testscript`​ を入力して、​**\[Finish (完了)\]**​ をクリックします。 3. 新しいプロジェクトの ​**\[Mule Palette (Mule パレット)\]**​ タブから ​**\[Core (コア)\]**​ をクリックし、​**\[Transform Message\]**​ コンポーネントを Studio キャンバスにドラッグします。 ![Anypoint Studio の Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-script-studio.png) (A) ​**\[Mule Palette (Mule パレット)\]**​ タブ (B) Transform Message コンポーネントを含む Studio キャンバス (C) ​**\[Transform Message\]**​ タブ 4. **\[Transform Message\]**​ タブで ​**\[Preview (プレビュー)\]**​ (右端) をクリックして \[Preview (プレビュー)\] ペインを開き、​**\[Preview (プレビュー)\]**​ の横にある​_空_​の長方形をクリックしてソースコード領域を展開します。 ![Anypoint Studio の出力ペイロードが表示されている \[Transform Message\] タブ](_images/studio-transform-msg-tab.png) 左のソースコード領域で DataWeave スクリプトを追加し、右の \[Preview (プレビュー)\] ペインでスクリプトの出力を参照します。 5. [スクリプティングの開始](#start_scripting)​に進みます。 ## [](#start_scripting)スクリプティングの開始 1. [1 つの文字列への 2 つの文字列の連結](#step_1) 2. [XML 出力への JSON 入力の変換](#step_2) 3. [サポートされるデータ型について](#step_3) 4. [入力としての DataWeave 変数の定義および使用](#step_4) 5. [DataWeave 変数での DataWeave 関数の使用](#step_5) 6. [入力からのコンテンツの読み取り、変換、選択](#step_6) 7. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7) 8. [配列からオブジェクトへの要素のマップ](#step_8) 9. [オブジェクトから配列への値の取り込み](#step_9) 10. [項目のマップとマージ](#step_10) ### [](#step_1)1 つの文字列への 2 つの文字列の連結 2 つの文字列 (「hello」と「World」) を 1 つの文字列 (「helloWorld」) に連結する簡単な DataWeave スクリプトから始めます。 ![JSON 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-helloWorld.png) 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { myString: ("hello" ++ "World") } ``` - DataWeave スクリプトの本文にはキー-値ペア (​`{ myString: ("hello" ++ "World") }`​) が含まれます。この入力オブジェクトの値は、文字列「hello」と「World」を 1 つの文字列「helloWorld」に連結するための DataWeave 式 (​`("hello" ++ "World")`​) です。 準備が整ったら、文字列の連結で使用する DataWeave ​[++](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-plusplus)​ 関数についての詳細を確認してください。 - 3 つのダッシュ (​`---`​) の上にあるすべてのコンテンツがスクリプトのヘッダーです。 これには、出力形式 ​`application/json`​ を指定するディレクティブを含め、重要なディレクティブが含まれます。準備が整ったら、​[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "helloWorld" } ``` 3. [XML 出力への JSON 入力の変換](#step_2)​に進みます。 ### [](#step_2)XML 出力への JSON 入力の変換 多くのインテグレーションで形式間の変換が必要とされます。この手順では、​`output`​ ディレクティブを使用して、JSON 入力から XML 出力を生成します。 ![XML 形式で「helloWorld」を出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-helloWorld-xml.png) 1. ソースコード領域内の現在のスクリプトの本文を​[1 つの文字列への 2 つの文字列の連結](#step_1)​の JSON 出力に置き換えて、​`output application/json`​ ディレクティブを ​`output application/xml`​ に変更します。 ```dw %dw 2.0 output application/xml --- { "myString" : ("helloWorld") } ``` 2. **\[Preview (プレビュー)\]**​ ペインで XML 出力を参照します。 ```xml helloWorld ``` 入力 JSON オブジェクト ​`{ "myString" : ("helloWorld") }`​ の ​`"myString"`​ キーは XML 出力のルート要素に変換され、連結された文字列はその XML オブジェクトの値になります。したがって、XML 出力は ​`helloWorld`​ になります。この出力の前に、XML バージョンとエンコードを特定する標準 XML 宣言が配置されています。
XML 出力のルートノードとして機能する​単一​キーがない場合 (たとえば、入力が単に ​("helloWorld")​ の場合)、XML への変換は失敗し、ソースコード領域に黄色の警告 (​!​) が表示されます。警告メッセージは、​Trying to output non-whitespace characters outside main element tree​ です。必要に応じて、この警告が生成されるように自分で試してみることができます。
DataWeave では、多くの出力形式と入力形式がサポートされます。準備が整ったら、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats)​についての詳細を確認してください。 3. [サポートされるデータ型について](#step_3)​に進みます。 ### [](#step_3)サポートされるデータ型について ここでは、サポートされるさまざまなデータ型を紹介し、スクリプトへのコメントの追加方法を示す簡単な DataWeave スクリプトを提供します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { /* * A multi-line * comment here. */ myString: "hello world", myNumber: 123, myFloatingPointNumber: 123.456, myVeryBigNumber: 12341234134123412341234123, myDate: |2018-12-07|, myTime: |11:55:56|, myDateTime: |2018-10-01T23:57:59-03:00|, myBoolean: true, myArray: [ 1, 2, 3, 5, 8], myMixedArray: [ 1, 2, "blah", { hello: "there" } ], myObjectKeyValuePair: { innerKey: "innerValue" }, myObjectWithConditionalField: { a : { b : 1, ( c : 2 ) if true, (d : 4) if false } }, myNull: null, myBinary: "abcd1234123" as Binary //A one-line comment here. } ``` DataWeave では、​`/* */`​ マークアップ内の複数行のコメントと、スラッシュ (​`//`​) の後の単一行のコメントがサポートされます。また、キー-値ペア (​`myString: "hello world"`​、​`myNumber: 123`​ など) 内のコロン (​`:`​) の後に表示される多くのデータ型もサポートされます。この型には、文字列 (引用符 ​`""`​ で囲まれる)、数値、日時構造 (パイプ ​`||`​ 内)、ブール (​`true`​ と ​`false`​)、配列 (角括弧 ​`[]`​ 内)、JSON に似たオブジェクト (中括弧 ​`{}`​ 内のキー-値構造)、​`null`​、バイナリがあります。このトピックについての詳細を確認する準備が整ったら、​[「DataWeave の型」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types)​を参照してください。 2. **\[Preview (プレビュー)\]**​ ペインで JSON 出力を参照します。 ```json { "myString": "hello world", "myNumber": 123, "myFloatingPointNumber": 123.456, "myVeryBigNumber": 12341234134123412341234123, "myDate": "2018-12-07", "myTime": "11:55:56", "myDateTime": "2018-10-01T23:57:59-03:00", "myBoolean": true, "myArray": [ 1, 2, 3, 5, 8 ], "myMixedArray": [ 1, 2, "blah", { "hello": "there" } ], "myObjectKeyValuePair": { "innerKey": "innerValue" }, "myObjectWithConditionalField": { "a": { "b": 1, "c": 2 } }, "myNull": null, "myBinary": "abcd1234123" } ``` 3. [入力としての DataWeave 変数の定義および使用](#step_4)​に進みます。 ### [](#step_4)入力としての DataWeave 変数の定義および使用 ここでは、DataWeave 変数 ​`myJson`​ の値を出力する簡単な DataWeave スクリプトを試します。スクリプトのヘッダー内の ​`var`​ ディレクトリを使用して、変数を設定します。 1. **\[Transform Message\]**​ タブのソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { "hello" : "world" } output application/json --- myJson ``` JSON オブジェクト (​`{ "hello" : "world" }`​) は、スクリプトのヘッダー内の ​`myJson`​ 変数として定義されます。準備が整ったら、​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables)​についての詳細を確認してください。 2. **\[Preview (プレビュー)\]**​ ペインで出力を参照します。 ```json { "hello": "world" } ``` 3. [DataWeave 変数での DataWeave 関数の使用](#step_5)​に進みます。 ### [](#step_5)DataWeave 変数での DataWeave 関数の使用 ここでは、DataWeave 変数 (​`myJson`​) 内で DataWeave ​`avg`​ 関数を使用して、2 つの数値セットの平均を取得するスクリプトを試します。 ![Anypoint Studio で変数を使用する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-script-studio-var.png) 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myJson = { a: avg([1, 1000]), b: avg([1, 2, 3]) } output application/json --- myJson ``` スクリプトの本文に ​`myJson`​ を追加すると、ここの ​`avg`​ 関数が呼び出され、計算された平均が JSON オブジェクト内に生成されます。これは、​**\[Preview (プレビュー)\]**​ ペインで参照できます。構造 ​`[1, 1000]`​ および ​`[1, 2, 3]`​ は​[配列](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types#dw_type_array)​です。準備が整ったら、​[avg](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-avg)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "a": 500.5, "b": 2.0 } ``` 3. [入力からのコンテンツの読み取り、変換、選択](#step_6)​に進みます。 ### [](#step_6)入力からのコンテンツの読み取り、変換、選択 ここでは、XML 入力を読み取って JSON に変換し、​`car`​ 要素のコンテンツのみを選択する、より複雑なスクリプトを試します。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myRead = read("red", "application/xml") output application/json --- { mySelection : myRead.car } ``` この例のプレビューで問題が発生した場合は、​`myRead.car`​ を ​`myRead."car"`​ に変更してください。準備が整ったら、​[read](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-read)​ 関数、​[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats)​、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors)​についての詳細を確認してください。 2. 出力をプレビューします。 ```json { "mySelection": { "color": "red" } } ``` 3. [DataWeave 関数を使用したファイルのコンテンツの読み取り](#step_7)​に進みます。 ### [](#step_7)DataWeave 関数を使用したファイルのコンテンツの読み取り ここでは、​`readUrl`​ を使用して、Studio の ​`src/main/resources`​ フォルダー内のファイルのコンテンツを読み取ります。このコンテンツを DataWeave スクリプトのサンプルデータとして使用できます。 1. ファイルを追加するには、​**\[Package Explorer\]**​ タブで ​`src/main/resources`​ フォルダーを右クリックし、​**\[New (新規)\]**​ → ​**\[File (ファイル)\]**​ に移動して、該当のファイルのファイル名 ​`myJson.json`​ を入力し、​**\[Finish (完了)\]**​ をクリックします。 2. `src/main/resources`​ から、​**\[myJson.json\]**​ タブ (または ​**\[myJson.json\]**​ タブの ​**\[Source (ソース)\]**​ サブタブ内 (ある場合)) に次のサンプルコンテンツを入力して保存します。 ```json { "hello": "world" } ``` ![Anypoint Studio のサンプルコンテンツが表示されている \[Package Explorer\] タブ](_images/dw-tut-sample-file.png) Figure 1. Studio 内の myJson.json 3. **\[testscript\]**​ タブ内の Transform Message コンポーネントに戻り、現在のスクリプトを、​`readUrl`​ を使用してファイルから JSON コンテンツを読み取るスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- readUrl("classpath://myJson.json", "application/json") ``` 準備が整ったら、​[readUrl](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-readurl)​ 関数についての詳細を確認してください。 4. **\[Preview (プレビュー)\]**​ ペインで一致の出力を参照します。 ```json { "hello": "world" } ``` Transform Message コンポーネントのメタデータ型を介してファイルのコンテンツを読み込むこともできます。この手順については、後で​[長いペイロードを使用する例の実行](#med_large_payload)​で説明します。この手順では、ここで作成した ​`myJson.json`​ ファイルを使用します。 5. [配列からオブジェクトへの要素のマップ](#step_8)​に進みます。 ### [](#step_8)配列からオブジェクトへの要素のマップ ほぼすべてのインテグレーションでデータマッピングが必要とされます。ここでは、配列内の要素を JSON オブジェクトのキーと値にマップします。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { ( ["a", "b", "c"] map ((value, index) -> { (index): value }) ) } ``` `map`​ 関数は左の配列を反復処理し、右のラムダ (匿名関数) (​`((value, index) → { (index): value })`​) をその配列の要素に適用します。ラムダは​[名前付きパラメーター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-functions-lambdas#_use_named_parameters_in_a_lambda)​ (​`value`​ および ​`index`​) を使用して、配列から値とインデックスを選択し、JSON オブジェクトにキー-値ペアを入力します。​[map](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-map)​ についての詳細を確認し、準備が整ったら、​`map`​ を ​[mapObject](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-mapobject)​ と比較してください。これはオブジェクトを入力として使用します。 2. 出力をプレビューします。 ```json { "0": "a", "1": "b", "2": "c" } ``` 3. [オブジェクトから配列への値の取り込み](#step_9)​に進みます。 ### [](#step_9)オブジェクトから配列への値の取り込み ここでは、DataWeave ​`pluck`​ 関数を使用して JSON オブジェクトの値を反復処理し、値を配列に出力します。 1. ソースコード領域のコンテンツを、JSON オブジェクトで ​`pluck`​ を使用するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- { "0": "a", "1": "b", "2": "c" } pluck ((value) -> value) ``` 入力オブジェクトが ​`map`​ の例の​[出力](#output_map)​に一致し、出力の配列が ​`map`​ の例の​[入力](#input_map)​に一致します。準備が整ったら、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-pluck)​ についての詳細を確認してください。 2. 出力をプレビューします。 ```json [ "a", "b", "c" ] ``` 3. [項目のマップとマージ](#step_10)​に進みます。 ### [](#step_10)項目のマップとマージ ここでは、別々の配列内のアイテムから項目をマップおよびマージする、より複雑な例を試します。ここでの重要な点を簡単に述べると、一部のインテグレーションで必要とされる、より複雑なマッピングと変換の処理に DataWeave 機能の味わいを提供していることです。 1. ソースコード領域内の現在のスクリプトを次のスクリプトに置き換えます。 ```dw %dw 2.0 var myVar = [ { bookId: 101, title: "world history", price: "19.99" }, { bookId: 202, title: 'the great outdoors', price: "15.99" } ] var myVar2 = [ { bookId: 101, author: "john doe" }, { bookId: 202, author: "jane doe" } ] output application/json --- myVar map (item, index) -> using (id = item.bookId) { "id" : id, "topic" : item.title, "cost" : item.price as Number, (myVar2 filter ($.*bookId contains id) map (item) -> { author : item.author }) } ``` この言語をさらに探索する準備が整ったら、終了間近で使用する ​[filter](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-filter)​ 関数が ​`myVar2`​ 変数の配列から ​`author`​ 値をどのように返すかについて確認してください。​`as`​ が行 ​`"cost" : item.price as Number,`​ 内のデータ型と連携し、​`"19.99"`​ のような入力文字列を ​`19.99`​ のような数値に強制的に変換する方法についての詳細は、​[DataWeave の型強制](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types-coercion)​について確認してください。(​`using (id = item.bookId)`​ に示されている) ​`using`​ を使用してスクリプト内で​[ローカル DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables#example_local_variable)​をどのように作成できるかを確認してください。 2. 出力をプレビューします。 ```json [ { "id": "101", "topic": "world history", "cost": 19.99, "author": "john doe" }, { "id": "202", "topic": "the great outdoors", "cost": 15.99, "author": "jane doe" } ] ``` 3. [DataWeave の他の例を試す](#more_examples)​に進みます。 ## [](#more_examples)DataWeave の他の例を試す これで DataWeave の例を自分で実行する準備ができました。DataWeave 言語についてさらに多くのことを知りたい場合は、DataWeave プレイグラウンドでドキュメント内にある例をいつでも実行できます。例をカスタマイズし、それを使用して独自のスクリプトを開始できます。
payload​ を使用して入力データを参照する例 (​contains​ や ​mapObject​ 関数の例など) の場合、​ペイロードに対してアクションを実行する例の実行​で説明されている技法を使用してペイロード関連の問題を回避できます。
1. Studio で試すことができるさらに多くの例があります。 - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions)​: DataWeave 関数モジュールに関するドキュメントには、DataWeave 関数を使用する多くの例が用意されています。 - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-pattern-matching) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) - [DataWeave 関数の定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-functions) 2. [次のステップ](#next_steps)​に進みます。 ### [](#provide_payload)ペイロードに対してアクションを実行する例の実行 DataWeave では、​`payload`​ は、​[Mule メッセージ](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message#_message_payload)​のコンテンツを保持する組み込み Mule Runtime 変数です。これを使用すると、​`payload`​ を DataWeave スクリプトに入力するだけでメッセージの本文を取得できます。多くの場合、このコンテンツはドキュメントで「ペイロード」と呼ばれます。 `payload`​ を使用して Mule メッセージのコンテンツを取得する DataWeave の例を試すには、いくつかのオプションがあります。 - [短いペイロードを使用する例の実行](#small_payload)​: DataWeave 変数を使用できます。 - [長いペイロードを使用する例の実行](#med_large_payload)​: ファイルを介してペイロードコンテンツを追加します。この技法は、短いペイロードでも機能します。 実行中の Mule アプリケーションを必要とする選択肢 (​[Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​ の使用など) は、ここでは対象になっていませんが、​[次のステップ](#next_steps)​で紹介されています。 #### [](#small_payload)短いペイロードを使用する例の実行 数行のサンプルデータを使用する短い例では、入力ペイロードを変数に変換できます。DataWeave スクリプトのヘッダー内の DataWeave 変数 (​`var`​) にペイロードのコンテンツをコピーするだけです。次にスクリプトの本文で、その変数を参照する新しい変数の名前で ​`payload`​ を置き換えます。 1. ソースコード領域で次のスクリプトから開始します。 ```DataWeave %dw 2.0 output application/json --- ContainsRequestedItem: payload.root.*order.*items contains "3" ``` これをまだプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-payload-example.png) 2. ここでは、​`payload`​ を使用して、存在しない Mule メッセージのコンテンツを入力するのではなく、何らかのサンプル入力を使用するようにこの例を変更します。 1. スクリプトで読み取ることができる入力データを提供する ​`myInput`​ DataWeave 変数を追加し、スクリプトの本文内の Mule ​`payload`​ 変数を DataWeave ​`myInput`​ 変数に変更します。 ```DataWeave %dw 2.0 var myInput = read(" 1 3 2 ", "application/xml") output application/json --- ContainsRequestedItem: myInput.root.*order.*items contains "3" ``` 2. 結果をプレビューします。 ```json { "ContainsRequestedItem": true } ``` 準備が整ったら、​[contains](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-contains)​ 関数および組み込み ​`payload`​ 変数に関する詳細を​[「定義済み変数」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables-context)​で確認してください。 #### [](#med_large_payload)長いペイロードを使用する例の実行 多数の行があるサンプルデータを使用する DataWeave 例では、Transform Message を介してメタデータ型を作成することを考慮します。メタデータ型は、サンプルデータを含むローカルファイルを受け入れることができます。 1. [readUrl](#readurl_ex)​ の例を使用して、Studio で ​`src/main/resources/myJson.json`​ を作成します。 Studio にファイルがすでにある場合は、このステップを省略できます。次のステップでは、このファイルのコンテンツをペイロードとして使用する方法を示します。 2. \[Transform Message\] タブのソースコード領域の現在のスクリプトを、入力のペイロードを選択するスクリプトに置き換えます。 ```dw %dw 2.0 output application/json --- payload ``` 3. ペイロードはまだ存在しないため、ここでペイロードをプレビューすることはできません。 ![Anypoint Studio でペイロードに特定の項目が含まれているかどうかを確認する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-payload-example2.png) 4. ここで、簡単な JSON オブジェクトを Transform Message のペイロードとして提供します。 1. **\[Transform Message\]**​ タブで、​**\[Preview (プレビュー)\]**​ ボタンの​_左端_​の長方形をクリックすると、列形式のグラフィカルビューがソースコード領域の横に開きます。 ![Anypoint Studio でメタデータを定義する Transform Message コンポーネント](/mulesoft/current/ja-jp/dataweave/2.8/_images/studio-define-payload.png) 長方形の上にマウスポインターを置くと、​**\[Show Graphic (グラフィックを表示)\]**​ の表示ラベルが表示されます。 2. **\[Transform Message\]**​ タブの左端の列で ​**\[Payload: Unknown (ペイロード: 不明)\]**​ を見つけて、​**\[Define metadata (メタデータを定義)\]**​ をクリックします。 **\[Define metadata (メタデータを定義)\]**​ リンクが表示されない場合は、左端の列で ​**\[Payload: (ペイロード:)\]**​ エントリを右クリックし、​**\[Set Metadata (メタデータを設定)\]**​ をクリックすると、​**\[Select metadata type (メタデータ型を選択)\]**​ ダイアログが開きます。 5. ここで、(​[readUrl](#readurl_ex)​ の例で作成した) ​`myJson.json`​ のコンテンツを Transform Message コンポーネントに読み込みます。 1. **\[+Add (+追加)\]**​ をクリックして、​**\[Create new type (新しい型の作成)\]**​ ダイアログを開きます。 2. ダイアログで ​**\[Type id (型 id)\]**​ に「​`myJsonType`​」と入力し、​**\[Create type (型を作成)\]**​ をクリックします。 ![新しい型を作成するダイアログ](/mulesoft/current/ja-jp/dataweave/2.8/_images/studio-create-type.png) 3. 開いている ​**\[Select metadata type (メタデータ型を選択)\]**​ に戻り、​**\[Type (型)\]**​ ドロップダウンメニューから ​**\[JSON\]**​ を選択します。 ![型を選択する \[Select metadata type (メタデータ型を選択)\] ダイアログ](_images/studio_select_metadata_type.png) 4. 新しい型の下で、​**\[Schema (スキーマ)\]**​ を ​**\[Example (例)\]**​ に変更します (上の図を参照)。 5. 省略記号 (​**…​**​) のあるナビゲーションボタンを使用して ​`src/main/resources/myJson.json`​ を見つけて、​**\[Open (開く)\]**​ をクリックします。ファイルのコンテンツの構造 (​`hello: _String_`​) が ​**\[Select metadata type (メタデータ型を選択)\]**​ ウィンドウに表示されます。 6. ここで、​**\[Select (選択)\]**​ をクリックし、ファイルのコンテンツをメッセージペイロードに読み込みます。 7. \[Preview (プレビュー)\] ペインに ​`myJson.json`​ からの JSON オブジェクトが表示されます。 必要に応じて、​**\[Preview (プレビュー)\]**​ をクリックして、\[Preview (プレビュー)\] ペインを開くことができます。 8. ここで、​**\[Preview (プレビュー)\]**​ ボタンの横にある​_空_​の長方形をクリックし、ソースコード領域を開きます。スクリプトの本文を ​`payload.hello`​ に変更し、既存の DataWeave ヘッダーコンテンツを保持します。 \[Preview (プレビュー)\] ペインにはペイロードの値 (​`"world"`​) のみが含まれます。 以下は、Studio にこの例がどのように表示されるかを示しています。 ![Anypoint Studio で「world」という単語を JSON 形式で出力する DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dw-tut-world.png) 準備が整ったら、​[DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors)​についての詳細を確認してください。 ## [](#next_steps)次のステップ - Studio UI で Mule アプリケーションの開発とデータマッピングを開始するには、[Tutorial: Create a Mule app that uses the Database Connector and DataWeave](https://docs.mulesoft.com/mule-runtime/latest/mule-app-tutorial)を参照してください。 - Transform Message コンポーネント以外にも多くの Mule Connector、モジュール、コアコンポーネントが​**「fx」**​項目で DataWeave セレクターと短い DataWeave 式を受け入れます。 これらのコンポーネントについての詳細は、​[「Mule コンポーネント」](https://docs.mulesoft.com/mule-runtime/latest/mule-components)​で学習できます。 実行中の Mule アプリケーションでサンプルデータを試す場合、Transform Message と連携するかどうかにかかわらず、外部データソースを使用するのではなく以下のコアコンポーネントを使用できます。 - [Set Payload](https://docs.mulesoft.com/mule-runtime/latest/set-payload-transformer-reference)​。Mule イベントのペイロードのコンテンツを提供します。 - [Set Variable](https://docs.mulesoft.com/mule-runtime/latest/variable-transformer-reference)​。Mule イベントの​[変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​内でコンテンツを作成します。 - [Scheduler](https://docs.mulesoft.com/mule-runtime/latest/scheduler-concept)​。Mule イベントの通常の生成をトリガーします。 - [Logger](https://docs.mulesoft.com/mule-runtime/latest/logger-component-reference)​。Studio コンソールで、記録された出力と問題を参照します。 このいくつかのコンポーネントの使用例を以下に示します。 ![Anypoint Studio で「helloWorld」を出力するフロー](/mulesoft/current/ja-jp/dataweave/2.8/_images/studio-hello-world.png) - Set Payload の​**「fx」**​値を ​`output application/json --- { hello : "world"}`​ に設定します。 - Logger の​**「fx」**​値は ​`payload`​ に設定されています。これは、プロジェクトの UI と XML 設定ファイルでは ​`#[payload]`​ のように表示されます。 - _実行中_​の Mule アプリケーション (​`testscript`​) の ​**\[Console (コンソール)\]**​ タブに Set Payload からのペイロードが表示されます。 # DataWeave システムプロパティ DataWeave では、いくつかのシステムプロパティがサポートされます。これらのプロパティをアプリケーションの開発およびデプロイメントで使用するには、​[「システムプロパティ」](https://docs.mulesoft.com/jp/mule-runtime/4.3/mule-app-properties-system)​を参照してください。
プロパティ 説明

com.mulesoft.dw.buffer.memory.monitoring​

​実験的機能:​ ​true​ に設定されている場合、メモリプールからスロットが取得またはリリースされるたびにメッセージをログに記録します。この動作はトラブルシューティングに役立ちます。 com.mulesoft.dw.buffer.memory.monitoring​ は、DataWeave の将来のバージョンで変更または削除される場合がある​実験的機能​をサポートします。

  • 型: Boolean​

  • デフォルト: false

com.mulesoft.dw.buffersize​

処理された入力および出力を保持するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を設定します。 DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-index-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。 DataWeave のメモリ管理​を参照してください。

  • 型: Number​ (バイト)

  • デフォルト: 8192​ バイト (8 KB)

com.mulesoft.dw.coercionexception.verbose​

デフォルトでは、型強制に失敗したデータに関する詳細を型強制例外に追加します。このプロパティが ​false​ に設定されている場合、追加のメタデータは表示されません。

  • 型: Boolean​

  • デフォルト: true

com.mulesoft.dw.date_minus_back_compatibility​

このプロパティが ​true​ に設定されている場合、2.3.0 で変更された​時間の加算と減算​動作を復元します。

  • 型: Boolean​

  • デフォルト: false

たとえば、次の DataWeave スクリプトについて考えてみます。

%dw 2.0
output application/dw
---
|2019-10-01| - |2018-09-23|
  • DataWeave 2.3.0 では、この式は ​PT8952H​ を返します。

  • DataWeave 2.2.0 では、この式は ​P1Y8D​ を返します。

com.mulesoft.dw.directbuffer.disable​

DataWeave でオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave では、内部バッファにはオフヒープメモリが使用されます。このため、少量のメモリのみを搭載するシステムでは、問題が発生する可能性があります。​DataWeave のメモリ管理​を参照してください。

  • 型: Boolean​

  • デフォルト: false

com.mulesoft.dw.dump_files​

​実験的機能​: このプロパティが ​true​ に設定されている場合、入力コンテキストと失敗したスクリプトをフォルダーにダンプします。この動作により、失敗したスクリプトとスクリプトを失敗させたデータを追跡できます。これは、受け取った入力データが有効であることを確認するのに特に役立ちます。多くの場合、上流コンポーネントで無効なデータが生成されると、間違ったスクリプトは失敗します。

  • 型: Boolean​

  • デフォルト: false

com.mulesoft.dw.dump_files​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dump_folder​

​実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合にファイルをダンプするパスを指定します。

  • 型: String​

  • デフォルト: java.io.tmpdir​ (システムプロパティ値)

com.mulesoft.dw.dump_folder​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.error_value_length​

ユーザーに表示する例外メッセージの最大長を設定します。メッセージはこの最大長で切り捨てられます。この設定は、長い例外メッセージを回避するのに役立ちます。

  • 型: Number​

  • デフォルト: 80

com.mulesoft.dw.indexsize​

インデックス付けされたリーダーで使用するメモリ内のページの最大サイズ (バイト単位) を設定します。

  • 型: Number​

  • デフォルト: 1572864​ (1.5 MB)

com.mulesoft.dw.max_memory_allocation​

オフヒープメモリプールの各スロットのサイズ (バイト単位) を設定します。

  • 型: Number​ (バイト)

  • デフォルト: 1572864​ (1.5 MB)

DataWeave のメモリ管理​を参照してください。

com.mulesoft.dw.memory_pool_size​

メモリプールのスロットの数を設定します。DataWeave バッファでは、定義されたサイズ (​com.mulesoft.dw.memory_pool_size​ * ​com.mulesoft.dw.max_memory_allocation​) までプールのオフヒープメモリが使用されます。残りはヒープメモリを使用して割り当てられます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 60

com.mulesoft.dw.multipart.defaultContentType​

Content-Type​ が指定されていない場合に ​multipart/*​ 形式の部分で使用するデフォルトのコンテンツタイプを設定します。マルチパートリーダープロパティ ​defaultContentType​ も参照してください。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

  • 型: String​

  • デフォルト: application/octet-stream

com.mulesoft.dw.valueSelector.selectsAlwaysFirst​

true​ に設定されている場合、(要素が複数回出現する場合でも) 最初に出現する要素を返します。この動作を有効にすると、パフォーマンスが低下します。

  • 型: Boolean​

  • デフォルト: false

次の例は、このプロパティにより制御される動作を示しています。(DataWeave スクリプトが XML 入力で動作することを前提とします)。

XML 入力:
<root>
  <users>
     <user>
       <lname>chibana</lname>
       <name>Shoki</name>
     </user>
     <user>
       <name>Shoki</name>
       <name>Tomo</name>
     </user>
  </users>
</root>
DataWeave スクリプト:
%dw 2.0
output application/json
---
{
    shokis: payload.root.users.*user map $.name
}
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Shoki"
      ]
    }
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Tomo"
      ]
    }

com.mulesoft.dw.stacksize​

スタックの最大サイズを設定します。関数の再帰が深すぎると、​Stack Overflow. Max stack is 256.​ などのエラーがスローされます。

  • 型: Number​

  • デフォルト: 256

com.mulesoft.dw.xml.supportDTD​

DTD 処理を有効にするか無効にするかを制御します。このプロパティが ​false​ に設定されている場合、内部と外部の両方のサブセットの処理がスキップされます。このプロパティのデフォルトは、2021 年 5 月の DataWeave バージョン 2.3.0 のパッチを含む Mule バージョン 4.3.0-20210427 で ​true​ から ​false​ に変更されました。

  • 型: Boolean​

  • デフォルト: false

com.mulesoft.dw.track.cursor.close​

true​ に設定されている場合、​CursorProvider#close()​ メソッドのコール元であるスタックトレースを追跡します。 このプロパティは、すでに閉じられているカーソルで ​CursorProvider#openCursor()​ がコールされた場合など、トラブルシューティング目的で使用します。

  • 型: Boolean​

  • デフォルト: false

com.mulesoft.dw.verbose​

このプロパティが ​true​ に設定されている場合、絞り込まれたスタックトレースを表示します。​false​ に設定されている場合、スタックトレースを表示しません。

  • 型: Boolean​

  • デフォルト: false​

# DataWeave システムプロパティ DataWeave では、いくつかのシステムプロパティがサポートされます。これらのプロパティをアプリケーションの開発およびデプロイメントで使用するには、​[「システムプロパティ」](https://docs.mulesoft.com/mule-runtime/latest/mule-app-properties-system)​を参照してください。
プロパティ 説明

com.mulesoft.dw.buffered_char_sequence.enabled

内部の ​BufferedCharSequence​ 改善を有効にするか、無効にするかを制御します。このプロパティが ​true​ に設定されると、DataWeave は大きなファイル (1.5M 超) をメモリに読み込みません。これらの項目はチャンクに分割して読み取られます。この機能はパフォーマンスを抑えてメモリ不足エラーを防止します。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.buffersize

処理された入力および出力を保持するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を設定します。 DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-index-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。 DataWeave のメモリ管理​を参照してください。

  • 型: Number​ (バイト)

  • デフォルト: 8192​ バイト (8 KB)

com.mulesoft.dw.coercionexception.verbose

デフォルトでは、型強制に失敗したデータに関する詳細を型強制例外に追加します。このプロパティが ​false​ に設定されている場合、追加のメタデータは表示されません。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.date_minus_back_compatibility

このプロパティが ​true​ に設定されている場合、2.3.0 で変更された​時間の加算と減算​動作を復元します。

  • 型: Boolean​

  • デフォルト: false​

たとえば、次の DataWeave スクリプトについて考えてみます。

%dw 2.0
output application/dw
---
|2019-10-01| - |2018-09-23|
  • DataWeave 2.3.0 では、この式は PT8952H を返します。

  • DataWeave 2.2.0 では、この式は P1Y8D を返します。

com.mulesoft.dw.directbuffer.disable

DataWeave でオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave では、内部バッファにはオフヒープメモリが使用されます。このため、少量のメモリのみを搭載するシステムでは、問題が発生する可能性があります。​DataWeave のメモリ管理​を参照してください。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files

実験的機能​: このプロパティが ​true​ に設定されている場合、入力コンテキストと失敗したスクリプトをフォルダーにダンプします。この動作により、失敗したスクリプトとスクリプトを失敗させたデータを追跡できます。これは、受け取った入力データが有効であることを確認するのに特に役立ちます。多くの場合、上流コンポーネントで無効なデータが生成されると、間違ったスクリプトは失敗します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dump_folder

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合にファイルをダンプするパスを指定します。

  • 型: String​

  • デフォルト: java.io.tmpdir​ (システムプロパティ値)

com.mulesoft.dw.dump_folder​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dumper_fill_stacktrace

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合、dumper 例外の StackTrace を追加します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dumper_fill_stacktrace​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。

com.mulesoft.dw.error_value_length

ユーザーに表示する例外メッセージの最大長を設定します。メッセージはこの最大長で切り捨てられます。この設定は、長い例外メッセージを回避するのに役立ちます。

  • 型: Number​

  • デフォルト: 80​

com.mulesoft.dw.indexsize

インデックス付けされたリーダーで使用するメモリ内のページの最大サイズ (バイト単位) を設定します。

  • 型: Number​

  • デフォルト: 1572864​ (1.5 MB)

com.mulesoft.dw.max_memory_allocation

オフヒープメモリプールの各スロットのサイズ (バイト単位) を設定します。

  • 型: Number​ (バイト)

  • デフォルト: 1572864​ (1.5 MB)

DataWeave のメモリ管理​を参照してください。

com.mulesoft.dw.memory_pool_size

メモリプールのスロットの数を設定します。DataWeave バッファでは、定義されたサイズ (​com.mulesoft.dw.memory_pool_size​ * ​com.mulesoft.dw.max_memory_allocation​) までプールのオフヒープメモリが使用されます。残りはヒープメモリを使用して割り当てられます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 60​

com.mulesoft.dw.multipart.defaultContentType

Content-Type​ が指定されていない場合に ​multipart/*​ 形式の部分で使用するデフォルトのコンテンツタイプを設定します。マルチパートリーダープロパティ ​defaultContentType​ も参照してください。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

  • 型: String​

  • デフォルト: application/octet-stream​

com.mulesoft.dw.valueSelector.selectsAlwaysFirst

true​ に設定されている場合、(要素が複数回出現する場合でも) 最初に出現する要素を返します。この動作を有効にすると、パフォーマンスが低下します。

  • 型: Boolean​

  • デフォルト: false​

次の例は、このプロパティにより制御される動作を示しています。(DataWeave スクリプトが XML 入力で動作することを前提とします)。

XML 入力:
<root>
  <users>
     <user>
       <lname>chibana</lname>
       <name>Shoki</name>
     </user>
     <user>
       <name>Shoki</name>
       <name>Tomo</name>
     </user>
  </users>
</root>
DataWeave スクリプト:
%dw 2.0
output application/json
---
{
    shokis: payload.root.users.*user map $.name
}
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Shoki"
      ]
    }
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Tomo"
      ]
    }

com.mulesoft.dw.stacksize

スタックの最大サイズを設定します。関数の再帰が深すぎると、​Stack Overflow.Max stack is 256.​ などのエラーがスローされます。

  • 型: Number​

  • デフォルト: 256​

com.mulesoft.dw.xml.supportDTD

DTD 処理を有効にするか無効にするかを制御します。このプロパティが ​false​ に設定されている場合、内部と外部の両方のサブセットの処理がスキップされます。このプロパティのデフォルトは、2021 年 5 月の DataWeave バージョン 2.3.0 のパッチを含む Mule バージョン 4.3.0-20210427 で ​true​ から ​false​ に変更されました。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.track.cursor.close

true​ に設定されている場合、​CursorProvider#close()​ メソッドのコール元であるスタックトレースを追跡します。 このプロパティは、すでに閉じられているカーソルで ​CursorProvider#openCursor()​ がコールされた場合など、トラブルシューティング目的で使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.xml_reader.honourMixedContentStructure

このプロパティが ​true​ に設定されている場合、DataWeave ではテキストを混在コンテンツと一緒に 1 つのテキスト項目にグループ化するのでなく、混在コンテンツ構造を保持します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.charbuffersize

ライターが使用するバッファのサイズ (バイト) を決定します。

  • 型: Number​

  • デフォルト: 4096​

mule.weave.script.parser.cache.size

キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。

  • 型: Number​

  • デフォルト: 10000

# DataWeave システムプロパティ
プロパティ 説明

com.mulesoft.dw.buffered_char_sequence.enabled

内部の ​BufferedCharSequence​ 改善を有効にするか、無効にするかを制御します。このプロパティが ​true​ に設定されると、DataWeave は大きな項目 (1.5M 超) をメモリに読み込みません。DataWeave はこれらの項目をチャンクで読み取ります。この機能はパフォーマンスを抑えてメモリ不足エラーを防止します。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.buffersize

処理された入力および出力を保持するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-index-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​ (バイト)

  • デフォルト: 8192​ バイト (8 KB)

com.mulesoft.dw.coercionexception.verbose

デフォルトでは、型強制に失敗したデータに関する詳細を型強制例外に追加します。このプロパティが ​false​ に設定されている場合、追加のメタデータは表示されません。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.date_minus_back_compatibility

このプロパティが ​true​ に設定されている場合、2.3.0 で変更された​時間の加算と減算​動作を復元します。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.3、2.4

例:

%dw 2.0
output application/dw
---
|2019-10-01| - |2018-09-23|
  • DataWeave 2.3.0 では、この式は PT8952H を返します。

  • DataWeave 2.2.0 では、この式は P1Y8D を返します。

com.mulesoft.dw.directbuffer.disable

DataWeave でオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave では、内部バッファにはオフヒープメモリが使用されます。このため、少量のメモリのみを搭載するシステムでは、問題が発生する可能性があります。​DataWeave のメモリ管理​を参照してください。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files

実験的機能​: このプロパティが ​true​ に設定されている場合、入力コンテキストと失敗したスクリプトをフォルダーにダンプします。この動作により、失敗したスクリプトとスクリプトを失敗させたデータを追跡できます。これは、受け取った入力データが有効であることを確認するのに特に役立ちます。多くの場合、上流コンポーネントで無効なデータが生成されると、間違ったスクリプトは失敗します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dump_folder

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合にファイルをダンプするパスを指定します。

  • 型: String​

  • デフォルト: java.io.tmpdir​ (システムプロパティ値)

com.mulesoft.dw.dump_folder​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dumper_fill_stacktrace

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合、dumper 例外の StackTrace を追加します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dumper_fill_stacktrace​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。DataWeave スクリプトが失敗した場合のトラブルシューティングを参照してください。

com.mulesoft.dw.error_value_length

ユーザーに表示する例外メッセージの最大長を設定します。メッセージはこの最大長で切り捨てられます。この設定は、長い例外メッセージを回避するのに役立ちます。

  • 型: Number​

  • デフォルト: 80​

com.mulesoft.dw.indexsize

インデックス付けされたリーダーで使用するメモリ内のページの最大サイズ (バイト単位) を設定します。

  • 型: Number​

  • デフォルト: 1572864​

com.mulesoft.dw.javaSqlDateToDate

設定すると、​java.sql.Date​ は DataWeave の ​Date​ 型にマップされます。​false​ の場合、​DateTime​ にマップされます。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.4、2.5

com.mulesoft.dw.max_memory_allocation

オフヒープメモリプールの各スロットのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-input-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。DataWeave メモリ管理を参照してください。

  • 型: Number​

  • デフォルト: 1572864​ (1.5 MB)

com.mulesoft.dw.memory_pool_size

メモリプールのスロットの数を設定します。DataWeave バッファでは、定義されたサイズ (​com.mulesoft.dw.memory_pool_size​ * ​com.mulesoft.dw.max_memory_allocation​) までプールのオフヒープメモリが使用されます。残りはヒープメモリを使用して割り当てられます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 60​

com.mulesoft.dw.multipart.defaultContentType

Content-Type​ が指定されていない場合に ​multipart/*​ 形式の部分で使用するデフォルトのコンテンツタイプを設定します。マルチパートリーダープロパティ ​defaultContentType​ も参照してください。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

  • 型: String​

  • デフォルト: application/octet-stream​

com.mulesoft.dw.stacksize

スタックの最大サイズを設定します。関数の再帰が深すぎると、Stack Overflow などのエラーがスローされます。最大サイズ制限は 256 です。

  • 型: Number​

  • デフォルト: 256​

com.mulesoft.dw.track.cursor.close

true​ に設定されている場合、​CursorProvider#close()​ メソッドのコール元であるスタックトレースを追跡します。 このプロパティは、すでに閉じられているカーソルで ​CursorProvider#openCursor()​ がコールされた場合など、トラブルシューティング目的で使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.valueSelector.selectsAlwaysFirst

true​ に設定されている場合、(要素が複数回出現する場合でも) 最初に出現する要素を返します。この動作を有効にすると、パフォーマンスが低下します。

  • 型: Boolean​

  • デフォルト: false​

次の例は、このプロパティにより制御される動作を示しています。(DataWeave スクリプトが XML 入力で動作することを前提とします)。

XML 入力:
<root>
  <users>
     <user>
       <lname>chibana</lname>
       <name>Shoki</name>
     </user>
     <user>
       <name>Shoki</name>
       <name>Tomo</name>
     </user>
  </users>
</root>
DataWeave スクリプト:
%dw 2.0
output application/json
---
{
    shokis: payload.root.users.*user map $.name
}
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Shoki"
      ]
    }
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Tomo"
      ]
    }

使用可能な言語レベル: 2.3、2.4

com.mulesoft.dw.xml_reader.honourMixedContentStructure

このプロパティが ​true​ に設定されている場合、DataWeave ではテキストを混在コンテンツと一緒に 1 つのテキスト項目にグループ化するのでなく、混在コンテンツ構造を保持します。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.4

com.mulesoft.dw.xml_reader.parseDtd

このプロパティが ​true​ に設定されている場合、DataWeave で文書型宣言が解析されます。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.5

com.mulesoft.dw.xml.supportDTD

DTD 処理を有効にするか無効にするかを制御します。このプロパティが ​false​ に設定されている場合、内部と外部の両方のサブセットの処理がスキップされます。このプロパティのデフォルトは、2021 年 5 月の DataWeave バージョン 2.3.0 のパッチを含む Mule バージョン 4.3.0-20210427 で ​true​ から ​false​ に変更されました。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.charbuffersize

ライターが使用するバッファのサイズ (バイト) を決定します。

  • 型: Number​

  • デフォルト: 4096​

mule.weave.script.parser.cache.size

キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。

  • 型: Number​

  • デフォルト: 10000

# DataWeave システムプロパティ DataWeave では、いくつかのシステムプロパティがサポートされます。これらのプロパティをアプリケーションの開発およびデプロイメントで使用するには、​[「システムプロパティ」](#mule-runtime:mule-app-properties-system.adoc)​を参照してください。
プロパティ 説明

com.mulesoft.dw.buffered_char_sequence.enabled

内部の ​BufferedCharSequence​ 改善を有効にするか、無効にするかを制御します。このプロパティが ​true​ に設定されると、DataWeave は大きな項目 (1.5M 超) をメモリに読み込みません。DataWeave はこれらの項目をチャンクで読み取ります。この機能はパフォーマンスを抑えてメモリ不足エラーを防止します。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.buffersize

処理された入力および出力を保持するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-index-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 8192​

com.mulesoft.dw.charbuffersize

ライターが使用するバッファのサイズ (バイト) を決定します。

  • 型: Number​

  • デフォルト: 4096​

com.mulesoft.dw.coercionexception.verbose

デフォルトでは、型強制に失敗したデータに関する詳細を型強制例外に追加します。このプロパティが ​false​ に設定されている場合、追加のメタデータは表示されません。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.cpulimit.watchdog

true​ に設定すると、スクリプトの実行時間が監視および制限されます。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.date_minus_back_compatibility

このプロパティが ​true​ に設定されている場合、2.3.0 で変更された​時間の加算と減算​動作を復元します。

たとえば、次の DataWeave スクリプトについて考えてみます。

%dw 2.0
output application/dw
---
|2019-10-01| - |2018-09-23|
  • DataWeave 2.3.0 では、この式は PT8952H を返します。

  • DataWeave 2.2.0 では、この式は P1Y8D を返します。

  • Type: Boolean

  • Default: false

Available for language levels: 2.3, 2.4, 2.5

com.mulesoft.dw.decode_binaries_with_writer_encoding

true​ に設定すると、JsonWriter エンコードを使用して JSON のバイナリ値が書き込まれます。それ以外の場合、プロパティは値スキーマで定義されたエンコードまたはデフォルトのエンコードを使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.defaultOperator.disableExceptionHandling

true​ に設定すると、DataWeave はランタイム例外をキャッチする ​default​ 演算子を無効にします。 default​ 演算子を有効にすると、ランタイム例外が発生したときに ​default value​ が返されません。 false​ に設定すると、​default​ 演算子はランタイム例外をキャッチし、​default value​ を返します。

  • 型: Boolean​

  • デフォルト: true​

使用可能な言語レベル: 2.5、2.6、2.7、2.8、2.9

com.mulesoft.dw.directbuffer.disable

DataWeave でオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave では、内部バッファにはオフヒープメモリが使用されます。このため、少量のメモリのみを搭載するシステムでは、問題が発生する可能性があります。​DataWeave のメモリ管理​を参照してください。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files

実験的機能​: このプロパティが ​true​ に設定されている場合、入力コンテキストと失敗したスクリプトをフォルダーにダンプします。この動作により、失敗したスクリプトとスクリプトを失敗させたデータを追跡できます。これは、受け取った入力データが有効であることを確認するのに特に役立ちます。多くの場合、上流コンポーネントで無効なデータが生成されると、間違ったスクリプトは失敗します。

com.mulesoft.dw.dump_folder

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合にファイルをダンプするパスを指定します。

com.mulesoft.dw.dumper_fill_stacktrace

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合、dumper 例外の StackTrace を追加します。

com.mulesoft.dw.error_value_length

ユーザーに表示する例外メッセージの最大長を設定します。メッセージはこの最大長で切り捨てられます。この設定は、長い例外メッセージを回避するのに役立ちます。

  • 型: Number​

  • デフォルト: 80​

com.mulesoft.dw.indexsize

インデックス付けされたリーダーで使用するメモリ内のページの最大サイズ (バイト単位) を設定します。

  • 型: Number​

  • デフォルト: 1572864​

com.mulesoft.dw.java.disable_set_accessible

true​ に設定すると、JavaModuleLoader はリフレクション経由で使用される項目またはメソッドのアクセス可能フラグを変更しません。デフォルト値は、現在使用されている JDK バージョンと言語レベルを評価します。使用されている JDK が 17 以降で、言語バージョンが 2.6 以降の場合、値は ​true​ になります。

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル: 2.5

    • true​ になる言語レベル: 2.6、2.7、2.8、2.9

使用可能な言語レベル: 2.5、2.6、2.7、2.8、2.9

com.mulesoft.dw.java.stacktrace

Java スタックトレースの深さを指定します。

  • 型: Number​

  • デフォルト: 6​

com.mulesoft.dw.javaSqlDateToDate

設定すると、​java.sql.Date​ は DataWeave の ​Date​ 型にマップされます。​false​ の場合、​DateTime​ にマップされます。

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル: 2.4

    • true​ になる言語レベル: 2.5

使用可能な言語レベル: 2.4、2.5

com.mulesoft.dw.max_memory_allocation

オフヒープメモリプールの各スロットのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-input-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。

  • 型: Number​

  • デフォルト: 1572864​

com.mulesoft.dw.memory_pool_size

メモリプールのスロットの数を設定します。DataWeave バッファでは、定義されたサイズ (​com.mulesoft.dw.memory_pool_size​ * ​com.mulesoft.dw.max_memory_allocation​) までプールのオフヒープメモリが使用されます。残りはヒープメモリを使用して割り当てられます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 60​

com.mulesoft.dw.multipart.defaultContentType

Content-Type​ が指定されていない場合に ​multipart/*​ 形式の部分で使用するデフォルトのコンテンツタイプを設定します。マルチパートリーダープロパティ ​defaultContentType​ も参照してください。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

  • 型: String​

  • デフォルト: application/octet-stream​

com.mulesoft.dw.scheduler.size

DataWeave スケジューラースレッドプールのサイズを指定します。

  • 型: Number​

  • デフォルト: 100​

com.mulesoft.dw.stacksize

スタックの最大サイズを設定します。関数の再帰が深すぎると、Stack Overflow などのエラーがスローされます。最大サイズ制限は 256 です。

  • 型: Number​

  • デフォルト: 256​

com.mulesoft.dw.stripTrailingZeroes

false​ に設定すると、DataWeave は 2.4.0 に存在する一部の形式 (DataWeave、JSON、YAML など) の末尾の 0 を保持する動作を復元します。 2.5.0 以降、末尾の 0 はデフォルトで削除されます。 .DataWeave スクリプト:

%dw 2.4
output application/json
---
1.00
  • com.mulesoft.dw.stripTrailingZeroes​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。 ​1.00​

  • com.mulesoft.dw.stripTrailingZeroes​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。 ​1​

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル:

    • true​ になる言語レベル: 2.5、2.6、2.7、2.8、2.9

使用可能な言語レベル: 2.5、2.6、2.7、2.8、2.9

com.mulesoft.dw.telemetry.bufferSize

テレメトリーイベントバッファのサイズ (バイト) を決定します。

  • 型: Number​

  • デフォルト: 1048576​

com.mulesoft.dw.telemetry.enabled

Dataweave テレメトリーサービスを有効にします。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.telemetry.memory

true​ に設定した場合、テレメトリーサービスはメモリ使用量統計を収集します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.telemetry.sync

true​ に設定すると、テレメトリーイベントが同期的にパブリッシュされます。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.track.cursor.close

true​ に設定すると、{CursorProvider#close()} メソッドのコール元であるスタックトレースを追跡します。このプロパティは、すでに閉じられているカーソルで {CursorProvider#openCursor()} がコールされた場合など、トラブルシューティング目的で使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.valueSelector.selectsAlwaysFirst

true​ に設定すると、(要素が複数回出現する場合でも) 最初に出現する要素を返します。この動作を有効にすると、パフォーマンスが低下します。

次の例は、このプロパティにより制御される動作を示しています。(DataWeave スクリプトが XML 入力で動作することを前提とします)。

XML 入力:
<root>
  <users>
     <user>
       <lname>chibana</lname>
       <name>Shoki</name>
     </user>
     <user>
       <name>Shoki</name>
       <name>Tomo</name>
     </user>
  </users>
</root>
DataWeave スクリプト:
%dw 2.0
output application/json
---
{
    shokis: payload.root.users.*user map $.name
}
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Shoki"
      ]
    }
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Tomo"
      ]
    }
  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.3、2.4、2.5

com.mulesoft.dw.workingdirectory.base

一時ファイルが書き込まれる基本ディレクトリを指定します。

  • 型: String​

  • デフォルト: java.io.tmpdir (システムプロパティ値)​

com.mulesoft.dw.workingdirectory.delete_sync

このプロパティが ​true​ に設定されている場合、ファイルの削除が同期的に行われます。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.workingdirectory.max_output_buffer_size

書き込まれるファイルの最大サイズ (バイト) を指定します。

  • 型: Long​

  • デフォルト: -1​

com.mulesoft.dw.workingdirectory.tracking

このプロパティが ​true​ に設定されている場合、各スクリプトは独自のディレクトリに一時ファイルを生成します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.xml.supportDTD

DTD 処理を有効にするか無効にするかを制御します。このプロパティが ​false​ に設定されている場合、内部と外部の両方のサブセットの処理がスキップされます。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.xml_reader.honourMixedContentStructure

true​ に設定すると、DataWeave ではテキストを混在コンテンツと一緒に 1 つのテキスト項目にグループ化するのでなく、混在コンテンツ構造を保持します。

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル: 2.4

    • true​ になる言語レベル: 2.5

使用可能な言語レベル: 2.4、2.5

com.mulesoft.dw.xml_writer.declareXmlNamespace

false​ に設定すると、DataWeave は ​xml​ の暗黙的な名前空間を宣言しません。

  • 型: Boolean​

  • デフォルト:

    • true​ になる言語レベル: 2.4、2.5

    • false​ になる言語レベル: 2.6

使用可能な言語レベル: 2.4、2.5、2.6

mule.dw.java_module_loader_deterministic_functions_ordering

true​ に設定すると、JavaModuleLoader は Java クラスのメソッドを確定的順序で読み込みます。DataWeave は、メソッド名、パラメーター数、そして最後にパラメーターの型名を考慮します。

  • 型: Boolean​

  • デフォルト: true​ になる言語レベル: 2.5、2.6

使用可能な言語レベル: 2.5、2.6

mule.dw.remove_shadowed_implicit_inputs

同じ名前の変数がルートレベルで宣言され、このプロパティが ​true​ に設定されている場合、DataWeave は暗黙的な入力を削除します。

  • 型: Boolean​

  • デフォルト: true​

# DataWeave システムプロパティ
プロパティ 説明

com.mulesoft.dw.buffered_char_sequence.enabled

内部の ​BufferedCharSequence​ 改善を有効にするか、無効にするかを制御します。このプロパティが ​true​ に設定されると、DataWeave は大きな項目 (1.5M 超) をメモリに読み込みません。DataWeave はこれらの項目をチャンクで読み取ります。この機能はパフォーマンスを抑えてメモリ不足エラーを防止します。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.buffersize

処理された入力および出力を保持するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-index-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​ (バイト)

  • デフォルト: 8192​ バイト (8 KB)

com.mulesoft.dw.coercionexception.verbose

デフォルトでは、型強制に失敗したデータに関する詳細を型強制例外に追加します。このプロパティが ​false​ に設定されている場合、追加のメタデータは表示されません。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.date_minus_back_compatibility

このプロパティが ​true​ に設定されている場合、2.3.0 で変更された​時間の加算と減算​動作を復元します。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.3、2.4

例:

%dw 2.0
output application/dw
---
|2019-10-01| - |2018-09-23|
  • DataWeave 2.3.0 では、この式は PT8952H を返します。

  • DataWeave 2.2.0 では、この式は P1Y8D を返します。

com.mulesoft.dw.directbuffer.disable

DataWeave でオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave では、内部バッファにはオフヒープメモリが使用されます。このため、少量のメモリのみを搭載するシステムでは、問題が発生する可能性があります。​DataWeave のメモリ管理​を参照してください。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files

実験的機能​: このプロパティが ​true​ に設定されている場合、入力コンテキストと失敗したスクリプトをフォルダーにダンプします。この動作により、失敗したスクリプトとスクリプトを失敗させたデータを追跡できます。これは、受け取った入力データが有効であることを確認するのに特に役立ちます。多くの場合、上流コンポーネントで無効なデータが生成されると、間違ったスクリプトは失敗します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dump_folder

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合にファイルをダンプするパスを指定します。

  • 型: String​

  • デフォルト: java.io.tmpdir​ (システムプロパティ値)

com.mulesoft.dw.dump_folder​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。​「DataWeave スクリプトが失敗した場合のトラブルシューティング」​を参照してください。

com.mulesoft.dw.dumper_fill_stacktrace

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合、dumper 例外の StackTrace を追加します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dumper_fill_stacktrace​ は​実験的機能​であり、DataWeave の将来のバージョンで変更または削除される場合があります。DataWeave スクリプトが失敗した場合のトラブルシューティングを参照してください。

com.mulesoft.dw.error_value_length

ユーザーに表示する例外メッセージの最大長を設定します。メッセージはこの最大長で切り捨てられます。この設定は、長い例外メッセージを回避するのに役立ちます。

  • 型: Number​

  • デフォルト: 80​

com.mulesoft.dw.indexsize

インデックス付けされたリーダーで使用するメモリ内のページの最大サイズ (バイト単位) を設定します。

  • 型: Number​

  • デフォルト: 1572864​

com.mulesoft.dw.javaSqlDateToDate

設定すると、​java.sql.Date​ は DataWeave の ​Date​ 型にマップされます。​false​ の場合、​DateTime​ にマップされます。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.4、2.5

com.mulesoft.dw.max_memory_allocation

オフヒープメモリプールの各スロットのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-input-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。DataWeave メモリ管理を参照してください。

  • 型: Number​

  • デフォルト: 1572864​ (1.5 MB)

com.mulesoft.dw.memory_pool_size

メモリプールのスロットの数を設定します。DataWeave バッファでは、定義されたサイズ (​com.mulesoft.dw.memory_pool_size​ * ​com.mulesoft.dw.max_memory_allocation​) までプールのオフヒープメモリが使用されます。残りはヒープメモリを使用して割り当てられます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 60​

com.mulesoft.dw.multipart.defaultContentType

Content-Type​ が指定されていない場合に ​multipart/*​ 形式の部分で使用するデフォルトのコンテンツタイプを設定します。マルチパートリーダープロパティ ​defaultContentType​ も参照してください。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

  • 型: String​

  • デフォルト: application/octet-stream​

com.mulesoft.dw.stacksize

スタックの最大サイズを設定します。関数の再帰が深すぎると、Stack Overflow などのエラーがスローされます。最大サイズ制限は 256 です。

  • 型: Number​

  • デフォルト: 256​

com.mulesoft.dw.track.cursor.close

true​ に設定されている場合、​CursorProvider#close()​ メソッドのコール元であるスタックトレースを追跡します。 このプロパティは、すでに閉じられているカーソルで ​CursorProvider#openCursor()​ がコールされた場合など、トラブルシューティング目的で使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.valueSelector.selectsAlwaysFirst

true​ に設定されている場合、(要素が複数回出現する場合でも) 最初に出現する要素を返します。この動作を有効にすると、パフォーマンスが低下します。

  • 型: Boolean​

  • デフォルト: false​

次の例は、このプロパティにより制御される動作を示しています。(DataWeave スクリプトが XML 入力で動作することを前提とします)。

XML 入力:
<root>
  <users>
     <user>
       <lname>chibana</lname>
       <name>Shoki</name>
     </user>
     <user>
       <name>Shoki</name>
       <name>Tomo</name>
     </user>
  </users>
</root>
DataWeave スクリプト:
%dw 2.0
output application/json
---
{
    shokis: payload.root.users.*user map $.name
}
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Shoki"
      ]
    }
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Tomo"
      ]
    }

使用可能な言語レベル: 2.3、2.4

com.mulesoft.dw.xml_reader.honourMixedContentStructure

このプロパティが ​true​ に設定されている場合、DataWeave ではテキストを混在コンテンツと一緒に 1 つのテキスト項目にグループ化するのでなく、混在コンテンツ構造を保持します。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.4

com.mulesoft.dw.xml_reader.parseDtd

このプロパティが ​true​ に設定されている場合、DataWeave で文書型宣言が解析されます。

  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.5

com.mulesoft.dw.xml.supportDTD

DTD 処理を有効にするか無効にするかを制御します。このプロパティが ​false​ に設定されている場合、内部と外部の両方のサブセットの処理がスキップされます。このプロパティのデフォルトは、2021 年 5 月の DataWeave バージョン 2.3.0 のパッチを含む Mule バージョン 4.3.0-20210427 で ​true​ から ​false​ に変更されました。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.charbuffersize

ライターが使用するバッファのサイズ (バイト) を決定します。

  • 型: Number​

  • デフォルト: 4096​

mule.weave.script.parser.cache.size

キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。

  • 型: Number​

  • デフォルト: 10000

# DataWeave システムプロパティ DataWeave では、いくつかのシステムプロパティがサポートされます。これらのプロパティをアプリケーションの開発およびデプロイメントで使用するには、​[「システムプロパティ」](#mule-runtime:mule-app-properties-system.adoc)​を参照してください。
プロパティ 説明

com.mulesoft.dw.buffered_char_sequence.enabled

内部の ​BufferedCharSequence​ 改善を有効にするか、無効にするかを制御します。このプロパティが ​true​ に設定されると、DataWeave は大きな項目 (1.5M 超) をメモリに読み込みません。DataWeave はこれらの項目をチャンクで読み取ります。この機能はパフォーマンスを抑えてメモリ不足エラーを防止します。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.buffersize

処理された入力および出力を保持するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-index-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。​DataWeave のメモリ管理​を参照してください。

  • 型: Integer​

  • デフォルト: 8192​

com.mulesoft.dw.charbuffersize

ライターが使用するバッファのサイズ (バイト) を決定します。

  • 型: Number​ (バイト)

  • デフォルト: 4096​

com.mulesoft.dw.coercionexception.verbose

デフォルトでは、型強制に失敗したデータに関する詳細を型強制例外に追加します。このプロパティが ​false​ に設定されている場合、追加のメタデータは表示されません。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.cpulimit.watchdog

true​ に設定すると、スクリプトの実行時間が監視および制限されます。

  • 型: Boolean​

  • デフォルト: true​

com.mulesoft.dw.date_minus_back_compatibility

このプロパティが ​true​ に設定されている場合、2.3.0 で変更された​時間の加算と減算​動作を復元します。

たとえば、次の DataWeave スクリプトについて考えてみます。

%dw 2.0
output application/dw
---
|2019-10-01| - |2018-09-23|
  • DataWeave 2.3.0 では、この式は PT8952H を返します。

  • DataWeave 2.2.0 では、この式は P1Y8D を返します。

  • Type: Boolean

  • Default: false

Available for language levels: 2.3, 2.4, 2.5

com.mulesoft.dw.decode_binaries_with_writer_encoding

true​ に設定すると、JsonWriter エンコードを使用して JSON のバイナリ値が書き込まれます。それ以外の場合、プロパティは値スキーマで定義されたエンコードまたはデフォルトのエンコードを使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.defaultOperator.disableExceptionHandling

true​ に設定すると、DataWeave はランタイム例外をキャッチする ​default​ 演算子を無効にします。 default​ 演算子を有効にすると、ランタイム例外が発生したときに​デフォルト値​は返されません。 false​ に設定すると、​default​ 演算子はランタイム例外をキャッチし、​default value​ を返します。

  • 型: Boolean​

  • デフォルト: true​

使用可能な言語レベル: 2.5、2.6、2.7、2.8、2.9

com.mulesoft.dw.directbuffer.disable

DataWeave でオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave では、内部バッファにはオフヒープメモリが使用されます。このため、少量のメモリのみを搭載するシステムでは、問題が発生する可能性があります。​DataWeave のメモリ管理​を参照してください。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.dump_files

実験的機能​: このプロパティが ​true​ に設定されている場合、入力コンテキストと失敗したスクリプトをフォルダーにダンプします。この動作により、失敗したスクリプトとスクリプトを失敗させたデータを追跡できます。これは、受け取った入力データが有効であることを確認するのに特に役立ちます。多くの場合、上流コンポーネントで無効なデータが生成されると、間違ったスクリプトは失敗します。

com.mulesoft.dw.dump_folder

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合にファイルをダンプするパスを指定します。

com.mulesoft.dw.dumper_fill_stacktrace

実験的機能​: com.mulesoft.dw.dump_files​ が ​true​ に設定されている場合、dumper 例外の StackTrace を追加します。

com.mulesoft.dw.error_value_length

ユーザーに表示する例外メッセージの最大長を設定します。メッセージはこの最大長で切り捨てられます。この設定は、長い例外メッセージを回避するのに役立ちます。

  • 型: Number​

  • デフォルト: 80​

com.mulesoft.dw.indexsize

インデックス付けされたリーダーで使用するメモリ内のページの最大サイズ (バイト単位) を設定します。

  • 型: Number (バイト)​

  • デフォルト: 1572864​

com.mulesoft.dw.java.disable_set_accessible

true​ に設定すると、JavaModuleLoader では、リフレクションを介して使用する項目またはメソッドのアクセス可能なフラグは変更されません。デフォルト値は、現在使用されている JDK バージョンと言語レベルを評価します。使用されている JDK が 17 以降で、言語バージョンが 2.6 以降の場合、値は ​true​ になります。

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル: 2.5

    • true​ になる言語レベル: 2.6、2.7、2.8、2.9

使用可能な言語レベル: 2.5、2.6、2.7、2.8、2.9

com.mulesoft.dw.java.stacktrace

Java スタックトレースの深さを指定します。

  • 型: Number​

  • デフォルト: 6​

com.mulesoft.dw.javaSqlDateToDate

設定すると、​java.sql.Date​ は DataWeave の ​Date​ 型にマップされます。​false​ の場合、​DateTime​ にマップされます。

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル: 2.4

    • true​ になる言語レベル: 2.5

使用可能な言語レベル: 2.4、2.5

com.mulesoft.dw.max_memory_allocation

オフヒープメモリプールの各スロットのサイズ (バイト単位) を設定します。DataWeave では、このサイズを超えるペイロードは一時ファイル ​dw-buffer-input-${count}.tmp​ および ​dw-buffer-output-${count}.tmp​ に保存されます。

  • 型: Number (バイト)​

  • デフォルト: 1572864​

com.mulesoft.dw.memory_pool_size

メモリプールのスロットの数を設定します。DataWeave バッファでは、定義されたサイズ (​com.mulesoft.dw.memory_pool_size​ * ​com.mulesoft.dw.max_memory_allocation​) までプールのオフヒープメモリが使用されます。残りはヒープメモリを使用して割り当てられます。​DataWeave のメモリ管理​を参照してください。

  • 型: Number​

  • デフォルト: 60​

com.mulesoft.dw.multipart.defaultContentType

Content-Type​ が指定されていない場合に ​multipart/*​ 形式の部分で使用するデフォルトのコンテンツタイプを設定します。マルチパートリーダープロパティ ​defaultContentType​ も参照してください。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

  • 型: String​

  • デフォルト: application/octet-stream​

com.mulesoft.dw.scheduler.size

DataWeave スケジューラースレッドプールのサイズを指定します。

  • 型: Number​

  • デフォルト: 100​

com.mulesoft.dw.stacksize

スタックの最大サイズを設定します。関数の再帰が深すぎると、Stack Overflow などのエラーがスローされます。最大サイズ制限は 256 です。

  • 型: Number​

  • デフォルト: 256​

com.mulesoft.dw.stripTrailingZeroes

false​ に設定すると、DataWeave は 2.4.0 に存在する一部の形式 (DataWeave、JSON、YAML など) の末尾の 0 を保持する動作を復元します。 2.5.0 以降、末尾の 0 はデフォルトで削除されます。 .DataWeave スクリプト:

%dw 2.4
output application/json
---
1.00
  • com.mulesoft.dw.stripTrailingZeroes​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。 ​1.00​

  • com.mulesoft.dw.stripTrailingZeroes​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。 ​1​

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル:

    • true​ になる言語レベル: 2.5、2.6、2.7、2.8、2.9

使用可能な言語レベル: 2.5、2.6、2.7、2.8、2.9

com.mulesoft.dw.telemetry.bufferSize

テレメトリーイベントバッファのサイズ (バイト) を決定します。

  • 型: Number (バイト)​

  • デフォルト: 1048576​

com.mulesoft.dw.telemetry.enabled

Dataweave テレメトリーサービスを有効にします。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.telemetry.memory

true​ に設定した場合、テレメトリーサービスはメモリ使用量統計を収集します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.telemetry.sync

true​ に設定すると、テレメトリーイベントが同期的にパブリッシュされます。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.track.cursor.close

true​ に設定すると、{CursorProvider#close()} メソッドのコール元であるスタックトレースを追跡します。このプロパティは、すでに閉じられているカーソルで {CursorProvider#openCursor()} がコールされた場合など、トラブルシューティング目的で使用します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.valueSelector.selectsAlwaysFirst

true​ に設定すると、(要素が複数回出現する場合でも) 最初に出現する要素を返します。この動作を有効にすると、パフォーマンスが低下します。

次の例は、このプロパティにより制御される動作を示しています。(DataWeave スクリプトが XML 入力で動作することを前提とします)。

XML 入力:
<root>
  <users>
     <user>
       <lname>chibana</lname>
       <name>Shoki</name>
     </user>
     <user>
       <name>Shoki</name>
       <name>Tomo</name>
     </user>
  </users>
</root>
DataWeave スクリプト:
%dw 2.0
output application/json
---
{
    shokis: payload.root.users.*user map $.name
}
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​true​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Shoki"
      ]
    }
  • com.mulesoft.dw.valueSelector.selectsAlwaysFirst​ が ​false​ に設定されている場合、スクリプトは次の出力を返します。

    {
      "shokis": [
        "Shoki",
        "Tomo"
      ]
    }
  • 型: Boolean​

  • デフォルト: false​

使用可能な言語レベル: 2.3、2.4、2.5

com.mulesoft.dw.workingdirectory.base

一時ファイルが書き込まれる基本ディレクトリを指定します。

  • 型: String​

  • デフォルト: java.io.tmpdir (システムプロパティ値)​

com.mulesoft.dw.workingdirectory.delete_sync

このプロパティが ​true​ に設定されている場合、ファイルの削除が同期的に行われます。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.workingdirectory.max_output_buffer_size

書き込まれるファイルの最大サイズ (バイト) を指定します。

  • 型: Number (バイト)​

  • デフォルト: -1​

com.mulesoft.dw.workingdirectory.tracking

このプロパティが ​true​ に設定されている場合、各スクリプトは独自のディレクトリに一時ファイルを生成します。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.xml.supportDTD

DTD 処理を有効にするか無効にするかを制御します。このプロパティが ​false​ に設定されている場合、内部と外部の両方のサブセットの処理がスキップされます。

  • 型: Boolean​

  • デフォルト: false​

com.mulesoft.dw.xml_reader.honourMixedContentStructure

true​ に設定すると、DataWeave ではテキストを混在コンテンツと一緒に 1 つのテキスト項目にグループ化するのでなく、混在コンテンツ構造を保持します。

  • 型: Boolean​

  • デフォルト:

    • false​ になる言語レベル: 2.4

    • true​ になる言語レベル: 2.5

使用可能な言語レベル: 2.4、2.5

com.mulesoft.dw.xml_writer.declareXmlNamespace

false​ に設定すると、DataWeave では ​xml​ の暗黙的な名前空間は宣言されません。

  • 型: Boolean​

  • デフォルト:

    • true​ になる言語レベル: 2.4、2.5

    • false​ になる言語レベル: 2.6

使用可能な言語レベル: 2.4、2.5、2.6

mule.dw.java_module_loader_deterministic_functions_ordering

true​ に設定すると、JavaModuleLoader は Java クラスのメソッドを確定的順序で読み込みます。DataWeave は、メソッド名、パラメーター数、そして最後にパラメーターの型名を考慮します。

  • 型: Boolean​

  • デフォルト: true​

使用可能な言語レベル: 2.5、2.6

mule.dw.remove_shadowed_implicit_inputs

同じ名前の変数がルートレベルで宣言され、このプロパティが ​true​ に設定されている場合、DataWeave は暗黙的な入力を削除します。

  • 型: Boolean​

  • デフォルト: true​

# DataWeave スクリプト DataWeave は Mule フローで使用する主データ変換言語です。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 Transform Message コンポーネントでスタンドアロンの DataWeave スクリプトを記述できます。また、インライン DataWeave 式を記述すると、データを​_その場_​で変換し、さまざまなプロパティの値 (イベントプロセッサーまたはグローバル設定要素の設定項目など) を動的に設定することもできます。インライン DataWeave 式は ​`#[ ]`​ コードブロックで囲みます。たとえば、DataWeave 式を使用して、Choice ルーターの条件を設定したり、Set Payload または Set Variable コンポーネントの値を設定したりできます。 次の例の DataWeave コードでは、DataWeave の ​`now()`​ 関数を使用して、タイムスタンプ変数を現在時刻に設定しています。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave コードを​[外部ファイル](#dwl_file)​に保存して他の DataWeave スクリプトに読み込んだり、Mule アプリケーションのすべてのコンポーネントで共有できる再利用可能な DataWeave 関数のモジュール (ライブラリ) に DataWeave コードをファクタリングしたりすることもできます。 ## [](#dataweave-スクリプトの構造)DataWeave スクリプトの構造 DataWeave スクリプトとファイルは 2 つの主なセクションに分割されます。 - ヘッダー: 本文の式に適用するディレクティブを定義します (省略可能)。 - 本文: 出力構造を生成する式が含まれます。 ヘッダーを含めた場合、ヘッダーは本文の上に表示され、3 つのダッシュ ​`---`​ で構成される区切り文字で分離されます。 DataWeave ファイルの例を次に示します。このファイルでは、ヘッダーで出力ディレクティブを宣言し、その後の DataWeave 式で、子の 2 つのキー/値ペアを含むユーザーオブジェクトを作成します。 例: 簡単な DataWeave スクリプト ```dataweave %dw 2.0 output application/xml --- { user: { firstName: payload.user_firstname, lastName: payload.user_lastName } } ``` ## [](#dw_header)DataWeave ヘッダー この例は、ヘッダーディレクティブで使用できるキーワード (​`import`​、​`var`​ など) を示しています。 DataWeave スクリプト ```dataweave %dw 2.0 import * from dw::core::Arrays var myVar=13.15 fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } type Currency = String { format: "##"} ns ns0 http://www.abc.com output application/xml --- /* * Body here. * / ``` - `%dw`​: DataWeave バージョンは省略可能です。デフォルトは、​`2.0`​ です。 例: `%dw 2.0`​ - `output`​: スクリプトから出力される MIME タイプを特定する、よく使用されるディレクティブ。 例: `output application/xml`​ 有効な値: [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats)​。 デフォルト: 出力が指定されていない場合、デフォルトの出力は、スクリプトで使用されている入力 (ペイロード、変数など) を検査するアルゴリズムによって決まります。 1. 入力がない場合、デフォルトの ​`output application/java`​ になります。 2. すべての入力の MIME タイプが同じ場合、スクリプトの出力は同じ MIME タイプになります。たとえば、すべての入力が ​`application/json`​ の場合、​`output application/json`​ が出力されます。 3. 各入力の MIME タイプが異なり、出力が指定されていない場合、スクリプトは例外をスローして、出力の MIME タイプを指定するようにユーザーに知らせます。 指定できる出力のタイプは 1 つのみです。 - `import`​: DataWeave 関数モジュールをインポートします。​[「DataWeave 関数」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​を参照してください。 - `var`​: DataWeave スクリプトの本文全体で参照できる定数を定義するためのグローバル変数。 例 ```dataweave %dw 2.0 var conversionRate=13.15 output application/json --- { price_dollars: payload.price, price_localCurrency: payload.price * conversionRate } ``` 詳細は、​[「DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables)​を参照してください。 - `type`​: 式で使用できるカスタム型を指定します。 完全な例は、​[「DataWeave を使用した型の強制」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types-coercion)​を参照してください。 - `ns`​: 名前空間。名前空間をインポートするために使用します。 例 ```dataweave %dw 2.0 output application/xml ns ns0 http://www.abc.com ns ns1 http://www.123.com --- { ns0#myroot: { ns1#secondroot: "hello world" } } ``` - `fun`​: スクリプトの本文内からコールできるカスタム関数を作成します。 例 ```dataweave %dw 2.0 output application/json fun toUser(user) = {firstName: user.name, lastName: user.lastName} --- { user: toUser(payload) } ``` ### [](#インライン-dataweave-スクリプトにヘッダーを含める)インライン DataWeave スクリプトにヘッダーを含める インライン DataWeave スクリプトを記述する場合、DataWeave スクリプトのすべての行を 1 つの行にフラット化することで、ヘッダーディレクティブを含めることができます。小さな DataWeave スクリプトの場合、これにより、ヘッダーディレクティブをすばやく適用し (個別の Transform Message コンポーネントを追加して変数を設定する必要はありません)、次のイベントプロセッサーで変数を置き換えることができます。 たとえば、前述の Transform Message コンポーネントと同じ有効な XML 出力を作成する Mule 設定の XML を次に示します。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave ドキュメントに多くの​[変換例](#see_also)​が記載されています。 ## [](#dataweave-本文)DataWeave 本文 DataWeave 本文には、出力構造を生成する式が含まれます。MuleSoft では、DataWeave モデルを使用してデータを操作するための正規の方法 (クエリ、変換、ビルドプロセス) が提供されています。 DataWeave スクリプト用の JSON 入力を提供する簡単な例を次に示します。 例: JSON 入力 ```json { "message": "Hello world!" } ``` この DataWeave スクリプトは、上の JSON 入力のペイロード全体を取得して ​`application/xml`​ 形式に変換します。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- payload ``` 次の例は、DataWeave スクリプトから生成された XML 出力を示しています。 例: XML 出力 ```xml Hello world! ``` 上のスクリプトは JSON 入力を XML 出力に正常に変換します。 ## [](#エラー-スクリプティングエラーと書式設定エラー)エラー (スクリプティングエラーと書式設定エラー) DataWeave スクリプトは、DataWeave コーディングエラーを原因とするエラーと書式設定エラーを原因とするエラーをスローする可能性があります。このため、データ形式を変換する場合、言語と形式の両方の制約に留意することが重要です。たとえば、XML には単一ルートノードが必要です。​[上の DataWeave スクリプト](#script_output_xml)​を使用して次の JSON 入力を XML に変換しようとすると、JSON 入力に単一ルートがないためエラー (​`Unexpected internal error`​) が発生します。 例: JSON 入力 ```json { "size" : 1, "person": { "name": "Yoda" } } ``` スクリプトを作成するには、入力を JSON に似た ​[application/dw](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#format_dataweave)​ 形式に標準化することをお勧めします。実際に、エラーが発生した場合は、単に入力を ​`application/dw`​ に変換することができます。変換が成功した場合、エラーは書式設定エラーの可能性があります。変換が失敗した場合、エラーはコーディングエラーの可能性があります。 次の例では、出力形式を ​`application/dw`​ に変更します。 例: application/dw を出力する DataWeave スクリプト ```dataweave %dw 2.0 output application/dw --- payload ``` このスクリプトでは上記の ​[JSON 入力例](#json_input)​から ​`application/dw`​ 出力が正常に生成されることを確認できます。 例: application/dw 出力 ```dataweave { size: 1, person: { name: "Yoda" } } ``` つまり、前述のエラー (​`Unexpected internal error`​) は、コーディングではなく形式に固有のエラーであることがわかります。上記の ​`application/dw`​ 出力では、XML 形式で必要な単一ルート要素が提供されていないことを確認できます。​_XML_​ 出力用のスクリプトを修正するには、例えば次のように単一ルート要素をスクリプトに提供する必要があります。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- { "myroot" : payload } ``` 出力が XML の要件を満たすようになったため、出力ディレクティブを ​`application/xml`​ に戻すと、結果として有効な XML 出力が生成されます。 例: 単一 XML ルートを含む XML 出力 ```xml 1 Yoda ``` ## [](#dataweave-コメント)DataWeave コメント Java に似た構文を使用するコメントも DataWeave で受け入れられます。 ```dataweave %dw 2.0 output application/json --- /* Multi-line * comment syntax */ payload // Single-line comment syntax ```
Anypoint Studio で発生する可能性があるエラーを回避するには、DataWeave スクリプトの本文の最初の行がコメントである場合に、複数行のコメント構文 (​/*comment here*/​) を使用します。後続のスクリプトコメントには任意の構文 (​//comment​ または ​/*comment*/​) を使用できます
## [](#特殊文字のエスケープ)特殊文字のエスケープ DataWeave では、バックスラッシュ (​`\`​) を使用して、入力文字列で使用している特殊文字をエスケープします。 詳細は、​[「特殊文字のエスケープ」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types#escape-chars-string)​を参照してください。 DataWeave スクリプトの​_入力_​文字列では特殊文字がエスケープされますが、​_出力_​では、出力形式の要件に従ってエスケープされます。この要件は、​`application/json`​、​`application/xml`​、​`application/csv`​ などの形式によって異なる可能性があります。 この例では、二重引用符で囲まれた内部の二重引用符がエスケープされます。 DataWeave の例 ```txt %dw 2.0 output application/json --- { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "c": "double quote (\")", "e": `backtick (\`)` } ``` JSON 出力でも、出力が有効な JSON になるように二重引用符がエスケープされますが、他の文字はエスケープされません。 JSON 出力 ```json { "a": "something", "b": "dollar sign ($)", "c": "single quote (')", "c": "double quote (\")", "e": "backtick (`)" } ``` 次の例では、同じ文字がエスケープされますが、XML に出力されます。 DataWeave の例 ```txt %dw 2.0 output application/xml --- { xmlExample: { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "d": "double quote (\")", "e": `backtick (\`)` } } ``` XML 出力は、(JSON 出力とは異なり) 二重引用符をエスケープしなくても有効です。 XML 出力 ```xml something dollar sign ($) single quote (') double quote (") backtick (`) ``` ## [](#valid-identifiers)有効な識別子を宣言するためのルール 有効な識別子を宣言するには、その名前が次の要件を満たす必要があります。 - 大文字または小文字にかかわらずアルファベット文字 (a-z) で始まる必要があります。 - 名前の 2 文字目以降には、文字、数字、およびアンダースコア (​`_`​) の任意の組み合わせを含めることができます。 - 名前は DataWeave の予約済みのキーワード (完全なリストは、​[予約済みのキーワード](#reserved-keywords)​ を参照) に一致することはできません。 有効な識別子のいくつかの例を以下に示します。 - `myType`​ - `abc123`​ - `a1_3BC_22`​ - `Z_____4`​ - `F` 次の表で、無効な識別子の例と、無効になる理由を説明します。
Identifier (識別子) 問題

​123456

数字で始まることはできません。

​value$

特殊文字を含めることはできません。

​_number

アンダースコアで始まることはできません。

​type

予約済みのキーワードは使用できません。

### [](#reserved-keywords)予約済みのキーワード 有効な識別子は、予約済みの DataWeave キーワードに一致することはできません。 - `and` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators#logical_operators)​として予約済み - `as` [型強制](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types-coercion)​用に予約済み - `async` 予約済み - `case` `case`​ ステートメント用に予約済み。たとえば、​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-pattern-matching)​を実行したり、​[`update`​ 演算子](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators#update-operator)​で使用したりします。 - `default` パラメーターの​[デフォルト値](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-defaults)​の割り当て用に予約済み - `do` [`do`](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control)​ ステートメント用に予約済み - `else` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control)​を参照してください。 - `enum` 予約済み - `false` ブール値として予約済み - `for` 予約済み - `fun` [DataWeave ヘッダー](#dw_header)​ の関数定義用に予約済み - `if` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control)​を参照してください。 - `import` [DataWeave ヘッダー](#dw_header)​ の ​`import`​ ディレクティブ用に予約済み - `input` 予約済み - `is` 予約済み - `ns` [DataWeave ヘッダー](#dw_header)​ の名前空間定義用に予約済み - `null` 値 ​`null`​ として予約済み [「Null (dw::Core 型)」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types#dw_type_null)​を参照してください。 - `or` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators#logical_operators)​として予約済み - `output` [DataWeave ヘッダー](#dw_header)​ の ​`output`​ ディレクティブ用に予約済み - `private` 予約済み - `throw` 予約済み - `true` ブール値として予約済み - `type` [DataWeave ヘッダー](#dw_header)​ の型定義用に予約済み - `unless` 予約済み - `using` 後方互換性のために予約済み。​`do`​ で置き換えられます。 [「スコープ演算子とフローコントロール演算子」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators#scope-and-flow-control-operators)​を参照してください。 - `var` [DataWeave ヘッダー](#dw_header)​ の変数定義用に予約済み - `yield` 予約済み ## [](#dwl_file)dwl ファイル Transform や他のコンポーネント内で DataWeave スクリプトを指定するのに加えて、​`.dwl`​ ファイル内でスクリプトを指定することもできます。Studio プロジェクトでは、スクリプトファイルは ​`src/main/resources`​ に保存されます。 Mule アプリケーションの XML では、​`${file::filename}`​ 構文を使用して、​`dwl`​ ファイル内のスクリプトを、式を期待している XML タグに送信することができます。たとえば、次の Choice ルーターの ​`when expression="${file::someFile.dwl}"`​ を参照してください。 ```xml ``` ## [](#see_also)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave 関数](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) - [関数とラムダ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types#functions-and-lambdas) # DataWeave スクリプト DataWeave は Mule フローで使用する主データ変換言語です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Transform Message コンポーネントでスタンドアロンの DataWeave スクリプトを記述できます。また、インライン DataWeave 式を記述すると、データを​_その場_​で変換し、さまざまなプロパティの値 (イベントプロセッサーまたはグローバル設定要素の設定項目など) を動的に設定することもできます。インライン DataWeave 式は ​`#[ ]`​ コードブロックで囲みます。たとえば、DataWeave 式を使用して、Choice ルーターの条件を設定したり、Set Payload または Set Variable コンポーネントの値を設定したりできます。 次の例の DataWeave コードでは、DataWeave の ​`now()`​ 関数を使用して、タイムスタンプ変数を現在時刻に設定しています。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave コードを​[外部ファイル](#dwl_file)​に保存して他の DataWeave スクリプトに読み込んだり、Mule アプリケーションのすべてのコンポーネントで共有できる再利用可能な DataWeave 関数のモジュール (ライブラリ) に DataWeave コードをファクタリングしたりすることもできます。 ## [](#dataweave-スクリプトの構造)DataWeave スクリプトの構造 DataWeave スクリプトとファイルは 2 つの主なセクションに分割されます。 - ヘッダー: 本文の式に適用するディレクティブを定義します (省略可能)。 - 本文: 出力構造を生成する式が含まれます。 ヘッダーを含めた場合、ヘッダーは本文の上に表示され、3 つのダッシュ ​`---`​ で構成される区切り文字で分離されます。 DataWeave ファイルの例を次に示します。このファイルでは、ヘッダーで出力ディレクティブを宣言し、その後の DataWeave 式で、子の 2 つのキー/値ペアを含むユーザーオブジェクトを作成します。 例: 簡単な DataWeave スクリプト ```dataweave %dw 2.0 output application/xml --- { user: { firstName: payload.user_firstname, lastName: payload.user_lastName } } ``` ## [](#dw_header)DataWeave ヘッダー この例は、ヘッダーディレクティブで使用できるキーワード (​`import`​、​`var`​ など) を示しています。 DataWeave スクリプト ```dataweave %dw 2.0 import * from dw::core::Arrays var myVar=13.15 fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } type Currency = String { format: "##"} ns ns0 http://www.abc.com output application/xml --- /* * Body here. * / ``` - `%dw`​: DataWeave バージョンは省略可能です。デフォルトは ​`2.0`​ で、これは DataWeave の​_すべて_​の 2.x バージョンに対応します。 例: `%dw 2.0`​ - `output`​: スクリプトから出力される MIME タイプを特定する、よく使用されるディレクティブ。 例: `output application/xml`​ 有効な値: [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats)​。 デフォルト: 出力が指定されていない場合、デフォルトの出力は、スクリプトで使用されている入力 (ペイロード、変数など) を検査するアルゴリズムによって決まります。 1. 入力がない場合、デフォルトの ​`output application/java`​ になります。 2. すべての入力の MIME タイプが同じ場合、スクリプトの出力は同じ MIME タイプになります。たとえば、すべての入力が ​`application/json`​ の場合、​`output application/json`​ が出力されます。 3. 各入力の MIME タイプが異なり、出力が指定されていない場合、スクリプトは例外をスローして、出力の MIME タイプを指定するようにユーザーに知らせます。 指定できる出力のタイプは 1 つのみです。 - `import`​: DataWeave 関数モジュールをインポートします。​[「DataWeave 関数」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions)​を参照してください。 - `var`​: DataWeave スクリプトの本文全体で参照できる定数を定義するためのグローバル変数。 例 ```dataweave %dw 2.0 var conversionRate=13.15 output application/json --- { price_dollars: payload.price, price_localCurrency: payload.price * conversionRate } ``` 詳細は、​[「DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables)​を参照してください。 - `type`​: 式で使用できるカスタム型を指定します。 完全な例は、​[「DataWeave を使用した型の強制」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types-coercion)​を参照してください。 - `ns`​: 名前空間。名前空間をインポートするために使用します。 例 ```dataweave %dw 2.0 output application/xml ns ns0 http://www.abc.com ns ns1 http://www.123.com --- { ns0#myroot: { ns1#secondroot: "hello world" } } ``` - `fun`​: スクリプトの本文内からコールできるカスタム関数を作成します。 例 ```dataweave %dw 2.0 output application/json fun toUser(user) = {firstName: user.name, lastName: user.lastName} --- { user: toUser(payload) } ``` ### [](#インライン-dataweave-スクリプトにヘッダーを含める)インライン DataWeave スクリプトにヘッダーを含める インライン DataWeave スクリプトを記述する場合、DataWeave スクリプトのすべての行を 1 つの行にフラット化することで、ヘッダーディレクティブを含めることができます。小さな DataWeave スクリプトの場合、これにより、ヘッダーディレクティブをすばやく適用し (個別の Transform Message コンポーネントを追加して変数を設定する必要はありません)、次のイベントプロセッサーで変数を置き換えることができます。 たとえば、前述の Transform Message コンポーネントと同じ有効な XML 出力を作成する Mule 設定の XML を次に示します。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave ドキュメントに多くの​[変換例](#see_also)​が記載されています。 ## [](#dataweave-本文)DataWeave 本文 DataWeave 本文には、出力構造を生成する式が含まれます。MuleSoft では、DataWeave モデルを使用してデータを操作するための正規の方法 (クエリ、変換、ビルドプロセス) が提供されています。 DataWeave スクリプト用の JSON 入力を提供する簡単な例を次に示します。 例: JSON 入力 ```json { "message": "Hello world!" } ``` この DataWeave スクリプトは、上の JSON 入力のペイロード全体を取得して ​`application/xml`​ 形式に変換します。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- payload ``` 次の例は、DataWeave スクリプトから生成された XML 出力を示しています。 例: XML 出力 ```xml Hello world! ``` 上のスクリプトは JSON 入力を XML 出力に正常に変換します。 ## [](#エラー-スクリプティングエラーと書式設定エラー)エラー (スクリプティングエラーと書式設定エラー) DataWeave スクリプトは、DataWeave コーディングエラーを原因とするエラーと書式設定エラーを原因とするエラーをスローする可能性があります。このため、データ形式を変換する場合、言語と形式の両方の制約に留意することが重要です。たとえば、XML には単一ルートノードが必要です。​[上の DataWeave スクリプト](#script_output_xml)​を使用して次の JSON 入力を XML に変換しようとすると、JSON 入力に単一ルートがないためエラー (​`Unexpected internal error`​) が発生します。 例: JSON 入力 ```json { "size" : 1, "person": { "name": "Yoda" } } ``` スクリプトを作成するには、入力を JSON に似た ​[application/dw](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#format_dataweave)​ 形式に標準化することをお勧めします。実際に、エラーが発生した場合は、単に入力を ​`application/dw`​ に変換することができます。変換が成功した場合、エラーは書式設定エラーの可能性があります。変換が失敗した場合、エラーはコーディングエラーの可能性があります。 次の例では、出力形式を ​`application/dw`​ に変更します。 例: application/dw を出力する DataWeave スクリプト ```dataweave %dw 2.0 output application/dw --- payload ``` このスクリプトでは上記の ​[JSON 入力例](#json_input)​から ​`application/dw`​ 出力が正常に生成されることを確認できます。 例: application/dw 出力 ```dataweave { size: 1, person: { name: "Yoda" } } ``` つまり、前述のエラー (​`Unexpected internal error`​) は、コーディングではなく形式に固有のエラーであることがわかります。上記の ​`application/dw`​ 出力では、XML 形式で必要な単一ルート要素が提供されていないことを確認できます。​_XML_​ 出力用のスクリプトを修正するには、例えば次のように単一ルート要素をスクリプトに提供する必要があります。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- { "myroot" : payload } ``` 出力が XML の要件を満たすようになったため、出力ディレクティブを ​`application/xml`​ に戻すと、結果として有効な XML 出力が生成されます。 例: 単一 XML ルートを含む XML 出力 ```xml 1 Yoda ``` ## [](#dataweave-コメント)DataWeave コメント Java に似た構文を使用するコメントも DataWeave で受け入れられます。 ```dataweave %dw 2.0 output application/json --- /* Multi-line * comment syntax */ payload // Single-line comment syntax ```
Anypoint Studio で発生する可能性があるエラーを回避するには、DataWeave スクリプトの本文の最初の行がコメントである場合に、複数行のコメント構文 (​/*comment here*/​) を使用します。後続のスクリプトコメントには任意の構文 (​//comment​ または ​/*comment*/​) を使用できます
## [](#特殊文字のエスケープ)特殊文字のエスケープ DataWeave では、バックスラッシュ (​`\`​) を使用して、入力文字列で使用している特殊文字をエスケープします。 詳細は、​[「特殊文字のエスケープ」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types#escape-chars-string)​を参照してください。 DataWeave スクリプトの​_入力_​文字列では特殊文字がエスケープされますが、​_出力_​では、出力形式の要件に従ってエスケープされます。この要件は、​`application/json`​、​`application/xml`​、​`application/csv`​ などの形式によって異なる可能性があります。 この例では、二重引用符で囲まれた内部の二重引用符がエスケープされます。 DataWeave の例 ```txt %dw 2.0 output application/json --- { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "c": "double quote (\")", "e": `backtick (\`)` } ``` JSON 出力でも、出力が有効な JSON になるように二重引用符がエスケープされますが、他の文字はエスケープされません。 JSON 出力 ```json { "a": "something", "b": "dollar sign ($)", "c": "single quote (')", "c": "double quote (\")", "e": "backtick (`)" } ``` 次の例では、同じ文字がエスケープされますが、XML に出力されます。 DataWeave の例 ```txt %dw 2.0 output application/xml --- { xmlExample: { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "d": "double quote (\")", "e": `backtick (\`)` } } ``` XML 出力は、(JSON 出力とは異なり) 二重引用符をエスケープしなくても有効です。 XML 出力 ```xml something dollar sign ($) single quote (') double quote (") backtick (`) ``` ## [](#valid-identifiers)有効な識別子を宣言するためのルール 有効な識別子を宣言するには、その名前が次の要件を満たす必要があります。 - 大文字または小文字にかかわらずアルファベット文字 (a-z) で始まる必要があります。 - 名前の 2 文字目以降には、文字、数字、およびアンダースコア (​`_`​) の任意の組み合わせを含めることができます。 - 名前は DataWeave の予約済みのキーワード (完全なリストは、​[予約済みのキーワード](#reserved-keywords)​ を参照) に一致することはできません。 有効な識別子のいくつかの例を以下に示します。 - `myType`​ - `abc123`​ - `a1_3BC_22`​ - `Z_____4`​ - `F` 次の表で、無効な識別子の例と、無効になる理由を説明します。
Identifier (識別子) 問題

​123456

数字で始まることはできません。

​value$

特殊文字を含めることはできません。

​_number

アンダースコアで始まることはできません。

​type

予約済みのキーワードは使用できません。

### [](#reserved-keywords)予約済みのキーワード 有効な識別子は、予約済みの DataWeave キーワードに一致することはできません。 - `and` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators#logical_operators)​として予約済み - `as` [型強制](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types-coercion)​用に予約済み - `async` 予約済み - `case` `case`​ ステートメント用に予約済み。たとえば、​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-pattern-matching)​を実行したり、​[`update`​ 演算子](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators#update-operator)​で使用したりします。 - `default` パラメーターの​[デフォルト値](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-defaults)​の割り当て用に予約済み - `do` [`do`](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control)​ ステートメント用に予約済み - `else` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control)​を参照してください。 - `enum` 予約済み - `false` ブール値として予約済み - `for` 予約済み - `fun` [DataWeave ヘッダー](#dw_header)​ の関数定義用に予約済み - `if` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control)​を参照してください。 - `import` [DataWeave ヘッダー](#dw_header)​ の ​`import`​ ディレクティブ用に予約済み - `input` 予約済み - `is` 予約済み - `ns` [DataWeave ヘッダー](#dw_header)​ の名前空間定義用に予約済み - `null` 値 ​`null`​ として予約済み [「Null (dw::Core 型)」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types#dw_type_null)​を参照してください。 - `or` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators#logical_operators)​として予約済み - `output` [DataWeave ヘッダー](#dw_header)​ の ​`output`​ ディレクティブ用に予約済み - `private` 予約済み - `throw` 予約済み - `true` ブール値として予約済み - `type` [DataWeave ヘッダー](#dw_header)​ の型定義用に予約済み - `unless` 予約済み - `using` 後方互換性のために予約済み。​`do`​ で置き換えられます。 [「スコープ演算子とフローコントロール演算子」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators#scope-and-flow-control-operators)​を参照してください。 - `var` [DataWeave ヘッダー](#dw_header)​ の変数定義用に予約済み - `yield` 予約済み ## [](#dwl_file)dwl ファイル Transform や他のコンポーネント内で DataWeave スクリプトを指定するのに加えて、​`.dwl`​ ファイル内でスクリプトを指定することもできます。Studio プロジェクトでは、スクリプトファイルは ​`src/main/resources`​ に保存されます。 Mule アプリケーションの XML では、​`${file::filename}`​ 構文を使用して、​`dwl`​ ファイル内のスクリプトを、式を期待している XML タグに送信することができます。たとえば、次の Choice ルーターの ​`when expression="${file::someFile.dwl}"`​ を参照してください。 ```xml ``` ## [](#see_also)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave 関数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) - [関数とラムダ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types#functions-and-lambdas) # DataWeave スクリプト DataWeave は Mule フローで使用する主データ変換言語です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Transform Message コンポーネントでスタンドアロンの DataWeave スクリプトを記述できます。また、インライン DataWeave 式を記述すると、データを​_その場_​で変換し、さまざまなプロパティの値 (イベントプロセッサーまたはグローバル設定要素の設定項目など) を動的に設定することもできます。インライン DataWeave 式は ​`#[ ]`​ コードブロックで囲みます。たとえば、DataWeave 式を使用して、Choice ルーターの条件を設定したり、Set Payload または Set Variable コンポーネントの値を設定したりできます。 次の例の DataWeave コードでは、DataWeave の ​`now()`​ 関数を使用して、タイムスタンプ変数を現在時刻に設定しています。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave コードを​[外部ファイル](#dwl_file)​に保存して他の DataWeave スクリプトに読み込んだり、Mule アプリケーションのすべてのコンポーネントで共有できる再利用可能な DataWeave 関数のモジュール (ライブラリ) に DataWeave コードをファクタリングしたりすることもできます。 ## [](#dataweave-スクリプトの構造)DataWeave スクリプトの構造 DataWeave スクリプトとファイルは 2 つの主なセクションに分割されます。 - ヘッダー: 本文の式に適用するディレクティブを定義します (省略可能)。 - 本文: 出力構造を生成する式が含まれます。 ヘッダーを含めた場合、ヘッダーは本文の上に表示され、3 つのダッシュ ​`---`​ で構成される区切り文字で分離されます。 DataWeave ファイルの例を次に示します。このファイルでは、ヘッダーで出力ディレクティブを宣言し、その後の DataWeave 式で、子の 2 つのキー/値ペアを含むユーザーオブジェクトを作成します。 例: 簡単な DataWeave スクリプト ```dataweave %dw 2.0 output application/xml --- { user: { firstName: payload.user_firstname, lastName: payload.user_lastName } } ``` ## [](#dw_header)DataWeave ヘッダー この例は、ヘッダーディレクティブで使用できるキーワード (​`import`​、​`var`​ など) を示しています。 DataWeave スクリプト ```dataweave %dw 2.0 import * from dw::core::Arrays var myVar=13.15 fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } type Currency = String { format: "##"} ns ns0 http://www.abc.com output application/xml --- /* * Body here. * / ``` - `%dw`​: 以前のバージョンの DataWeave との後方互換性を維持し、現在のバージョンからの変更で構文が壊れないようにするために、​`%dw`​ ディレクティブでは、スクリプトごとに前の DataWeave バージョンの仕様がサポートされます。このディレクティブの使用は省略可能です。ディレクティブが指定されていない場合、デフォルトバージョンは 2.0 になります。DataWeave バージョン 2.0 ~ 2.4 は、構文が変更されていないため同じです。 例: `%dw 2.0` - `output`​: スクリプトから出力される MIME タイプを特定する、よく使用されるディレクティブ。 例: `output application/xml` 有効な値: [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats)​。 デフォルト: 出力が指定されていない場合、デフォルトの出力は、スクリプトで使用されている入力 (ペイロード、変数など) を検査するアルゴリズムによって決まります。 1. 入力がない場合、デフォルトの ​`output application/java`​ になります。 2. すべての入力の MIME タイプが同じ場合、スクリプトの出力は同じ MIME タイプになります。たとえば、すべての入力が ​`application/json`​ の場合、​`output application/json`​ が出力されます。 3. 各入力の MIME タイプが異なり、出力が指定されていない場合、スクリプトは例外をスローして、出力の MIME タイプを指定するようにユーザーに知らせます。 指定できる出力のタイプは 1 つのみです。 - `import`​: DataWeave 関数モジュールをインポートします。​[「DataWeave 関数」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions)​を参照してください。 - `var`​: DataWeave スクリプトの本文全体で参照できる定数を定義するためのグローバル変数。 例 ```dataweave %dw 2.0 var conversionRate=13.15 output application/json --- { price_dollars: payload.price, price_localCurrency: payload.price * conversionRate } ``` 詳細は、​[「DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables)​を参照してください。 - `type`​: 式で使用できるカスタム型を指定します。 完全な例は、​[「DataWeave を使用した型の強制」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types-coercion)​を参照してください。 - `ns`​: 名前空間。名前空間をインポートするために使用します。 例 ```dataweave %dw 2.0 output application/xml ns ns0 http://www.abc.com ns ns1 http://www.123.com --- { ns0#myroot: { ns1#secondroot: "hello world" } } ``` - `fun`​: スクリプトの本文内からコールできるカスタム関数を作成します。 例 ```dataweave %dw 2.0 output application/json fun toUser(user) = {firstName: user.name, lastName: user.lastName} --- { user: toUser(payload) } ``` ### [](#インライン-dataweave-スクリプトにヘッダーを含める)インライン DataWeave スクリプトにヘッダーを含める インライン DataWeave スクリプトを記述する場合、DataWeave スクリプトのすべての行を 1 つの行にフラット化することで、ヘッダーディレクティブを含めることができます。小さな DataWeave スクリプトの場合、これにより、ヘッダーディレクティブをすばやく適用し (個別の Transform Message コンポーネントを追加して変数を設定する必要はありません)、次のイベントプロセッサーで変数を置き換えることができます。 たとえば、前述の Transform Message コンポーネントと同じ有効な XML 出力を作成する Mule 設定の XML を次に示します。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave ドキュメントに多くの​[変換例](#see_also)​が記載されています。 ## [](#dataweave-本文)DataWeave 本文 DataWeave 本文には、出力構造を生成する式が含まれます。MuleSoft では、DataWeave モデルを使用してデータを操作するための正規の方法 (クエリ、変換、ビルドプロセス) が提供されています。 DataWeave スクリプト用の JSON 入力を提供する簡単な例を次に示します。 例: JSON 入力 ```json { "message": "Hello world!" } ``` この DataWeave スクリプトは、上の JSON 入力のペイロード全体を取得して ​`application/xml`​ 形式に変換します。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- payload ``` 次の例は、DataWeave スクリプトから生成された XML 出力を示しています。 例: XML 出力 ```xml Hello world! ``` 上のスクリプトは JSON 入力を XML 出力に正常に変換します。 ## [](#エラー-スクリプティングエラーと書式設定エラー)エラー (スクリプティングエラーと書式設定エラー) DataWeave スクリプトは、DataWeave コーディングエラーを原因とするエラーと書式設定エラーを原因とするエラーをスローする可能性があります。このため、データ形式を変換する場合、言語と形式の両方の制約に留意することが重要です。たとえば、XML には単一ルートノードが必要です。​[上の DataWeave スクリプト](#script_output_xml)​を使用して次の JSON 入力を XML に変換しようとすると、JSON 入力に単一ルートがないためエラー (​`Unexpected internal error`​) が発生します。 例: JSON 入力 ```json { "size" : 1, "person": { "name": "Yoda" } } ``` スクリプトを作成するには、入力を JSON に似た ​[application/dw](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#format_dataweave)​ 形式に標準化することをお勧めします。実際に、エラーが発生した場合は、単に入力を ​`application/dw`​ に変換することができます。変換が成功した場合、エラーは書式設定エラーの可能性があります。変換が失敗した場合、エラーはコーディングエラーの可能性があります。 次の例では、出力形式を ​`application/dw`​ に変更します。 例: application/dw を出力する DataWeave スクリプト ```dataweave %dw 2.0 output application/dw --- payload ``` このスクリプトでは上記の ​[JSON 入力例](#json_input)​から ​`application/dw`​ 出力が正常に生成されることを確認できます。 例: application/dw 出力 ```dataweave { size: 1, person: { name: "Yoda" } } ``` つまり、前述のエラー (​`Unexpected internal error`​) は、コーディングではなく形式に固有のエラーであることがわかります。上記の ​`application/dw`​ 出力では、XML 形式で必要な単一ルート要素が提供されていないことを確認できます。​_XML_​ 出力用のスクリプトを修正するには、例えば次のように単一ルート要素をスクリプトに提供する必要があります。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- { "myroot" : payload } ``` 出力が XML の要件を満たすようになったため、出力ディレクティブを ​`application/xml`​ に戻すと、結果として有効な XML 出力が生成されます。 例: 単一 XML ルートを含む XML 出力 ```xml 1 Yoda ``` ## [](#dataweave-コメント)DataWeave コメント Java に似た構文を使用するコメントも DataWeave で受け入れられます。 ```dataweave %dw 2.0 output application/json --- /* Multi-line * comment syntax */ payload // Single-line comment syntax ```
Anypoint Studio で発生する可能性があるエラーを回避するには、DataWeave スクリプトの本文の最初の行がコメントである場合に、複数行のコメント構文 (​/\​comment here​/​) を使用します。後続のスクリプトコメントには任意の構文 (​//comment​ または ​/\​comment​/​) を使用できます
## [](#特殊文字のエスケープ)特殊文字のエスケープ DataWeave では、バックスラッシュ (​`\`​) を使用して、入力文字列で使用している特殊文字をエスケープします。 詳細は、​[「特殊文字のエスケープ」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types#escape-chars-string)​を参照してください。 DataWeave スクリプトの​_入力_​文字列では特殊文字がエスケープされますが、​_出力_​では、出力形式の要件に従ってエスケープされます。この要件は、​`application/json`​、​`application/xml`​、​`application/csv`​ などの形式によって異なる可能性があります。 この例では、二重引用符で囲まれた内部の二重引用符がエスケープされます。 DataWeave の例 ```txt %dw 2.0 output application/json --- { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "c": "double quote (\")", "e": `backtick (\`)` } ``` JSON 出力でも、出力が有効な JSON になるように二重引用符がエスケープされますが、他の文字はエスケープされません。 JSON 出力 ```json { "a": "something", "b": "dollar sign ($)", "c": "single quote (')", "c": "double quote (\")", "e": "backtick (`)" } ``` 次の例では、同じ文字がエスケープされますが、XML に出力されます。 DataWeave の例 ```txt %dw 2.0 output application/xml --- { xmlExample: { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "d": "double quote (\")", "e": `backtick (\`)` } } ``` XML 出力は、(JSON 出力とは異なり) 二重引用符をエスケープしなくても有効です。 XML 出力 ```xml something dollar sign ($) single quote (') double quote (") backtick (`) ``` ## [](#valid-identifiers)有効な識別子を宣言するためのルール 有効な識別子を宣言するには、その名前が次の要件を満たす必要があります。 - 大文字または小文字にかかわらずアルファベット文字 (a-z) で始まる必要があります。 - 名前の 2 文字目以降には、文字、数字、およびアンダースコア (​`_`​) の任意の組み合わせを含めることができます。 - 名前は DataWeave の予約済みのキーワード (完全なリストは、​[予約済みのキーワード](#reserved-keywords)​ を参照) に一致することはできません。 有効な識別子のいくつかの例を以下に示します。 - `myType` - `abc123` - `a1_3BC_22` - `Z_____4` - `F` 次の表で、無効な識別子の例と、無効になる理由を説明します。
Identifier (識別子) 問題

123456

数字で始まることはできません。

value$

特殊文字を含めることはできません。

_number

アンダースコアで始まることはできません。

type

予約済みのキーワードは使用できません。

### [](#reserved-keywords)予約済みのキーワード 有効な識別子は、予約済みの DataWeave キーワードに一致することはできません。 - `and` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators#logical_operators)​として予約済み - `as` [型強制](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types-coercion)​用に予約済み - `async` 予約済み - `case` `case`​ ステートメント用に予約済み。たとえば、​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-pattern-matching)​を実行したり、​[`update`​ 演算子](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators#update-operator)​で使用したりします。 - `default` パラメーターの​[デフォルト値](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-defaults)​の割り当て用に予約済み - `do` [`do`](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control)​ ステートメント用に予約済み - `else` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control)​を参照してください。 - `enum` 予約済み - `false` ブール値として予約済み - `for` 予約済み - `fun` [DataWeave ヘッダー](#dw_header)​ の関数定義用に予約済み - `if` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control)​を参照してください。 - `import` [DataWeave ヘッダー](#dw_header)​ の ​`import`​ ディレクティブ用に予約済み - `input` 予約済み - `is` 予約済み - `ns` [DataWeave ヘッダー](#dw_header)​ の名前空間定義用に予約済み - `null` 値 ​`null`​ として予約済み [「Null (dw::Core 型)」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types#dw_type_null)​を参照してください。 - `or` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators#logical_operators)​として予約済み - `output` [DataWeave ヘッダー](#dw_header)​ の ​`output`​ ディレクティブ用に予約済み - `private` 予約済み - `throw` 予約済み - `true` ブール値として予約済み - `type` [DataWeave ヘッダー](#dw_header)​ の型定義用に予約済み - `unless` 予約済み - `using` 後方互換性のために予約済み。​`do`​ で置き換えられます。 [「スコープ演算子とフローコントロール演算子」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators#scope-and-flow-control-operators)​を参照してください。 - `var` [DataWeave ヘッダー](#dw_header)​ の変数定義用に予約済み - `yield` 予約済み ## [](#dwl_file)dwl ファイル Transform や他のコンポーネント内で DataWeave スクリプトを指定するのに加えて、​`.dwl`​ ファイル内でスクリプトを指定することもできます。Studio プロジェクトでは、スクリプトファイルは ​`src/main/resources`​ に保存されます。 Mule アプリケーションの XML では、​`${file::filename}`​ 構文を使用して、​`dwl`​ ファイル内のスクリプトを、式を期待している XML タグに送信することができます。たとえば、次の Choice ルーターの ​`when expression="${file::someFile.dwl}"`​ を参照してください。 ```xml ``` ## [](#see_also)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave 関数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) - [関数とラムダ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types#functions-and-lambdas) # DataWeave スクリプト DataWeave は Mule フローで使用する主データ変換言語です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Transform Message コンポーネントでスタンドアロンの DataWeave スクリプトを記述できます。また、インライン DataWeave 式を記述すると、データを​_その場_​で変換し、さまざまなプロパティの値 (イベントプロセッサーまたはグローバル設定要素の設定項目など) を動的に設定することもできます。インライン DataWeave 式は ​`#[ ]`​ コードブロックで囲みます。たとえば、DataWeave 式を使用して、Choice ルーターの条件を設定したり、Set Payload または Set Variable コンポーネントの値を設定したりできます。 次の例の DataWeave コードでは、DataWeave の ​`now()`​ 関数を使用して、タイムスタンプ変数を現在時刻に設定しています。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave コードを​[外部ファイル](#dwl_file)​に保存して他の DataWeave スクリプトに読み込んだり、Mule アプリケーションのすべてのコンポーネントで共有できる再利用可能な DataWeave 関数のモジュール (ライブラリ) に DataWeave コードをファクタリングしたりすることもできます。 ## [](#dataweave-スクリプトの構造)DataWeave スクリプトの構造 DataWeave スクリプトとファイルは 2 つの主なセクションに分割されます。 - ヘッダー: 本文の式に適用するディレクティブを定義します (省略可能)。 - 本文: 出力構造を生成する式が含まれます。 ヘッダーを含めた場合、ヘッダーは本文の上に表示され、3 つのダッシュ ​`---`​ で構成される区切り文字で分離されます。 DataWeave ファイルの例を次に示します。このファイルでは、ヘッダーで出力ディレクティブを宣言し、その後の DataWeave 式で、子の 2 つのキー/値ペアを含むユーザーオブジェクトを作成します。 例: 簡単な DataWeave スクリプト ```dataweave %dw 2.0 output application/xml --- { user: { firstName: payload.user_firstname, lastName: payload.user_lastName } } ``` ## [](#dw_header)DataWeave ヘッダー この例は、ヘッダーディレクティブで使用できるキーワード (​`import`​、​`var`​ など) を示しています。 DataWeave スクリプト ```dataweave %dw 2.0 import * from dw::core::Arrays var myVar=13.15 fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } type Currency = String { format: "##"} ns ns0 http://www.abc.com output application/xml --- /* * Body here. * / ``` - `%dw`​: 以前のバージョンの DataWeave との後方互換性を維持し、現在のバージョンからの変更で構文が壊れないようにするために、​`%dw`​ ディレクティブでは、スクリプトごとに前の DataWeave バージョンの仕様がサポートされます。このディレクティブの使用は省略可能です。ディレクティブが指定されていない場合、デフォルトバージョンは 2.0 になります。DataWeave バージョン 2.0 ~ 2.4 は、構文が変更されていないため同じです。 例: `%dw 2.0` - `output`​: スクリプトから出力される MIME タイプを特定する、よく使用されるディレクティブ。 例: `output application/xml` 有効な値: [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats)​。 デフォルト: 出力が指定されていない場合、デフォルトの出力は、スクリプトで使用されている入力 (ペイロード、変数など) を検査するアルゴリズムによって決まります。 1. 入力がない場合、デフォルトの ​`output application/java`​ になります。 2. すべての入力の MIME タイプが同じ場合、スクリプトの出力は同じ MIME タイプになります。たとえば、すべての入力が ​`application/json`​ の場合、​`output application/json`​ が出力されます。 3. 各入力の MIME タイプが異なり、出力が指定されていない場合、スクリプトは例外をスローして、出力の MIME タイプを指定するようにユーザーに知らせます。 指定できる出力のタイプは 1 つのみです。 - `import`​: DataWeave 関数モジュールをインポートします。​[「DataWeave 関数」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions)​を参照してください。 - `var`​: DataWeave スクリプトの本文全体で参照できる定数を定義するためのグローバル変数。 例 ```dataweave %dw 2.0 var conversionRate=13.15 output application/json --- { price_dollars: payload.price, price_localCurrency: payload.price * conversionRate } ``` 詳細は、​[「DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables)​を参照してください。 - `type`​: 式で使用できるカスタム型を指定します。 完全な例は、​[「DataWeave を使用した型の強制」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types-coercion)​を参照してください。 - `ns`​: 名前空間。名前空間をインポートするために使用します。 例 ```dataweave %dw 2.0 output application/xml ns ns0 http://www.abc.com ns ns1 http://www.123.com --- { ns0#myroot: { ns1#secondroot: "hello world" } } ``` - `fun`​: スクリプトの本文内からコールできるカスタム関数を作成します。 例 ```dataweave %dw 2.0 output application/json fun toUser(user) = {firstName: user.name, lastName: user.lastName} --- { user: toUser(payload) } ``` ### [](#インライン-dataweave-スクリプトにヘッダーを含める)インライン DataWeave スクリプトにヘッダーを含める インライン DataWeave スクリプトを記述する場合、DataWeave スクリプトのすべての行を 1 つの行にフラット化することで、ヘッダーディレクティブを含めることができます。小さな DataWeave スクリプトの場合、これにより、ヘッダーディレクティブをすばやく適用し (個別の Transform Message コンポーネントを追加して変数を設定する必要はありません)、次のイベントプロセッサーで変数を置き換えることができます。 たとえば、前述の Transform Message コンポーネントと同じ有効な XML 出力を作成する Mule 設定の XML を次に示します。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave ドキュメントに多くの​[変換例](#see_also)​が記載されています。 ## [](#dataweave-本文)DataWeave 本文 DataWeave 本文には、出力構造を生成する式が含まれます。MuleSoft では、DataWeave モデルを使用してデータを操作するための正規の方法 (クエリ、変換、ビルドプロセス) が提供されています。 DataWeave スクリプト用の JSON 入力を提供する簡単な例を次に示します。 例: JSON 入力 ```json { "message": "Hello world!" } ``` この DataWeave スクリプトは、上の JSON 入力のペイロード全体を取得して ​`application/xml`​ 形式に変換します。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- payload ``` 次の例は、DataWeave スクリプトから生成された XML 出力を示しています。 例: XML 出力 ```xml Hello world! ``` 上のスクリプトは JSON 入力を XML 出力に正常に変換します。 ## [](#エラー-スクリプティングエラーと書式設定エラー)エラー (スクリプティングエラーと書式設定エラー) DataWeave スクリプトは、DataWeave コーディングエラーを原因とするエラーと書式設定エラーを原因とするエラーをスローする可能性があります。このため、データ形式を変換する場合、言語と形式の両方の制約に留意することが重要です。たとえば、XML には単一ルートノードが必要です。​[上の DataWeave スクリプト](#script_output_xml)​を使用して次の JSON 入力を XML に変換しようとすると、JSON 入力に単一ルートがないためエラー (​`Unexpected internal error`​) が発生します。 例: JSON 入力 ```json { "size" : 1, "person": { "name": "Yoda" } } ``` スクリプトを作成するには、入力を JSON に似た ​[application/dw](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#format_dataweave)​ 形式に標準化することをお勧めします。実際に、エラーが発生した場合は、単に入力を ​`application/dw`​ に変換することができます。変換が成功した場合、エラーは書式設定エラーの可能性があります。変換が失敗した場合、エラーはコーディングエラーの可能性があります。 次の例では、出力形式を ​`application/dw`​ に変更します。 例: application/dw を出力する DataWeave スクリプト ```dataweave %dw 2.0 output application/dw --- payload ``` このスクリプトでは上記の ​[JSON 入力例](#json_input)​から ​`application/dw`​ 出力が正常に生成されることを確認できます。 例: application/dw 出力 ```dataweave { size: 1, person: { name: "Yoda" } } ``` つまり、前述のエラー (​`Unexpected internal error`​) は、コーディングではなく形式に固有のエラーであることがわかります。上記の ​`application/dw`​ 出力では、XML 形式で必要な単一ルート要素が提供されていないことを確認できます。​_XML_​ 出力用のスクリプトを修正するには、例えば次のように単一ルート要素をスクリプトに提供する必要があります。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- { "myroot" : payload } ``` 出力が XML の要件を満たすようになったため、出力ディレクティブを ​`application/xml`​ に戻すと、結果として有効な XML 出力が生成されます。 例: 単一 XML ルートを含む XML 出力 ```xml 1 Yoda ``` ## [](#dataweave-コメント)DataWeave コメント Java に似た構文を使用するコメントも DataWeave で受け入れられます。 ```dataweave %dw 2.0 output application/json --- /* Multi-line * comment syntax */ payload // Single-line comment syntax ```
Anypoint Studio で発生する可能性があるエラーを回避するには、DataWeave スクリプトの本文の最初の行がコメントである場合に、複数行のコメント構文 (​/\​comment here​/​) を使用します。後続のスクリプトコメントには任意の構文 (​//comment​ または ​/\​comment​/​) を使用できます
## [](#特殊文字のエスケープ)特殊文字のエスケープ DataWeave では、バックスラッシュ (​`\`​) を使用して、入力文字列で使用している特殊文字をエスケープします。 詳細は、​[「特殊文字のエスケープ」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types#escape-chars-string)​を参照してください。 DataWeave スクリプトの​_入力_​文字列では特殊文字がエスケープされますが、​_出力_​では、出力形式の要件に従ってエスケープされます。この要件は、​`application/json`​、​`application/xml`​、​`application/csv`​ などの形式によって異なる可能性があります。 この例では、二重引用符で囲まれた内部の二重引用符がエスケープされます。 DataWeave の例 ```txt %dw 2.0 output application/json --- { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "c": "double quote (\")", "e": `backtick (\`)` } ``` JSON 出力でも、出力が有効な JSON になるように二重引用符がエスケープされますが、他の文字はエスケープされません。 JSON 出力 ```json { "a": "something", "b": "dollar sign ($)", "c": "single quote (')", "c": "double quote (\")", "e": "backtick (`)" } ``` 次の例では、同じ文字がエスケープされますが、XML に出力されます。 DataWeave の例 ```txt %dw 2.0 output application/xml --- { xmlExample: { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "d": "double quote (\")", "e": `backtick (\`)` } } ``` XML 出力は、(JSON 出力とは異なり) 二重引用符をエスケープしなくても有効です。 XML 出力 ```xml something dollar sign ($) single quote (') double quote (") backtick (`) ``` ## [](#valid-identifiers)有効な識別子を宣言するためのルール 有効な識別子を宣言するには、その名前が次の要件を満たす必要があります。 - 大文字または小文字にかかわらずアルファベット文字 (a-z) で始まる必要があります。 - 名前の 2 文字目以降には、文字、数字、およびアンダースコア (​`_`​) の任意の組み合わせを含めることができます。 - 名前は DataWeave の予約済みのキーワード (完全なリストは、​[予約済みのキーワード](#reserved-keywords)​ を参照) に一致することはできません。 有効な識別子のいくつかの例を以下に示します。 - `myType` - `abc123` - `a1_3BC_22` - `Z_____4` - `F` 次の表で、無効な識別子の例と、無効になる理由を説明します。
Identifier (識別子) 問題

123456

数字で始まることはできません。

value$

特殊文字を含めることはできません。

_number

アンダースコアで始まることはできません。

type

予約済みのキーワードは使用できません。

### [](#reserved-keywords)予約済みのキーワード 有効な識別子は、予約済みの DataWeave キーワードに一致することはできません。 - `and` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators#logical_operators)​として予約済み - `as` [型強制](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types-coercion)​用に予約済み - `async` 予約済み - `case` `case`​ ステートメント用に予約済み。たとえば、​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-pattern-matching)​を実行したり、​[`update`​ 演算子](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators#update-operator)​で使用したりします。 - `default` パラメーターの​[デフォルト値](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-defaults)​の割り当て用に予約済み - `do` [`do`](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control)​ ステートメント用に予約済み - `else` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control)​を参照してください。 - `enum` 予約済み - `false` ブール値として予約済み - `for` 予約済み - `fun` [DataWeave ヘッダー](#dw_header)​ の関数定義用に予約済み - `if` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control)​を参照してください。 - `import` [DataWeave ヘッダー](#dw_header)​ の ​`import`​ ディレクティブ用に予約済み - `input` 予約済み - `is` 予約済み - `ns` [DataWeave ヘッダー](#dw_header)​ の名前空間定義用に予約済み - `null` 値 ​`null`​ として予約済み [「Null (dw::Core 型)」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types#dw_type_null)​を参照してください。 - `or` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators#logical_operators)​として予約済み - `output` [DataWeave ヘッダー](#dw_header)​ の ​`output`​ ディレクティブ用に予約済み - `private` 予約済み - `throw` 予約済み - `true` ブール値として予約済み - `type` [DataWeave ヘッダー](#dw_header)​ の型定義用に予約済み - `unless` 予約済み - `using` 後方互換性のために予約済み。​`do`​ で置き換えられます。 [「スコープ演算子とフローコントロール演算子」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators#scope-and-flow-control-operators)​を参照してください。 - `var` [DataWeave ヘッダー](#dw_header)​ の変数定義用に予約済み - `yield` 予約済み ## [](#dwl_file)dwl ファイル Transform や他のコンポーネント内で DataWeave スクリプトを指定するのに加えて、​`.dwl`​ ファイル内でスクリプトを指定することもできます。Studio プロジェクトでは、スクリプトファイルは ​`src/main/resources`​ に保存されます。 Mule アプリケーションの XML では、​`${file::filename}`​ 構文を使用して、​`dwl`​ ファイル内のスクリプトを、式を期待している XML タグに送信することができます。たとえば、次の Choice ルーターの ​`when expression="${file::someFile.dwl}"`​ を参照してください。 ```xml ``` ## [](#see_also)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave 関数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) - [関数とラムダ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types#functions-and-lambdas) # DataWeave スクリプト DataWeave は Mule フローで使用する主データ変換言語です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Transform Message コンポーネントでスタンドアロンの DataWeave スクリプトを記述できます。また、インライン DataWeave 式を記述すると、データを​_その場_​で変換し、さまざまなプロパティの値 (イベントプロセッサーまたはグローバル設定要素の設定項目など) を動的に設定することもできます。インライン DataWeave 式は ​`#[ ]`​ コードブロックで囲みます。たとえば、DataWeave 式を使用して、Choice ルーターの条件を設定したり、Set Payload または Set Variable コンポーネントの値を設定したりできます。 次の例の DataWeave コードでは、DataWeave の ​`now()`​ 関数を使用して、タイムスタンプ変数を現在時刻に設定しています。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave コードを​[外部ファイル](#dwl_file)​に保存して他の DataWeave スクリプトに読み込んだり、Mule アプリケーションのすべてのコンポーネントで共有できる再利用可能な DataWeave 関数のモジュール (ライブラリ) に DataWeave コードをファクタリングしたりすることもできます。 ## [](#dataweave-スクリプトの構造)DataWeave スクリプトの構造 DataWeave スクリプトとファイルは 2 つの主なセクションに分割されます。 - ヘッダー: 本文の式に適用するディレクティブを定義します (省略可能)。 - 本文: 出力構造を生成する式が含まれます。 ヘッダーを含めた場合、ヘッダーは本文の上に表示され、3 つのダッシュ ​`---`​ で構成される区切り文字で分離されます。 DataWeave ファイルの例を次に示します。このファイルでは、ヘッダーで出力ディレクティブを宣言し、その後の DataWeave 式で、子の 2 つのキー/値ペアを含むユーザーオブジェクトを作成します。 例: 簡単な DataWeave スクリプト ```dataweave %dw 2.0 output application/xml --- { user: { firstName: payload.user_firstname, lastName: payload.user_lastName } } ``` ## [](#dw_header)DataWeave ヘッダー この例は、ヘッダーディレクティブで使用できるキーワード (​`import`​、​`var`​ など) を示しています。 DataWeave スクリプト ```dataweave %dw 2.0 import * from dw::core::Arrays var myVar=13.15 fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } type Currency = String { format: "##"} ns ns0 http://www.abc.com output application/xml --- /* * Body here. * / ``` - `%dw`​: 以前のバージョンの DataWeave との後方互換性を維持し、現在のバージョンからの変更で構文が壊れないようにするために、​`%dw`​ ディレクティブでは、スクリプトごとに前の DataWeave バージョンの仕様がサポートされます。このディレクティブの使用は省略可能です。ディレクティブが指定されていない場合、デフォルトバージョンは 2.0 になります。DataWeave バージョン 2.0 ~ 2.4 は、構文が変更されていないため同じです。 例: `%dw 2.0` - `output`​: スクリプトから出力される MIME タイプを特定する、よく使用されるディレクティブ。 例: `output application/xml` 有効な値: [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats)​。 デフォルト: 出力が指定されていない場合、デフォルトの出力は、スクリプトで使用されている入力 (ペイロード、変数など) を検査するアルゴリズムによって決まります。 1. 入力がない場合、デフォルトの ​`output application/java`​ になります。 2. すべての入力の MIME タイプが同じ場合、スクリプトの出力は同じ MIME タイプになります。たとえば、すべての入力が ​`application/json`​ の場合、​`output application/json`​ が出力されます。 3. 各入力の MIME タイプが異なり、出力が指定されていない場合、スクリプトは例外をスローして、出力の MIME タイプを指定するようにユーザーに知らせます。 指定できる出力のタイプは 1 つのみです。 - `import`​: DataWeave 関数モジュールをインポートします。​[「DataWeave 関数」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions)​を参照してください。 - `var`​: DataWeave スクリプトの本文全体で参照できる定数を定義するためのグローバル変数。 例 ```dataweave %dw 2.0 var conversionRate=13.15 output application/json --- { price_dollars: payload.price, price_localCurrency: payload.price * conversionRate } ``` 詳細は、​[「DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables)​を参照してください。 - `type`​: 式で使用できるカスタム型を指定します。 完全な例は、​[「DataWeave を使用した型の強制」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types-coercion)​を参照してください。 - `ns`​: 名前空間。名前空間をインポートするために使用します。 例 ```dataweave %dw 2.0 output application/xml ns ns0 http://www.abc.com ns ns1 http://www.123.com --- { ns0#myroot: { ns1#secondroot: "hello world" } } ``` - `fun`​: スクリプトの本文内からコールできるカスタム関数を作成します。 例 ```dataweave %dw 2.0 output application/json fun toUser(user) = {firstName: user.name, lastName: user.lastName} --- { user: toUser(payload) } ``` ### [](#インライン-dataweave-スクリプトにヘッダーを含める)インライン DataWeave スクリプトにヘッダーを含める インライン DataWeave スクリプトを記述する場合、DataWeave スクリプトのすべての行を 1 つの行にフラット化することで、ヘッダーディレクティブを含めることができます。小さな DataWeave スクリプトの場合、これにより、ヘッダーディレクティブをすばやく適用し (個別の Transform Message コンポーネントを追加して変数を設定する必要はありません)、次のイベントプロセッサーで変数を置き換えることができます。 たとえば、前述の Transform Message コンポーネントと同じ有効な XML 出力を作成する Mule 設定の XML を次に示します。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave ドキュメントに多くの​[変換例](#see_also)​が記載されています。 ## [](#dataweave-本文)DataWeave 本文 DataWeave 本文には、出力構造を生成する式が含まれます。MuleSoft では、DataWeave モデルを使用してデータを操作するための正規の方法 (クエリ、変換、ビルドプロセス) が提供されています。 DataWeave スクリプト用の JSON 入力を提供する簡単な例を次に示します。 例: JSON 入力 ```json { "message": "Hello world!" } ``` この DataWeave スクリプトは、上の JSON 入力のペイロード全体を取得して ​`application/xml`​ 形式に変換します。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- payload ``` 次の例は、DataWeave スクリプトから生成された XML 出力を示しています。 例: XML 出力 ```xml Hello world! ``` 上のスクリプトは JSON 入力を XML 出力に正常に変換します。 ## [](#エラー-スクリプティングエラーと書式設定エラー)エラー (スクリプティングエラーと書式設定エラー) DataWeave スクリプトは、DataWeave コーディングエラーを原因とするエラーと書式設定エラーを原因とするエラーをスローする可能性があります。このため、データ形式を変換する場合、言語と形式の両方の制約に留意することが重要です。たとえば、XML には単一ルートノードが必要です。​[上の DataWeave スクリプト](#script_output_xml)​を使用して次の JSON 入力を XML に変換しようとすると、JSON 入力に単一ルートがないためエラー (​`Unexpected internal error`​) が発生します。 例: JSON 入力 ```json { "size" : 1, "person": { "name": "Yoda" } } ``` スクリプトを作成するには、入力を JSON に似た ​[application/dw](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#format_dataweave)​ 形式に標準化することをお勧めします。実際に、エラーが発生した場合は、単に入力を ​`application/dw`​ に変換することができます。変換が成功した場合、エラーは書式設定エラーの可能性があります。変換が失敗した場合、エラーはコーディングエラーの可能性があります。 次の例では、出力形式を ​`application/dw`​ に変更します。 例: application/dw を出力する DataWeave スクリプト ```dataweave %dw 2.0 output application/dw --- payload ``` このスクリプトでは上記の ​[JSON 入力例](#json_input)​から ​`application/dw`​ 出力が正常に生成されることを確認できます。 例: application/dw 出力 ```dataweave { size: 1, person: { name: "Yoda" } } ``` つまり、前述のエラー (​`Unexpected internal error`​) は、コーディングではなく形式に固有のエラーであることがわかります。上記の ​`application/dw`​ 出力では、XML 形式で必要な単一ルート要素が提供されていないことを確認できます。​_XML_​ 出力用のスクリプトを修正するには、例えば次のように単一ルート要素をスクリプトに提供する必要があります。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- { "myroot" : payload } ``` 出力が XML の要件を満たすようになったため、出力ディレクティブを ​`application/xml`​ に戻すと、結果として有効な XML 出力が生成されます。 例: 単一 XML ルートを含む XML 出力 ```xml 1 Yoda ``` ## [](#dataweave-コメント)DataWeave コメント Java に似た構文を使用するコメントも DataWeave で受け入れられます。 ```dataweave %dw 2.0 output application/json --- /* Multi-line * comment syntax */ payload // Single-line comment syntax ```
Anypoint Studio で発生する可能性があるエラーを回避するには、DataWeave スクリプトの本文の最初の行がコメントである場合に、複数行のコメント構文 (​/\​comment here​/​) を使用します。後続のスクリプトコメントには任意の構文 (​//comment​ または ​/\​comment​/​) を使用できます
## [](#特殊文字のエスケープ)特殊文字のエスケープ DataWeave では、バックスラッシュ (​`\`​) を使用して、入力文字列で使用している特殊文字をエスケープします。 詳細は、​[「特殊文字のエスケープ」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types#escape-chars-string)​を参照してください。 DataWeave スクリプトの​_入力_​文字列では特殊文字がエスケープされますが、​_出力_​では、出力形式の要件に従ってエスケープされます。この要件は、​`application/json`​、​`application/xml`​、​`application/csv`​ などの形式によって異なる可能性があります。 この例では、二重引用符で囲まれた内部の二重引用符がエスケープされます。 DataWeave の例 ```txt %dw 2.0 output application/json --- { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "c": "double quote (\")", "e": `backtick (\`)` } ``` JSON 出力でも、出力が有効な JSON になるように二重引用符がエスケープされますが、他の文字はエスケープされません。 JSON 出力 ```json { "a": "something", "b": "dollar sign ($)", "c": "single quote (')", "c": "double quote (\")", "e": "backtick (`)" } ``` 次の例では、同じ文字がエスケープされますが、XML に出力されます。 DataWeave の例 ```txt %dw 2.0 output application/xml --- { xmlExample: { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "d": "double quote (\")", "e": `backtick (\`)` } } ``` XML 出力は、(JSON 出力とは異なり) 二重引用符をエスケープしなくても有効です。 XML 出力 ```xml something dollar sign ($) single quote (') double quote (") backtick (`) ``` ## [](#valid-identifiers)有効な識別子を宣言するためのルール 有効な識別子を宣言するには、その名前が次の要件を満たす必要があります。 - 大文字または小文字にかかわらずアルファベット文字 (a-z) で始まる必要があります。 - 名前の 2 文字目以降には、文字、数字、およびアンダースコア (​`_`​) の任意の組み合わせを含めることができます。 - 名前は DataWeave の予約済みのキーワード (完全なリストは、​[予約済みのキーワード](#reserved-keywords)​ を参照) に一致することはできません。 有効な識別子のいくつかの例を以下に示します。 - `myType` - `abc123` - `a1_3BC_22` - `Z_____4` - `F` 次の表で、無効な識別子の例と、無効になる理由を説明します。
Identifier (識別子) 問題

123456

数字で始まることはできません。

value$

特殊文字を含めることはできません。

_number

アンダースコアで始まることはできません。

type

予約済みのキーワードは使用できません。

### [](#reserved-keywords)予約済みのキーワード 有効な識別子は、予約済みの DataWeave キーワードに一致することはできません。 - `and` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators#logical_operators)​として予約済み - `as` [型強制](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types-coercion)​用に予約済み - `async` 予約済み - `case` `case`​ ステートメント用に予約済み。たとえば、​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-pattern-matching)​を実行したり、​[`update`​ 演算子](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators#update-operator)​で使用したりします。 - `default` パラメーターの​[デフォルト値](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-defaults)​の割り当て用に予約済み - `do` [`do`](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control)​ ステートメント用に予約済み - `else` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control)​を参照してください。 - `enum` 予約済み - `false` ブール値として予約済み - `for` 予約済み - `fun` [DataWeave ヘッダー](#dw_header)​ の関数定義用に予約済み - `if` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control)​を参照してください。 - `import` [DataWeave ヘッダー](#dw_header)​ の ​`import`​ ディレクティブ用に予約済み - `input` 予約済み - `is` 予約済み - `ns` [DataWeave ヘッダー](#dw_header)​ の名前空間定義用に予約済み - `null` 値 ​`null`​ として予約済み [「Null (dw::Core 型)」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types#dw_type_null)​を参照してください。 - `or` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators#logical_operators)​として予約済み - `output` [DataWeave ヘッダー](#dw_header)​ の ​`output`​ ディレクティブ用に予約済み - `private` 予約済み - `throw` 予約済み - `true` ブール値として予約済み - `type` [DataWeave ヘッダー](#dw_header)​ の型定義用に予約済み - `unless` 予約済み - `using` 後方互換性のために予約済み。​`do`​ で置き換えられます。 [「スコープ演算子とフローコントロール演算子」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators#scope-and-flow-control-operators)​を参照してください。 - `var` [DataWeave ヘッダー](#dw_header)​ の変数定義用に予約済み - `yield` 予約済み ## [](#dwl_file)dwl ファイル Transform や他のコンポーネント内で DataWeave スクリプトを指定するのに加えて、​`.dwl`​ ファイル内でスクリプトを指定することもできます。Studio プロジェクトでは、スクリプトファイルは ​`src/main/resources`​ に保存されます。 Mule アプリケーションの XML では、​`${file::filename}`​ 構文を使用して、​`dwl`​ ファイル内のスクリプトを、式を期待している XML タグに送信することができます。たとえば、次の Choice ルーターの ​`when expression="${file::someFile.dwl}"`​ を参照してください。 ```xml ``` ## [](#see_also)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave 関数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) - [関数とラムダ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types#functions-and-lambdas) # DataWeave スクリプト DataWeave は Mule フローで使用する主データ変換言語です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Transform Message コンポーネントでスタンドアロンの DataWeave スクリプトを記述できます。また、インライン DataWeave 式を記述すると、データを​_その場_​で変換し、さまざまなプロパティの値 (イベントプロセッサーまたはグローバル設定要素の設定項目など) を動的に設定することもできます。インライン DataWeave 式は ​`#[ ]`​ コードブロックで囲みます。たとえば、DataWeave 式を使用して、Choice ルーターの条件を設定したり、Set Payload または Set Variable コンポーネントの値を設定したりできます。 次の例の DataWeave コードでは、DataWeave の ​`now()`​ 関数を使用して、タイムスタンプ変数を現在時刻に設定しています。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave コードを​[外部ファイル](#dwl_file)​に保存して他の DataWeave スクリプトに読み込んだり、Mule アプリケーションのすべてのコンポーネントで共有できる再利用可能な DataWeave 関数のモジュール (ライブラリ) に DataWeave コードをファクタリングしたりすることもできます。 ## [](#dataweave-スクリプトの構造)DataWeave スクリプトの構造 DataWeave スクリプトとファイルは 2 つの主なセクションに分割されます。 - ヘッダー: 本文の式に適用するディレクティブを定義します (省略可能)。 - 本文: 出力構造を生成する式が含まれます。 ヘッダーを含めた場合、ヘッダーは本文の上に表示され、3 つのダッシュ ​`---`​ で構成される区切り文字で分離されます。 DataWeave ファイルの例を次に示します。このファイルでは、ヘッダーで出力ディレクティブを宣言し、その後の DataWeave 式で、子の 2 つのキー/値ペアを含むユーザーオブジェクトを作成します。 例: 簡単な DataWeave スクリプト ```dataweave %dw 2.0 output application/xml --- { user: { firstName: payload.user_firstname, lastName: payload.user_lastName } } ``` ## [](#dw_header)DataWeave ヘッダー この例は、ヘッダーディレクティブで使用できるキーワード (​`import`​、​`var`​ など) を示しています。 DataWeave スクリプト ```dataweave %dw 2.0 import * from dw::core::Arrays var myVar=13.15 fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } type Currency = String { format: "##"} ns ns0 http://www.abc.com output application/xml --- /* * Body here. * / ``` - `%dw`​: 以前のバージョンの DataWeave との後方互換性を維持し、現在のバージョンからの変更で構文が壊れないようにするために、​`%dw`​ ディレクティブでは、スクリプトごとに前の DataWeave バージョンの仕様がサポートされます。このディレクティブの使用は省略可能です。ディレクティブが指定されていない場合、デフォルトバージョンは 2.0 になります。DataWeave バージョン 2.0 ~ 2.4 は、構文が変更されていないため同じです。 例: `%dw 2.0` - `output`​: スクリプトから出力される MIME タイプを特定する、よく使用されるディレクティブ。 例: `output application/xml` 有効な値: [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats)​。 デフォルト: 出力が指定されていない場合、デフォルトの出力は、スクリプトで使用されている入力 (ペイロード、変数など) を検査するアルゴリズムによって決まります。 1. 入力がない場合、デフォルトの ​`output application/java`​ になります。 2. すべての入力の MIME タイプが同じ場合、スクリプトの出力は同じ MIME タイプになります。たとえば、すべての入力が ​`application/json`​ の場合、​`output application/json`​ が出力されます。 3. 各入力の MIME タイプが異なり、出力が指定されていない場合、スクリプトは例外をスローして、出力の MIME タイプを指定するようにユーザーに知らせます。 指定できる出力のタイプは 1 つのみです。 - `import`​: DataWeave 関数モジュールをインポートします。​[「DataWeave 関数」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions)​を参照してください。 - `var`​: DataWeave スクリプトの本文全体で参照できる定数を定義するためのグローバル変数。 例 ```dataweave %dw 2.0 var conversionRate=13.15 output application/json --- { price_dollars: payload.price, price_localCurrency: payload.price * conversionRate } ``` 詳細は、​[「DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables)​を参照してください。 - `type`​: 式で使用できるカスタム型を指定します。 完全な例は、​[「DataWeave を使用した型の強制」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types-coercion)​を参照してください。 - `ns`​: 名前空間。名前空間をインポートするために使用します。 例 ```dataweave %dw 2.0 output application/xml ns ns0 http://www.abc.com ns ns1 http://www.123.com --- { ns0#myroot: { ns1#secondroot: "hello world" } } ``` - `fun`​: スクリプトの本文内からコールできるカスタム関数を作成します。 例 ```dataweave %dw 2.0 output application/json fun toUser(user) = {firstName: user.name, lastName: user.lastName} --- { user: toUser(payload) } ``` ### [](#インライン-dataweave-スクリプトにヘッダーを含める)インライン DataWeave スクリプトにヘッダーを含める インライン DataWeave スクリプトを記述する場合、DataWeave スクリプトのすべての行を 1 つの行にフラット化することで、ヘッダーディレクティブを含めることができます。小さな DataWeave スクリプトの場合、これにより、ヘッダーディレクティブをすばやく適用し (個別の Transform Message コンポーネントを追加して変数を設定する必要はありません)、次のイベントプロセッサーで変数を置き換えることができます。 たとえば、前述の Transform Message コンポーネントと同じ有効な XML 出力を作成する Mule 設定の XML を次に示します。 例: 簡単なインライン DataWeave スクリプト ```xml ``` DataWeave ドキュメントに多くの​[変換例](#see_also)​が記載されています。 ## [](#dataweave-本文)DataWeave 本文 DataWeave 本文には、出力構造を生成する式が含まれます。MuleSoft では、DataWeave モデルを使用してデータを操作するための正規の方法 (クエリ、変換、ビルドプロセス) が提供されています。 DataWeave スクリプト用の JSON 入力を提供する簡単な例を次に示します。 例: JSON 入力 ```json { "message": "Hello world!" } ``` この DataWeave スクリプトは、上の JSON 入力のペイロード全体を取得して ​`application/xml`​ 形式に変換します。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- payload ``` 次の例は、DataWeave スクリプトから生成された XML 出力を示しています。 例: XML 出力 ```xml Hello world! ``` 上のスクリプトは JSON 入力を XML 出力に正常に変換します。 ## [](#エラー-スクリプティングエラーと書式設定エラー)エラー (スクリプティングエラーと書式設定エラー) DataWeave スクリプトは、DataWeave コーディングエラーを原因とするエラーと書式設定エラーを原因とするエラーをスローする可能性があります。このため、データ形式を変換する場合、言語と形式の両方の制約に留意することが重要です。たとえば、XML には単一ルートノードが必要です。​[上の DataWeave スクリプト](#script_output_xml)​を使用して次の JSON 入力を XML に変換しようとすると、JSON 入力に単一ルートがないためエラー (​`Unexpected internal error`​) が発生します。 例: JSON 入力 ```json { "size" : 1, "person": { "name": "Yoda" } } ``` スクリプトを作成するには、入力を JSON に似た ​[application/dw](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#format_dataweave)​ 形式に標準化することをお勧めします。実際に、エラーが発生した場合は、単に入力を ​`application/dw`​ に変換することができます。変換が成功した場合、エラーは書式設定エラーの可能性があります。変換が失敗した場合、エラーはコーディングエラーの可能性があります。 次の例では、出力形式を ​`application/dw`​ に変更します。 例: application/dw を出力する DataWeave スクリプト ```dataweave %dw 2.0 output application/dw --- payload ``` このスクリプトでは上記の ​[JSON 入力例](#json_input)​から ​`application/dw`​ 出力が正常に生成されることを確認できます。 例: application/dw 出力 ```dataweave { size: 1, person: { name: "Yoda" } } ``` つまり、前述のエラー (​`Unexpected internal error`​) は、コーディングではなく形式に固有のエラーであることがわかります。上記の ​`application/dw`​ 出力では、XML 形式で必要な単一ルート要素が提供されていないことを確認できます。​_XML_​ 出力用のスクリプトを修正するには、例えば次のように単一ルート要素をスクリプトに提供する必要があります。 例: application/xml を出力するスクリプト ```dataweave %dw 2.0 output application/xml --- { "myroot" : payload } ``` 出力が XML の要件を満たすようになったため、出力ディレクティブを ​`application/xml`​ に戻すと、結果として有効な XML 出力が生成されます。 例: 単一 XML ルートを含む XML 出力 ```xml 1 Yoda ``` ## [](#dataweave-コメント)DataWeave コメント Java に似た構文を使用するコメントも DataWeave で受け入れられます。 ```dataweave %dw 2.0 output application/json --- /* Multi-line * comment syntax */ payload // Single-line comment syntax ```
Anypoint Studio で発生する可能性があるエラーを回避するには、DataWeave スクリプトの本文の最初の行がコメントである場合に、複数行のコメント構文 (​/\​comment here​/​) を使用します。後続のスクリプトコメントには任意の構文 (​//comment​ または ​/\​comment​/​) を使用できます
## [](#特殊文字のエスケープ)特殊文字のエスケープ DataWeave では、バックスラッシュ (​`\`​) を使用して、入力文字列で使用している特殊文字をエスケープします。 詳細は、​[「特殊文字のエスケープ」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types#escape-chars-string)​を参照してください。 DataWeave スクリプトの​_入力_​文字列では特殊文字がエスケープされますが、​_出力_​では、出力形式の要件に従ってエスケープされます。この要件は、​`application/json`​、​`application/xml`​、​`application/csv`​ などの形式によって異なる可能性があります。 この例では、二重引用符で囲まれた内部の二重引用符がエスケープされます。 DataWeave の例 ```txt %dw 2.0 output application/json --- { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "c": "double quote (\")", "e": `backtick (\`)` } ``` JSON 出力でも、出力が有効な JSON になるように二重引用符がエスケープされますが、他の文字はエスケープされません。 JSON 出力 ```json { "a": "something", "b": "dollar sign ($)", "c": "single quote (')", "c": "double quote (\")", "e": "backtick (`)" } ``` 次の例では、同じ文字がエスケープされますが、XML に出力されます。 DataWeave の例 ```txt %dw 2.0 output application/xml --- { xmlExample: { "a": "something", "b": "dollar sign (\$)", "c": 'single quote (\')', "d": "double quote (\")", "e": `backtick (\`)` } } ``` XML 出力は、(JSON 出力とは異なり) 二重引用符をエスケープしなくても有効です。 XML 出力 ```xml something dollar sign ($) single quote (') double quote (") backtick (`) ``` ## [](#valid-identifiers)有効な識別子を宣言するためのルール 有効な識別子を宣言するには、その名前が次の要件を満たす必要があります。 - 大文字または小文字にかかわらずアルファベット文字 (a-z) で始まる必要があります。 - 名前の 2 文字目以降には、文字、数字、およびアンダースコア (​`_`​) の任意の組み合わせを含めることができます。 - 名前は DataWeave の予約済みのキーワード (完全なリストは、​[予約済みのキーワード](#reserved-keywords)​を参照) に一致することはできません。 有効な識別子のいくつかの例を以下に示します。 - `myType` - `abc123` - `a1_3BC_22` - `Z_____4` - `F` 次の表で、無効な識別子の例と、無効になる理由を説明します。
Identifier (識別子) 問題

123456

数字で始まることはできません。

value$

特殊文字を含めることはできません。

_number

アンダースコアで始まることはできません。

type

予約済みのキーワードは使用できません。

### [](#reserved-keywords)予約済みのキーワード 有効な識別子は、予約済みの DataWeave キーワードに一致することはできません。 - `and` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators#logical_operators)​として予約済み - `as` [型強制](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types-coercion)​用に予約済み - `async` 予約済み - `case` `case`​ ステートメント用に予約済み。たとえば、​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-pattern-matching)​を実行したり、​[`update`​ 演算子](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators#update-operator)​で使用したりします。 - `default` パラメーターの​[デフォルト値](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-defaults)​の割り当て用に予約済み - `do` [`do`](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control)​ ステートメント用に予約済み - `else` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control)​を参照してください。 - `enum` 予約済み - `false` ブール値として予約済み - `for` 予約済み - `fun` [DataWeave ヘッダー](#dw_header)​ 関数定義用に予約済み - `if` if-else および else-if ステートメント用に予約済み [「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control)​を参照してください。 - `import` [DataWeave ヘッダー](#dw_header)​の ​`import`​ ディレクティブ用に予約済み - `input` 予約済み - `is` 予約済み - `ns` [DataWeave ヘッダー](#dw_header)​の名前空間定義用に予約済み - `null` 値 ​`null`​ として予約済み [「Null (dw::Core 型)」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types#dw_type_null)​を参照してください。 - `or` [論理演算子](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators#logical_operators)​として予約済み - `output` [DataWeave ヘッダー](#dw_header)​の ​`output`​ ディレクティブ用に予約済み - `private` 予約済み - `throw` 予約済み - `true` ブール値として予約済み - `type` [DataWeave ヘッダー](#dw_header)​の型定義用に予約済み - `unless` 予約済み - `using` 後方互換性のために予約済み。​`do`​ で置き換えられます。 [「スコープ演算子とフローコントロール演算子」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators#scope-and-flow-control-operators)​を参照してください。 - `var` [DataWeave ヘッダー](#dw_header)​の変数定義用に予約済み - `yield` 予約済み ## [](#dwl_file)dwl ファイル Transform や他のコンポーネント内で DataWeave スクリプトを指定するのに加えて、​`.dwl`​ ファイル内でスクリプトを指定することもできます。Studio プロジェクトでは、スクリプトファイルは ​`src/main/resources`​ に保存されます。 Mule アプリケーションの XML では、​`${file::filename}`​ 構文を使用して、​`dwl`​ ファイル内のスクリプトを、式を期待している XML タグに送信することができます。たとえば、次の Choice ルーターの ​`when expression="${file::someFile.dwl}"`​ を参照してください。 ```xml ``` ## [](#see_also)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave 関数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) - [関数とラムダ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types#functions-and-lambdas) # DataWeave スクリプトが失敗した場合のトラブルシューティング 失敗したスクリプトをトラブルシューティングする場合、特に本番環境では入力の変化が予測できないため、エラーを再現するためにスクリプトの実行時と同じ入力を供給することは困難です。そのため、ロガーをデバッグまたは使用してスクリプトへの入力を取得することが重要です。多くの場合、失敗は別の上流コンポーネントからの入力が有効でないために発生します。ここでは、一般的な DataWeave エラーとその解決方法を示します。 ## [](#入力コンテキストとスクリプトのフォルダーへのダンプ)入力コンテキストとスクリプトのフォルダーへのダンプ Mule 4.2.1 では、スクリプトが失敗した原因となったデータに沿ってスクリプトを追跡できるように、入力コンテキストや失敗したスクリプトをフォルダーにダンプするための実験的な機能が DataWeave に導入されています。 間違ったスクリプトが失敗するのは上流コンポーネントが無効なデータを生成した場合が多いため、このツールは受信した入力データが有効であることを確認するために特に役立ちます。 この機能を使用する手順は、次のとおりです。 1. ダンプ機能を有効にするには、次のシステムプロパティを設定します。 `-M-Dcom.mulesoft.dw.dump_files=true` 2. \[省略可能\] ダンプファイルを生成するパスを指定します。 `-M-Dcom.mulesoft.dw.dump_folder=` デフォルトディレクトリは ​`/tmp`​ です。 ## [](#dataweave-の例外)DataWeave の例外 ここでは、ダンプファイルに見られる一般的な DataWeave 例外と、これらのエラーをトラブルシューティングするための詳細を説明します。 ### [](#間違った引数)間違った引数 間違った引数で関数を呼び出すと、​`org.mule.weave.v2.exception.UnsupportedTypeCoercionException`​ 例外がスローされます。 この例外の原因としては以下が考えられます。 - [関数が Null 引数を受け付けない](#null_arg_not_accepted)​ - [MIME タイプ設定されていない](#mimetype_unset) #### [](#null_arg_not_accepted)関数が Null 引数を受け付けない この例外が発生する最も一般的な原因は、いずれかの引数が ​`Null`​ で、関数が ​`Null`​ を引数として受け付けないことです。この問題が発生すると、次のようなエラーメッセージが返されます。 ```weave You called the function '++' with these arguments: 1: Null (null) 2: String (" A text") But it expects one of these combinations: (Array, Array) (Date, Time) (Date, LocalTime) (Date, TimeZone) (LocalDateTime, TimeZone) (LocalTime, Date) (LocalTime, TimeZone) (Object, Object) (String, String) (Time, Date) (TimeZone, LocalDateTime) (TimeZone, Date) (TimeZone, LocalTime) 1| payload.message ++ " A text" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Trace: at ++ (line: 1, column: 1) at main (line: 1, column: 17) ``` この問題を解決する方法の 1 つは、​`default`​ 演算子を使用することです。たとえば、​`payload.message default "" ++ " A text"`​ を使用すると、メッセージが Null である場合には空のテキストが追加されます。 #### [](#mimetype_unset)MIME タイプ設定されていない MIME タイプが設定されていない場合は、次のようなエラーメッセージが返されます。 ```weave You called the function 'Value Selector' with these arguments: 1: String ("{ \"message\": 123}") 2: Name ("message") But it expects one of these combinations: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period, Name) (Time, Name) 1| payload.message ^^^^^^^^^^^^^^^ Trace: at main (line: 1, column: 1) ``` ペイロードで MIME タイプが設定されていない場合、MIME タイプはデフォルトで ​`application/java`​ に設定され、コンテンツは JSON オブジェクトではなく ​`String`​ として処理されます。 ### [](#スタックのオーバーフロー)スタックのオーバーフロー 関数の再帰が深すぎると、次のようなエラーがスローされます。 ```weave Stack Overflow. Max stack is 256 ``` 最大スタックサイズは、プロパティ ​`com.mulesoft.dw.stacksize`​ を使用して設定できます。 ## [](#dataweave-の警告)DataWeave の警告 ここでは、ダンプファイルに見られる一般的な DataWeave の警告と、これらの警告を解決するための詳細を説明します。 ### [](#入力の最後に達した)入力の最後に達した この警告は、DataWeave が Unicode 非文字 ​`U+FFFF`​ を入力の最後を示す特殊文字として扱うために表示されます。 この警告を回避するには、未加工ペイロードの特殊文字を置き換えてから通常どおりに進めます。 ```weave read(payload.^raw replace "\uFFFF" with "NonChar") ``` ## [](#出力が未定義の場合の不一致)出力が未定義の場合の不一致 変換とは異なり、DataWeave 式では出力形式を定義する必要がありません。これは、DataWeave は使用される式と変数に基づいて出力を推定できるためです。場合によっては、推定プロセスによって推定された型と期待される型の間に不一致が生じることがあります。この問題を解決するには、出力を明示する必要があります。この状況が発生する一般的な例として次のものがあります。 - [XML からのデータの抽出](#xml_extraction)​ - [マルチパートエントリの処理](#multipart_handling)​ - [テキストデータの操作](#manipulating_text) ### [](#xml_extraction)XML からのデータの抽出 文字列を抽出する場合 (XML ペイロードから式 ​`payload.order.product.model`​ を使用して抽出するなど)、DataWeave はペイロード形式に基づいて XML を推定します。このような場合、次のようなエラーが発生します。 ```weave "Trying to output non-whitespace characters outside main element tree (in prolog or epilog), while writing Xml at ." evaluating expression: "payload.order.product.model". ``` このようなエラーが発生する場合は、出力形式を明示する必要があります。たとえば、​`output text/plain --- payload.order.product.model`​ のようにします。 ### [](#multipart_handling)マルチパートエントリの処理 特定の構造を持つマルチパートデータでは、一般的な推定エラーが発生します。マルチパートペイロードと式 ​`dw::core::Objects::keySet(payload.parts)`​ について考えてみます。明示的な出力形式がなければ、DataWeave はペイロード種別に基づいて、マルチパートコンテンツを出力すると推定します。この場合、次のようなエラーがスローされます。 ```weave "Expecting type is { preamble?: String, parts: { _*: { headers: Object, content: Any } } } but got Array, while writing MultiPart. Trace: at main (Unknown)" evaluating expression: "dw::core::Objects::keySet(payload.parts)". ``` この問題を解決するには、出力形式を定義する必要があります。たとえば、​`output application/json --- dw::core::Objects::keySet(payload.parts)`​ のようにします。 ### [](#manipulating_text)テキストデータの操作 テキストデータを使用して、より複雑なオブジェクトを作成できます。ただし、入力テキストデータに対して出力形式を定義しないと、DataWeave は出力にプレーンテキストライターを使用すると推定します。たとえば、式 ​`payload splitBy ' '`​ は次のようなエラーで失敗します。 ```weave "Text plain writer is unable to write Array. Reason: Cannot coerce Array (org.mule.weave.v2.model.values.ArrayValue$ArraySeqArrayValue@1331b353) to String Trace: at main (Unknown), while writing TextPlain. Trace: at main (Unknown)" evaluating expression: "payload splitBy ' '". ``` 出力を明示することで問題が解決します。たとえば、​`output application/java --- payload splitBy ' '`​ のようにします。 # DataWeave スクリプトが失敗した場合のトラブルシューティング 失敗したスクリプトをトラブルシューティングする場合、特に本番環境では入力の変化が予測できないため、エラーを再現するためにスクリプトの実行時と同じ入力を供給することは困難です。そのため、ロガーをデバッグまたは使用してスクリプトへの入力を取得することが重要です。多くの場合、失敗は別の上流コンポーネントからの入力が有効でないために発生します。ここでは、一般的な DataWeave エラーとその解決方法を示します。 ## [](#入力コンテキストとスクリプトのフォルダーへのダンプ)入力コンテキストとスクリプトのフォルダーへのダンプ Mule 4.2.1 では、スクリプトが失敗した原因となったデータに沿ってスクリプトを追跡できるように、入力コンテキストや失敗したスクリプトをフォルダーにダンプするための実験的な機能が DataWeave に導入されています。 間違ったスクリプトが失敗するのは上流コンポーネントが無効なデータを生成した場合が多いため、このツールは受信した入力データが有効であることを確認するために特に役立ちます。 この機能を使用する手順は、次のとおりです。 1. ダンプ機能を有効にするには、次のシステムプロパティを設定します。 `-M-Dcom.mulesoft.dw.dump_files=true` 2. \[省略可能\] ダンプファイルを生成するパスを指定します。 `-M-Dcom.mulesoft.dw.dump_folder=` デフォルトディレクトリは ​`java.io.tmpdir`​ プロパティに設定されています。 ## [](#dataweave-の例外)DataWeave の例外 ここでは、ダンプファイルに見られる一般的な DataWeave 例外と、これらのエラーをトラブルシューティングするための詳細を説明します。 ### [](#間違った引数)間違った引数 間違った引数で関数を呼び出すと、​`org.mule.weave.v2.exception.UnsupportedTypeCoercionException`​ 例外がスローされます。 この例外の原因としては以下が考えられます。 - [関数が Null 引数を受け付けない](#null_arg_not_accepted) - [MIME タイプ設定されていない](#mimetype_unset) #### [](#null_arg_not_accepted)関数が Null 引数を受け付けない この例外が発生する最も一般的な原因は、いずれかの引数が ​`Null`​ で、関数が ​`Null`​ を引数として受け付けないことです。この問題が発生すると、次のようなエラーメッセージが返されます。 ```weave You called the function '++' with these arguments: 1: Null (null) 2: String (" A text") But it expects one of these combinations: (Array, Array) (Date, Time) (Date, LocalTime) (Date, TimeZone) (LocalDateTime, TimeZone) (LocalTime, Date) (LocalTime, TimeZone) (Object, Object) (String, String) (Time, Date) (TimeZone, LocalDateTime) (TimeZone, Date) (TimeZone, LocalTime) 1| payload.message ++ " A text" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Trace: at ++ (line: 1, column: 1) at main (line: 1, column: 17) ``` この問題を解決する方法の 1 つは、​`default`​ 演算子を使用することです。たとえば、​`payload.message default "" ++ " A text"`​ を使用すると、メッセージが Null である場合には空のテキストが追加されます。 #### [](#mimetype_unset)MIME タイプ設定されていない MIME タイプが設定されていない場合は、次のようなエラーメッセージが返されます。 ```weave You called the function 'Value Selector' with these arguments: 1: String ("{ \"message\": 123}") 2: Name ("message") But it expects one of these combinations: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period, Name) (Time, Name) 1| payload.message ^^^^^^^^^^^^^^^ Trace: at main (line: 1, column: 1) ``` ペイロードで MIME タイプが設定されていない場合、MIME タイプはデフォルトで ​`application/java`​ に設定され、コンテンツは JSON オブジェクトではなく ​`String`​ として処理されます。 ### [](#リーダープロパティが-mule-アプリケーションで機能しない)リーダープロパティが Mule アプリケーションで機能しない Mule アプリケーションでは、DataWeave スクリプトへの ​`input`​ ディレクティブは機能しません。 Mule Runtime とは異なり、 [DataWeave Playground+](https://developer.mulesoft.com/learn/dataweave/)​ などのスタンドアロンの DataWeave Runtime は、同じ DataWeave スクリプトの ​`input`​ ディレクティブで設定された有効な MIME タイプを処理できます。 リーダープロパティを Mule アプリケーションのスクリプトに入力するには、データソースの ​`outputMimeType`​ 属性を設定して同じ結果を生成します。 詳細は、​[「リーダーとライターのプロパティの使用」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#using-reader-and-writer-properties)​を参照してください。 ### [](#スタックのオーバーフロー)スタックのオーバーフロー 関数の再帰が深すぎると、次のようなエラーがスローされます。 ```weave Stack Overflow. Max stack is 256 ``` 最大スタックサイズは、プロパティ ​`com.mulesoft.dw.stacksize`​ を使用して設定できます。 ### [](#デバイスにスペースがない)デバイスにスペースがない 大きなペイロードを処理するために、DataWeave ではペイロードが設定可能な制限を超えない限り、メモリ内で処理されるデータを生成します。 ペイロードが制限を超えた場合、データはディスク上の一時ディレクトリに出力、入力、およびバッファファイルとして保存されます。詳細は、​[「DataWeave のメモリ管理」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-memory-management)​を参照してくださいます。 そのファイルを参照するストリームが終了すると、ファイルはリリースされます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 例外 ​`No space left on device`​ を回避するには、アプリケーションを実行するためのリソースを増やしてみるか、アプリケーションのリソース消費を減らせるかどうかを判断します。 フローが完了しているのに、バグでファイルがリリースされないこともあります。 最新の Mule リリースでこの問題が修正されていない場合は、問題を MuleSoft サポートチームに報告してください。 ### [](#終了したストリーム)終了したストリーム 終了したストリーム通常、DataWeave への入力データはストリームです。Mule はストリームを処理し、ストリーム上の「カーソル」を生成して自動終了および反復可能機能を追加します。 ときにはストリームが早く終了して DataWeave スクリプトに到達せず、その理由を把握することが困難な場合があります。 こうした状況では、スクリプトは ​`Cannot open a new cursor on a closed stream`​ のようなエラーで失敗します。 最新の Mule 更新でこのエラーが発生した場合は、MuleSoft サポートチームに報告してください。この問題は回避できませんが、​`com.mulesoft.dw.track.cursor.close`​ システムプロパティを使用してストリームを早く終了したコンポーネントを判別することができます。 このプロパティを設定すると、エラーにストリームが終了した時点からのスタックトレースが表示され、終了をトリガーしたコンポーネントが指摘されます。 ### [](#出力が未定義の場合の不一致)出力が未定義の場合の不一致 変換とは異なり、DataWeave 式では出力形式を定義する必要がありません。これは、DataWeave は使用される式と変数に基づいて出力を推定できるためです。場合によっては、推定プロセスによって推定された型と期待される型の間に不一致が生じることがあります。この問題を解決するには、出力を明示する必要があります。この状況が発生する一般的な例として次のものがあります。 - [XML からのデータの抽出](#xml_extraction) - [マルチパートエントリの処理](#multipart_handling) - [テキストデータの操作](#manipulating_text) #### [](#xml_extraction)XML からのデータの抽出 文字列を抽出する場合 (XML ペイロードから式 ​`payload.order.product.model`​ を使用して抽出するなど)、DataWeave はペイロード形式に基づいて XML を推定します。このような場合、次のようなエラーが発生します。 ```weave "Trying to output non-whitespace characters outside main element tree (in prolog or epilog), while writing Xml at ." evaluating expression: "payload.order.product.model". ``` このようなエラーが発生する場合は、出力形式を明示する必要があります。たとえば、​`output text/plain --- payload.order.product.model`​ のようにします。 #### [](#multipart_handling)マルチパートエントリの処理 特定の構造を持つマルチパートデータでは、一般的な推定エラーが発生します。マルチパートペイロードと式 ​`dw::core::Objects::keySet(payload.parts)`​ について考えてみます。明示的な出力形式がなければ、DataWeave はペイロード種別に基づいて、マルチパートコンテンツを出力すると推定します。この場合、次のようなエラーがスローされます。 ```weave "Expecting type is { preamble?: String, parts: { _*: { headers: Object, content: Any } } } but got Array, while writing MultiPart. Trace: at main (Unknown)" evaluating expression: "dw::core::Objects::keySet(payload.parts)". ``` この問題を解決するには、出力形式を定義する必要があります。たとえば、​`output application/json --- dw::core::Objects::keySet(payload.parts)`​ のようにします。 #### [](#manipulating_text)テキストデータの操作 テキストデータを使用して、より複雑なオブジェクトを作成できます。ただし、入力テキストデータに対して出力形式を定義しないと、DataWeave は出力にプレーンテキストライターを使用すると推定します。たとえば、式 ​`payload splitBy ' '`​ は次のようなエラーで失敗します。 ```weave "Text plain writer is unable to write Array. Reason: Cannot coerce Array (org.mule.weave.v2.model.values.ArrayValue$ArraySeqArrayValue@1331b353) to String Trace: at main (Unknown), while writing TextPlain. Trace: at main (Unknown)" evaluating expression: "payload splitBy ' '". ``` 出力を明示することで問題が解決します。たとえば、​`output application/java --- payload splitBy ' '`​ のようにします。 ### [](#エンコードの問題)エンコードの問題 エンコードの問題は、ファイルの読み取りと書き込みに使用されたエンコードが不一致の場合や、テキストを書き込むためのエンコードでサポートされない文字がある場合に発生することがあります。一般的な例として次のようなものがあります。 - [リーダーのエンコードが不正確](#reader_encoding) - [ライターで使用されるエンコードでサポートされない文字がある](#writer_encoding) - [マルチパート/フォームデータレコーダーではデフォルトで UTF-8 文字がサポートされていない](#multipart_reader) #### [](#reader_encoding)リーダーのエンコードが不正確 Mule で ​`MIME Type`​ 設定 (​`Set Payload`​、​`File Read`​、​`HTTP Listener`​ など) を提供するコンポーネントやコネクタ操作を使用するときには、設定したエンコードがペイロードの書き込みに使用されるエンコードに対応していることを確認します。DataWeave では、​`MIME Type`​ 設定に指定されたエンコードを読み取ります。 MIME タイプを設定しない場合、DataWeave では Mule で ​`mule.encoding`​ システムプロパティに指定されたデフォルトのエンコードを使用します。 #### [](#writer_encoding)ライターで使用されるエンコードでサポートされない文字がある 書き込もうとしている文字がライターのエンコードでサポートされていることを確認します。 たとえば、テキスト `"~―-$¢£㈱①"` をエンコード `sjis` で書き込むと `"???$????"` と出力されます。これは、入力文字の多くが (UTF-8 などとは異なり) そのエンコードでサポートされていないからです。 ```weave %dw 2.0 output application/json encoding="sjis" --- "~―-$¢£㈱①" ``` #### [](#multipart_reader)マルチパート/フォームデータレコーダーではデフォルトで UTF-8 文字がサポートされていない マルチパートファイル名に UTF-8 文字を使用すると、名前の非 ASCII 文字が破損します。 マルチパートの UTF-8 のサポートを有効にするには、次のシステムプロパティを設定します。​`-M-Dmail.mime.allowutf8=true` たとえば、​`allowutf8`​ プロパティを ​`true`​ に設定せずに filename=​`不明.txt`​ でマルチパートペイロードを転記すると、​`filename`​ 項目に次の判読できないテキストが生成されます。 ```weave { "Content-Disposition": { name: "file", filename: "ä\ufffd\ufffd明.txt", subtype: "form-data" }, "Content-Type": "text/plain" } ``` ## [](#dataweave-の警告)DataWeave の警告 以下は、ダンプファイルに見られる一般的な DataWeave 警告とその警告に対処するための詳細です。 ### [](#入力の最後に達した)入力の最後に達した この警告は、DataWeave が Unicode 非文字 ​`U+FFFF`​ を入力の最後を示す特殊文字として扱うために発生します。 この警告を回避するには、未加工ペイロードの特殊文字を置き換えてから通常どおりに進めます。 ```weave read(payload.^raw replace "\uFFFF" with "NonChar") ``` ## [](#低パフォーマンスの問題)低パフォーマンスの問題 ### [](#applicationdw-形式)application/dw 形式 ​`output application/dw`​ 形式を使用すると、変換のパフォーマンスに影響することがあります。この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。 他の形式よりも変換が大幅に遅くなるため、本番アプリケーションではこの形式の使用を避けてください。 ### [](#multipartform-data-コンテンツの解析)multipart/form-data コンテンツの解析 ​`multipart/form-data`​ 入力では、特に ​`application/xlsx`​ などの高メモリ形式では、大きなパートのコンテンツにアクセスするとパフォーマンスが低下する可能性があります。これは、インタープリターがさらに照会して分析するためにパートのコンテンツを解析しようとするためです。 パートのバイナリコンテンツの解析を回避するには ​`^raw`​ セレクターを使用できます。 次の例では、各パートの特定の操作で ​`^raw`​ セレクターを使用します。 #### [](#入力)入力 ```text --myboundary Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --myboundary Content-Disposition: form-data; name="file2"; filename="a.xml" Content-Type: application/xml Available for download! Really large content --myboundary-- ``` #### [](#ソース)ソース ```weave %dw 2.0 input payload multipart boundary='myboundary' output application/json --- payload.parts mapObject ((value, key, index) -> { (key): { fileName: payload.parts[index].headers.'Content-Disposition'.filename, rawContent: payload.parts[index].content.^raw } }) ``` # DataWeave スクリプトが失敗した場合のトラブルシューティング 失敗したスクリプトをトラブルシューティングする場合、特に本番環境では入力の変化が予測できないため、エラーを再現するためにスクリプトの実行時と同じ入力を供給することは困難です。そのため、ロガーをデバッグまたは使用してスクリプトへの入力をキャプチャすることが重要です。多くの場合、失敗は別の上流コンポーネントからの入力が有効でないために発生します。ここでは、一般的な DataWeave エラーとその解決方法を示します。 ## [](#入力コンテキストとスクリプトのフォルダーへのダンプ)入力コンテキストとスクリプトのフォルダーへのダンプ Mule 4.2.1 では、スクリプトが失敗した原因となったデータに沿ってスクリプトを追跡できるように、入力コンテキストや失敗したスクリプトをフォルダーにダンプするための実験的な機能が DataWeave に導入されています。 間違ったスクリプトが失敗するのは上流コンポーネントが無効なデータを生成した場合が多いため、このツールは受信した入力データが有効であることを確認するために特に役立ちます。 この機能を使用する手順は、次のとおりです。 1. ダンプ機能を有効にするには、次のシステムプロパティを設定します。 `-M-Dcom.mulesoft.dw.dump_files=true` 2. \[省略可能\] ダンプファイルを生成するパスを指定します。 `-M-Dcom.mulesoft.dw.dump_folder=` デフォルトディレクトリは ​`java.io.tmpdir`​ プロパティに設定されています。 ## [](#dataweave-の例外)DataWeave の例外 ここでは、ダンプファイルに見られる一般的な DataWeave 例外と、これらのエラーをトラブルシューティングするための詳細を説明します。 ### [](#間違った引数)間違った引数 間違った引数で関数を呼び出すと、​`org.mule.weave.v2.exception.UnsupportedTypeCoercionException`​ 例外がスローされます。 この例外の原因としては以下が考えられます。 - [関数が Null 引数を受け付けない](#null_arg_not_accepted) - [MIME タイプ設定されていない](#mimetype_unset) #### [](#null_arg_not_accepted)関数が Null 引数を受け付けない この例外が発生する最も一般的な原因は、いずれかの引数が ​`Null`​ で、関数が ​`Null`​ を引数として受け付けないことです。この問題が発生すると、次のようなエラーメッセージが返されます。 ```weave You called the function '++' with these arguments: 1: Null (null) 2: String (" A text") But it expects one of these combinations: (Array, Array) (Date, Time) (Date, LocalTime) (Date, TimeZone) (LocalDateTime, TimeZone) (LocalTime, Date) (LocalTime, TimeZone) (Object, Object) (String, String) (Time, Date) (TimeZone, LocalDateTime) (TimeZone, Date) (TimeZone, LocalTime) 1| payload.message ++ " A text" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Trace: at ++ (line: 1, column: 1) at main (line: 1, column: 17) ``` この問題を解決する方法の 1 つは、​`default`​ 演算子を使用することです。たとえば、​`payload.message default "" ++ " A text"`​ を使用すると、メッセージが Null である場合には空のテキストが追加されます。 #### [](#mimetype_unset)MIME タイプ設定されていない MIME タイプが設定されていない場合は、次のようなエラーメッセージが返されます。 ```weave You called the function 'Value Selector' with these arguments: 1: String ("{ \"message\": 123}") 2: Name ("message") But it expects one of these combinations: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period, Name) (Time, Name) 1| payload.message ^^^^^^^^^^^^^^^ Trace: at main (line: 1, column: 1) ``` ペイロードで MIME タイプが設定されていない場合、MIME タイプはデフォルトで ​`application/java`​ に設定され、コンテンツは JSON オブジェクトではなく ​`String`​ として処理されます。 ### [](#リーダープロパティが-mule-アプリケーションで機能しない)リーダープロパティが Mule アプリケーションで機能しない Mule アプリケーションでは、DataWeave スクリプトへの ​`input`​ ディレクティブは機能しません。 Mule Runtime とは異なり、 [DataWeave Playground+](https://developer.mulesoft.com/learn/dataweave/)​ などのスタンドアロンの DataWeave Runtime は、同じ DataWeave スクリプトの ​`input`​ ディレクティブで設定された有効な MIME タイプを処理できます。 リーダープロパティを Mule アプリケーションのスクリプトに入力するには、データソースの ​`outputMimeType`​ 属性を設定して同じ結果を生成します。 詳細は、​[「リーダーとライターのプロパティの使用」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#using-reader-and-writer-properties)​を参照してください。 ### [](#スタックのオーバーフロー)スタックのオーバーフロー 関数の再帰が深すぎると、次のようなエラーがスローされます。 ```weave Stack Overflow. Max stack is 256 ``` 最大スタックサイズは、プロパティ ​`com.mulesoft.dw.stacksize`​ を使用して設定できます。 ### [](#デバイスにスペースがない)デバイスにスペースがない 大きなペイロードを処理するために、DataWeave ではペイロードが設定可能な制限を超えない限り、メモリ内で処理されるデータを生成します。 ペイロードが制限を超えた場合、データはディスク上の一時ディレクトリに出力、入力、およびバッファファイルとして保存されます。詳細は、​[「DataWeave のメモリ管理」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-memory-management)​を参照してくださいます。 そのファイルを参照するストリームが終了すると、ファイルはリリースされます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 例外 ​`No space left on device`​ を回避するには、アプリケーションを実行するためのリソースを増やしてみるか、アプリケーションのリソース消費を減らせるかどうかを判断します。 フローが完了しているのに、バグでファイルがリリースされないこともあります。 最新の Mule リリースでこの問題が修正されていない場合は、問題を MuleSoft サポートチームに報告してください。 ### [](#終了したストリーム)終了したストリーム 終了したストリーム通常、DataWeave への入力データはストリームです。Mule はストリームを処理し、ストリーム上の「カーソル」を生成して自動終了および反復可能機能を追加します。 ときにはストリームが早く終了して DataWeave スクリプトに到達せず、その理由を把握することが困難な場合があります。 こうした状況では、スクリプトは ​`Cannot open a new cursor on a closed stream`​ のようなエラーで失敗します。 最新の Mule 更新でこのエラーが発生した場合は、MuleSoft サポートチームに報告してください。この問題は回避できませんが、​`com.mulesoft.dw.track.cursor.close`​ システムプロパティを使用してストリームを早く終了したコンポーネントを判別することができます。 このプロパティを設定すると、エラーにストリームが終了した時点からのスタックトレースが表示され、終了をトリガーしたコンポーネントが指摘されます。 ### [](#出力が未定義の場合の不一致)出力が未定義の場合の不一致 変換とは異なり、DataWeave 式では出力形式を定義する必要がありません。これは、DataWeave は使用される式と変数に基づいて出力を推定できるためです。場合によっては、推定プロセスによって推定された型と期待される型の間に不一致が生じることがあります。この問題を解決するには、出力を明示する必要があります。この状況が発生する一般的な例として次のものがあります。 - [XML からのデータの抽出](#xml_extraction) - [マルチパートエントリの処理](#multipart_handling) - [テキストデータの操作](#manipulating_text) #### [](#xml_extraction)XML からのデータの抽出 文字列を抽出する場合 (XML ペイロードから式 ​`payload.order.product.model`​ を使用して抽出するなど)、DataWeave はペイロード形式に基づいて XML を推定します。このような場合、次のようなエラーが発生します。 ```weave "Trying to output non-whitespace characters outside main element tree (in prolog or epilog), while writing Xml at ." evaluating expression: "payload.order.product.model". ``` このようなエラーが発生する場合は、出力形式を明示する必要があります。たとえば、​`output text/plain --- payload.order.product.model`​ のようにします。 #### [](#multipart_handling)マルチパートエントリの処理 特定の構造を持つマルチパートデータでは、一般的な推定エラーが発生します。マルチパートペイロードと式 ​`dw::core::Objects::keySet(payload.parts)`​ について考えてみます。明示的な出力形式がなければ、DataWeave はペイロード種別に基づいて、マルチパートコンテンツを出力すると推定します。この場合、次のようなエラーがスローされます。 ```weave "Expecting type is { preamble?: String, parts: { _*: { headers: Object, content: Any } } } but got Array, while writing MultiPart. Trace: at main (Unknown)" evaluating expression: "dw::core::Objects::keySet(payload.parts)". ``` この問題を解決するには、出力形式を定義する必要があります。たとえば、​`output application/json --- dw::core::Objects::keySet(payload.parts)`​ のようにします。 #### [](#manipulating_text)テキストデータの操作 テキストデータを使用して、より複雑なオブジェクトを作成できます。ただし、入力テキストデータに対して出力形式を定義しないと、DataWeave は出力にプレーンテキストライターを使用すると推定します。たとえば、式 ​`payload splitBy ' '`​ は次のようなエラーで失敗します。 ```weave "Text plain writer is unable to write Array. Reason: Cannot coerce Array (org.mule.weave.v2.model.values.ArrayValue$ArraySeqArrayValue@1331b353) to String Trace: at main (Unknown), while writing TextPlain. Trace: at main (Unknown)" evaluating expression: "payload splitBy ' '". ``` 出力を明示することで問題が解決します。たとえば、​`output application/java --- payload splitBy ' '`​ のようにします。 ### [](#エンコードの問題)エンコードの問題 エンコードの問題は、ファイルの読み取りと書き込みに使用されたエンコードが不一致の場合や、テキストを書き込むためのエンコードでサポートされない文字がある場合に発生することがあります。一般的な例として次のようなものがあります。 - [リーダーのエンコードが不正確](#reader_encoding) - [ライターで使用されるエンコードでサポートされない文字がある](#writer_encoding) - [マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない](#multipart_reader) #### [](#reader_encoding)リーダーのエンコードが不正確 Mule で ​`MIME Type`​ 設定 (​`Set Payload`​、​`File Read`​、​`HTTP Listener`​ など) を提供するコンポーネントやコネクタ操作を使用するときには、設定したエンコードがペイロードの書き込みに使用されるエンコードに対応していることを確認します。DataWeave では、​`MIME Type`​ 設定に指定されたエンコードを読み取ります。 MIME タイプを設定しない場合、DataWeave では Mule で ​`mule.encoding`​ システムプロパティに指定されたデフォルトのエンコードを使用します。 #### [](#writer_encoding)ライターで使用されるエンコードでサポートされない文字がある 書き込もうとしている文字がライターのエンコードでサポートされていることを確認します。 たとえば、テキスト ​``"~―-$¢£㈱①“​ をエンコード ​`sjis``​ で書き込むと ​”???$????"\`​ と出力されます。これは、入力文字の多くが (UTF-8 などとは異なり) そのエンコードでサポートされていないからです。 ```weave %dw 2.0 output application/json encoding="sjis" --- "~―-$¢£㈱①" ``` #### [](#multipart_reader)マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない マルチパートファイル名に UTF-8 文字を使用すると、名前の非 ASCII 文字が破損します。 マルチパートの UTF-8 のサポートを有効にするには、次のシステムプロパティを設定します。​`-M-Dmail.mime.allowutf8=true` たとえば、​`allowutf8`​ プロパティを ​`true`​ に設定せずに filename=​`不明.txt`​ でマルチパートペイロードを転記すると、​`filename`​ 項目に次の判読できないテキストが生成されます。 ```weave { "Content-Disposition": { name: "file", filename: "ä\ufffd\ufffd明.txt", subtype: "form-data" }, "Content-Type": "text/plain" } ``` ## [](#dataweave-の警告)DataWeave の警告 以下は、ダンプファイルに見られる一般的な DataWeave 警告とその警告に対処するための詳細です。 ### [](#入力の最後に達した)入力の最後に達した この警告は、DataWeave が Unicode 非文字 ​`U+FFFF`​ を入力の最後を示す特殊文字として扱うために発生します。 この警告を回避するには、未加工ペイロードの特殊文字を置き換えてから通常どおりに進めます。 ```weave read(payload.^raw replace "\uFFFF" with "NonChar") ``` ## [](#低パフォーマンスの問題)低パフォーマンスの問題 ### [](#applicationdw-形式)application/dw 形式 ​`output application/dw`​ 形式を使用すると、変換のパフォーマンスに影響することがあります。この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。 他の形式よりも変換が大幅に遅くなるため、本番アプリケーションではこの形式の使用を避けてください。 ### [](#multipartform-data-コンテンツの解析)multipart/form-data コンテンツの解析 ​`multipart/form-data`​ 入力では、特に ​`application/xlsx`​ などの高メモリ形式では、大きなパートのコンテンツにアクセスするとパフォーマンスが低下する可能性があります。これは、インタープリターがさらに照会して分析するためにパートのコンテンツを解析しようとするためです。 パートのバイナリコンテンツの解析を回避するには ​`^raw`​ セレクターを使用できます。 次の例では、各パートの特定の操作で ​`^raw`​ セレクターを使用します。 #### [](#入力)入力 ```text --myboundary Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --myboundary Content-Disposition: form-data; name="file2"; filename="a.xml" Content-Type: application/xml Available for download! Really large content --myboundary-- ``` #### [](#ソース)ソース ```weave %dw 2.0 input payload multipart boundary='myboundary' output application/json --- payload.parts mapObject ((value, key, index) -> { (key): { fileName: payload.parts[index].headers.'Content-Disposition'.filename, rawContent: payload.parts[index].content.^raw } }) ``` # DataWeave スクリプトが失敗した場合のトラブルシューティング 失敗したスクリプトをトラブルシューティングする場合、特に本番環境では入力の変化が予測できないため、エラーを再現するためにスクリプトの実行時と同じ入力を供給することは困難です。そのため、ロガーをデバッグまたは使用してスクリプトへの入力をキャプチャすることが重要です。多くの場合、失敗は別の上流コンポーネントからの入力が有効でないために発生します。ここでは、一般的な DataWeave エラーとその解決方法を示します。 ## [](#入力コンテキストとスクリプトのフォルダーへのダンプ)入力コンテキストとスクリプトのフォルダーへのダンプ Mule 4.2.1 では、スクリプトが失敗した原因となったデータに沿ってスクリプトを追跡できるように、入力コンテキストや失敗したスクリプトをフォルダーにダンプするための実験的な機能が DataWeave に導入されています。 間違ったスクリプトが失敗するのは上流コンポーネントが無効なデータを生成した場合が多いため、このツールは受信した入力データが有効であることを確認するために特に役立ちます。 この機能を使用する手順は、次のとおりです。 1. ダンプ機能を有効にするには、次のシステムプロパティを設定します。 `-M-Dcom.mulesoft.dw.dump_files=true` 2. \[省略可能\] ダンプファイルを生成するパスを指定します。 `-M-Dcom.mulesoft.dw.dump_folder=` デフォルトディレクトリは ​`java.io.tmpdir`​ プロパティに設定されています。 ## [](#dataweave-の例外)DataWeave の例外 ここでは、ダンプファイルに見られる一般的な DataWeave 例外と、これらのエラーをトラブルシューティングするための詳細を説明します。 ### [](#間違った引数)間違った引数 間違った引数で関数を呼び出すと、​`org.mule.weave.v2.exception.UnsupportedTypeCoercionException`​ 例外がスローされます。 この例外の原因としては以下が考えられます。 - [関数が Null 引数を受け付けない](#null_arg_not_accepted) - [MIME タイプ設定されていない](#mimetype_unset) #### [](#null_arg_not_accepted)関数が Null 引数を受け付けない この例外が発生する最も一般的な原因は、いずれかの引数が ​`Null`​ で、関数が ​`Null`​ を引数として受け付けないことです。この問題が発生すると、次のようなエラーメッセージが返されます。 ```weave You called the function '++' with these arguments: 1: Null (null) 2: String (" A text") But it expects one of these combinations: (Array, Array) (Date, Time) (Date, LocalTime) (Date, TimeZone) (LocalDateTime, TimeZone) (LocalTime, Date) (LocalTime, TimeZone) (Object, Object) (String, String) (Time, Date) (TimeZone, LocalDateTime) (TimeZone, Date) (TimeZone, LocalTime) 1| payload.message ++ " A text" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Trace: at ++ (line: 1, column: 1) at main (line: 1, column: 17) ``` この問題を解決する方法の 1 つは、​`default`​ 演算子を使用することです。たとえば、​`payload.message default "" ++ " A text"`​ を使用すると、メッセージが Null である場合には空のテキストが追加されます。 #### [](#mimetype_unset)MIME タイプ設定されていない MIME タイプが設定されていない場合は、次のようなエラーメッセージが返されます。 ```weave You called the function 'Value Selector' with these arguments: 1: String ("{ \"message\": 123}") 2: Name ("message") But it expects one of these combinations: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period, Name) (Time, Name) 1| payload.message ^^^^^^^^^^^^^^^ Trace: at main (line: 1, column: 1) ``` ペイロードで MIME タイプが設定されていない場合、MIME タイプはデフォルトで ​`application/java`​ に設定され、コンテンツは JSON オブジェクトではなく ​`String`​ として処理されます。 ### [](#リーダープロパティが-mule-アプリケーションで機能しない)リーダープロパティが Mule アプリケーションで機能しない Mule アプリケーションでは、DataWeave スクリプトへの ​`input`​ ディレクティブは機能しません。 Mule Runtime とは異なり、 [DataWeave Playground+](https://developer.mulesoft.com/learn/dataweave/)​ などのスタンドアロンの DataWeave Runtime は、同じ DataWeave スクリプトの ​`input`​ ディレクティブで設定された有効な MIME タイプを処理できます。 リーダープロパティを Mule アプリケーションのスクリプトに入力するには、データソースの ​`outputMimeType`​ 属性を設定して同じ結果を生成します。 詳細は、​[「リーダーとライターのプロパティの使用」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#using-reader-and-writer-properties)​を参照してください。 ### [](#スタックのオーバーフロー)スタックのオーバーフロー 関数の再帰が深すぎると、次のようなエラーがスローされます。 ```weave Stack Overflow. Max stack is 256 ``` 最大スタックサイズは、プロパティ ​`com.mulesoft.dw.stacksize`​ を使用して設定できます。 ### [](#デバイスにスペースがない)デバイスにスペースがない 大きなペイロードを処理するために、DataWeave ではペイロードが設定可能な制限を超えない限り、メモリ内で処理されるデータを生成します。 ペイロードが制限を超えた場合、データはディスク上の一時ディレクトリに出力、入力、およびバッファファイルとして保存されます。詳細は、​[「DataWeave のメモリ管理」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-memory-management)​を参照してくださいます。 そのファイルを参照するストリームが終了すると、ファイルはリリースされます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 例外 ​`No space left on device`​ を回避するには、アプリケーションを実行するためのリソースを増やしてみるか、アプリケーションのリソース消費を減らせるかどうかを判断します。 フローが完了しているのに、バグでファイルがリリースされないこともあります。 最新の Mule リリースでこの問題が修正されていない場合は、問題を MuleSoft サポートチームに報告してください。 ### [](#終了したストリーム)終了したストリーム 終了したストリーム通常、DataWeave への入力データはストリームです。Mule はストリームを処理し、ストリーム上の「カーソル」を生成して自動終了および反復可能機能を追加します。 ときにはストリームが早く終了して DataWeave スクリプトに到達せず、その理由を把握することが困難な場合があります。 こうした状況では、スクリプトは ​`Cannot open a new cursor on a closed stream`​ のようなエラーで失敗します。 最新の Mule 更新でこのエラーが発生した場合は、MuleSoft サポートチームに報告してください。この問題は回避できませんが、​`com.mulesoft.dw.track.cursor.close`​ システムプロパティを使用してストリームを早く終了したコンポーネントを判別することができます。 このプロパティを設定すると、エラーにストリームが終了した時点からのスタックトレースが表示され、終了をトリガーしたコンポーネントが指摘されます。 ### [](#出力が未定義の場合の不一致)出力が未定義の場合の不一致 変換とは異なり、DataWeave 式では出力形式を定義する必要がありません。これは、DataWeave は使用される式と変数に基づいて出力を推定できるためです。場合によっては、推定プロセスによって推定された型と期待される型の間に不一致が生じることがあります。この問題を解決するには、出力を明示する必要があります。この状況が発生する一般的な例として次のものがあります。 - [XML からのデータの抽出](#xml_extraction) - [マルチパートエントリの処理](#multipart_handling) - [テキストデータの操作](#manipulating_text) #### [](#xml_extraction)XML からのデータの抽出 文字列を抽出する場合 (XML ペイロードから式 ​`payload.order.product.model`​ を使用して抽出するなど)、DataWeave はペイロード形式に基づいて XML を推定します。このような場合、次のようなエラーが発生します。 ```weave "Trying to output non-whitespace characters outside main element tree (in prolog or epilog), while writing Xml at ." evaluating expression: "payload.order.product.model". ``` このようなエラーが発生する場合は、出力形式を明示する必要があります。たとえば、​`output text/plain --- payload.order.product.model`​ のようにします。 #### [](#multipart_handling)マルチパートエントリの処理 特定の構造を持つマルチパートデータでは、一般的な推定エラーが発生します。マルチパートペイロードと式 ​`dw::core::Objects::keySet(payload.parts)`​ について考えてみます。明示的な出力形式がなければ、DataWeave はペイロード種別に基づいて、マルチパートコンテンツを出力すると推定します。この場合、次のようなエラーがスローされます。 ```weave "Expecting type is { preamble?: String, parts: { _*: { headers: Object, content: Any } } } but got Array, while writing MultiPart. Trace: at main (Unknown)" evaluating expression: "dw::core::Objects::keySet(payload.parts)". ``` この問題を解決するには、出力形式を定義する必要があります。たとえば、​`output application/json --- dw::core::Objects::keySet(payload.parts)`​ のようにします。 #### [](#manipulating_text)テキストデータの操作 テキストデータを使用して、より複雑なオブジェクトを作成できます。ただし、入力テキストデータに対して出力形式を定義しないと、DataWeave は出力にプレーンテキストライターを使用すると推定します。たとえば、式 ​`payload splitBy ' '`​ は次のようなエラーで失敗します。 ```weave "Text plain writer is unable to write Array. Reason: Cannot coerce Array (org.mule.weave.v2.model.values.ArrayValue$ArraySeqArrayValue@1331b353) to String Trace: at main (Unknown), while writing TextPlain. Trace: at main (Unknown)" evaluating expression: "payload splitBy ' '". ``` 出力を明示することで問題が解決します。たとえば、​`output application/java --- payload splitBy ' '`​ のようにします。 ### [](#エンコードの問題)エンコードの問題 エンコードの問題は、ファイルの読み取りと書き込みに使用されたエンコードが不一致の場合や、テキストを書き込むためのエンコードでサポートされない文字がある場合に発生することがあります。一般的な例として次のようなものがあります。 - [リーダーのエンコードが不正確](#reader_encoding) - [ライターで使用されるエンコードでサポートされない文字がある](#writer_encoding) - [マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない](#multipart_reader) #### [](#reader_encoding)リーダーのエンコードが不正確 Mule で ​`MIME Type`​ 設定 (​`Set Payload`​、​`File Read`​、​`HTTP Listener`​ など) を提供するコンポーネントやコネクタ操作を使用するときには、設定したエンコードがペイロードの書き込みに使用されるエンコードに対応していることを確認します。DataWeave では、​`MIME Type`​ 設定に指定されたエンコードを読み取ります。 MIME タイプを設定しない場合、DataWeave では Mule で ​`mule.encoding`​ システムプロパティに指定されたデフォルトのエンコードを使用します。 #### [](#writer_encoding)ライターで使用されるエンコードでサポートされない文字がある 書き込もうとしている文字がライターのエンコードでサポートされていることを確認します。 たとえば、テキスト ​``"~―-$¢£㈱①“​ をエンコード ​`sjis``​ で書き込むと ​”???$????"\`​ と出力されます。これは、入力文字の多くが (UTF-8 などとは異なり) そのエンコードでサポートされていないからです。 ```weave %dw 2.0 output application/json encoding="sjis" --- "~―-$¢£㈱①" ``` #### [](#multipart_reader)マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない マルチパートファイル名に UTF-8 文字を使用すると、名前の非 ASCII 文字が破損します。 マルチパートの UTF-8 のサポートを有効にするには、次のシステムプロパティを設定します。​`-M-Dmail.mime.allowutf8=true` たとえば、​`allowutf8`​ プロパティを ​`true`​ に設定せずに filename=​`不明.txt`​ でマルチパートペイロードを転記すると、​`filename`​ 項目に次の判読できないテキストが生成されます。 ```weave { "Content-Disposition": { name: "file", filename: "ä\ufffd\ufffd明.txt", subtype: "form-data" }, "Content-Type": "text/plain" } ``` ## [](#dataweave-の警告)DataWeave の警告 以下は、ダンプファイルに見られる一般的な DataWeave 警告とその警告に対処するための詳細です。 ### [](#入力の最後に達した)入力の最後に達した この警告は、DataWeave が Unicode 非文字 ​`U+FFFF`​ を入力の最後を示す特殊文字として扱うために発生します。 この警告を回避するには、未加工ペイロードの特殊文字を置き換えてから通常どおりに進めます。 ```weave read(payload.^raw replace "\uFFFF" with "NonChar") ``` ## [](#低パフォーマンスの問題)低パフォーマンスの問題 ### [](#applicationdw-形式)application/dw 形式 ​`output application/dw`​ 形式を使用すると、変換のパフォーマンスに影響することがあります。この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。 他の形式よりも変換が大幅に遅くなるため、本番アプリケーションではこの形式の使用を避けてください。 ### [](#multipartform-data-コンテンツの解析)multipart/form-data コンテンツの解析 ​`multipart/form-data`​ 入力では、特に ​`application/xlsx`​ などの高メモリ形式では、大きなパートのコンテンツにアクセスするとパフォーマンスが低下する可能性があります。これは、インタープリターがさらに照会して分析するためにパートのコンテンツを解析しようとするためです。 パートのバイナリコンテンツの解析を回避するには ​`^raw`​ セレクターを使用できます。 次の例では、各パートの特定の操作で ​`^raw`​ セレクターを使用します。 #### [](#入力)入力 ```text --myboundary Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --myboundary Content-Disposition: form-data; name="file2"; filename="a.xml" Content-Type: application/xml Available for download! Really large content --myboundary-- ``` #### [](#ソース)ソース ```weave %dw 2.0 input payload multipart boundary='myboundary' output application/json --- payload.parts mapObject ((value, key, index) -> { (key): { fileName: payload.parts[index].headers.'Content-Disposition'.filename, rawContent: payload.parts[index].content.^raw } }) ``` # DataWeave スクリプトが失敗した場合のトラブルシューティング 失敗したスクリプトをトラブルシューティングする場合、特に本番環境では入力の変化が予測できないため、エラーを再現するためにスクリプトの実行時と同じ入力を供給することは困難です。そのため、ロガーをデバッグまたは使用してスクリプトへの入力をキャプチャすることが重要です。多くの場合、失敗は別の上流コンポーネントからの入力が有効でないために発生します。ここでは、一般的な DataWeave エラーとその解決方法を示します。 ## [](#入力コンテキストとスクリプトのフォルダーへのダンプ)入力コンテキストとスクリプトのフォルダーへのダンプ Mule 4.2.1 では、スクリプトが失敗した原因となったデータに沿ってスクリプトを追跡できるように、入力コンテキストや失敗したスクリプトをフォルダーにダンプするための実験的な機能が DataWeave に導入されています。 間違ったスクリプトが失敗するのは上流コンポーネントが無効なデータを生成した場合が多いため、このツールは受信した入力データが有効であることを確認するために特に役立ちます。 この機能を使用する手順は、次のとおりです。 1. ダンプ機能を有効にするには、次のシステムプロパティを設定します。 `-M-Dcom.mulesoft.dw.dump_files=true` 2. \[省略可能\] ダンプファイルを生成するパスを指定します。 `-M-Dcom.mulesoft.dw.dump_folder=` デフォルトディレクトリは ​`java.io.tmpdir`​ プロパティに設定されています。 ## [](#dataweave-の例外)DataWeave の例外 ここでは、ダンプファイルに見られる一般的な DataWeave 例外と、これらのエラーをトラブルシューティングするための詳細を説明します。 ### [](#間違った引数)間違った引数 間違った引数で関数を呼び出すと、​`org.mule.weave.v2.exception.UnsupportedTypeCoercionException`​ 例外がスローされます。 この例外の原因としては以下が考えられます。 - [関数が Null 引数を受け付けない](#null_arg_not_accepted) - [MIME タイプ設定されていない](#mimetype_unset) #### [](#null_arg_not_accepted)関数が Null 引数を受け付けない この例外が発生する最も一般的な原因は、いずれかの引数が ​`Null`​ で、関数が ​`Null`​ を引数として受け付けないことです。この問題が発生すると、次のようなエラーメッセージが返されます。 ```weave You called the function '++' with these arguments: 1: Null (null) 2: String (" A text") But it expects one of these combinations: (Array, Array) (Date, Time) (Date, LocalTime) (Date, TimeZone) (LocalDateTime, TimeZone) (LocalTime, Date) (LocalTime, TimeZone) (Object, Object) (String, String) (Time, Date) (TimeZone, LocalDateTime) (TimeZone, Date) (TimeZone, LocalTime) 1| payload.message ++ " A text" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Trace: at ++ (line: 1, column: 1) at main (line: 1, column: 17) ``` この問題を解決する方法の 1 つは、​`default`​ 演算子を使用することです。たとえば、​`payload.message default "" ++ " A text"`​ を使用すると、メッセージが Null である場合には空のテキストが追加されます。 #### [](#mimetype_unset)MIME タイプ設定されていない MIME タイプが設定されていない場合は、次のようなエラーメッセージが返されます。 ```weave You called the function 'Value Selector' with these arguments: 1: String ("{ \"message\": 123}") 2: Name ("message") But it expects one of these combinations: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period, Name) (Time, Name) 1| payload.message ^^^^^^^^^^^^^^^ Trace: at main (line: 1, column: 1) ``` ペイロードで MIME タイプが設定されていない場合、MIME タイプはデフォルトで ​`application/java`​ に設定され、コンテンツは JSON オブジェクトではなく ​`String`​ として処理されます。 ### [](#リーダープロパティが-mule-アプリケーションで機能しない)リーダープロパティが Mule アプリケーションで機能しない Mule アプリケーションでは、DataWeave スクリプトへの ​`input`​ ディレクティブは機能しません。 Mule Runtime とは異なり、 [DataWeave Playground+](https://developer.mulesoft.com/learn/dataweave/)​ などのスタンドアロンの DataWeave Runtime は、同じ DataWeave スクリプトの ​`input`​ ディレクティブで設定された有効な MIME タイプを処理できます。 リーダープロパティを Mule アプリケーションのスクリプトに入力するには、データソースの ​`outputMimeType`​ 属性を設定して同じ結果を生成します。 詳細は、​[「リーダーとライターのプロパティの使用」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#using-reader-and-writer-properties)​を参照してください。 ### [](#スタックのオーバーフロー)スタックのオーバーフロー 関数の再帰が深すぎると、次のようなエラーがスローされます。 ```weave Stack Overflow. Max stack is 256 ``` 最大スタックサイズは、プロパティ ​`com.mulesoft.dw.stacksize`​ を使用して設定できます。 ### [](#デバイスにスペースがない)デバイスにスペースがない 大きなペイロードを処理するために、DataWeave ではペイロードが設定可能な制限を超えない限り、メモリ内で処理されるデータを生成します。 ペイロードが制限を超えた場合、データはディスク上の一時ディレクトリに出力、入力、およびバッファファイルとして保存されます。詳細は、​[「DataWeave のメモリ管理」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-memory-management)​を参照してくださいます。 そのファイルを参照するストリームが終了すると、ファイルはリリースされます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 例外 ​`No space left on device`​ を回避するには、アプリケーションを実行するためのリソースを増やしてみるか、アプリケーションのリソース消費を減らせるかどうかを判断します。 フローが完了しているのに、バグでファイルがリリースされないこともあります。 最新の Mule リリースでこの問題が修正されていない場合は、問題を MuleSoft サポートチームに報告してください。 ### [](#終了したストリーム)終了したストリーム 終了したストリーム通常、DataWeave への入力データはストリームです。Mule はストリームを処理し、ストリーム上の「カーソル」を生成して自動終了および反復可能機能を追加します。 ときにはストリームが早く終了して DataWeave スクリプトに到達せず、その理由を把握することが困難な場合があります。 こうした状況では、スクリプトは ​`Cannot open a new cursor on a closed stream`​ のようなエラーで失敗します。 最新の Mule 更新でこのエラーが発生した場合は、MuleSoft サポートチームに報告してください。この問題は回避できませんが、​`com.mulesoft.dw.track.cursor.close`​ システムプロパティを使用してストリームを早く終了したコンポーネントを判別することができます。 このプロパティを設定すると、エラーにストリームが終了した時点からのスタックトレースが表示され、終了をトリガーしたコンポーネントが指摘されます。 ### [](#出力が未定義の場合の不一致)出力が未定義の場合の不一致 変換とは異なり、DataWeave 式では出力形式を定義する必要がありません。これは、DataWeave は使用される式と変数に基づいて出力を推定できるためです。場合によっては、推定プロセスによって推定された型と期待される型の間に不一致が生じることがあります。この問題を解決するには、出力を明示する必要があります。この状況が発生する一般的な例として次のものがあります。 - [XML からのデータの抽出](#xml_extraction) - [マルチパートエントリの処理](#multipart_handling) - [テキストデータの操作](#manipulating_text) #### [](#xml_extraction)XML からのデータの抽出 文字列を抽出する場合 (XML ペイロードから式 ​`payload.order.product.model`​ を使用して抽出するなど)、DataWeave はペイロード形式に基づいて XML を推定します。このような場合、次のようなエラーが発生します。 ```weave "Trying to output non-whitespace characters outside main element tree (in prolog or epilog), while writing Xml at ." evaluating expression: "payload.order.product.model". ``` このようなエラーが発生する場合は、出力形式を明示する必要があります。たとえば、​`output text/plain --- payload.order.product.model`​ のようにします。 #### [](#multipart_handling)マルチパートエントリの処理 特定の構造を持つマルチパートデータでは、一般的な推定エラーが発生します。マルチパートペイロードと式 ​`dw::core::Objects::keySet(payload.parts)`​ について考えてみます。明示的な出力形式がなければ、DataWeave はペイロード種別に基づいて、マルチパートコンテンツを出力すると推定します。この場合、次のようなエラーがスローされます。 ```weave "Expecting type is { preamble?: String, parts: { _*: { headers: Object, content: Any } } } but got Array, while writing MultiPart. Trace: at main (Unknown)" evaluating expression: "dw::core::Objects::keySet(payload.parts)". ``` この問題を解決するには、出力形式を定義する必要があります。たとえば、​`output application/json --- dw::core::Objects::keySet(payload.parts)`​ のようにします。 #### [](#manipulating_text)テキストデータの操作 テキストデータを使用して、より複雑なオブジェクトを作成できます。ただし、入力テキストデータに対して出力形式を定義しないと、DataWeave は出力にプレーンテキストライターを使用すると推定します。たとえば、式 ​`payload splitBy ' '`​ は次のようなエラーで失敗します。 ```weave "Text plain writer is unable to write Array. Reason: Cannot coerce Array (org.mule.weave.v2.model.values.ArrayValue$ArraySeqArrayValue@1331b353) to String Trace: at main (Unknown), while writing TextPlain. Trace: at main (Unknown)" evaluating expression: "payload splitBy ' '". ``` 出力を明示することで問題が解決します。たとえば、​`output application/java --- payload splitBy ' '`​ のようにします。 ### [](#エンコードの問題)エンコードの問題 エンコードの問題は、ファイルの読み取りと書き込みに使用されたエンコードが不一致の場合や、テキストを書き込むためのエンコードでサポートされない文字がある場合に発生することがあります。一般的な例として次のようなものがあります。 - [リーダーのエンコードが不正確](#reader_encoding) - [ライターで使用されるエンコードでサポートされない文字がある](#writer_encoding) - [マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない](#multipart_reader) #### [](#reader_encoding)リーダーのエンコードが不正確 Mule で ​`MIME Type`​ 設定 (​`Set Payload`​、​`File Read`​、​`HTTP Listener`​ など) を提供するコンポーネントやコネクタ操作を使用するときには、設定したエンコードがペイロードの書き込みに使用されるエンコードに対応していることを確認します。DataWeave では、​`MIME Type`​ 設定に指定されたエンコードを読み取ります。 MIME タイプを設定しない場合、DataWeave では Mule で ​`mule.encoding`​ システムプロパティに指定されたデフォルトのエンコードを使用します。 #### [](#writer_encoding)ライターで使用されるエンコードでサポートされない文字がある 書き込もうとしている文字がライターのエンコードでサポートされていることを確認します。 たとえば、テキスト ​``"~―-$¢£㈱①“​ をエンコード ​`sjis``​ で書き込むと ​”???$????"\`​ と出力されます。これは、入力文字の多くが (UTF-8 などとは異なり) そのエンコードでサポートされていないからです。 ```weave %dw 2.0 output application/json encoding="sjis" --- "~―-$¢£㈱①" ``` #### [](#multipart_reader)マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない マルチパートファイル名に UTF-8 文字を使用すると、名前の非 ASCII 文字が破損します。 マルチパートの UTF-8 のサポートを有効にするには、次のシステムプロパティを設定します。​`-M-Dmail.mime.allowutf8=true` たとえば、​`allowutf8`​ プロパティを ​`true`​ に設定せずに filename=​`不明.txt`​ でマルチパートペイロードを転記すると、​`filename`​ 項目に次の判読できないテキストが生成されます。 ```weave { "Content-Disposition": { name: "file", filename: "ä\ufffd\ufffd明.txt", subtype: "form-data" }, "Content-Type": "text/plain" } ``` ## [](#dataweave-の警告)DataWeave の警告 以下は、ダンプファイルに見られる一般的な DataWeave 警告とその警告に対処するための詳細です。 ### [](#入力の最後に達した)入力の最後に達した この警告は、DataWeave が Unicode 非文字 ​`U+FFFF`​ を入力の最後を示す特殊文字として扱うために発生します。 この警告を回避するには、未加工ペイロードの特殊文字を置き換えてから通常どおりに進めます。 ```weave read(payload.^raw replace "\uFFFF" with "NonChar") ``` ## [](#低パフォーマンスの問題)低パフォーマンスの問題 ### [](#applicationdw-形式)application/dw 形式 ​`output application/dw`​ 形式を使用すると、変換のパフォーマンスに影響することがあります。この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。 他の形式よりも変換が大幅に遅くなるため、本番アプリケーションではこの形式の使用を避けてください。 ### [](#multipartform-data-コンテンツの解析)multipart/form-data コンテンツの解析 ​`multipart/form-data`​ 入力では、特に ​`application/xlsx`​ などの高メモリ形式では、大きなパートのコンテンツにアクセスするとパフォーマンスが低下する可能性があります。これは、インタープリターがさらに照会して分析するためにパートのコンテンツを解析しようとするためです。 パートのバイナリコンテンツの解析を回避するには ​`^raw`​ セレクターを使用できます。 次の例では、各パートの特定の操作で ​`^raw`​ セレクターを使用します。 #### [](#入力)入力 ```text --myboundary Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --myboundary Content-Disposition: form-data; name="file2"; filename="a.xml" Content-Type: application/xml Available for download! Really large content --myboundary-- ``` #### [](#ソース)ソース ```weave %dw 2.0 input payload multipart boundary='myboundary' output application/json --- payload.parts mapObject ((value, key, index) -> { (key): { fileName: payload.parts[index].headers.'Content-Disposition'.filename, rawContent: payload.parts[index].content.^raw } }) ``` # DataWeave スクリプトが失敗した場合のトラブルシューティング 失敗したスクリプトをトラブルシューティングする場合、特に本番環境では入力の変化が予測できないため、エラーを再現するためにスクリプトの実行時と同じ入力を供給することは困難です。そのため、ロガーをデバッグまたは使用してスクリプトへの入力を取得することが重要です。多くの場合、失敗は別の上流コンポーネントからの入力が有効でないために発生します。ここでは、一般的な DataWeave エラーとその解決方法を示します。 ## [](#入力コンテキストとスクリプトのフォルダーへのダンプ)入力コンテキストとスクリプトのフォルダーへのダンプ Mule 4.2.1 では、スクリプトが失敗した原因となったデータに沿ってスクリプトを追跡できるように、入力コンテキストや失敗したスクリプトをフォルダーにダンプするための実験的な機能が DataWeave に導入されています。 間違ったスクリプトが失敗するのは上流コンポーネントが無効なデータを生成した場合が多いため、このツールは受信した入力データが有効であることを確認するために特に役立ちます。 この機能を使用する手順は、次のとおりです。 1. ダンプ機能を有効にするには、次のシステムプロパティを設定します。 `-M-Dcom.mulesoft.dw.dump_files=true` 2. \[省略可能\] ダンプファイルを生成するパスを指定します。 `-M-Dcom.mulesoft.dw.dump_folder=` デフォルトディレクトリは ​`java.io.tmpdir`​ プロパティに設定されています。 ## [](#dataweave-の例外)DataWeave の例外 ここでは、ダンプファイルに見られる一般的な DataWeave 例外と、これらのエラーをトラブルシューティングするための詳細を説明します。 ### [](#間違った引数)間違った引数 間違った引数で関数を呼び出すと、​`org.mule.weave.v2.exception.UnsupportedTypeCoercionException`​ 例外がスローされます。 この例外の原因としては以下が考えられます。 - [関数が Null 引数を受け付けない](#null_arg_not_accepted) - [MIME タイプ設定されていない](#mimetype_unset) #### [](#null_arg_not_accepted)関数が Null 引数を受け付けない この例外が発生する最も一般的な原因は、いずれかの引数が ​`Null`​ で、関数が ​`Null`​ を引数として受け付けないことです。この問題が発生すると、次のようなエラーメッセージが返されます。 ```weave You called the function '++' with these arguments: 1: Null (null) 2: String (" A text") But it expects one of these combinations: (Array, Array) (Date, Time) (Date, LocalTime) (Date, TimeZone) (LocalDateTime, TimeZone) (LocalTime, Date) (LocalTime, TimeZone) (Object, Object) (String, String) (Time, Date) (TimeZone, LocalDateTime) (TimeZone, Date) (TimeZone, LocalTime) 1| payload.message ++ " A text" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Trace: at ++ (line: 1, column: 1) at main (line: 1, column: 17) ``` この問題を解決する方法の 1 つは、​`default`​ 演算子を使用することです。たとえば、​`payload.message default "" ++ " A text"`​ を使用すると、メッセージが Null である場合には空のテキストが追加されます。 #### [](#mimetype_unset)MIME タイプ設定されていない MIME タイプが設定されていない場合は、次のようなエラーメッセージが返されます。 ```weave You called the function 'Value Selector' with these arguments: 1: String ("{ \"message\": 123}") 2: Name ("message") But it expects one of these combinations: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period, Name) (Time, Name) 1| payload.message ^^^^^^^^^^^^^^^ Trace: at main (line: 1, column: 1) ``` ペイロードで MIME タイプが設定されていない場合、MIME タイプはデフォルトで ​`application/java`​ に設定され、コンテンツは JSON オブジェクトではなく ​`String`​ として処理されます。 ### [](#リーダープロパティが-mule-アプリケーションで機能しない)リーダープロパティが Mule アプリケーションで機能しない Mule アプリケーションでは、DataWeave スクリプトへの ​`input`​ ディレクティブは機能しません。 Mule Runtime とは異なり、 [DataWeave Playground+](https://developer.mulesoft.com/learn/dataweave/)​ などのスタンドアロンの DataWeave Runtime は、同じ DataWeave スクリプトの ​`input`​ ディレクティブで設定された有効な MIME タイプを処理できます。 リーダープロパティを Mule アプリケーションのスクリプトに入力するには、データソースの ​`outputMimeType`​ 属性を設定して同じ結果を生成します。 詳細は、​[「リーダーとライターのプロパティの使用」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#using-reader-and-writer-properties)​を参照してください。 ### [](#スタックのオーバーフロー)スタックのオーバーフロー 関数の再帰が深すぎると、次のようなエラーがスローされます。 ```weave Stack Overflow. Max stack is 256 ``` 最大スタックサイズは、プロパティ ​`com.mulesoft.dw.stacksize`​ を使用して設定できます。 ### [](#no-space-left-on-device-デバイスにスペースがありません)No space left on device (デバイスにスペースがありません) 大きなペイロードを処理するために、DataWeave ではペイロードが設定可能な制限を超えない限り、メモリ内で処理されるデータを生成します。 ペイロードが制限を超えた場合、データはディスク上の一時ディレクトリに出力、入力、およびバッファファイルとして保存されます。詳細は、​[「DataWeave のメモリ管理」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-memory-management)​を参照してくださいます。 そのファイルを参照するストリームが終了すると、ファイルはリリースされます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 例外 ​`No space left on device`​ を回避するには、アプリケーションを実行するためのリソースを増やしてみるか、アプリケーションのリソース消費を減らせるかどうかを判断します。 フローが完了しているのに、バグでファイルがリリースされないこともあります。 最新の Mule リリースでこの問題が修正されていない場合は、問題を MuleSoft サポートチームに報告してください。 ### [](#終了したストリーム)終了したストリーム 通常、DataWeave への入力データはストリームです。Mule はストリームを処理し、ストリーム上の「カーソル」を生成して自動終了および反復可能機能を追加します。 ときにはストリームが早く終了して DataWeave スクリプトに到達せず、その理由を把握することが困難な場合があります。 こうした状況では、スクリプトは ​`Cannot open a new cursor on a closed stream`​ のようなエラーで失敗します。 最新の Mule 更新でこのエラーが発生した場合は、MuleSoft サポートチームに報告してください。この問題は回避できませんが、​`com.mulesoft.dw.track.cursor.close`​ システムプロパティを使用してストリームを早く終了したコンポーネントを判別することができます。 このプロパティを設定すると、エラーにストリームが終了した時点からのスタックトレースが表示され、終了をトリガーしたコンポーネントが指摘されます。 ### [](#出力が未定義の場合の不一致)出力が未定義の場合の不一致 変換とは異なり、DataWeave 式では出力形式を定義する必要がありません。これは、DataWeave は使用される式と変数に基づいて出力を推定できるためです。場合によっては、推定プロセスによって推定された型と期待される型の間に不一致が生じることがあります。この問題を解決するには、出力を明示する必要があります。この状況が発生する一般的な例として次のものがあります。 - [XML からのデータの抽出](#xml_extraction) - [マルチパートエントリの処理](#multipart_handling) - [テキストデータの操作](#manipulating_text) #### [](#xml_extraction)XML からのデータの抽出 文字列を抽出する場合 (XML ペイロードから式 ​`payload.order.product.model`​ を使用して抽出するなど)、DataWeave はペイロード形式に基づいて XML を推定します。このような場合、次のようなエラーが発生します。 ```weave "Trying to output non-whitespace characters outside main element tree (in prolog or epilog), while writing Xml at ." evaluating expression: "payload.order.product.model". ``` このようなエラーが発生する場合は、出力形式を明示する必要があります。たとえば、​`output text/plain --- payload.order.product.model`​ のようにします。 #### [](#multipart_handling)マルチパートエントリの処理 特定の構造を持つマルチパートデータでは、一般的な推定エラーが発生します。マルチパートペイロードと式 ​`dw::core::Objects::keySet(payload.parts)`​ について考えてみます。明示的な出力形式がなければ、DataWeave はペイロード種別に基づいて、マルチパートコンテンツを出力すると推定します。この場合、次のようなエラーがスローされます。 ```weave "Expecting type is { preamble?: String, parts: { _*: { headers: Object, content: Any } } } but got Array, while writing MultiPart. Trace: at main (Unknown)" evaluating expression: "dw::core::Objects::keySet(payload.parts)". ``` この問題を解決するには、出力形式を定義する必要があります。たとえば、​`output application/json --- dw::core::Objects::keySet(payload.parts)`​ のようにします。 #### [](#manipulating_text)テキストデータの操作 テキストデータを使用して、より複雑なオブジェクトを作成できます。ただし、入力テキストデータに対して出力形式を定義しないと、DataWeave は出力にプレーンテキストライターを使用すると推定します。たとえば、式 ​`payload splitBy ' '`​ は次のようなエラーで失敗します。 ```weave "Text plain writer is unable to write Array. Reason: Cannot coerce Array (org.mule.weave.v2.model.values.ArrayValue$ArraySeqArrayValue@1331b353) to String Trace: at main (Unknown), while writing TextPlain. Trace: at main (Unknown)" evaluating expression: "payload splitBy ' '". ``` 出力を明示することで問題が解決します。たとえば、​`output application/java --- payload splitBy ' '`​ のようにします。 ### [](#エンコードの問題)エンコードの問題 エンコードの問題は、ファイルの読み取りと書き込みに使用されたエンコードが不一致の場合や、テキストを書き込むためのエンコードでサポートされない文字がある場合に発生することがあります。一般的な例として次のようなものがあります。 - [リーダーのエンコードが不正確](#reader_encoding) - [ライターで使用されるエンコードでサポートされない文字がある](#writer_encoding) - [マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない](#multipart_reader) #### [](#reader_encoding)リーダーのエンコードが不正確 Mule で ​`MIME Type`​ 設定 (​`Set Payload`​、​`File Read`​、​`HTTP Listener`​ など) を提供するコンポーネントやコネクタ操作を使用するときには、設定したエンコードがペイロードの書き込みに使用されるエンコードに対応していることを確認します。DataWeave では、​`MIME Type`​ 設定に指定されたエンコードを読み取ります。 MIME タイプを設定しない場合、DataWeave では Mule で ​`mule.encoding`​ システムプロパティに指定されたデフォルトのエンコードを使用します。 #### [](#writer_encoding)ライターで使用されるエンコードでサポートされない文字がある 書き込もうとしている文字がライターのエンコードでサポートされていることを確認します。 たとえば、テキスト `"~―-$¢£㈱①"` をエンコード `sjis` で書き込むと `"???$????"` と出力されます。これは、入力文字の多くが (UTF-8 などとは異なり) そのエンコードでサポートされていないからです。 ```weave %dw 2.0 output application/json encoding="sjis" --- "~―-$¢£㈱①" ``` #### [](#multipart_reader)マルチパート/フォームデータリーダーではデフォルトで UTF-8 文字がサポートされていない マルチパートファイル名に UTF-8 文字を使用すると、名前の非 ASCII 文字が破損します。 マルチパートの UTF-8 のサポートを有効にするには、次のシステムプロパティを設定します。​`-M-Dmail.mime.allowutf8=true` たとえば、​`allowutf8`​ プロパティを ​`true`​ に設定せずに filename=​`不明.txt`​ でマルチパートペイロードを転記すると、​`filename`​ 項目に次の判読できないテキストが生成されます。 ```weave { "Content-Disposition": { name: "file", filename: "ä\ufffd\ufffd明.txt", subtype: "form-data" }, "Content-Type": "text/plain" } ``` ## [](#dataweave-の警告)DataWeave の警告 以下は、ダンプファイルに見られる一般的な DataWeave 警告とその警告に対処するための詳細です。 ### [](#入力の最後に達した)入力の最後に達した この警告は、DataWeave が Unicode 非文字 ​`U+FFFF`​ を入力の最後を示す特殊文字として扱うために発生します。 この警告を回避するには、未加工ペイロードの特殊文字を置き換えてから通常どおりに進めます。 ```weave read(payload.^raw replace "\uFFFF" with "NonChar") ``` ## [](#低パフォーマンスの問題)低パフォーマンスの問題 ### [](#applicationdw-形式)application/dw 形式 `output application/dw`​ 形式を使用すると、変換のパフォーマンスに影響することがあります。この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。 他の形式よりも変換が大幅に遅くなるため、本番アプリケーションではこの形式の使用を避けてください。 ### [](#multipartform-data-コンテンツの解析)multipart/form-data コンテンツの解析 `multipart/form-data`​ 入力では、特に ​`application/xlsx`​ などの高メモリ形式では、大きなパートのコンテンツにアクセスするとパフォーマンスが低下する可能性があります。これは、インタープリタがさらに照会して分析するためにパートのコンテンツを解析しようとするためです。 パートのバイナリコンテンツの解析を回避するには ​`^raw`​ セレクターを使用できます。 次の例では、各パートの特定の操作で ​`^raw`​ セレクターを使用します。 #### [](#入力)入力 ```text --myboundary Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --myboundary Content-Disposition: form-data; name="file2"; filename="a.xml" Content-Type: application/xml Available for download! Really large content --myboundary-- ``` #### [](#ソース)ソース ```weave %dw 2.0 input payload multipart boundary='myboundary' output application/json --- payload.parts mapObject ((value, key, index) -> { (key): { fileName: payload.parts[index].headers.'Content-Disposition'.filename, rawContent: payload.parts[index].content.^raw } }) ``` # DataWeave セレクター DataWeave バージョン 2 セレクターはオブジェクトと配列の構造をトラバースし、一致する値を返します。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 セレクターは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。
セレクター種別 構文 戻り値のデータ型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

動的

動的セレクター​ を参照してください。

 

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値。配列の最後からインデックス付けするには負の数を使用します。たとえば、配列の最後の要素の場合は ​-1​ になります。配列のサイズを超える値を使用すると ​null​ が返されます。

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@​、​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。そうでない場合は、値 ​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクターは、クラス (​.^class​)、コンテンツ長 (​.^contentLength​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

以下の例では、これらのセレクターを使用しています。その他の例については、​「データの抽出」​を参照してください。

## [](#照合のルール)照合のルール DataWeave では、オブジェクトのキー (たとえば JSON オブジェクト ​`{ "someName" : "Data Weave" }`​ のキー ​`"someName"`​) と一致する名前が、そのオブジェクトからデータを選択できます。シンプルな例については、​[単一値セレクター](#single_value_selector)​ を参照してください。 ## [](#single_value_selector)単一値セレクター このセレクターは、指定されたセレクター名にキーが一致した最初のキー/値ペアの値と一致します。このセレクターは、オブジェクトまたは配列に適用できます。配列の場合は、配列内のすべてのオブジェクト値にセレクターが適用され、オブジェクト値以外の値はすべて無視されます。一致するキーがない場合は、値 ​`null`​ が返されます。 ### [](#例-オブジェクトに対する単一値セレクターの使用)例: オブジェクトに対する単一値セレクターの使用 次の例は、単一の JSON オブジェクトに対するセレクターの働きを示しています。 #### [](#入力ペイロード)入力ペイロード 入力ペイロードは、キー ​`"name"`​ と値 ​`"DataWeave"`​ を持つオブジェクトです。 ```JSON { "name": "Data Weave" } ``` #### [](#dataweave-ソース)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、キー ​`"name"`​ を持つオブジェクトの値を選択します。 選択の実行手段としては、​`payload.name`​ と ​`payload."name"`​ のどちらも有効です。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力)出力 次のスクリプトは、入力オブジェクト「Data Weave」の文字列値を出力します。 ```JSON "Data Weave" ``` ### [](#例-配列に対する単一値セレクターの使用)例: 配列に対する単一値セレクターの使用 配列では、すべての要素にセレクターが適用されます。 #### [](#入力ペイロード-2)入力ペイロード 入力ペイロードは、同じキー「name」を持つ 2 つのオブジェクトを含む配列です。 ```JSON [ { "name": "Arg" }, { "name": "Japan" } ] ``` #### [](#dataweave-ソース-2)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、入力ペイロード中でキー「name」を持つオブジェクトの値を選択します。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力-2)出力 次のスクリプトは、キー ​`"name"`​ を持つ入力オブジェクトの値 (​`"Arg"`​ と ​`"Japan"`​) を含む配列を出力します。 ```json ["Arg", "Japan"] ``` ## [](#namespace_example1)名前空間セレクター DataWeave 名前空間セレクターは、名前空間またはローカル部分と一致する名前の使用をサポートします。セレクターが名前空間と一致するためには、名前が名前空間およびローカル部分と一致する必要があります。ローカル部分としか一致しない場合、名前空間とは関係なく、セレクターはそのローカル部分を持つすべての名前空間と一致します。 XML 名前空間とそれぞれのプレフィックスは、XML 要素の ​`xmlns`​ 属性に定義されています。たとえば、​``​ は、プレフィックス ​`h`​ を名前空間 ​`[http://www.w3.org/TR/html4/](http://www.w3.org/TR/html4/)`​ に割り当てる名前空間を定義します。 その名前空間内のすべての要素は ​`h`​ プレフィックスを持ちます。たとえば、要素 ​``​ では、​`h`​ が名前空間のプレフィックスで、​`table`​ がローカル部分になります。 ### [](#例-名前空間セレクターの使用)例: 名前空間セレクターの使用 次の例では、名前空間とローカル部分を使用して、XML 要素から値を選択しています。 #### [](#入力ペイロード-3)入力ペイロード 入力ペイロードには、ローカル名 (​`table`​) が同じで異なる名前空間を持つ XML 要素 ​`h:table`​ と ​`f:table`​ が含まれます。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#namespace_variable)DataWeave ソース この DataWeave スクリプトは、指定された名前空間から XML コンテンツを選択します。スクリプトのヘッダーは、名前空間 (​`ns`​) の変数 ​`html`​ と ​`furniture`​ を作成し、入力ペイロードからの名前空間を格納します。要素 ​`h:table`​ の子を選択して要素 ​`a`​ に格納し、要素 ​`f:table`​ の子を選択して要素 ​`b`​ に格納するため、スクリプトは名前空間変数の ​`html`​ と ​`furniture`​ で名前空間セレクター (​`#`​) とローカル部分 (​`table`​) を使用します。 ```DataWeave %dw 2.0 output application/xml ns html http://www.w3.org/TR/html4/ ns furniture https://www.w3schools.com/furniture --- root: { a: payload.root.html#table, b: payload.root.furniture#table } ``` #### [](#出力-3)出力 次のスクリプトは、要素 ​`a`​ では要素 ​`h:table`​ の子を出力し、要素 ​`b`​ では要素 ​`f:table`​ の子を出力します。 ```xml Apples Bananas African Coffee Table 80 120 ``` ### [](#例-ローカル名を使用した-xml-値の選択)例: ローカル名を使用した XML 値の選択 次の例では、ローカル名 ​`table`​ を使用して ​`h:table`​ 要素から XML 値を選択しています。 #### [](#入力ペイロード-4)入力ペイロード 入力ペイロードには、名前空間 ​`"http://www.w3.org/TR/html4/"`​ を含む ​`table`​ 要素を持つ XML が含まれます。 ```xml Apples Bananas ``` #### [](#dataweave-ソース-3)DataWeave ソース この DataWeave スクリプトは、名前区間ではなく XML 要素 ​`table`​ のローカル名を使用して、​`table`​ 要素の子の値を選択します。 ```DataWeave %dw 2.0 output application/xml --- root: { a: payload.root.table } ``` #### [](#出力-4)出力 次のスクリプトは、​`table`​ 要素の子の値を含む XML を出力します。 ```xml Apples Bananas ``` ## [](#attribute_selector)属性セレクター 属性セレクターは、選択された名前式と一致する最初の属性値を返します。どのキーも位置しない場合は値 ​`null`​ を返します。 次の例では、XML 属性の値を選択しています。 ### [](#入力ペイロード-5)入力ペイロード 入力ペイロードは、属性 ​`name="Weave"`​ を含む XML の ​`user`​ 要素です。 ```xml ``` ### [](#dataweave-ソース-4)DataWeave ソース この DataWeave スクリプトは、入力ペイロード (​``​) から ​`name`​ 属性の値を選択します。​`@`​ は属性の選択を示しています。 ```DataWeave %dw 2.0 output application/json --- payload.user.@name ``` ### [](#出力-5)出力 この DataWeave スクリプトは、​`name`​ 属性の値を出力します。 ```json "Weave" ``` ## [](#multi_value_selector)複数値セレクター 複数値セレクター (​`*`​) は、オブジェクトの配列で最初に一致したキーの値を返すのではなく、一致するキーに対する値を含む配列 (たとえば、​`user`​ がキーである場合は ​`*user`​) を返します。このセレクターは、子孫の値は返さず、指定されたレベルの値のみを返します。どのキーも位置しない場合は値 ​`null`​ を返します。 ### [](#入力ペイロード-6)入力ペイロード 入力ペイロードには ​`user`​ 要素の XML 配列が含まれます。 ```xml Weave BAT TF ``` ### [](#dataweave-ソース-5)DataWeave ソース この DataWeave スクリプトは、入力ペイロードのすべての ​`user`​ 要素の値を選択するために ​`*user`​ を使用します。 ```DataWeave %dw 2.0 output application/json --- payload.users.*user ``` ### [](#出力-6)出力 このスクリプトは、​`user`​ 値の配列を出力します。 ```json [ "Weave", "BAT", "TF" ] ``` ## [](#descendant_selector)子孫セレクター 子孫セレクターは、すべての子とそれぞれの子孫のリストを返します。 このセレクターは、​`.`​ を 1 つ使用することで他のどのセレクターとも連結できます。たとえば、​`payload..`​ は、すべての子の値、さらに​_それぞれの_​子の値と、すべての子孫の値を再帰的に選択して、それらの値の配列を返します。セレクターは、他の要素と連結することもできます。たとえば、​`payload..user`​ と指定すると、各 ​`user`​ キーの値と、それぞれの子孫の値がすべて選択されます。または ​`payload..*name`​ と指定すると、​`name`​ のすべての子孫の値が選択されます。 ### [](#例-各子孫の選択)例: 各子孫の選択 次の例では、入力ペイロードの各子孫を選択しています。 #### [](#入力ペイロード-7)入力ペイロード 入力ペイロードには、異なるレベルでネストされている要素のセットが含まれます。 ```xml Weave BAT BDD ``` #### [](#dataweave-ソース-6)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードのすべての要素を再帰的に選択して、JSON 配列として返します。 ```DataWeave %dw 2.0 output application/json --- payload.. ``` #### [](#出力-7)出力 ```json [ { "user": { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } } }, { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } }, "Weave", { "name": "BAT", "user": { "name": "BDD" } }, "BAT", { "name": "BDD" }, "BDD" ] ``` ### [](#例-降順での値の選択)例: 降順での値の選択 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-8)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-7)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードからすべての ​`name`​ (名) 要素を選択し、それらの値を JSON 配列として出力します。 ```DataWeave %dw 2.0 output application/json --- payload..name ``` #### [](#出力-8)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "BDD" ] ``` ### [](#例)例 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-9)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-8)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、XML 階層の同じレベルにある反復 ​`name`​ キーの ​`BAT`​ および ​`Munit`​ 値を含め、入力ペイロードからすべての ​`name`​ 要素の値を選択し、それらの値を JSON 配列に出力します。 ```DataWeave %dw 2.0 output application/json --- payload..*name ``` #### [](#出力-9)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "Munit", "BDD" ] ``` ### [](#例-降順での値の選択-2)例: 降順での値の選択 次の例では、​`Item`​ 要素の ​`Name`​ の値を降順に選択しています。 #### [](#入力ペイロード-10)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`Name`​ 要素のセットが含まれます。 ```xml 32345 circle Perfume Bosque t-Shirt 435678C circle t-Shirt2 t-Shirt red t-Shirt red with logo ``` #### [](#dataweave-ソース-9)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、入力ペイロードから ​`Item`​ 要素でネストされたすべての ​`Name`​ 要素の値を選択し、それらの値を XML 配列に出力します。 ```DataWeave %dw 2.0 output application/xml --- { Supermarket: { Item: { Value: payload..*Item.Name } } } ``` #### [](#出力-10)出力 このスクリプトは、すべての ​`name`​ 値の XML 配列を出力します。 ```xml Perfume t-Shirt Bosque t-Shirt2 t-Shirt red t-Shirt red with logo ``` ## [](#dynamic_selector)動的セレクター 動的セレクターの構文は、選択する対象によって異なります。 - 単一値: `payload[(nameExpression)]` - 複数値: `payload[*(nameExpression)]` - 属性: `payload[@(nameExpression)]` - キー値: `payload[&(nameExpression)]` - 名前空間を持つ単一値: `payload.ns0#"$(nameExpression)"` ### [](#例-単一値の動的選択)例: 単一値の動的選択 次の例は、単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-11)入力ペイロード 入力ペイロードはオブジェクトの配列になります。最初のオブジェクトは、キー ​`"ref"`​ と値 ​`"name"`​ を持ちます。2 番目のオブジェクトは、キー ​`"name"`​ と値 ​`"Data Weave"`​ を持ちます。​`"Data Weave"`​: ```JSON { "ref": "name", "name": "Data Weave" } ``` #### [](#dataweave-ソース-10)DataWeave ソース この DataWeave スクリプトは、​`"name"`​ キーの値を動的に選択します。 ```DataWeave %dw 2.0 output application/json --- payload[(payload.ref)] ``` スクリプトでは、動的セレクター ​`[()]`​ の括弧内で ​`payload.ref`​ を渡しています。​`"ref"`​ の値は ​`"name"`​ であり、キー ​`"name"`​ と一致するため、このスクリプトは機能します。 #### [](#出力-11)出力 このスクリプトは、​`"name"`​ キーを持つオブジェクトの値を出力します。 ```JSON "Data Weave" ``` ### [](#例-名前空間を持つ単一値の動的選択)例: 名前空間を持つ単一値の動的選択 次の例は、名前空間を持つ単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-12)入力ペイロード 入力ペイロードには、2 つの子要素を持ち、それらの片方が名前空間 ​`http://www.w3.org/TR/html4/`​ である ​``​ 要素が 1 つ含まれます。両方の子要素 (​``​ と ​``​) はローカル名の ​`table`​ を持ちます。 ```xml Manzana Banana ``` #### [](#dataweave-ソース-11)DataWeave ソース この DataWeave スクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を動的に選択します。 ```DataWeave %dw 2.0 output application/json ns h http://www.w3.org/TR/html4/ --- payload.root.h#"$(payload.root.@ref)" ``` 式 ​`payload.root.@ref`​ では、​`root`​ 要素の ​`ref`​ 属性に対して属性セレクター (​`@`​) を使用して、要素 ​`Banana`​ のローカル名 ​`table`​ と一致する値 ​`table`​ を選択しています。 #### [](#出力-12)出力 このスクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を出力します。 ```JSON "Banana" ``` ## [](#selectors_variables)変数に保存されたコンテンツでのセレクターの使用 すべてのセレクターが、​[定義済みの Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables-context)​ (​`payload`​、​`attributes`​ など) および ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables)​で機能します。たとえば、​`var myVar = { "id" : "1234", "name" : "somebody" }`​ として定義された DataWeave 変数があるとします。DataWeave 式 ​`myVar.name`​ は ​`"name"`​ の値を返し、その値は ​`"somebody"`​ です。 Mule Runtime 変数を使用することで、​[Mule イベント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-event)​データを選択できます。 抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値 (たとえば、変数とは対照的) として処理されます。
抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>​

例については、​「属性」​を参照してください。

変数

<myVariableName>​

名前の競合を回避するには、​variables​ を先頭に追加することができます。

variables.<myVariableName>​

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト​

error​

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow​

Logger でのフロー名: #[flow.name]​

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。

# DataWeave セレクター DataWeave セレクターはオブジェクトと配列の構造をトラバースし、一致する値を返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 セレクターは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。
セレクター種別 構文 戻り値の型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

動的

動的セレクター​ を参照してください。

 

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値。配列の最後からインデックス付けするには負の数を使用します。たとえば、配列の最後の要素の場合は ​-1​ になります。配列のサイズを超える値を使用すると ​null​ が返されます。

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@​、​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。そうでない場合は、値 ​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクターは、クラス (​.^class​)、コンテンツ長 (​.^contentLength​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

以下の例では、これらのセレクターを使用しています。セレクターのその他の例については、​「データの抽出」​を参照してください。

## [](#照合のルール)照合のルール DataWeave では、オブジェクトのキー (たとえば JSON オブジェクト ​`{ "someName" : "Data Weave" }`​ のキー ​`"someName"`​) と一致する名前が、そのオブジェクトからデータを選択できます。シンプルな例については、​[単一値セレクター](#single_value_selector)​ を参照してください。 ## [](#single_value_selector)単一値セレクター このセレクターは、指定されたセレクター名にキーが一致した最初のキー/値ペアの値と一致します。このセレクターは、オブジェクトまたは配列に適用できます。配列の場合は、配列内のすべてのオブジェクト値にセレクターが適用され、オブジェクト値以外の値はすべて無視されます。一致するキーがない場合は、値 ​`null`​ が返されます。 ### [](#例-オブジェクトに対する単一値セレクターの使用)例: オブジェクトに対する単一値セレクターの使用 次の例は、単一の JSON オブジェクトに対するセレクターの働きを示しています。 #### [](#入力ペイロード)入力ペイロード 入力ペイロードは、キー ​`"name"`​ と値 ​`"DataWeave"`​ を持つオブジェクトです。 ```JSON { "name": "Data Weave" } ``` #### [](#dataweave-ソース)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、キー ​`"name"`​ を持つオブジェクトの値を選択します。 選択の実行手段としては、​`payload.name`​ と ​`payload."name"`​ のどちらも有効です。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力)出力 次のスクリプトは、入力オブジェクト「Data Weave」の文字列値を出力します。 ```JSON "Data Weave" ``` ### [](#例-配列に対する単一値セレクターの使用)例: 配列に対する単一値セレクターの使用 配列では、すべての要素にセレクターが適用されます。 #### [](#入力ペイロード-2)入力ペイロード 入力ペイロードは、同じキー「name」を持つ 2 つのオブジェクトを含む配列です。 ```JSON [ { "name": "Arg" }, { "name": "Japan" } ] ``` #### [](#dataweave-ソース-2)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、入力ペイロード中でキー「name」を持つオブジェクトの値を選択します。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力-2)出力 次のスクリプトは、キー ​`"name"`​ を持つ入力オブジェクトの値 (​`"Arg"`​ と ​`"Japan"`​) を含む配列を出力します。 ```json ["Arg", "Japan"] ``` ## [](#namespace_example1)名前空間セレクター DataWeave 名前空間セレクターは、名前空間またはローカル部分と一致する名前の使用をサポートします。セレクターが名前空間と一致するためには、名前が名前空間およびローカル部分と一致する必要があります。ローカル部分としか一致しない場合、名前空間とは関係なく、セレクターはそのローカル部分を持つすべての名前空間と一致します。 XML 名前空間とそれぞれのプレフィックスは、XML 要素の ​`xmlns`​ 属性に定義されています。たとえば、​``​ は、プレフィックス ​`h`​ を名前空間 ​`[http://www.w3.org/TR/html4/](http://www.w3.org/TR/html4/)`​ に割り当てる名前空間を定義します。 その名前空間内のすべての要素は ​`h`​ プレフィックスを持ちます。たとえば、要素 ​``​ では、​`h`​ が名前空間のプレフィックスで、​`table`​ がローカル部分になります。 ### [](#例-名前空間セレクターの使用)例: 名前空間セレクターの使用 次の例では、名前空間とローカル部分を使用して、XML 要素から値を選択しています。 #### [](#入力ペイロード-3)入力ペイロード 入力ペイロードには、ローカル名 (​`table`​) が同じで異なる名前空間を持つ XML 要素 ​`h:table`​ と ​`f:table`​ が含まれます。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#namespace_variable)DataWeave ソース この DataWeave スクリプトは、指定された名前空間から XML コンテンツを選択します。スクリプトのヘッダーは、名前空間 (​`ns`​) の変数 ​`html`​ と ​`furniture`​ を作成し、入力ペイロードからの名前空間を格納します。要素 ​`h:table`​ の子を選択して要素 ​`a`​ に格納し、要素 ​`f:table`​ の子を選択して要素 ​`b`​ に格納するため、スクリプトは名前空間変数の ​`html`​ と ​`furniture`​ で名前空間セレクター (​`#`​) とローカル部分 (​`table`​) を使用します。 ```DataWeave %dw 2.0 output application/xml ns html http://www.w3.org/TR/html4/ ns furniture https://www.w3schools.com/furniture --- root: { a: payload.root.html#table, b: payload.root.furniture#table } ``` #### [](#出力-3)出力 次のスクリプトは、要素 ​`a`​ では要素 ​`h:table`​ の子を出力し、要素 ​`b`​ では要素 ​`f:table`​ の子を出力します。 ```xml Apples Bananas African Coffee Table 80 120 ``` ### [](#例-ローカル名を使用した-xml-値の選択)例: ローカル名を使用した XML 値の選択 次の例では、ローカル名 ​`table`​ を使用して ​`h:table`​ 要素から XML 値を選択しています。 #### [](#入力ペイロード-4)入力ペイロード 入力ペイロードには、名前空間 ​`"http://www.w3.org/TR/html4/"`​ を含む ​`table`​ 要素を持つ XML が含まれます。 ```xml Apples Bananas ``` #### [](#dataweave-ソース-3)DataWeave ソース この DataWeave スクリプトは、名前区間ではなく XML 要素 ​`table`​ のローカル名を使用して、​`table`​ 要素の子の値を選択します。 ```DataWeave %dw 2.0 output application/xml --- root: { a: payload.root.table } ``` #### [](#出力-4)出力 次のスクリプトは、​`table`​ 要素の子の値を含む XML を出力します。 ```xml Apples Bananas ``` ## [](#attribute_selector)属性セレクター 属性セレクターは、選択された名前式と一致する最初の属性値を返します。どのキーも一致しない場合は値 ​`null`​ を返します。 次の例では、XML 属性の値を選択しています。 ### [](#入力ペイロード-5)入力ペイロード 入力ペイロードは、属性 ​`name="Weave"`​ を含む XML の ​`user`​ 要素です。 ```xml ``` ### [](#dataweave-ソース-4)DataWeave ソース この DataWeave スクリプトは、入力ペイロード (​``​) から ​`name`​ 属性の値を選択します。​`@`​ は属性の選択を示しています。 ```DataWeave %dw 2.0 output application/json --- payload.user.@name ``` ### [](#出力-5)出力 この DataWeave スクリプトは、​`name`​ 属性の値を出力します。 ```json "Weave" ``` ## [](#multi_value_selector)複数値セレクター 複数値セレクター (​`*`​) は、オブジェクトの配列で最初に一致したキーの値を返すのではなく、一致するキーに対する値を含む配列 (たとえば、​`user`​ がキーである場合は ​`*user`​) を返します。このセレクターは、子孫の値は返さず、指定されたレベルの値のみを返します。どのキーも一致しない場合は値 ​`null`​ を返します。 ### [](#入力ペイロード-6)入力ペイロード 入力ペイロードには ​`user`​ 要素の XML 配列が含まれます。 ```xml Weave BAT TF ``` ### [](#dataweave-ソース-5)DataWeave ソース この DataWeave スクリプトは、入力ペイロードのすべての ​`user`​ 要素の値を選択するために ​`*user`​ を使用します。 ```DataWeave %dw 2.0 output application/json --- payload.users.*user ``` ### [](#出力-6)出力 このスクリプトは、​`user`​ 値の配列を出力します。 ```json [ "Weave", "BAT", "TF" ] ``` ## [](#descendant_selector)子孫セレクター 子孫セレクターは、すべての子とそれぞれの子孫のリストを返します。 このセレクターは、​`.`​ を 1 つ使用することで他のどのセレクターとも連結できます。たとえば、​`payload..`​ は、すべての子の値、さらに​_それぞれの_​子の値と、すべての子孫の値を再帰的に選択して、それらの値の配列を返します。セレクターは、他の要素と連結することもできます。たとえば、​`payload..user`​ と指定すると、各 ​`user`​ キーの値と、それぞれの子孫の値がすべて選択されます。または ​`payload..*name`​ と指定すると、​`name`​ のすべての子孫の値が選択されます。 ### [](#例-各子孫の選択)例: 各子孫の選択 次の例では、入力ペイロードの各子孫を選択しています。 #### [](#入力ペイロード-7)入力ペイロード 入力ペイロードには、異なるレベルでネストされている要素のセットが含まれます。 ```xml Weave BAT BDD ``` #### [](#dataweave-ソース-6)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードのすべての要素を再帰的に選択して、JSON 配列として返します。 ```DataWeave %dw 2.0 output application/json --- payload.. ``` #### [](#出力-7)出力 ```json [ { "user": { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } } }, { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } }, "Weave", { "name": "BAT", "user": { "name": "BDD" } }, "BAT", { "name": "BDD" }, "BDD" ] ``` ### [](#例-降順での値の選択)例: 降順での値の選択 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-8)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-7)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードからすべての ​`name`​ (名) 要素を選択し、それらの値を JSON 配列として出力します。 ```DataWeave %dw 2.0 output application/json --- payload..name ``` #### [](#出力-8)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "BDD" ] ``` ### [](#例)例 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-9)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-8)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、XML 階層の同じレベルにある反復 ​`name`​ キーの ​`BAT`​ および ​`Munit`​ 値を含め、入力ペイロードからすべての ​`name`​ 要素の値を選択し、それらの値を JSON 配列に出力します。 ```DataWeave %dw 2.0 output application/json --- payload..*name ``` #### [](#出力-9)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "Munit", "BDD" ] ``` ### [](#例-降順での値の選択-2)例: 降順での値の選択 次の例では、​`Item`​ 要素の ​`Name`​ の値を降順に選択しています。 #### [](#入力ペイロード-10)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`Name`​ 要素のセットが含まれます。 ```xml 32345 circle Perfume Bosque t-Shirt 435678C circle t-Shirt2 t-Shirt red t-Shirt red with logo ``` #### [](#dataweave-ソース-9)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、入力ペイロードから ​`Item`​ 要素でネストされたすべての ​`Name`​ 要素の値を選択し、それらの値を XML 配列に出力します。 ```DataWeave %dw 2.0 output application/xml --- { Supermarket: { Item: { Value: payload..*Item.Name } } } ``` #### [](#出力-10)出力 このスクリプトは、すべての ​`name`​ 値の XML 配列を出力します。 ```xml Perfume t-Shirt Bosque t-Shirt2 t-Shirt red t-Shirt red with logo ``` ## [](#dynamic_selector)動的セレクター 動的セレクターの構文は、選択する対象によって異なります。 - 単一値: `payload[(nameExpression)]` - 複数値: `payload[*(nameExpression)]` - 属性: `payload[@(nameExpression)]` - キー値: `payload[&(nameExpression)]` - 名前空間を持つ単一値: `payload.ns0#"$(nameExpression)"` ### [](#例-単一値の動的選択)例: 単一値の動的選択 次の例は、単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-11)入力ペイロード 入力ペイロードはオブジェクトの配列になります。最初のオブジェクトは、キー ​`"ref"`​ と値 ​`"name"`​ を持ちます。2 番目のオブジェクトは、キー ​`"name"`​ と値 ​`"Data Weave"`​ を持ちます。​`"Data Weave"`​: ```JSON { "ref": "name", "name": "Data Weave" } ``` #### [](#dataweave-ソース-10)DataWeave ソース この DataWeave スクリプトは、​`"name"`​ キーの値を動的に選択します。 ```DataWeave %dw 2.0 output application/json --- payload[(payload.ref)] ``` スクリプトでは、動的セレクター ​`[()]`​ の括弧内で ​`payload.ref`​ を渡しています。​`"ref"`​ の値は ​`"name"`​ であり、キー ​`"name"`​ と一致するため、このスクリプトは機能します。 #### [](#出力-11)出力 このスクリプトは、​`"name"`​ キーを持つオブジェクトの値を出力します。 ```JSON "Data Weave" ``` ### [](#例-名前空間を持つ単一値の動的選択)例: 名前空間を持つ単一値の動的選択 次の例は、名前空間を持つ単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-12)入力ペイロード 入力ペイロードには、2 つの子要素を持ち、それらの片方が名前空間 ​`http://www.w3.org/TR/html4/`​ である ​``​ 要素が 1 つ含まれます。両方の子要素 (​``​ と ​``​) はローカル名の ​`table`​ を持ちます。 ```xml Manzana Banana ``` #### [](#dataweave-ソース-11)DataWeave ソース この DataWeave スクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を動的に選択します。 ```DataWeave %dw 2.0 output application/json ns h http://www.w3.org/TR/html4/ --- payload.root.h#"$(payload.root.@ref)" ``` 式 ​`payload.root.@ref`​ では、​`root`​ 要素の ​`ref`​ 属性に対して属性セレクター (​`@`​) を使用して、要素 ​`Banana`​ のローカル名 ​`table`​ と一致する値 ​`table`​ を選択しています。 #### [](#出力-12)出力 このスクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を出力します。 ```JSON "Banana" ``` ## [](#selectors_variables)変数に保存されたコンテンツでのセレクターの使用 すべてのセレクターが、​[定義済みの Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables-context)​および ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables)​で機能します。 Mule イベント内のペイロード、属性、変数データなどの ​[Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event)​データを選択するには、定義済みの Mule Runtime 変数 (​`payload`​、​`attributes`​、​`vars`​ など) を使用します。 抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値として処理されます。
抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>​

例については、​「属性」​を参照してください。

変数

<myVariableName>​

名前の競合を回避するために、変数名の先頭に ​vars​ を追加する必要があります。

vars.<myVariableName>​

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト​

error​

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow​

Logger でのフロー名: #[flow.name]​

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。

# DataWeave セレクター DataWeave セレクターはオブジェクトと配列の構造をトラバースし、一致する値を返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 セレクターは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。
セレクター種別 構文 戻り値の型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

動的

動的セレクター​ を参照してください。

 

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値。配列の最後からインデックス付けするには負の数を使用します。たとえば、配列の最後の要素の場合は ​-1​ になります。配列のサイズを超える値を使用すると ​null​ が返されます。

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@, ​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。そうでない場合は、値 ​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクターは、クラス (​.^class​)、コンテンツ長 (​.^contentLength​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

以下の例では、これらのセレクターを使用しています。セレクターのその他の例については、​「データの抽出」​を参照してください。

## [](#照合のルール)照合のルール DataWeave では、オブジェクトのキー (たとえば JSON オブジェクト ​`{ "someName" : "Data Weave" }`​ のキー ​`"someName"`​) と一致する名前が、そのオブジェクトからデータを選択できます。シンプルな例については、​[単一値セレクター](#single_value_selector)​ を参照してください。 ## [](#single_value_selector)単一値セレクター このセレクターは、指定されたセレクター名にキーが一致した最初のキー/値ペアの値と一致します。このセレクターは、オブジェクトまたは配列に適用できます。配列の場合は、配列内のすべてのオブジェクト値にセレクターが適用され、オブジェクト値以外の値はすべて無視されます。一致するキーがない場合は、値 ​`null`​ が返されます。
ドットセレクター (​.​) と DataWeave 型でのドットセレクターの使用方法についての詳細は、型の選択を参照してください。
### [](#例-オブジェクトに対する単一値セレクターの使用)例: オブジェクトに対する単一値セレクターの使用 次の例は、単一の JSON オブジェクトに対するセレクターの働きを示しています。 #### [](#入力ペイロード)入力ペイロード 入力ペイロードは、キー ​`"name"`​ と値 ​`"DataWeave"`​ を持つオブジェクトです。 ```JSON { "name": "Data Weave" } ``` #### [](#dataweave-ソース)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、キー ​`"name"`​ を持つオブジェクトの値を選択します。 選択の実行手段としては、​`payload.name`​ と ​`payload."name"`​ のどちらも有効です。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力)出力 次のスクリプトは、入力オブジェクト「Data Weave」の文字列値を出力します。 ```JSON "Data Weave" ``` ### [](#例-配列に対する単一値セレクターの使用)例: 配列に対する単一値セレクターの使用 配列では、すべての要素にセレクターが適用されます。 #### [](#入力ペイロード-2)入力ペイロード 入力ペイロードは、同じキー「name」を持つ 2 つのオブジェクトを含む配列です。 ```JSON [ { "name": "Arg" }, { "name": "Japan" } ] ``` #### [](#dataweave-ソース-2)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、入力ペイロード中でキー「name」を持つオブジェクトの値を選択します。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力-2)出力 次のスクリプトは、キー ​`"name"`​ を持つ入力オブジェクトの値 (​`"Arg"`​ と ​`"Japan"`​) を含む配列を出力します。 ```json ["Arg", "Japan"] ``` ## [](#namespace_example1)名前空間セレクター DataWeave 名前空間セレクターは、名前空間またはローカル部分と一致する名前の使用をサポートします。セレクターが名前空間と一致するためには、名前が名前空間およびローカル部分と一致する必要があります。ローカル部分としか一致しない場合、名前空間とは関係なく、セレクターはそのローカル部分を持つすべての名前空間と一致します。 XML 名前空間とそれぞれのプレフィックスは、XML 要素の ​`xmlns`​ 属性に定義されています。たとえば、​``​ は、プレフィックス ​`h`​ を名前空間 ​`[http://www.w3.org/TR/html4/](http://www.w3.org/TR/html4/)`​ に割り当てる名前空間を定義します。 その名前空間内のすべての要素は ​`h`​ プレフィックスを持ちます。たとえば、要素 ​``​ では、​`h`​ が名前空間のプレフィックスで、​`table`​ がローカル部分になります。 ### [](#例-名前空間セレクターの使用)例: 名前空間セレクターの使用 次の例では、名前空間とローカル部分を使用して、XML 要素から値を選択しています。 #### [](#入力ペイロード-3)入力ペイロード 入力ペイロードには、ローカル名 (​`table`​) が同じで異なる名前空間を持つ XML 要素 ​`h:table`​ と ​`f:table`​ が含まれます。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#namespace_variable)DataWeave ソース この DataWeave スクリプトは、指定された名前空間から XML コンテンツを選択します。スクリプトのヘッダーは、名前空間 (​`ns`​) の変数 ​`html`​ と ​`furniture`​ を作成し、入力ペイロードからの名前空間を格納します。要素 ​`h:table`​ の子を選択して要素 ​`a`​ に格納し、要素 ​`f:table`​ の子を選択して要素 ​`b`​ に格納するため、スクリプトは名前空間変数の ​`html`​ と ​`furniture`​ で名前空間セレクター (​`#`​) とローカル部分 (​`table`​) を使用します。 ```DataWeave %dw 2.0 output application/xml ns html http://www.w3.org/TR/html4/ ns furniture https://www.w3schools.com/furniture --- root: { a: payload.root.html#table, b: payload.root.furniture#table } ``` #### [](#出力-3)出力 次のスクリプトは、要素 ​`a`​ では要素 ​`h:table`​ の子を出力し、要素 ​`b`​ では要素 ​`f:table`​ の子を出力します。 ```xml Apples Bananas African Coffee Table 80 120 ``` ### [](#例-ローカル名を使用した-xml-値の選択)例: ローカル名を使用した XML 値の選択 次の例では、ローカル名 ​`table`​ を使用して ​`h:table`​ 要素から XML 値を選択しています。 #### [](#入力ペイロード-4)入力ペイロード 入力ペイロードには、名前空間 ​`"http://www.w3.org/TR/html4/"`​ を含む ​`table`​ 要素を持つ XML が含まれます。 ```xml Apples Bananas ``` #### [](#dataweave-ソース-3)DataWeave ソース この DataWeave スクリプトは、名前区間ではなく XML 要素 ​`table`​ のローカル名を使用して、​`table`​ 要素の子の値を選択します。 ```DataWeave %dw 2.0 output application/xml --- root: { a: payload.root.table } ``` #### [](#出力-4)出力 次のスクリプトは、​`table`​ 要素の子の値を含む XML を出力します。 ```xml Apples Bananas ``` ## [](#attribute_selector)属性セレクター 属性セレクターは、選択された名前式と一致する最初の属性値を返します。どのキーも一致しない場合は値 ​`null`​ を返します。 次の例では、XML 属性の値を選択しています。 ### [](#入力ペイロード-5)入力ペイロード 入力ペイロードは、属性 ​`name="Weave"`​ を含む XML の ​`user`​ 要素です。 ```xml ``` ### [](#dataweave-ソース-4)DataWeave ソース この DataWeave スクリプトは、入力ペイロード (​``​) から ​`name`​ 属性の値を選択します。​`@`​ は属性の選択を示しています。 ```DataWeave %dw 2.0 output application/json --- payload.user.@name ``` ### [](#出力-5)出力 この DataWeave スクリプトは、​`name`​ 属性の値を出力します。 ```json "Weave" ``` ## [](#multi_value_selector)複数値セレクター 複数値セレクター (​`*`​) は、オブジェクトの配列で最初に一致したキーの値を返すのではなく、一致するキーに対する値を含む配列 (たとえば、​`user`​ がキーである場合は ​`*user`​) を返します。このセレクターは、子孫の値は返さず、指定されたレベルの値のみを返します。どのキーも一致しない場合は値 ​`null`​ を返します。 ### [](#入力ペイロード-6)入力ペイロード 入力ペイロードには ​`user`​ 要素の XML 配列が含まれます。 ```xml Weave BAT TF ``` ### [](#dataweave-ソース-5)DataWeave ソース この DataWeave スクリプトは、入力ペイロードのすべての ​`user`​ 要素の値を選択するために ​`*user`​ を使用します。 ```DataWeave %dw 2.0 output application/json --- payload.users.*user ``` ### [](#出力-6)出力 このスクリプトは、​`user`​ 値の配列を出力します。 ```json [ "Weave", "BAT", "TF" ] ``` ## [](#descendant_selector)子孫セレクター 子孫セレクターは、すべての子とそれぞれの子孫のリストを返します。 このセレクターは、​`.`​ を 1 つ使用することで他のどのセレクターとも連結できます。たとえば、​`payload..`​ は、すべての子の値、さらに​_それぞれの_​子の値と、すべての子孫の値を再帰的に選択して、それらの値の配列を返します。セレクターは、他の要素と連結することもできます。たとえば、​`payload..user`​ と指定すると、各 ​`user`​ キーの値と、それぞれの子孫の値がすべて選択されます。または ​`payload..*name`​ と指定すると、​`name`​ のすべての子孫の値が選択されます。 ### [](#例-各子孫の選択)例: 各子孫の選択 次の例では、入力ペイロードの各子孫を選択しています。 #### [](#入力ペイロード-7)入力ペイロード 入力ペイロードには、異なるレベルでネストされている要素のセットが含まれます。 ```xml Weave BAT BDD ``` #### [](#dataweave-ソース-6)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードのすべての要素を再帰的に選択して、JSON 配列として返します。 ```DataWeave %dw 2.0 output application/json --- payload.. ``` #### [](#出力-7)出力 ```json [ { "user": { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } } }, { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } }, "Weave", { "name": "BAT", "user": { "name": "BDD" } }, "BAT", { "name": "BDD" }, "BDD" ] ``` ### [](#例-降順での値の選択)例: 降順での値の選択 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-8)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-7)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードからすべての ​`name`​ (名) 要素を選択し、それらの値を JSON 配列として出力します。 ```DataWeave %dw 2.0 output application/json --- payload..name ``` #### [](#出力-8)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "BDD" ] ``` ### [](#例)例 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-9)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-8)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、XML 階層の同じレベルにある反復 ​`name`​ キーの ​`BAT`​ および ​`Munit`​ 値を含め、入力ペイロードからすべての ​`name`​ 要素の値を選択し、それらの値を JSON 配列に出力します。 ```DataWeave %dw 2.0 output application/json --- payload..*name ``` #### [](#出力-9)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "Munit", "BDD" ] ``` ### [](#例-降順での値の選択-2)例: 降順での値の選択 次の例では、​`Item`​ 要素の ​`Name`​ の値を降順に選択しています。 #### [](#入力ペイロード-10)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`Name`​ 要素のセットが含まれます。 ```xml 32345 circle Perfume Bosque t-Shirt 435678C circle t-Shirt2 t-Shirt red t-Shirt red with logo ``` #### [](#dataweave-ソース-9)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、入力ペイロードから ​`Item`​ 要素でネストされたすべての ​`Name`​ 要素の値を選択し、それらの値を XML 配列に出力します。 ```DataWeave %dw 2.0 output application/xml --- { Supermarket: { Item: { Value: payload..*Item.Name } } } ``` #### [](#出力-10)出力 このスクリプトは、すべての ​`name`​ 値の XML 配列を出力します。 ```xml Perfume t-Shirt Bosque t-Shirt2 t-Shirt red t-Shirt red with logo ``` ## [](#dynamic_selector)動的セレクター 動的セレクターの構文は、選択する対象によって異なります。 - 単一値: `payload[(nameExpression)]` - 複数値: `payload[*(nameExpression)]` - 属性: `payload[@(nameExpression)]` - キー値: `payload[&(nameExpression)]` - 名前空間を持つ単一値: `payload.ns0#"$(nameExpression)"` ### [](#例-単一値の動的選択)例: 単一値の動的選択 次の例は、単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-11)入力ペイロード 入力ペイロードはオブジェクトの配列になります。最初のオブジェクトは、キー ​`"ref"`​ と値 ​`"name"`​ を持ちます。2 番目のオブジェクトは、キー ​`"name"`​ と値 ​`"Data Weave"`​ を持ちます。​`"Data Weave"`​: ```JSON { "ref": "name", "name": "Data Weave" } ``` #### [](#dataweave-ソース-10)DataWeave ソース この DataWeave スクリプトは、​`"name"`​ キーの値を動的に選択します。 ```DataWeave %dw 2.0 output application/json --- payload[(payload.ref)] ``` スクリプトでは、動的セレクター ​`[()]`​ の括弧内で ​`payload.ref`​ を渡しています。​`"ref"`​ の値は ​`"name"`​ であり、キー ​`"name"`​ と一致するため、このスクリプトは機能します。 #### [](#出力-11)出力 このスクリプトは、​`"name"`​ キーを持つオブジェクトの値を出力します。 ```JSON "Data Weave" ``` ### [](#例-名前空間を持つ単一値の動的選択)例: 名前空間を持つ単一値の動的選択 次の例は、名前空間を持つ単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-12)入力ペイロード 入力ペイロードには、2 つの子要素を持ち、それらの片方が名前空間 ​`http://www.w3.org/TR/html4/`​ である ​``​ 要素が 1 つ含まれます。両方の子要素 (​``​ と ​``​) はローカル名の ​`table`​ を持ちます。 ```xml Manzana Banana ``` #### [](#dataweave-ソース-11)DataWeave ソース この DataWeave スクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を動的に選択します。 ```DataWeave %dw 2.0 output application/json ns h http://www.w3.org/TR/html4/ --- payload.root.h#"$(payload.root.@ref)" ``` 式 ​`payload.root.@ref`​ では、​`root`​ 要素の ​`ref`​ 属性に対して属性セレクター (​`@`​) を使用して、要素 ​`Banana`​ のローカル名 ​`table`​ と一致する値 ​`table`​ を選択しています。 #### [](#出力-12)出力 このスクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を出力します。 ```JSON "Banana" ``` ## [](#selectors_variables)変数に保存されたコンテンツでのセレクターの使用 すべてのセレクターが、​[定義済みの Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables-context)​および ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables)​で機能します。 Mule イベント内のペイロード、属性、変数データなどの ​[Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event)​データを選択するには、定義済みの Mule Runtime 変数 (​`payload`​、​`attributes`​、​`vars`​ など) を使用します。 抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値として処理されます。
抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>​

例については、​「属性」​を参照してください。

変数

<myVariableName>​

名前の競合を回避するために、変数名の先頭に ​vars​ を追加する必要があります。

vars.<myVariableName>​

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト​

error​

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow​

Logger でのフロー名: #[flow.name]​

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。

# DataWeave セレクター DataWeave セレクターはオブジェクトと配列の構造をトラバースし、一致する値を返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 セレクターは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。
セレクター種別 構文 戻り値の型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

動的

動的セレクター​ を参照してください。

 

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値。配列の最後からインデックス付けするには負の数を使用します。たとえば、配列の最後の要素の場合は ​-1​ になります。配列のサイズを超える値を使用すると ​null​ が返されます。

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@, ​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。そうでない場合は、値 ​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクターは、クラス (​.^class​)、コンテンツ長 (​.^contentLength​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

以下の例では、これらのセレクターを使用しています。セレクターのその他の例については、​「データの抽出」​を参照してください。

## [](#照合のルール)照合のルール DataWeave では、オブジェクトのキー (たとえば JSON オブジェクト ​`{ "someName" : "Data Weave" }`​ のキー ​`"someName"`​) と一致する名前が、そのオブジェクトからデータを選択できます。シンプルな例については、​[単一値セレクター](#single_value_selector)​ を参照してください。 ## [](#single_value_selector)単一値セレクター このセレクターは、指定されたセレクター名にキーが一致した最初のキー/値ペアの値と一致します。このセレクターは、オブジェクトまたは配列に適用できます。配列の場合は、配列内のすべてのオブジェクト値にセレクターが適用され、オブジェクト値以外の値はすべて無視されます。一致するキーがない場合は、値 ​`null`​ が返されます。
ドットセレクター (​.​) と DataWeave 型でのドットセレクターの使用方法についての詳細は、型の選択を参照してください。
### [](#例-オブジェクトに対する単一値セレクターの使用)例: オブジェクトに対する単一値セレクターの使用 次の例は、単一の JSON オブジェクトに対するセレクターの働きを示しています。 #### [](#入力ペイロード)入力ペイロード 入力ペイロードは、キー ​`"name"`​ と値 ​`"DataWeave"`​ を持つオブジェクトです。 ```JSON { "name": "Data Weave" } ``` #### [](#dataweave-ソース)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、キー ​`"name"`​ を持つオブジェクトの値を選択します。 選択の実行手段としては、​`payload.name`​ と ​`payload."name"`​ のどちらも有効です。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力)出力 次のスクリプトは、入力オブジェクト「Data Weave」の文字列値を出力します。 ```JSON "Data Weave" ``` ### [](#例-配列に対する単一値セレクターの使用)例: 配列に対する単一値セレクターの使用 配列では、すべての要素にセレクターが適用されます。 #### [](#入力ペイロード-2)入力ペイロード 入力ペイロードは、同じキー「name」を持つ 2 つのオブジェクトを含む配列です。 ```JSON [ { "name": "Arg" }, { "name": "Japan" } ] ``` #### [](#dataweave-ソース-2)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、入力ペイロード中でキー「name」を持つオブジェクトの値を選択します。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力-2)出力 次のスクリプトは、キー ​`"name"`​ を持つ入力オブジェクトの値 (​`"Arg"`​ と ​`"Japan"`​) を含む配列を出力します。 ```json ["Arg", "Japan"] ``` ## [](#namespace_example1)名前空間セレクター DataWeave 名前空間セレクターは、名前空間またはローカル部分と一致する名前の使用をサポートします。セレクターが名前空間と一致するためには、名前が名前空間およびローカル部分と一致する必要があります。ローカル部分としか一致しない場合、名前空間とは関係なく、セレクターはそのローカル部分を持つすべての名前空間と一致します。 XML 名前空間とそれぞれのプレフィックスは、XML 要素の ​`xmlns`​ 属性に定義されています。たとえば、​``​ は、プレフィックス ​`h`​ を名前空間 ​`[http://www.w3.org/TR/html4/](http://www.w3.org/TR/html4/)`​ に割り当てる名前空間を定義します。 その名前空間内のすべての要素は ​`h`​ プレフィックスを持ちます。たとえば、要素 ​``​ では、​`h`​ が名前空間のプレフィックスで、​`table`​ がローカル部分になります。 ### [](#例-名前空間セレクターの使用)例: 名前空間セレクターの使用 次の例では、名前空間とローカル部分を使用して、XML 要素から値を選択しています。 #### [](#入力ペイロード-3)入力ペイロード 入力ペイロードには、ローカル名 (​`table`​) が同じで異なる名前空間を持つ XML 要素 ​`h:table`​ と ​`f:table`​ が含まれます。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#namespace_variable)DataWeave ソース この DataWeave スクリプトは、指定された名前空間から XML コンテンツを選択します。スクリプトのヘッダーは、名前空間 (​`ns`​) の変数 ​`html`​ と ​`furniture`​ を作成し、入力ペイロードからの名前空間を格納します。要素 ​`h:table`​ の子を選択して要素 ​`a`​ に格納し、要素 ​`f:table`​ の子を選択して要素 ​`b`​ に格納するため、スクリプトは名前空間変数の ​`html`​ と ​`furniture`​ で名前空間セレクター (​`#`​) とローカル部分 (​`table`​) を使用します。 ```DataWeave %dw 2.0 output application/xml ns html http://www.w3.org/TR/html4/ ns furniture https://www.w3schools.com/furniture --- root: { a: payload.root.html#table, b: payload.root.furniture#table } ``` #### [](#出力-3)出力 次のスクリプトは、要素 ​`a`​ では要素 ​`h:table`​ の子を出力し、要素 ​`b`​ では要素 ​`f:table`​ の子を出力します。 ```xml Apples Bananas African Coffee Table 80 120 ``` ### [](#例-ローカル名を使用した-xml-値の選択)例: ローカル名を使用した XML 値の選択 次の例では、ローカル名 ​`table`​ を使用して ​`h:table`​ 要素から XML 値を選択しています。 #### [](#入力ペイロード-4)入力ペイロード 入力ペイロードには、名前空間 ​`"http://www.w3.org/TR/html4/"`​ を含む ​`table`​ 要素を持つ XML が含まれます。 ```xml Apples Bananas ``` #### [](#dataweave-ソース-3)DataWeave ソース この DataWeave スクリプトは、名前区間ではなく XML 要素 ​`table`​ のローカル名を使用して、​`table`​ 要素の子の値を選択します。 ```DataWeave %dw 2.0 output application/xml --- root: { a: payload.root.table } ``` #### [](#出力-4)出力 次のスクリプトは、​`table`​ 要素の子の値を含む XML を出力します。 ```xml Apples Bananas ``` ## [](#attribute_selector)属性セレクター 属性セレクターは、選択された名前式と一致する最初の属性値を返します。どのキーも一致しない場合は値 ​`null`​ を返します。 次の例では、XML 属性の値を選択しています。 ### [](#入力ペイロード-5)入力ペイロード 入力ペイロードは、属性 ​`name="Weave"`​ を含む XML の ​`user`​ 要素です。 ```xml ``` ### [](#dataweave-ソース-4)DataWeave ソース この DataWeave スクリプトは、入力ペイロード (​``​) から ​`name`​ 属性の値を選択します。​`@`​ は属性の選択を示しています。 ```DataWeave %dw 2.0 output application/json --- payload.user.@name ``` ### [](#出力-5)出力 この DataWeave スクリプトは、​`name`​ 属性の値を出力します。 ```json "Weave" ``` ## [](#multi_value_selector)複数値セレクター 複数値セレクター (​`*`​) は、オブジェクトの配列で最初に一致したキーの値を返すのではなく、一致するキーに対する値を含む配列 (たとえば、​`user`​ がキーである場合は ​`*user`​) を返します。このセレクターは、子孫の値は返さず、指定されたレベルの値のみを返します。どのキーも一致しない場合は値 ​`null`​ を返します。 ### [](#入力ペイロード-6)入力ペイロード 入力ペイロードには ​`user`​ 要素の XML 配列が含まれます。 ```xml Weave BAT TF ``` ### [](#dataweave-ソース-5)DataWeave ソース この DataWeave スクリプトは、入力ペイロードのすべての ​`user`​ 要素の値を選択するために ​`*user`​ を使用します。 ```DataWeave %dw 2.0 output application/json --- payload.users.*user ``` ### [](#出力-6)出力 このスクリプトは、​`user`​ 値の配列を出力します。 ```json [ "Weave", "BAT", "TF" ] ``` ## [](#descendant_selector)子孫セレクター 子孫セレクターは、すべての子とそれぞれの子孫のリストを返します。 このセレクターは、​`.`​ を 1 つ使用することで他のどのセレクターとも連結できます。たとえば、​`payload..`​ は、すべての子の値、さらに​_それぞれの_​子の値と、すべての子孫の値を再帰的に選択して、それらの値の配列を返します。セレクターは、他の要素と連結することもできます。たとえば、​`payload..user`​ と指定すると、各 ​`user`​ キーの値と、それぞれの子孫の値がすべて選択されます。または ​`payload..*name`​ と指定すると、​`name`​ のすべての子孫の値が選択されます。 ### [](#例-各子孫の選択)例: 各子孫の選択 次の例では、入力ペイロードの各子孫を選択しています。 #### [](#入力ペイロード-7)入力ペイロード 入力ペイロードには、異なるレベルでネストされている要素のセットが含まれます。 ```xml Weave BAT BDD ``` #### [](#dataweave-ソース-6)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードのすべての要素を再帰的に選択して、JSON 配列として返します。 ```DataWeave %dw 2.0 output application/json --- payload.. ``` #### [](#出力-7)出力 ```json [ { "user": { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } } }, { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } }, "Weave", { "name": "BAT", "user": { "name": "BDD" } }, "BAT", { "name": "BDD" }, "BDD" ] ``` ### [](#例-降順での値の選択)例: 降順での値の選択 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-8)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-7)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードからすべての ​`name`​ (名) 要素を選択し、それらの値を JSON 配列として出力します。 ```DataWeave %dw 2.0 output application/json --- payload..name ``` #### [](#出力-8)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "BDD" ] ``` ### [](#例)例 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-9)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-8)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、XML 階層の同じレベルにある反復 ​`name`​ キーの ​`BAT`​ および ​`Munit`​ 値を含め、入力ペイロードからすべての ​`name`​ 要素の値を選択し、それらの値を JSON 配列に出力します。 ```DataWeave %dw 2.0 output application/json --- payload..*name ``` #### [](#出力-9)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "Munit", "BDD" ] ``` ### [](#例-降順での値の選択-2)例: 降順での値の選択 次の例では、​`Item`​ 要素の ​`Name`​ の値を降順に選択しています。 #### [](#入力ペイロード-10)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`Name`​ 要素のセットが含まれます。 ```xml 32345 circle Perfume Bosque t-Shirt 435678C circle t-Shirt2 t-Shirt red t-Shirt red with logo ``` #### [](#dataweave-ソース-9)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、入力ペイロードから ​`Item`​ 要素でネストされたすべての ​`Name`​ 要素の値を選択し、それらの値を XML 配列に出力します。 ```DataWeave %dw 2.0 output application/xml --- { Supermarket: { Item: { Value: payload..*Item.Name } } } ``` #### [](#出力-10)出力 このスクリプトは、すべての ​`name`​ 値の XML 配列を出力します。 ```xml Perfume t-Shirt Bosque t-Shirt2 t-Shirt red t-Shirt red with logo ``` ## [](#dynamic_selector)動的セレクター 動的セレクターの構文は、選択する対象によって異なります。 - 単一値: `payload[(nameExpression)]` - 複数値: `payload[*(nameExpression)]` - 属性: `payload[@(nameExpression)]` - キー値: `payload[&(nameExpression)]` - 名前空間を持つ単一値: `payload.ns0#"$(nameExpression)"` ### [](#例-単一値の動的選択)例: 単一値の動的選択 次の例は、単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-11)入力ペイロード 入力ペイロードはオブジェクトの配列になります。最初のオブジェクトは、キー ​`"ref"`​ と値 ​`"name"`​ を持ちます。2 番目のオブジェクトは、キー ​`"name"`​ と値 ​`"Data Weave"`​ を持ちます。​`"Data Weave"`​: ```JSON { "ref": "name", "name": "Data Weave" } ``` #### [](#dataweave-ソース-10)DataWeave ソース この DataWeave スクリプトは、​`"name"`​ キーの値を動的に選択します。 ```DataWeave %dw 2.0 output application/json --- payload[(payload.ref)] ``` スクリプトでは、動的セレクター ​`[()]`​ の括弧内で ​`payload.ref`​ を渡しています。​`"ref"`​ の値は ​`"name"`​ であり、キー ​`"name"`​ と一致するため、このスクリプトは機能します。 #### [](#出力-11)出力 このスクリプトは、​`"name"`​ キーを持つオブジェクトの値を出力します。 ```JSON "Data Weave" ``` ### [](#例-名前空間を持つ単一値の動的選択)例: 名前空間を持つ単一値の動的選択 次の例は、名前空間を持つ単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-12)入力ペイロード 入力ペイロードには、2 つの子要素を持ち、それらの片方が名前空間 ​`http://www.w3.org/TR/html4/`​ である ​``​ 要素が 1 つ含まれます。両方の子要素 (​``​ と ​``​) はローカル名の ​`table`​ を持ちます。 ```xml Manzana Banana ``` #### [](#dataweave-ソース-11)DataWeave ソース この DataWeave スクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を動的に選択します。 ```DataWeave %dw 2.0 output application/json ns h http://www.w3.org/TR/html4/ --- payload.root.h#"$(payload.root.@ref)" ``` 式 ​`payload.root.@ref`​ では、​`root`​ 要素の ​`ref`​ 属性に対して属性セレクター (​`@`​) を使用して、要素 ​`Banana`​ のローカル名 ​`table`​ と一致する値 ​`table`​ を選択しています。 #### [](#出力-12)出力 このスクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を出力します。 ```JSON "Banana" ``` ## [](#selectors_variables)変数に保存されたコンテンツでのセレクターの使用 すべてのセレクターが、​[定義済みの Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables-context)​および ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables)​で機能します。 Mule イベント内のペイロード、属性、変数データなどの ​[Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event)​データを選択するには、定義済みの Mule Runtime 変数 (​`payload`​、​`attributes`​、​`vars`​ など) を使用します。 抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値として処理されます。
抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>​

例については、​「属性」​を参照してください。

変数

<myVariableName>​

名前の競合を回避するために、変数名の先頭に ​vars​ を追加する必要があります。

vars.<myVariableName>​

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト​

error​

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow​

Logger でのフロー名: #[flow.name]​

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。

# DataWeave セレクター DataWeave セレクターはオブジェクトと配列の構造をトラバースし、一致する値を返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 セレクターは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。
セレクター種別 構文 戻り値の型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

動的

動的セレクター​ を参照してください。

 

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値。配列の最後からインデックス付けするには負の数を使用します。たとえば、配列の最後の要素の場合は ​-1​ になります。配列のサイズを超える値を使用すると ​null​ が返されます。

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@, ​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。そうでない場合は、値 ​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクターは、クラス (​.^class​)、コンテンツ長 (​.^contentLength​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

以下の例では、これらのセレクターを使用しています。セレクターのその他の例については、​「データの抽出」​を参照してください。

## [](#照合のルール)照合のルール DataWeave では、オブジェクトのキー (たとえば JSON オブジェクト ​`{ "someName" : "Data Weave" }`​ のキー ​`"someName"`​) と一致する名前が、そのオブジェクトからデータを選択できます。シンプルな例については、​[単一値セレクター](#single_value_selector)​ を参照してください。 ## [](#single_value_selector)単一値セレクター このセレクターは、指定されたセレクター名にキーが一致した最初のキー/値ペアの値と一致します。このセレクターは、オブジェクトまたは配列に適用できます。配列の場合は、配列内のすべてのオブジェクト値にセレクターが適用され、オブジェクト値以外の値はすべて無視されます。一致するキーがない場合は、値 ​`null`​ が返されます。
ドットセレクター (​.​) と DataWeave 型でのドットセレクターの使用方法についての詳細は、型の選択を参照してください。
### [](#例-オブジェクトに対する単一値セレクターの使用)例: オブジェクトに対する単一値セレクターの使用 次の例は、単一の JSON オブジェクトに対するセレクターの働きを示しています。 #### [](#入力ペイロード)入力ペイロード 入力ペイロードは、キー ​`"name"`​ と値 ​`"DataWeave"`​ を持つオブジェクトです。 ```JSON { "name": "Data Weave" } ``` #### [](#dataweave-ソース)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、キー ​`"name"`​ を持つオブジェクトの値を選択します。 選択の実行手段としては、​`payload.name`​ と ​`payload."name"`​ のどちらも有効です。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力)出力 次のスクリプトは、入力オブジェクト「Data Weave」の文字列値を出力します。 ```JSON "Data Weave" ``` ### [](#例-配列に対する単一値セレクターの使用)例: 配列に対する単一値セレクターの使用 配列では、すべての要素にセレクターが適用されます。 #### [](#入力ペイロード-2)入力ペイロード 入力ペイロードは、同じキー「name」を持つ 2 つのオブジェクトを含む配列です。 ```JSON [ { "name": "Arg" }, { "name": "Japan" } ] ``` #### [](#dataweave-ソース-2)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、入力ペイロード中でキー「name」を持つオブジェクトの値を選択します。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力-2)出力 次のスクリプトは、キー ​`"name"`​ を持つ入力オブジェクトの値 (​`"Arg"`​ と ​`"Japan"`​) を含む配列を出力します。 ```json ["Arg", "Japan"] ``` ## [](#namespace_example1)名前空間セレクター DataWeave 名前空間セレクターは、名前空間またはローカル部分と一致する名前の使用をサポートします。セレクターが名前空間と一致するためには、名前が名前空間およびローカル部分と一致する必要があります。ローカル部分としか一致しない場合、名前空間とは関係なく、セレクターはそのローカル部分を持つすべての名前空間と一致します。 XML 名前空間とそれぞれのプレフィックスは、XML 要素の ​`xmlns`​ 属性に定義されています。たとえば、​``​ は、プレフィックス ​`h`​ を名前空間 ​`[http://www.w3.org/TR/html4/](http://www.w3.org/TR/html4/)`​ に割り当てる名前空間を定義します。 その名前空間内のすべての要素は ​`h`​ プレフィックスを持ちます。たとえば、要素 ​``​ では、​`h`​ が名前空間のプレフィックスで、​`table`​ がローカル部分になります。 ### [](#例-名前空間セレクターの使用)例: 名前空間セレクターの使用 次の例では、名前空間とローカル部分を使用して、XML 要素から値を選択しています。 #### [](#入力ペイロード-3)入力ペイロード 入力ペイロードには、ローカル名 (​`table`​) が同じで異なる名前空間を持つ XML 要素 ​`h:table`​ と ​`f:table`​ が含まれます。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#namespace_variable)DataWeave ソース この DataWeave スクリプトは、指定された名前空間から XML コンテンツを選択します。スクリプトのヘッダーは、名前空間 (​`ns`​) の変数 ​`html`​ と ​`furniture`​ を作成し、入力ペイロードからの名前空間を格納します。要素 ​`h:table`​ の子を選択して要素 ​`a`​ に格納し、要素 ​`f:table`​ の子を選択して要素 ​`b`​ に格納するため、スクリプトは名前空間変数の ​`html`​ と ​`furniture`​ で名前空間セレクター (​`#`​) とローカル部分 (​`table`​) を使用します。 ```DataWeave %dw 2.0 output application/xml ns html http://www.w3.org/TR/html4/ ns furniture https://www.w3schools.com/furniture --- root: { a: payload.root.html#table, b: payload.root.furniture#table } ``` #### [](#出力-3)出力 次のスクリプトは、要素 ​`a`​ では要素 ​`h:table`​ の子を出力し、要素 ​`b`​ では要素 ​`f:table`​ の子を出力します。 ```xml Apples Bananas African Coffee Table 80 120 ``` ### [](#例-ローカル名を使用した-xml-値の選択)例: ローカル名を使用した XML 値の選択 次の例では、ローカル名 ​`table`​ を使用して ​`h:table`​ 要素から XML 値を選択しています。 #### [](#入力ペイロード-4)入力ペイロード 入力ペイロードには、名前空間 ​`"http://www.w3.org/TR/html4/"`​ を含む ​`table`​ 要素を持つ XML が含まれます。 ```xml Apples Bananas ``` #### [](#dataweave-ソース-3)DataWeave ソース この DataWeave スクリプトは、名前区間ではなく XML 要素 ​`table`​ のローカル名を使用して、​`table`​ 要素の子の値を選択します。 ```DataWeave %dw 2.0 output application/xml --- root: { a: payload.root.table } ``` #### [](#出力-4)出力 次のスクリプトは、​`table`​ 要素の子の値を含む XML を出力します。 ```xml Apples Bananas ``` ## [](#attribute_selector)属性セレクター 属性セレクターは、選択された名前式と一致する最初の属性値を返します。どのキーも一致しない場合は値 ​`null`​ を返します。 次の例では、XML 属性の値を選択しています。 ### [](#入力ペイロード-5)入力ペイロード 入力ペイロードは、属性 ​`name="Weave"`​ を含む XML の ​`user`​ 要素です。 ```xml ``` ### [](#dataweave-ソース-4)DataWeave ソース この DataWeave スクリプトは、入力ペイロード (​``​) から ​`name`​ 属性の値を選択します。​`@`​ は属性の選択を示しています。 ```DataWeave %dw 2.0 output application/json --- payload.user.@name ``` ### [](#出力-5)出力 この DataWeave スクリプトは、​`name`​ 属性の値を出力します。 ```json "Weave" ``` ## [](#multi_value_selector)複数値セレクター 複数値セレクター (​`*`​) は、オブジェクトの配列で最初に一致したキーの値を返すのではなく、一致するキーに対する値を含む配列 (たとえば、​`user`​ がキーである場合は ​`*user`​) を返します。このセレクターは、子孫の値は返さず、指定されたレベルの値のみを返します。どのキーも一致しない場合は値 ​`null`​ を返します。 ### [](#入力ペイロード-6)入力ペイロード 入力ペイロードには ​`user`​ 要素の XML 配列が含まれます。 ```xml Weave BAT TF ``` ### [](#dataweave-ソース-5)DataWeave ソース この DataWeave スクリプトは、入力ペイロードのすべての ​`user`​ 要素の値を選択するために ​`*user`​ を使用します。 ```DataWeave %dw 2.0 output application/json --- payload.users.*user ``` ### [](#出力-6)出力 このスクリプトは、​`user`​ 値の配列を出力します。 ```json [ "Weave", "BAT", "TF" ] ``` ## [](#descendant_selector)子孫セレクター 子孫セレクターは、すべての子とそれぞれの子孫のリストを返します。 このセレクターは、​`.`​ を 1 つ使用することで他のどのセレクターとも連結できます。たとえば、​`payload..`​ は、すべての子の値、さらに​_それぞれの_​子の値と、すべての子孫の値を再帰的に選択して、それらの値の配列を返します。セレクターは、他の要素と連結することもできます。たとえば、​`payload..user`​ と指定すると、各 ​`user`​ キーの値と、それぞれの子孫の値がすべて選択されます。または ​`payload..*name`​ と指定すると、​`name`​ のすべての子孫の値が選択されます。 ### [](#例-各子孫の選択)例: 各子孫の選択 次の例では、入力ペイロードの各子孫を選択しています。 #### [](#入力ペイロード-7)入力ペイロード 入力ペイロードには、異なるレベルでネストされている要素のセットが含まれます。 ```xml Weave BAT BDD ``` #### [](#dataweave-ソース-6)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードのすべての要素を再帰的に選択して、JSON 配列として返します。 ```DataWeave %dw 2.0 output application/json --- payload.. ``` #### [](#出力-7)出力 ```json [ { "user": { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } } }, { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } }, "Weave", { "name": "BAT", "user": { "name": "BDD" } }, "BAT", { "name": "BDD" }, "BDD" ] ``` ### [](#例-降順での値の選択)例: 降順での値の選択 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-8)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-7)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードからすべての ​`name`​ (名) 要素を選択し、それらの値を JSON 配列として出力します。 ```DataWeave %dw 2.0 output application/json --- payload..name ``` #### [](#出力-8)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "BDD" ] ``` ### [](#例)例 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-9)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-8)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、XML 階層の同じレベルにある反復 ​`name`​ キーの ​`BAT`​ および ​`Munit`​ 値を含め、入力ペイロードからすべての ​`name`​ 要素の値を選択し、それらの値を JSON 配列に出力します。 ```DataWeave %dw 2.0 output application/json --- payload..*name ``` #### [](#出力-9)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "Munit", "BDD" ] ``` ### [](#例-降順での値の選択-2)例: 降順での値の選択 次の例では、​`Item`​ 要素の ​`Name`​ の値を降順に選択しています。 #### [](#入力ペイロード-10)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`Name`​ 要素のセットが含まれます。 ```xml 32345 circle Perfume Bosque t-Shirt 435678C circle t-Shirt2 t-Shirt red t-Shirt red with logo ``` #### [](#dataweave-ソース-9)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、入力ペイロードから ​`Item`​ 要素でネストされたすべての ​`Name`​ 要素の値を選択し、それらの値を XML 配列に出力します。 ```DataWeave %dw 2.0 output application/xml --- { Supermarket: { Item: { Value: payload..*Item.Name } } } ``` #### [](#出力-10)出力 このスクリプトは、すべての ​`name`​ 値の XML 配列を出力します。 ```xml Perfume t-Shirt Bosque t-Shirt2 t-Shirt red t-Shirt red with logo ``` ## [](#dynamic_selector)動的セレクター 動的セレクターの構文は、選択する対象によって異なります。 - 単一値: `payload[(nameExpression)]` - 複数値: `payload[*(nameExpression)]` - 属性: `payload[@(nameExpression)]` - キー値: `payload[&(nameExpression)]` - 名前空間を持つ単一値: `payload.ns0#"$(nameExpression)"` ### [](#例-単一値の動的選択)例: 単一値の動的選択 次の例は、単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-11)入力ペイロード 入力ペイロードはオブジェクトの配列になります。最初のオブジェクトは、キー ​`"ref"`​ と値 ​`"name"`​ を持ちます。2 番目のオブジェクトは、キー ​`"name"`​ と値 ​`"Data Weave"`​ を持ちます。​`"Data Weave"`​: ```JSON { "ref": "name", "name": "Data Weave" } ``` #### [](#dataweave-ソース-10)DataWeave ソース この DataWeave スクリプトは、​`"name"`​ キーの値を動的に選択します。 ```DataWeave %dw 2.0 output application/json --- payload[(payload.ref)] ``` スクリプトでは、動的セレクター ​`[()]`​ の括弧内で ​`payload.ref`​ を渡しています。​`"ref"`​ の値は ​`"name"`​ であり、キー ​`"name"`​ と一致するため、このスクリプトは機能します。 #### [](#出力-11)出力 このスクリプトは、​`"name"`​ キーを持つオブジェクトの値を出力します。 ```JSON "Data Weave" ``` ### [](#例-名前空間を持つ単一値の動的選択)例: 名前空間を持つ単一値の動的選択 次の例は、名前空間を持つ単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-12)入力ペイロード 入力ペイロードには、2 つの子要素を持ち、それらの片方が名前空間 ​`http://www.w3.org/TR/html4/`​ である ​``​ 要素が 1 つ含まれます。両方の子要素 (​``​ と ​``​) はローカル名の ​`table`​ を持ちます。 ```xml Manzana Banana ``` #### [](#dataweave-ソース-11)DataWeave ソース この DataWeave スクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を動的に選択します。 ```DataWeave %dw 2.0 output application/json ns h http://www.w3.org/TR/html4/ --- payload.root.h#"$(payload.root.@ref)" ``` 式 ​`payload.root.@ref`​ では、​`root`​ 要素の ​`ref`​ 属性に対して属性セレクター (​`@`​) を使用して、要素 ​`Banana`​ のローカル名 ​`table`​ と一致する値 ​`table`​ を選択しています。 #### [](#出力-12)出力 このスクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を出力します。 ```JSON "Banana" ``` ## [](#selectors_variables)変数に保存されたコンテンツでのセレクターの使用 すべてのセレクターが、​[定義済みの Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables-context)​および ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables)​で機能します。 Mule イベント内のペイロード、属性、変数データなどの ​[Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event)​データを選択するには、定義済みの Mule Runtime 変数 (​`payload`​、​`attributes`​、​`vars`​ など) を使用します。 抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値として処理されます。
抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>​

例については、​「属性」​を参照してください。

変数

<myVariableName>​

名前の競合を回避するために、変数名の先頭に ​vars​ を追加する必要があります。

vars.<myVariableName>​

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト​

error​

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow​

Logger でのフロー名: #[flow.name]​

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。

# DataWeave セレクター DataWeave セレクターはオブジェクトと配列の構造をトラバースし、一致する値を返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 セレクターは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。
セレクター種別 構文 戻り値のデータ型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

動的

動的セレクター​を参照してください。

 

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値。配列の最後からインデックス付けするには負の数を使用します。たとえば、配列の最後の要素の場合は ​-1​ になります。配列のサイズを超える値を使用すると ​null​ が返されます。

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@, ​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。そうでない場合は、値 ​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクターは、クラス (​.^class​)、コンテンツ長 (​.^contentLength​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

以下の例では、これらのセレクターを使用しています。セレクターのその他の例については、​「データの抽出」​を参照してください。

## [](#照合のルール)照合のルール DataWeave では、オブジェクトのキー (たとえば JSON オブジェクト ​`{ "someName" : "Data Weave" }`​ のキー ​`"someName"`​) と一致する名前が、そのオブジェクトからデータを選択できます。シンプルな例については、​[単一値セレクター](#single_value_selector)​を参照してください。 ## [](#single_value_selector)単一値セレクター このセレクターは、指定されたセレクター名にキーが一致した最初のキー/値ペアの値と一致します。このセレクターは、オブジェクトまたは配列に適用できます。配列の場合は、配列内のすべてのオブジェクト値にセレクターが適用され、オブジェクト値以外の値はすべて無視されます。一致するキーがない場合は、値 ​`null`​ が返されます。
ドットセレクター (​.​) と DataWeave 型でのドットセレクターの使用方法についての詳細は、型の選択を参照してください。
### [](#例-オブジェクトに対する単一値セレクターの使用)例: オブジェクトに対する単一値セレクターの使用 次の例は、単一の JSON オブジェクトに対するセレクターの働きを示しています。 #### [](#入力ペイロード)入力ペイロード 入力ペイロードは、キー ​`"name"`​ と値 ​`"DataWeave"`​ を持つオブジェクトです。 ```JSON { "name": "Data Weave" } ``` #### [](#dataweave-ソース)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、キー ​`"name"`​ を持つオブジェクトの値を選択します。 選択の実行手段としては、​`payload.name`​ と ​`payload."name"`​ のどちらも有効です。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力)出力 次のスクリプトは、入力オブジェクト「Data Weave」の文字列値を出力します。 ```JSON "Data Weave" ``` ### [](#例-配列に対する単一値セレクターの使用)例: 配列に対する単一値セレクターの使用 配列では、すべての要素にセレクターが適用されます。 #### [](#入力ペイロード-2)入力ペイロード 入力ペイロードは、同じキー「name」を持つ 2 つのオブジェクトを含む配列です。 ```JSON [ { "name": "Arg" }, { "name": "Japan" } ] ``` #### [](#dataweave-ソース-2)DataWeave ソース この DataWeave スクリプトは、​`payload.name`​ を使用して、入力ペイロード中でキー「name」を持つオブジェクトの値を選択します。 ```DataWeave %dw 2.0 output application/json --- payload.name ``` #### [](#出力-2)出力 次のスクリプトは、キー ​`"name"`​ を持つ入力オブジェクトの値 (​`"Arg"`​ と ​`"Japan"`​) を含む配列を出力します。 ```json ["Arg", "Japan"] ``` ## [](#namespace_example1)名前空間セレクター DataWeave 名前空間セレクターは、名前空間またはローカル部分と一致する名前の使用をサポートします。セレクターが名前空間と一致するためには、名前が名前空間およびローカル部分と一致する必要があります。ローカル部分としか一致しない場合、名前空間とは関係なく、セレクターはそのローカル部分を持つすべての名前空間と一致します。 XML 名前空間とそれぞれのプレフィックスは、XML 要素の ​`xmlns`​ 属性に定義されています。たとえば、​``​ は、プレフィックス ​`h`​ を名前空間 ​`[http://www.w3.org/TR/html4/](http://www.w3.org/TR/html4/)`​ に割り当てる名前空間を定義します。 その名前空間内のすべての要素は ​`h`​ プレフィックスを持ちます。たとえば、要素 ​``​ では、​`h`​ が名前空間のプレフィックスで、​`table`​ がローカル部分になります。 ### [](#例-名前空間セレクターの使用)例: 名前空間セレクターの使用 次の例では、名前空間とローカル部分を使用して、XML 要素から値を選択しています。 #### [](#入力ペイロード-3)入力ペイロード 入力ペイロードには、ローカル名 (​`table`​) が同じで異なる名前空間を持つ XML 要素 ​`h:table`​ と ​`f:table`​ が含まれます。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#namespace_variable)DataWeave ソース この DataWeave スクリプトは、指定された名前空間から XML コンテンツを選択します。スクリプトのヘッダーは、名前空間 (​`ns`​) の変数 ​`html`​ と ​`furniture`​ を作成し、入力ペイロードからの名前空間を格納します。要素 ​`h:table`​ の子を選択して要素 ​`a`​ に格納し、要素 ​`f:table`​ の子を選択して要素 ​`b`​ に格納するため、スクリプトは名前空間変数の ​`html`​ と ​`furniture`​ で名前空間セレクター (​`#`​) とローカル部分 (​`table`​) を使用します。 ```DataWeave %dw 2.0 output application/xml ns html http://www.w3.org/TR/html4/ ns furniture https://www.w3schools.com/furniture --- root: { a: payload.root.html#table, b: payload.root.furniture#table } ``` #### [](#出力-3)出力 次のスクリプトは、要素 ​`a`​ では要素 ​`h:table`​ の子を出力し、要素 ​`b`​ では要素 ​`f:table`​ の子を出力します。 ```xml Apples Bananas African Coffee Table 80 120 ``` ### [](#例-ローカル名を使用した-xml-値の選択)例: ローカル名を使用した XML 値の選択 次の例では、ローカル名 ​`table`​ を使用して ​`h:table`​ 要素から XML 値を選択しています。 #### [](#入力ペイロード-4)入力ペイロード 入力ペイロードには、名前空間 ​`"http://www.w3.org/TR/html4/"`​ を含む ​`table`​ 要素を持つ XML が含まれます。 ```xml Apples Bananas ``` #### [](#dataweave-ソース-3)DataWeave ソース この DataWeave スクリプトは、名前区間ではなく XML 要素 ​`table`​ のローカル名を使用して、​`table`​ 要素の子の値を選択します。 ```DataWeave %dw 2.0 output application/xml --- root: { a: payload.root.table } ``` #### [](#出力-4)出力 次のスクリプトは、​`table`​ 要素の子の値を含む XML を出力します。 ```xml Apples Bananas ``` ## [](#attribute_selector)属性セレクター 属性セレクターは、選択された名前式と一致する最初の属性値を返します。どのキーも一致しない場合は値 ​`null`​ を返します。 次の例では、XML 属性の値を選択しています。 ### [](#入力ペイロード-5)入力ペイロード 入力ペイロードは、属性 ​`name="Weave"`​ を含む XML の ​`user`​ 要素です。 ```xml ``` ### [](#dataweave-ソース-4)DataWeave ソース この DataWeave スクリプトは、入力ペイロード (​``​) から ​`name`​ 属性の値を選択します。​`@`​ は属性の選択を示しています。 ```DataWeave %dw 2.0 output application/json --- payload.user.@name ``` ### [](#出力-5)出力 この DataWeave スクリプトは、​`name`​ 属性の値を出力します。 ```json "Weave" ``` ## [](#multi_value_selector)複数値セレクター 複数値セレクター (​`*`​) は、オブジェクトの配列で最初に一致したキーの値を返すのではなく、一致するキーに対する値を含む配列 (たとえば、​`user`​ がキーである場合は ​`*user`​) を返します。このセレクターは、子孫の値は返さず、指定されたレベルの値のみを返します。どのキーも一致しない場合は値 ​`null`​ を返します。 ### [](#入力ペイロード-6)入力ペイロード 入力ペイロードには ​`user`​ 要素の XML 配列が含まれます。 ```xml Weave BAT TF ``` ### [](#dataweave-ソース-5)DataWeave ソース この DataWeave スクリプトは、入力ペイロードのすべての ​`user`​ 要素の値を選択するために ​`*user`​ を使用します。 ```DataWeave %dw 2.0 output application/json --- payload.users.*user ``` ### [](#出力-6)出力 このスクリプトは、​`user`​ 値の配列を出力します。 ```json [ "Weave", "BAT", "TF" ] ``` ## [](#descendant_selector)子孫セレクター 子孫セレクターは、すべての子とそれぞれの子孫のリストを返します。 このセレクターは、​`.`​ を 1 つ使用することで他のどのセレクターとも連結できます。たとえば、​`payload..`​ は、すべての子の値、さらに​_それぞれの_​子の値と、すべての子孫の値を再帰的に選択して、それらの値の配列を返します。セレクターは、他の要素と連結することもできます。たとえば、​`payload..user`​ と指定すると、各 ​`user`​ キーの値と、それぞれの子孫の値がすべて選択されます。または ​`payload..*name`​ と指定すると、​`name`​ のすべての子孫の値が選択されます。 ### [](#例-各子孫の選択)例: 各子孫の選択 次の例では、入力ペイロードの各子孫を選択しています。 #### [](#入力ペイロード-7)入力ペイロード 入力ペイロードには、異なるレベルでネストされている要素のセットが含まれます。 ```xml Weave BAT BDD ``` #### [](#dataweave-ソース-6)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードのすべての要素を再帰的に選択して、JSON 配列として返します。 ```DataWeave %dw 2.0 output application/json --- payload.. ``` #### [](#出力-7)出力 ```json [ { "user": { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } } }, { "name": "Weave", "user": { "name": "BAT", "user": { "name": "BDD" } } }, "Weave", { "name": "BAT", "user": { "name": "BDD" } }, "BAT", { "name": "BDD" }, "BDD" ] ``` ### [](#例-降順での値の選択)例: 降順での値の選択 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-8)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-7)DataWeave ソース この DataWeave スクリプトは、​`..`​ を使用して、入力ペイロードからすべての ​`name`​ (名) 要素を選択し、それらの値を JSON 配列として出力します。 ```DataWeave %dw 2.0 output application/json --- payload..name ``` #### [](#出力-8)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "BDD" ] ``` ### [](#例)例 次の例では、​`name`​ の値を降順に選択しています。 #### [](#入力ペイロード-9)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`name`​ 要素のセットが含まれます。 ```xml Weave BAT Munit BDD ``` #### [](#dataweave-ソース-8)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、XML 階層の同じレベルにある反復 ​`name`​ キーの ​`BAT`​ および ​`Munit`​ 値を含め、入力ペイロードからすべての ​`name`​ 要素の値を選択し、それらの値を JSON 配列に出力します。 ```DataWeave %dw 2.0 output application/json --- payload..*name ``` #### [](#出力-9)出力 このスクリプトは、すべての ​`name`​ 値の JSON 配列を出力します。 ```json [ "Weave", "BAT", "Munit", "BDD" ] ``` ### [](#例-降順での値の選択-2)例: 降順での値の選択 次の例では、​`Item`​ 要素の ​`Name`​ の値を降順に選択しています。 #### [](#入力ペイロード-10)入力ペイロード 入力ペイロードには、異なるレベルでネストされている ​`Name`​ 要素のセットが含まれます。 ```xml 32345 circle Perfume Bosque t-Shirt 435678C circle t-Shirt2 t-Shirt red t-Shirt red with logo ``` #### [](#dataweave-ソース-9)DataWeave ソース この DataWeave スクリプトは、​`..*`​ を使用して、入力ペイロードから ​`Item`​ 要素でネストされたすべての ​`Name`​ 要素の値を選択し、それらの値を XML 配列に出力します。 ```DataWeave %dw 2.0 output application/xml --- { Supermarket: { Item: { Value: payload..*Item.Name } } } ``` #### [](#出力-10)出力 このスクリプトは、すべての ​`name`​ 値の XML 配列を出力します。 ```xml Perfume t-Shirt Bosque t-Shirt2 t-Shirt red t-Shirt red with logo ``` ## [](#dynamic_selector)動的セレクター 動的セレクターの構文は、選択する対象によって異なります。 - 単一値: `payload[(nameExpression)]` - 複数値: `payload[*(nameExpression)]` - 属性: `payload[@(nameExpression)]` - キー値: `payload[&(nameExpression)]` - 名前空間を持つ単一値: `payload.ns0#"$(nameExpression)"` ### [](#例-単一値の動的選択)例: 単一値の動的選択 次の例は、単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-11)入力ペイロード 入力ペイロードはオブジェクトの配列になります。最初のオブジェクトは、キー ​`"ref"`​ と値 ​`"name"`​ を持ちます。2 番目のオブジェクトは、キー ​`"name"`​ と値 ​`"Data Weave"`​ を持ちます。 ```JSON { "ref": "name", "name": "Data Weave" } ``` #### [](#dataweave-ソース-10)DataWeave ソース この DataWeave スクリプトは、​`"name"`​ キーの値を動的に選択します。 ```DataWeave %dw 2.0 output application/json --- payload[(payload.ref)] ``` スクリプトでは、動的セレクター ​`[()]`​ の括弧内で ​`payload.ref`​ を渡しています。​`"ref"`​ の値は ​`"name"`​ であり、キー ​`"name"`​ と一致するため、このスクリプトは機能します。 #### [](#出力-11)出力 このスクリプトは、​`"name"`​ キーを持つオブジェクトの値を出力します。 ```JSON "Data Weave" ``` ### [](#例-名前空間を持つ単一値の動的選択)例: 名前空間を持つ単一値の動的選択 次の例は、名前空間を持つ単一値を動的に選択する方法を示しています。 #### [](#入力ペイロード-12)入力ペイロード 入力ペイロードには、2 つの子要素を持ち、それらの片方が名前空間 ​`http://www.w3.org/TR/html4/`​ である ​``​ 要素が 1 つ含まれます。両方の子要素 (​``​ と ​``​) はローカル名の ​`table`​ を持ちます。 ```xml Manzana Banana ``` #### [](#dataweave-ソース-11)DataWeave ソース この DataWeave スクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を動的に選択します。 ```DataWeave %dw 2.0 output application/json ns h http://www.w3.org/TR/html4/ --- payload.root.h#"$(payload.root.@ref)" ``` 式 ​`payload.root.@ref`​ では、​`root`​ 要素の ​`ref`​ 属性に対して属性セレクター (​`@`​) を使用して、要素 ​`Banana`​ のローカル名 ​`table`​ と一致する値 ​`table`​ を選択しています。 #### [](#出力-12)出力 このスクリプトは、名前空間 ​`http://www.w3.org/TR/html4/`​ を持つ要素の値を出力します。 ```JSON "Banana" ``` ## [](#selectors_variables)変数に保存されたコンテンツでのセレクターの使用 すべてのセレクターが、​[定義済みの Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables-context)​および ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables)​で機能します。 Mule イベント内のペイロード、属性、変数データなどの ​[Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event)​データを選択するには、定義済みの Mule Runtime 変数 (​`payload`​、​`attributes`​、​`vars`​ など) を使用します。 抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値として処理されます。
抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>​

例については、​「属性」​を参照してください。

変数

<myVariableName>​

名前の競合を回避するために、変数名の先頭に ​vars​ を追加する必要があります。

vars.<myVariableName>​

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト​

error​

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow​

Logger でのフロー名: #[flow.name]​

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。

# DataWeave でのストリーミング DataWeave は、Mule アプリケーション内のフローを通してエンドツーエンドのストリーミングをサポートします。ストリーミングにより、大きなドキュメントでもメモリをオーバーフローさせることなく処理をスピードアップできます。 DataWeave は、ドキュメント全体をスキャンしてインデックス化するのではなく、ストリーミングされたデータのバイトが到着するたびに処理します。遅延モードでは、DataWeave はストリーミングされた出力データをディスクに保存せずに、メッセージプロセッサーに直接渡すこともできます。この動作によって DataWeave と Mule は、デフォルトのプロセスでデータを読み書きするよりも速くデータを処理し、リソース消費量を少なく抑えることができます。 データを正常にストリーミングするためには、以下を理解することが重要です。 - ストリームの基本単位はデータ形式ごとに異なります。 CSV ドキュメントであればレコード、JSON ドキュメントであれば配列の要素、XML ドキュメントであればコレクションが基本単位となります。 - ストリーミングでは、各ストリーム単位に順次アクセスします。 ストリーミングでは、ドキュメントへのランダムアクセスはサポートされません。 ## [](#ストリーミングの有効化)ストリーミングの有効化 ストリーミングはデフォルトでは有効化されていません。2 つの設定プロパティを使用して、サポートされているデータ形式でデータをストリーミングできます。 - ソースデータをストリームとして読み取るための ​`streaming`​ プロパティ - 出力ストリームをフロー内の次のメッセージプロセッサーに直接渡すための ​`deferred`​ ライタープロパティ ストリーミングでソースデータを読み取れるようにするには、データソースで ​`streaming`​ リーダープロパティを ​`true`​ に設定する必要があります。データソースでストリーミングを有効化するには、​**MIME タイプ**​設定の ​`outputMimeType`​ を使用します。このプロパティは、HTTP リスナーや On New 操作または Updated File 操作など、ソースデータを受け入れる Mule コンポーネントで設定できます。 ```XML ``` `streaming=true`​ は ​`outputMimeType`​ 値の一部ですので注意してください。File コンポーネントや FTP コンポーネントなどの他の Mule コンポーネントも MIME タイプ設定をサポートします。 ストリーミングされた出力を次のメッセージプロセッサーに渡すには、DataWeave スクリプトで ​`output`​ ディレクティブを次のように使用します。 ```XML output application/json deferred=true ``` `deferred`​ プロパティの使い方の詳細は、​[出力のストリーミング](#stream_output)​ を参照してください。 ## [](#stream_csv)CSV のストリーミング CSV は、その構造により最もシンプルなストリーミング形式となります。CSV ヘッダーの下にある各行は、ストリーム可能なレコードです。次の CSV の例は、​`name`​、​`lastName`​、​`age`​ の各値を含むレコードから構成されています。 ​ ```CSV name,lastName,age mariano,achaval,37 leandro,shokida,30 pedro,achaval,4 christian,chibana,25 sara,achaval,2 matias,achaval,8 ``` この CSV の例をストリーミングするため、次のスクリプトは各レコードから値を選択しています。このスクリプトは、​`map`​ 関数を使用して、ドキュメント内の各レコードを反復処理しています。 ​ ```DataWeave payload map (record) -> { FullName: record.lastName ++ "," ++ record.name, Age: record.age } ``` ストリーミングでは、ドキュメント全体へのランダムアクセスはサポートされませんが、各レコードはメモリに読み込まれるため、DataWeave スクリプトは​_各レコード内の_​データにはランダムにアクセスできます。たとえば、​`record.lastName "," record.name,`​ という式により、入力での値の順序が逆であっても、​`name`​ 値にアクセスする前に ​`lastName`​ 値にアクセスできます。 ただし、ストリーミングは次のスクリプトでは機能しません。入力とは異なる順序で要素を返すためには、スクリプトでドキュメント全体へのランダムアクセスが必要になるためです。 ​ ```DataWeave [payload[-2], payload[-1], payload[3]] ``` ​ ## [](#stream_json)JSON のストリーミング JSON ストリーミングの単位は配列の各要素です。 DataWeave 2.2.0 を使用して Mule 4.2 で JSON をストリーミングする場合には、配列が入力のルートに存在する必要があります。Mule 4.3 で JSON をストリーミングする場合には、配列が入力のルートに存在しなくても構いません。 ```JSON { "name" : "Mariano", "lastName": "Achaval", "family": [ {"name": "Sara", "age": 2}, {"name": "Pedro", "age": 4}, {"name": "Matias", "age": 8} ], "age": 37 } ``` この例では、DataWeave は ​`payload.family`​ をストリーミングして、その配列の各要素にランダムアクセスします。ただし、DataWeave はコンテナオブジェクトにはランダムアクセスすることはできません。たとえば、​`age`​ は ​`family`​ の後にあり、DataWeave は後戻りすることはできないため、​`{ a: payload.age , b: payload.family}`​ をストリーミングすることはできません。 ​ ## [](#stream_xml)XML のストリーミング ​ XML ではドキュメントに配列が含まれないため、JSON より複雑になります。 XML をストリーミングするため、DataWeave は次のリーダープロパティを使用して、ストリーミングするドキュメント内の場所を定義します。 - ​`collectionPath` たとえば、次の XML 入力があるとします。 ​ ```XML
Wed Nov 15 13:45:28 EST 2006 Joe
111 2 8.90 222 7 5.20 111 2 8.90 222 7 5.20 222 7 5.20
``` ​ この XML ソースデータに対して、​`outputMimeType`​ 値で ​`collectionPath=order.order-items`​ を設定することにより、ストリーミング単位を ​``​ に設定できます。 ```XML ``` `streaming=true`​ と ​`collectionPath`​ 値の両方を設定する必要があります。いずれかがない場合、コンテンツはストリーミングされません。 次の DataWeave スクリプトは、各 ​``​ 要素をストリーム可能単位として使用することで、XML 入力をストリーミングします。 ```DataWeave %dw 2.0 output application/xml --- { salesorder: { itemList: payload.order."order-items".*"order-item" map { ("i_" ++ $$) : { id: $.@id, productId: $.product, quantity: $.quantity, price: $.price } } } } ``` このスクリプトの XML 出力は次のようになります。 ```XML 31 2 111 8.90 31 7 222 5.20 31 2 111 8.90 31 7 222 5.20 31 7 222 5.20 ``` ## [](#ストリーミングされたデータのスクリプトの検証-実験的機能)ストリーミングされたデータのスクリプトの検証 (実験的機能) コードが入力ストリームを正常に処理できることを確認するため、DataWeave は次の​_高度で実験的な_​アノテーションと関連ディレクティブを提供しています。 - `@StreamCapable()` このアノテーションを使用して、スクリプトが変数 (特に ​`payload`​ 変数) に順次アクセスするかどうかを確認してください。 - `input`​ ディレクティブ: `@StreamCapable()`​ アノテーションでは、データソースの MIME タイプを識別するための入力ディレクティブを DataWeave スクリプトで使用する必要があります (例: `input payload application/xml`​)。 DataWeave バリデーター (スクリプト内の ​`@StreamCapable`​ アノテーションでトリガーされます) は、スクリプトが以下の条件を満たしているかどうかを確認します。 - 変数が 1 回だけ参照される。 - インデックスセレクターが負の値にアクセスしていない (例: `[-1]`​) - ネストされたラムダで変数への参照がない。 すべての条件が満たされていれば、選択されたデータはストリーム可能です。 次の例は、正常に検証されます。このスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- payload.family filter (member) -> member.age > 3 ``` スクリプトは検証を正しく実行し、次の出力を返します。 ```JSON [ { "name": "Pedro", "age": 4 }, { "name": "Matias", "age": 8 } ] ``` ### [](#検証の失敗)検証の失敗 いずれかの条件が満足していないとバリデーターは検証に失敗します。 ストリーミングが機能しても検証に失敗する場合がありますので注意してください。指定したデータソースの入力変数に順次アクセスするようにスクリプトを作成しても、スクリプトが機能しない場合があります。たとえば、JSON では、オブジェクト内のキーの順序に制約を設けていません。JSON ドキュメント内のキーがスクリプトの想定とは異なる順序で入力されていると、ストリーミングは失敗します。アノテーションプロセッサーは、書式設定のルールに従い、キーが常に同じ順序で入力されるとは想定できません。 #### [](#error-variable-is-referenced-more-than-once-エラー-変数が複数回参照されています)Error: Variable Is Referenced More Than Once (エラー: 変数が複数回参照されています) スクリプトが同じ変数を複数回参照しようとすると、検証は失敗します。 次のスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。スクリプトが ​`payload`​ 変数を複数回参照しようとしているため、検証は失敗します: ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- { family: payload.family filter (member) -> member.age > 3, name: payload.name } ``` スクリプトは次のエラーを返して失敗します。 ```error 4| input payload application/json streaming=true ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced more than once. Locations: --------------------------- 8| family: payload.family filter (member) -> member.age > 3, ^^^^^^^ --------------------------- 9| name: payload.name ^^^^^^^ at 4| input payload application/json streaming=true ``` #### [](#error-wrong-scope-reference-エラー-スコープ参照が正しくありません)Error: Wrong Scope Reference (エラー: スコープ参照が正しくありません) スクリプトが、変数が定義されているスコープとは異なるスコープの変数を参照しようとすると、検証は失敗します。 次のスクリプトは、​`payload`​ 変数がラムダ式 ​`[1,2,3] map ((item, index) → payload)`​ 内から参照されているために失敗します。式は ​`[1] map ((item, index) → payload`​ ですが、​`payload`​ が間違ったスコープにあるため、ストリーミングは失敗します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- [1,2,3] map ((item, index) -> payload) ``` この例は次のエラーを返して失敗します。 ```error 4| input payload application/json ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced in a different scope from where it was defined. Locations: --------------------------- 9| [1,2,3] map ((item, index) -> payload) ^^^^^^^^^^^^^^^^^^^^^^^^ at 4| input payload application/json ``` ## [](#stream_output)出力のストリーミング ストリーミングデータの処理後は、別のメッセージプロセッサーに出力を直接ストリーミングすることができます。この動作を簡単に実装するには、​`deferred`​ ライタープロパティを DataWeave スクリプトの output ディレクティブで使用します (例: `output application/json deferred=true`​)。 NOTE `deferred = true`​ を設定すると、例外は処理されません。たとえば、フローで例外が発生したときに、Studio でこの動作を確認できます。Studio デバッグモードでアプリケーションを実行中に、​`deferred = true`​ に設定されていて Transform Message コンポーネントで例外が発生した場合、コンソールにエラーは記録されますが、フローは Tranform Message コンポーネントで停止しません。 [「JSON のストリーミング」](#stream_json)​の例に基づいた次のフローは、DataWeave スクリプトを使用して、ストリーミングされた入力を絞り込み、出力を Write 操作に直接ストリーミングします。 ```XML member.age > 1 }]]> ``` フローは次の設定を使用します。 1. リスナー (​``​) は ​`streaming=true`​ を使用して、受信した JSON データをストリームします。 2. ``​ の DataWeave スクリプトは、ストリーミングデータのレコードを絞り込み、​`deferred = true`​ プロパティを使用して、結果レコードをフロー内の次のプロセッサーに直接ストリーミングします。 3. フロー内の次のコンポーネントである ​``​ は、絞り込まれたストリームを直接受け取り、レコードをファイルに書き込みます。 ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) # DataWeave でのストリーミング DataWeave は、Mule アプリケーション内のフローを通してエンドツーエンドのストリーミングをサポートします。ストリーミングにより、大きなドキュメントでもメモリをオーバーフローさせることなく処理をスピードアップできます。 DataWeave は、ドキュメント全体をスキャンしてインデックス化するのではなく、ストリーミングされたデータのバイトが到着するたびに処理します。遅延モードでは、DataWeave はストリーミングされた出力データをディスクに保存せずに、メッセージプロセッサーに直接渡すこともできます。この動作によって DataWeave と Mule は、デフォルトのプロセスでデータを読み書きするよりも速くデータを処理し、リソースコンシューム量を少なく抑えることができます。 データを正常にストリーミングするためには、以下を理解することが重要です。 - ストリームの基本単位はデータ形式ごとに異なります。 CSV ドキュメントであればレコード、JSON ドキュメントであれば配列の要素、XML ドキュメントであればコレクションが基本単位となります。 - ストリーミングでは、各ストリーム単位に順次アクセスします。 ストリーミングでは、ドキュメントへのランダムアクセスはサポートされません。 ## [](#ストリーミングの有効化)ストリーミングの有効化 ストリーミングはデフォルトでは有効化されていません。2 つの設定プロパティを使用して、サポートされているデータ形式でデータをストリーミングできます。 - ソースデータをストリームとして読み取るための ​`streaming`​ プロパティ - 出力ストリームをフロー内の次のメッセージプロセッサーに直接渡すための ​`deferred`​ ライタープロパティ DataWeave がソースデータをストリームとして読み取るには、データソースで ​`streaming`​ リーダープロパティを ​`true`​ に設定する必要があります。Mule アプリケーション内で、この設定を ​**MIME Type (MIME タイプ)**​ プロパティ ​`outputMimeType`​ または ​`mimeType`​ の値に追加します。HTTP Listener 操作、HTTP Request 操作、On New or Updated File 操作、Set Payload コンポーネントなど、データを生成する任意のコネクタ操作または Mule コンポーネントでプロパティを設定できます。DataWeave は、ストリーミングプロパティを設定したアプリケーション内のポイントから、DataWeave 式とスクリプトを含むすべてのダウンストリームコンポーネントとコネクタ操作を介してデータをストリーミングデータとして読み取ります。 ```XML ``` `streaming=true`​ は ​`outputMimeType`​ 値の一部ですので注意してください。File コンポーネントや FTP コンポーネントなどの他の多くの Mule コンポーネントも MIME タイプ設定をサポートします。 ストリーミングされた出力を次のメッセージプロセッサーに渡すには、DataWeave スクリプトで ​`output`​ ディレクティブを次のように使用します。 ```XML output application/json deferred=true ``` `deferred`​ プロパティの使い方の詳細は、​[出力のストリーミング](#stream_output)​ を参照してください。 ## [](#stream_csv)CSV のストリーミング CSV は、その構造により最もシンプルなストリーミング形式となります。CSV ヘッダーの下にある各行は、ストリーム可能なレコードです。次の CSV の例は、​`name`​、​`lastName`​、​`age`​ の各値を含むレコードから構成されています。 ​ ```CSV name,lastName,age mariano,achaval,37 leandro,shokida,30 pedro,achaval,4 christian,chibana,25 sara,achaval,2 matias,achaval,8 ``` この CSV の例をストリーミングするため、次のスクリプトは各レコードから値を選択しています。このスクリプトは、​`map`​ 関数を使用して、ドキュメント内の各レコードを反復処理しています。 ​ ```DataWeave payload map (record) -> { FullName: record.lastName ++ "," ++ record.name, Age: record.age } ``` ストリーミングでは、ドキュメント全体へのランダムアクセスはサポートされませんが、各レコードはメモリに読み込まれるため、DataWeave スクリプトは​_各レコード内の_​データにはランダムにアクセスできます。たとえば、​`record.lastName "," record.name,`​ という式により、入力での値の順序が逆であっても、​`name`​ 値にアクセスする前に ​`lastName`​ 値にアクセスできます。 ただし、ストリーミングは次のスクリプトでは機能しません。入力とは異なる順序で要素を返すためには、スクリプトでドキュメント全体へのランダムアクセスが必要になるためです。 ​ ```DataWeave [payload[-2], payload[-1], payload[3]] ``` ​ ## [](#stream_json)JSON のストリーミング ​JSON ストリーミングの単位は配列の各要素です。 DataWeave 2.2.0 を使用して Mule 4.2 で JSON をストリーミングする場合には、配列が入力のルートに存在する必要があります。Mule 4.3 で JSON をストリーミングする場合には、配列が入力のルートに存在しなくても構いません。 ```JSON { "name" : "Mariano", "lastName": "Achaval", "family": [ {"name": "Sara", "age": 2}, {"name": "Pedro", "age": 4}, {"name": "Matias", "age": 8} ], "age": 37 } ``` この例では、DataWeave は ​`payload.family`​ をストリーミングして、その配列の各要素にランダムアクセスします。ただし、DataWeave はコンテナオブジェクトにはランダムアクセスすることはできません。たとえば、​`age`​ は ​`family`​ の後にあり、DataWeave は後戻りすることはできないため、​`{ a: payload.age , b: payload.family}`​ をストリーミングすることはできません。 ​ ## [](#stream_xml)XML のストリーミング ​ XML ではドキュメントに配列が含まれないため、JSON より複雑になります。 XML をストリーミングするため、DataWeave は次のリーダープロパティを使用して、ストリーミングするドキュメント内の場所を定義します。 - ​`collectionPath` たとえば、次の XML 入力があるとします。 ​ ```XML
Wed Nov 15 13:45:28 EST 2006 Joe
111 2 8.90 222 7 5.20 111 2 8.90 222 7 5.20 222 7 5.20
``` ​ この XML ソースデータに対して、​`outputMimeType`​ 値で ​`collectionPath=order.order-items`​ を設定することにより、ストリーミング単位を ​``​ に設定できます。 ```XML ``` `streaming=true`​ と ​`collectionPath`​ 値の両方を設定する必要があります。いずれかがない場合、コンテンツはストリーミングされません。 次の DataWeave スクリプトは、各 ​``​ 要素をストリーム可能単位として使用することで、XML 入力をストリーミングします。 ```DataWeave %dw 2.0 output application/xml --- { salesorder: { itemList: payload.order."order-items".*"order-item" map { ("i_" ++ $$) : { id: $.@id, productId: $.product, quantity: $.quantity, price: $.price } } } } ``` このスクリプトの XML 出力は次のようになります。 ```XML 31 2 111 8.90 31 7 222 5.20 31 2 111 8.90 31 7 222 5.20 31 7 222 5.20 ``` ## [](#ストリーミングされたデータのスクリプトの検証-実験的機能)ストリーミングされたデータのスクリプトの検証 (実験的機能) コードが入力ストリームを正常に処理できることを確認するため、DataWeave は次の​_高度で実験的な_​アノテーションと関連ディレクティブを提供しています。 - `@StreamCapable()` このアノテーションを使用して、スクリプトが変数 (特に ​`payload`​ 変数) に順次アクセスするかどうかを確認してください。 - `input`​ ディレクティブ: `@StreamCapable()`​ アノテーションでは、データソースの MIME タイプを識別するための入力ディレクティブを DataWeave スクリプトで使用する必要があります (例: `input payload application/xml`​)。 DataWeave バリデーター (スクリプト内の ​`@StreamCapable`​ アノテーションでトリガーされます) は、スクリプトが以下の条件を満たしているかどうかを確認します。 - 変数が 1 回だけ参照される。 - インデックスセレクターが負の値にアクセスしていない (例: `[-1]`​)。 - ネストされたラムダで変数への参照がない。 すべての条件が満たされていれば、選択されたデータはストリーム可能です。 次の例は、正常に検証されます。このスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- payload.family filter (member) -> member.age > 3 ``` スクリプトは検証を正しく実行し、次の出力を返します。 ```JSON [ { "name": "Pedro", "age": 4 }, { "name": "Matias", "age": 8 } ] ``` ### [](#検証の失敗)検証の失敗 いずれかの条件が満足していないとバリデーターは検証に失敗します。 ストリーミングが機能しても検証に失敗する場合がありますので注意してください。指定したデータソースの入力変数に順次アクセスするようにスクリプトを作成しても、スクリプトが機能しない場合があります。たとえば、JSON では、オブジェクト内のキーの順序に制約を設けていません。JSON ドキュメント内のキーがスクリプトの想定とは異なる順序で入力されていると、ストリーミングは失敗します。アノテーションプロセッサーは、書式設定のルールに従い、キーが常に同じ順序で入力されるとは想定できません。 #### [](#error-variable-is-referenced-more-than-once-エラー-変数が複数回参照されています)Error: Variable Is Referenced More Than Once (エラー: 変数が複数回参照されています) スクリプトが同じ変数を複数回参照しようとすると、検証は失敗します。 次のスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。スクリプトが ​`payload`​ 変数を複数回参照しようとしているため、検証は失敗します: ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- { family: payload.family filter (member) -> member.age > 3, name: payload.name } ``` スクリプトは次のエラーを返して失敗します。 ```error 4| input payload application/json streaming=true ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced more than once. Locations: --------------------------- 8| family: payload.family filter (member) -> member.age > 3, ^^^^^^^ --------------------------- 9| name: payload.name ^^^^^^^ at 4| input payload application/json streaming=true ``` #### [](#error-wrong-scope-reference-エラー-スコープ参照が正しくありません)Error: Wrong Scope Reference (エラー: スコープ参照が正しくありません) スクリプトが、変数が定義されているスコープとは異なるスコープの変数を参照しようとすると、検証は失敗します。 次のスクリプトは、​`payload`​ 変数がラムダ式 ​`[1,2,3] map ((item, index) → payload)`​ 内から参照されているために失敗します。式は ​`[1] map ((item, index) → payload`​ ですが、​`payload`​ が間違ったスコープにあるため、ストリーミングは失敗します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- [1,2,3] map ((item, index) -> payload) ``` この例は次のエラーを返して失敗します。 ```error 4| input payload application/json ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced in a different scope from where it was defined. Locations: --------------------------- 9| [1,2,3] map ((item, index) -> payload) ^^^^^^^^^^^^^^^^^^^^^^^^ at 4| input payload application/json ``` ## [](#stream_output)出力のストリーミング ストリーミングデータの処理後は、別のメッセージプロセッサーに出力を直接ストリーミングすることができます。この動作を簡単に実装するには、​`deferred`​ ライタープロパティを DataWeave スクリプトの output ディレクティブで使用します (例: `output application/json deferred=true`​)。 NOTE `deferred = true`​ を設定すると、例外は処理されません。たとえば、フローで例外が発生したときに、Studio でこの動作を確認できます。Studio デバッグモードでアプリケーションを実行中に、​`deferred = true`​ に設定されていて Transform Message コンポーネントで例外が発生した場合、コンソールにエラーは記録されますが、フローは Tranform Message コンポーネントで停止しません。 [「JSON のストリーミング」](#stream_json)​の例に基づいた次のフローは、DataWeave スクリプトを使用して、ストリーミングされた入力を絞り込み、出力を Write 操作に直接ストリーミングします。 ```XML member.age > 1 }]]> ``` フローは次の設定を使用します。 1. リスナー (​``​) は ​`streaming=true`​ を使用して、受信した JSON データをストリームします。 2. ``​ の DataWeave スクリプトは、ストリーミングデータのレコードを絞り込み、​`deferred = true`​ プロパティを使用して、結果レコードをフロー内の次のプロセッサーに直接ストリーミングします。 3. フロー内の次のコンポーネントである ​``​ は、絞り込まれたストリームを直接受け取り、レコードをファイルに書き込みます。 ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) # DataWeave でのストリーミング DataWeave は、Mule アプリケーション内のフローを通してエンドツーエンドのストリーミングをサポートします。ストリーミングにより、大きなドキュメントでもメモリをオーバーフローさせることなく処理をスピードアップできます。 DataWeave は、ドキュメント全体をスキャンしてインデックス化するのではなく、ストリーミングされたデータのバイトが到着するたびに処理します。遅延モードでは、DataWeave はストリーミングされた出力データをディスクに保存せずに、メッセージプロセッサーに直接渡すこともできます。この動作によって DataWeave と Mule は、デフォルトのプロセスでデータを読み書きするよりも速くデータを処理し、リソースコンシューム量を少なく抑えることができます。 データを正常にストリーミングするためには、以下を理解することが重要です。 - ストリームの基本単位はデータ形式ごとに異なります。 CSV ドキュメントであればレコード、JSON ドキュメントであれば配列の要素、XML ドキュメントであればコレクションが基本単位となります。 - ストリーミングでは、各ストリーム単位に順次アクセスします。 ストリーミングでは、ドキュメントへのランダムアクセスはサポートされません。 ## [](#ストリーミングの有効化)ストリーミングの有効化 ストリーミングはデフォルトでは有効化されていません。2 つの設定プロパティを使用して、サポートされているデータ形式でデータをストリーミングできます。 - ソースデータをストリームとして読み取るための ​`streaming`​ プロパティ - 出力ストリームをフロー内の次のメッセージプロセッサーに直接渡すための ​`deferred`​ ライタープロパティ DataWeave がソースデータをストリームとして読み取るには、データソースで ​`streaming`​ リーダープロパティを ​`true`​ に設定する必要があります。Mule アプリケーション内で、この設定を ​**MIME Type (MIME タイプ)**​ プロパティ ​`outputMimeType`​ または ​`mimeType`​ の値に追加します。HTTP Listener 操作、HTTP Request 操作、On New or Updated File 操作、Set Payload コンポーネントなど、データを生成する任意のコネクタ操作または Mule コンポーネントでプロパティを設定できます。DataWeave は、ストリーミングプロパティを設定したアプリケーション内のポイントから、DataWeave 式とスクリプトを含むすべてのダウンストリームコンポーネントとコネクタ操作を介してデータをストリーミングデータとして読み取ります。 ```XML ``` `streaming=true`​ は ​`outputMimeType`​ 値の一部ですので注意してください。File コンポーネントや FTP コンポーネントなどの他の多くの Mule コンポーネントも MIME タイプ設定をサポートします。 ストリーミングされた出力を次のメッセージプロセッサーに渡すには、DataWeave スクリプトで ​`output`​ ディレクティブを次のように使用します。 ```XML output application/json deferred=true ``` `deferred`​ プロパティの使い方の詳細は、​[出力のストリーミング](#stream_output)​ を参照してください。 ## [](#stream_csv)CSV のストリーミング CSV は、その構造により最もシンプルなストリーミング形式となります。CSV ヘッダーの下にある各行は、ストリーム可能なレコードです。次の CSV の例は、​`name`​、​`lastName`​、​`age`​ の各値を含むレコードから構成されています。 ​ ```CSV name,lastName,age mariano,achaval,37 leandro,shokida,30 pedro,achaval,4 christian,chibana,25 sara,achaval,2 matias,achaval,8 ``` この CSV の例をストリーミングするため、次のスクリプトは各レコードから値を選択しています。このスクリプトは、​`map`​ 関数を使用して、ドキュメント内の各レコードを反復処理しています。 ​ ```DataWeave payload map (record) -> { FullName: record.lastName ++ "," ++ record.name, Age: record.age } ``` ストリーミングでは、ドキュメント全体へのランダムアクセスはサポートされませんが、各レコードはメモリに読み込まれるため、DataWeave スクリプトは​_各レコード内の_​データにはランダムにアクセスできます。たとえば、​`record.lastName "," record.name,`​ という式により、入力での値の順序が逆であっても、​`name`​ 値にアクセスする前に ​`lastName`​ 値にアクセスできます。 ただし、ストリーミングは次のスクリプトでは機能しません。入力とは異なる順序で要素を返すためには、スクリプトでドキュメント全体へのランダムアクセスが必要になるためです。 ​ ```DataWeave [payload[-2], payload[-1], payload[3]] ``` ​ ## [](#stream_json)JSON のストリーミング ​JSON ストリーミングの単位は配列の各要素です。 DataWeave 2.2.0 を使用して Mule 4.2 で JSON をストリーミングする場合には、配列が入力のルートに存在する必要があります。Mule 4.3 で JSON をストリーミングする場合には、配列が入力のルートに存在しなくても構いません。 ```JSON { "name" : "Mariano", "lastName": "Achaval", "family": [ {"name": "Sara", "age": 2}, {"name": "Pedro", "age": 4}, {"name": "Matias", "age": 8} ], "age": 37 } ``` この例では、DataWeave は ​`payload.family`​ をストリーミングして、その配列の各要素にランダムアクセスします。ただし、DataWeave はコンテナオブジェクトにはランダムアクセスすることはできません。たとえば、​`age`​ は ​`family`​ の後にあり、DataWeave は後戻りすることはできないため、​`{ a: payload.age , b: payload.family}`​ をストリーミングすることはできません。 ​ ## [](#stream_xml)XML のストリーミング ​ XML ではドキュメントに配列が含まれないため、JSON より複雑になります。 XML をストリーミングするため、DataWeave は次のリーダープロパティを使用して、ストリーミングするドキュメント内の場所を定義します。 - ​`collectionPath` たとえば、次の XML 入力があるとします。 ​ ```XML
Wed Nov 15 13:45:28 EST 2006 Joe
111 2 8.90 222 7 5.20 111 2 8.90 222 7 5.20 222 7 5.20
``` ​ この XML ソースデータに対して、​`outputMimeType`​ 値で ​`collectionPath=order.order-items`​ を設定することにより、ストリーミング単位を ​``​ に設定できます。 ```XML ``` `streaming=true`​ と ​`collectionPath`​ 値の両方を設定する必要があります。いずれかがない場合、コンテンツはストリーミングされません。 次の DataWeave スクリプトは、各 ​``​ 要素をストリーム可能単位として使用することで、XML 入力をストリーミングします。 ```DataWeave %dw 2.0 output application/xml --- { salesorder: { itemList: payload.order."order-items".*"order-item" map { ("i_" ++ $$) : { id: $.@id, productId: $.product, quantity: $.quantity, price: $.price } } } } ``` このスクリプトの XML 出力は次のようになります。 ```XML 31 2 111 8.90 31 7 222 5.20 31 2 111 8.90 31 7 222 5.20 31 7 222 5.20 ``` ## [](#ストリーミングされたデータのスクリプトの検証-実験的機能)ストリーミングされたデータのスクリプトの検証 (実験的機能) コードが入力ストリームを正常に処理できることを確認するため、DataWeave は次の​_高度で実験的な_​アノテーションと関連ディレクティブを提供しています。 - `@StreamCapable()` このアノテーションを使用して、スクリプトが変数 (特に ​`payload`​ 変数) に順次アクセスするかどうかを確認してください。 - `input`​ ディレクティブ: `@StreamCapable()`​ アノテーションでは、データソースの MIME タイプを識別するための入力ディレクティブを DataWeave スクリプトで使用する必要があります (例: `input payload application/xml`​)。 DataWeave バリデーター (スクリプト内の ​`@StreamCapable`​ アノテーションでトリガーされます) は、スクリプトが以下の条件を満たしているかどうかを確認します。 - 変数が 1 回だけ参照される。 - インデックスセレクターが負の値にアクセスしていない (例: `[-1]`​)。 - ネストされたラムダで変数への参照がない。 すべての条件が満たされていれば、選択されたデータはストリーム可能です。 次の例は、正常に検証されます。このスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- payload.family filter (member) -> member.age > 3 ``` スクリプトは検証を正しく実行し、次の出力を返します。 ```JSON [ { "name": "Pedro", "age": 4 }, { "name": "Matias", "age": 8 } ] ``` ### [](#検証の失敗)検証の失敗 いずれかの条件が満足していないとバリデーターは検証に失敗します。 ストリーミングが機能しても検証に失敗する場合がありますので注意してください。指定したデータソースの入力変数に順次アクセスするようにスクリプトを作成しても、スクリプトが機能しない場合があります。たとえば、JSON では、オブジェクト内のキーの順序に制約を設けていません。JSON ドキュメント内のキーがスクリプトの想定とは異なる順序で入力されていると、ストリーミングは失敗します。アノテーションプロセッサーは、書式設定のルールに従い、キーが常に同じ順序で入力されるとは想定できません。 #### [](#error-variable-is-referenced-more-than-once-エラー-変数が複数回参照されています)Error: Variable Is Referenced More Than Once (エラー: 変数が複数回参照されています) スクリプトが同じ変数を複数回参照しようとすると、検証は失敗します。 次のスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。スクリプトが ​`payload`​ 変数を複数回参照しようとしているため、検証は失敗します: ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- { family: payload.family filter (member) -> member.age > 3, name: payload.name } ``` スクリプトは次のエラーを返して失敗します。 ```error 4| input payload application/json streaming=true ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced more than once. Locations: --------------------------- 8| family: payload.family filter (member) -> member.age > 3, ^^^^^^^ --------------------------- 9| name: payload.name ^^^^^^^ at 4| input payload application/json streaming=true ``` #### [](#error-wrong-scope-reference-エラー-スコープ参照が正しくありません)Error: Wrong Scope Reference (エラー: スコープ参照が正しくありません) スクリプトが、変数が定義されているスコープとは異なるスコープの変数を参照しようとすると、検証は失敗します。 次のスクリプトは、​`payload`​ 変数がラムダ式 ​`[1,2,3] map ((item, index) → payload)`​ 内から参照されているために失敗します。式は ​`[1] map ((item, index) → payload`​ ですが、​`payload`​ が間違ったスコープにあるため、ストリーミングは失敗します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- [1,2,3] map ((item, index) -> payload) ``` この例は次のエラーを返して失敗します。 ```error 4| input payload application/json ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced in a different scope from where it was defined. Locations: --------------------------- 9| [1,2,3] map ((item, index) -> payload) ^^^^^^^^^^^^^^^^^^^^^^^^ at 4| input payload application/json ``` ## [](#stream_output)出力のストリーミング ストリーミングデータの処理後は、別のメッセージプロセッサーに出力を直接ストリーミングすることができます。この動作を簡単に実装するには、​`deferred`​ ライタープロパティを DataWeave スクリプトの output ディレクティブで使用します (例: `output application/json deferred=true`​)。 NOTE `deferred = true`​ を設定すると、例外は処理されません。たとえば、フローで例外が発生したときに、Studio でこの動作を確認できます。Studio デバッグモードでアプリケーションを実行中に、​`deferred = true`​ に設定されていて Transform Message コンポーネントで例外が発生した場合、コンソールにエラーは記録されますが、フローは Tranform Message コンポーネントで停止しません。 [「JSON のストリーミング」](#stream_json)​の例に基づいた次のフローは、DataWeave スクリプトを使用して、ストリーミングされた入力を絞り込み、出力を Write 操作に直接ストリーミングします。 ```XML member.age > 1 }]]> ``` フローは次の設定を使用します。 1. リスナー (​``​) は ​`streaming=true`​ を使用して、受信した JSON データをストリームします。 2. ``​ の DataWeave スクリプトは、ストリーミングデータのレコードを絞り込み、​`deferred = true`​ プロパティを使用して、結果レコードをフロー内の次のプロセッサーに直接ストリーミングします。 3. フロー内の次のコンポーネントである ​``​ は、絞り込まれたストリームを直接受け取り、レコードをファイルに書き込みます。 ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) # DataWeave でのストリーミング DataWeave は、Mule アプリケーション内のフローを通してエンドツーエンドのストリーミングをサポートします。ストリーミングにより、大きなドキュメントでもメモリをオーバーフローさせることなく処理をスピードアップできます。 DataWeave は、ドキュメント全体をスキャンしてインデックス化するのではなく、ストリーミングされたデータのバイトが到着するたびに処理します。遅延モードでは、DataWeave はストリーミングされた出力データをディスクに保存せずに、メッセージプロセッサーに直接渡すこともできます。この動作によって DataWeave と Mule は、デフォルトのプロセスでデータを読み書きするよりも速くデータを処理し、リソースコンシューム量を少なく抑えることができます。 データを正常にストリーミングするためには、以下を理解することが重要です。 - ストリームの基本単位はデータ形式ごとに異なります。 CSV ドキュメントであればレコード、JSON ドキュメントであれば配列の要素、XML ドキュメントであればコレクションが基本単位となります。 - ストリーミングでは、各ストリーム単位に順次アクセスします。 ストリーミングでは、ドキュメントへのランダムアクセスはサポートされません。 ## [](#ストリーミングの有効化)ストリーミングの有効化 ストリーミングはデフォルトでは有効化されていません。2 つの設定プロパティを使用して、サポートされているデータ形式でデータをストリーミングできます。 - ソースデータをストリームとして読み取るための ​`streaming`​ プロパティ - 出力ストリームをフロー内の次のメッセージプロセッサーに直接渡すための ​`deferred`​ ライタープロパティ DataWeave がソースデータをストリームとして読み取るには、データソースで ​`streaming`​ リーダープロパティを ​`true`​ に設定する必要があります。Mule アプリケーション内で、この設定を ​**MIME Type (MIME タイプ)**​ プロパティ ​`outputMimeType`​ または ​`mimeType`​ の値に追加します。HTTP Listener 操作、HTTP Request 操作、On New or Updated File 操作、Set Payload コンポーネントなど、データを生成する任意のコネクタ操作または Mule コンポーネントでプロパティを設定できます。DataWeave は、ストリーミングプロパティを設定したアプリケーション内のポイントから、DataWeave 式とスクリプトを含むすべてのダウンストリームコンポーネントとコネクタ操作を介してデータをストリーミングデータとして読み取ります。 ```XML ``` `streaming=true`​ は ​`outputMimeType`​ 値の一部ですので注意してください。File コンポーネントや FTP コンポーネントなどの他の多くの Mule コンポーネントも MIME タイプ設定をサポートします。 ストリーミングされた出力を次のメッセージプロセッサーに渡すには、DataWeave スクリプトで ​`output`​ ディレクティブを次のように使用します。 ```XML output application/json deferred=true ``` `deferred`​ プロパティの使い方の詳細は、​[出力のストリーミング](#stream_output)​ を参照してください。 ## [](#stream_csv)CSV のストリーミング CSV は、その構造により最もシンプルなストリーミング形式となります。CSV ヘッダーの下にある各行は、ストリーム可能なレコードです。次の CSV の例は、​`name`​、​`lastName`​、​`age`​ の各値を含むレコードから構成されています。 ​ ```CSV name,lastName,age mariano,achaval,37 leandro,shokida,30 pedro,achaval,4 christian,chibana,25 sara,achaval,2 matias,achaval,8 ``` この CSV の例をストリーミングするため、次のスクリプトは各レコードから値を選択しています。このスクリプトは、​`map`​ 関数を使用して、ドキュメント内の各レコードを反復処理しています。 ​ ```DataWeave payload map (record) -> { FullName: record.lastName ++ "," ++ record.name, Age: record.age } ``` ストリーミングでは、ドキュメント全体へのランダムアクセスはサポートされませんが、各レコードはメモリに読み込まれるため、DataWeave スクリプトは​_各レコード内の_​データにはランダムにアクセスできます。たとえば、​`record.lastName "," record.name,`​ という式により、入力での値の順序が逆であっても、​`name`​ 値にアクセスする前に ​`lastName`​ 値にアクセスできます。 ただし、ストリーミングは次のスクリプトでは機能しません。入力とは異なる順序で要素を返すためには、スクリプトでドキュメント全体へのランダムアクセスが必要になるためです。 ​ ```DataWeave [payload[-2], payload[-1], payload[3]] ``` ​ ## [](#stream_json)JSON のストリーミング ​JSON ストリーミングの単位は配列の各要素です。 DataWeave 2.2.0 を使用して Mule 4.2 で JSON をストリーミングする場合には、配列が入力のルートに存在する必要があります。Mule 4.3 で JSON をストリーミングする場合には、配列が入力のルートに存在しなくても構いません。 ```JSON { "name" : "Mariano", "lastName": "Achaval", "family": [ {"name": "Sara", "age": 2}, {"name": "Pedro", "age": 4}, {"name": "Matias", "age": 8} ], "age": 37 } ``` この例では、DataWeave は ​`payload.family`​ をストリーミングして、その配列の各要素にランダムアクセスします。ただし、DataWeave はコンテナオブジェクトにはランダムアクセスすることはできません。たとえば、​`age`​ は ​`family`​ の後にあり、DataWeave は後戻りすることはできないため、​`{ a: payload.age , b: payload.family}`​ をストリーミングすることはできません。 ​ ## [](#stream_xml)XML のストリーミング ​ XML ではドキュメントに配列が含まれないため、JSON より複雑になります。 XML をストリーミングするため、DataWeave は次のリーダープロパティを使用して、ストリーミングするドキュメント内の場所を定義します。 - ​`collectionPath` たとえば、次の XML 入力があるとします。 ​ ```XML
Wed Nov 15 13:45:28 EST 2006 Joe
111 2 8.90 222 7 5.20 111 2 8.90 222 7 5.20 222 7 5.20
``` ​ この XML ソースデータに対して、​`outputMimeType`​ 値で ​`collectionPath=order.order-items`​ を設定することにより、ストリーミング単位を ​``​ に設定できます。 ```XML ``` `streaming=true`​ と ​`collectionPath`​ 値の両方を設定する必要があります。いずれかがない場合、コンテンツはストリーミングされません。 次の DataWeave スクリプトは、各 ​``​ 要素をストリーム可能単位として使用することで、XML 入力をストリーミングします。 ```DataWeave %dw 2.0 output application/xml --- { salesorder: { itemList: payload.order."order-items".*"order-item" map { ("i_" ++ $$) : { id: $.@id, productId: $.product, quantity: $.quantity, price: $.price } } } } ``` このスクリプトの XML 出力は次のようになります。 ```XML 31 2 111 8.90 31 7 222 5.20 31 2 111 8.90 31 7 222 5.20 31 7 222 5.20 ``` ## [](#ストリーミングされたデータのスクリプトの検証-実験的機能)ストリーミングされたデータのスクリプトの検証 (実験的機能) コードが入力ストリームを正常に処理できることを確認するため、DataWeave は次の​_高度で実験的な_​アノテーションと関連ディレクティブを提供しています。 - `@StreamCapable()` このアノテーションを使用して、スクリプトが変数 (特に ​`payload`​ 変数) に順次アクセスするかどうかを確認してください。 - `input`​ ディレクティブ: `@StreamCapable()`​ アノテーションでは、データソースの MIME タイプを識別するための入力ディレクティブを DataWeave スクリプトで使用する必要があります (例: `input payload application/xml`​)。 DataWeave バリデーター (スクリプト内の ​`@StreamCapable`​ アノテーションでトリガーされます) は、スクリプトが以下の条件を満たしているかどうかを確認します。 - 変数が 1 回だけ参照される。 - インデックスセレクターが負の値にアクセスしていない (例: `[-1]`​)。 - ネストされたラムダで変数への参照がない。 すべての条件が満たされていれば、選択されたデータはストリーム可能です。 次の例は、正常に検証されます。このスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- payload.family filter (member) -> member.age > 3 ``` スクリプトは検証を正しく実行し、次の出力を返します。 ```JSON [ { "name": "Pedro", "age": 4 }, { "name": "Matias", "age": 8 } ] ``` ### [](#検証の失敗)検証の失敗 いずれかの条件が満足していないとバリデーターは検証に失敗します。 ストリーミングが機能しても検証に失敗する場合がありますので注意してください。指定したデータソースの入力変数に順次アクセスするようにスクリプトを作成しても、スクリプトが機能しない場合があります。たとえば、JSON では、オブジェクト内のキーの順序に制約を設けていません。JSON ドキュメント内のキーがスクリプトの想定とは異なる順序で入力されていると、ストリーミングは失敗します。アノテーションプロセッサーは、書式設定のルールに従い、キーが常に同じ順序で入力されるとは想定できません。 #### [](#error-variable-is-referenced-more-than-once-エラー-変数が複数回参照されています)Error: Variable Is Referenced More Than Once (エラー: 変数が複数回参照されています) スクリプトが同じ変数を複数回参照しようとすると、検証は失敗します。 次のスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。スクリプトが ​`payload`​ 変数を複数回参照しようとしているため、検証は失敗します: ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- { family: payload.family filter (member) -> member.age > 3, name: payload.name } ``` スクリプトは次のエラーを返して失敗します。 ```error 4| input payload application/json streaming=true ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced more than once. Locations: --------------------------- 8| family: payload.family filter (member) -> member.age > 3, ^^^^^^^ --------------------------- 9| name: payload.name ^^^^^^^ at 4| input payload application/json streaming=true ``` #### [](#error-wrong-scope-reference-エラー-スコープ参照が正しくありません)Error: Wrong Scope Reference (エラー: スコープ参照が正しくありません) スクリプトが、変数が定義されているスコープとは異なるスコープの変数を参照しようとすると、検証は失敗します。 次のスクリプトは、​`payload`​ 変数がラムダ式 ​`[1,2,3] map ((item, index) → payload)`​ 内から参照されているために失敗します。式は ​`[1] map ((item, index) → payload`​ ですが、​`payload`​ が間違ったスコープにあるため、ストリーミングは失敗します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- [1,2,3] map ((item, index) -> payload) ``` この例は次のエラーを返して失敗します。 ```error 4| input payload application/json ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced in a different scope from where it was defined. Locations: --------------------------- 9| [1,2,3] map ((item, index) -> payload) ^^^^^^^^^^^^^^^^^^^^^^^^ at 4| input payload application/json ``` ## [](#stream_output)出力のストリーミング ストリーミングデータの処理後は、別のメッセージプロセッサーに出力を直接ストリーミングすることができます。この動作を簡単に実装するには、​`deferred`​ ライタープロパティを DataWeave スクリプトの output ディレクティブで使用します (例: `output application/json deferred=true`​)。 NOTE `deferred = true`​ を設定すると、例外は処理されません。たとえば、フローで例外が発生したときに、Studio でこの動作を確認できます。Studio デバッグモードでアプリケーションを実行中に、​`deferred = true`​ に設定されていて Transform Message コンポーネントで例外が発生した場合、コンソールにエラーは記録されますが、フローは Tranform Message コンポーネントで停止しません。 [「JSON のストリーミング」](#stream_json)​の例に基づいた次のフローは、DataWeave スクリプトを使用して、ストリーミングされた入力を絞り込み、出力を Write 操作に直接ストリーミングします。 ```XML member.age > 1 }]]> ``` フローは次の設定を使用します。 1. リスナー (​``​) は ​`streaming=true`​ を使用して、受信した JSON データをストリームします。 2. ``​ の DataWeave スクリプトは、ストリーミングデータのレコードを絞り込み、​`deferred = true`​ プロパティを使用して、結果レコードをフロー内の次のプロセッサーに直接ストリーミングします。 3. フロー内の次のコンポーネントである ​``​ は、絞り込まれたストリームを直接受け取り、レコードをファイルに書き込みます。 ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) # DataWeave でのストリーミング DataWeave は、Mule アプリケーション内のフローを通してエンドツーエンドのストリーミングをサポートします。ストリーミングにより、大きなドキュメントでもメモリをオーバーフローさせることなく処理をスピードアップできます。 DataWeave は、ドキュメント全体をスキャンしてインデックス化するのではなく、ストリーミングされたデータのバイトが到着するたびに処理します。遅延モードでは、DataWeave はストリーミングされた出力データをディスクに保存せずに、メッセージプロセッサーに直接渡すこともできます。この動作によって DataWeave と Mule は、デフォルトのプロセスでデータを読み書きするよりも速くデータを処理し、リソースコンシューム量を少なく抑えることができます。 データを正常にストリーミングするためには、以下を理解することが重要です。 - ストリームの基本単位はデータ形式ごとに異なります。 CSV ドキュメントであればレコード、JSON ドキュメントであれば配列の要素、XML ドキュメントであればコレクションが基本単位となります。 - ストリーミングでは、各ストリーム単位に順次アクセスします。 ストリーミングでは、ドキュメントへのランダムアクセスはサポートされません。 ## [](#ストリーミングの有効化)ストリーミングの有効化 ストリーミングはデフォルトでは有効化されていません。2 つの設定プロパティを使用して、サポートされているデータ形式でデータをストリーミングできます。 - ソースデータをストリームとして読み取るための ​`streaming`​ プロパティ - 出力ストリームをフロー内の次のメッセージプロセッサーに直接渡すための ​`deferred`​ ライタープロパティ DataWeave がソースデータをストリームとして読み取るには、データソースで ​`streaming`​ リーダープロパティを ​`true`​ に設定する必要があります。Mule アプリケーション内で、この設定を ​**MIME Type (MIME タイプ)**​ プロパティ ​`outputMimeType`​ または ​`mimeType`​ の値に追加します。HTTP Listener 操作、HTTP Request 操作、On New or Updated File 操作、Set Payload コンポーネントなど、データを生成する任意のコネクタ操作または Mule コンポーネントでプロパティを設定できます。DataWeave は、ストリーミングプロパティを設定したアプリケーション内のポイントから、DataWeave 式とスクリプトを含むすべてのダウンストリームコンポーネントとコネクタ操作を介してデータをストリーミングデータとして読み取ります。 ```XML ``` `streaming=true`​ は ​`outputMimeType`​ 値の一部ですので注意してください。File コンポーネントや FTP コンポーネントなどの他の多くの Mule コンポーネントも MIME タイプ設定をサポートします。 ストリーミングされた出力を次のメッセージプロセッサーに渡すには、DataWeave スクリプトで ​`output`​ ディレクティブを次のように使用します。 ```XML output application/json deferred=true ``` `deferred`​ プロパティの使い方の詳細は、​[出力のストリーミング](#stream_output)​ を参照してください。 ## [](#stream_csv)CSV のストリーミング CSV は、その構造により最もシンプルなストリーミング形式となります。CSV ヘッダーの下にある各行は、ストリーム可能なレコードです。次の CSV の例は、​`name`​、​`lastName`​、​`age`​ の各値を含むレコードから構成されています。 ​ ```CSV name,lastName,age mariano,achaval,37 leandro,shokida,30 pedro,achaval,4 christian,chibana,25 sara,achaval,2 matias,achaval,8 ``` この CSV の例をストリーミングするため、次のスクリプトは各レコードから値を選択しています。このスクリプトは、​`map`​ 関数を使用して、ドキュメント内の各レコードを反復処理しています。 ​ ```DataWeave payload map (record) -> { FullName: record.lastName ++ "," ++ record.name, Age: record.age } ``` ストリーミングでは、ドキュメント全体へのランダムアクセスはサポートされませんが、各レコードはメモリに読み込まれるため、DataWeave スクリプトは​_各レコード内の_​データにはランダムにアクセスできます。たとえば、​`record.lastName "," record.name,`​ という式により、入力での値の順序が逆であっても、​`name`​ 値にアクセスする前に ​`lastName`​ 値にアクセスできます。 ただし、ストリーミングは次のスクリプトでは機能しません。入力とは異なる順序で要素を返すためには、スクリプトでドキュメント全体へのランダムアクセスが必要になるためです。 ​ ```DataWeave [payload[-2], payload[-1], payload[3]] ``` ​ ## [](#stream_json)JSON のストリーミング ​JSON ストリーミングの単位は配列の各要素です。 DataWeave 2.2.0 を使用して Mule 4.2 で JSON をストリーミングする場合には、配列が入力のルートに存在する必要があります。Mule 4.3 で JSON をストリーミングする場合には、配列が入力のルートに存在しなくても構いません。 ```JSON { "name" : "Mariano", "lastName": "Achaval", "family": [ {"name": "Sara", "age": 2}, {"name": "Pedro", "age": 4}, {"name": "Matias", "age": 8} ], "age": 37 } ``` この例では、DataWeave は ​`payload.family`​ をストリーミングして、その配列の各要素にランダムアクセスします。ただし、DataWeave はコンテナオブジェクトにはランダムアクセスすることはできません。たとえば、​`age`​ は ​`family`​ の後にあり、DataWeave は後戻りすることはできないため、​`{ a: payload.age , b: payload.family}`​ をストリーミングすることはできません。 ​ ## [](#stream_xml)XML のストリーミング ​ XML ではドキュメントに配列が含まれないため、JSON より複雑になります。 XML をストリーミングするため、DataWeave は次のリーダープロパティを使用して、ストリーミングするドキュメント内の場所を定義します。 - ​`collectionPath` たとえば、次の XML 入力があるとします。 ​ ```XML
Wed Nov 15 13:45:28 EST 2006 Joe
111 2 8.90 222 7 5.20 111 2 8.90 222 7 5.20 222 7 5.20
``` ​ この XML ソースデータに対して、​`outputMimeType`​ 値で ​`collectionPath=order.order-items`​ を設定することにより、ストリーミング単位を ​``​ に設定できます。 ```XML ``` `streaming=true`​ と ​`collectionPath`​ 値の両方を設定する必要があります。いずれかがない場合、コンテンツはストリーミングされません。 次の DataWeave スクリプトは、各 ​``​ 要素をストリーム可能単位として使用することで、XML 入力をストリーミングします。 ```DataWeave %dw 2.0 output application/xml --- { salesorder: { itemList: payload.order."order-items".*"order-item" map { ("i_" ++ $$) : { id: $.@id, productId: $.product, quantity: $.quantity, price: $.price } } } } ``` このスクリプトの XML 出力は次のようになります。 ```XML 31 2 111 8.90 31 7 222 5.20 31 2 111 8.90 31 7 222 5.20 31 7 222 5.20 ``` ## [](#ストリーミングされたデータのスクリプトの検証-実験的機能)ストリーミングされたデータのスクリプトの検証 (実験的機能) コードが入力ストリームを正常に処理できることを確認するため、DataWeave は次の​_高度で実験的な_​アノテーションと関連ディレクティブを提供しています。 - `@StreamCapable()` このアノテーションを使用して、スクリプトが変数 (特に ​`payload`​ 変数) に順次アクセスするかどうかを確認してください。 - `input`​ ディレクティブ: `@StreamCapable()`​ アノテーションでは、データソースの MIME タイプを識別するための入力ディレクティブを DataWeave スクリプトで使用する必要があります (例: `input payload application/xml`​)。 DataWeave バリデーター (スクリプト内の ​`@StreamCapable`​ アノテーションでトリガーされます) は、スクリプトが以下の条件を満たしているかどうかを確認します。 - 変数が 1 回だけ参照される。 - インデックスセレクターが負の値にアクセスしていない (例: `[-1]`​)。 - ネストされたラムダで変数への参照がない。 すべての条件が満たされていれば、選択されたデータはストリーム可能です。 次の例は、正常に検証されます。このスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- payload.family filter (member) -> member.age > 3 ``` スクリプトは検証を正しく実行し、次の出力を返します。 ```JSON [ { "name": "Pedro", "age": 4 }, { "name": "Matias", "age": 8 } ] ``` ### [](#検証の失敗)検証の失敗 いずれかの条件が満足していないとバリデーターは検証に失敗します。 ストリーミングが機能しても検証に失敗する場合がありますので注意してください。指定したデータソースの入力変数に順次アクセスするようにスクリプトを作成しても、スクリプトが機能しない場合があります。たとえば、JSON では、オブジェクト内のキーの順序に制約を設けていません。JSON ドキュメント内のキーがスクリプトの想定とは異なる順序で入力されていると、ストリーミングは失敗します。アノテーションプロセッサーは、書式設定のルールに従い、キーが常に同じ順序で入力されるとは想定できません。 #### [](#error-variable-is-referenced-more-than-once-エラー-変数が複数回参照されています)Error: Variable Is Referenced More Than Once (エラー: 変数が複数回参照されています) スクリプトが同じ変数を複数回参照しようとすると、検証は失敗します。 次のスクリプトは、​[JSON ストリーム](#stream_json)​セクションの​[JSON 入力](#example_json)​を処理します。スクリプトが ​`payload`​ 変数を複数回参照しようとしているため、検証は失敗します: ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- { family: payload.family filter (member) -> member.age > 3, name: payload.name } ``` スクリプトは次のエラーを返して失敗します。 ```error 4| input payload application/json streaming=true ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced more than once. Locations: --------------------------- 8| family: payload.family filter (member) -> member.age > 3, ^^^^^^^ --------------------------- 9| name: payload.name ^^^^^^^ at 4| input payload application/json streaming=true ``` #### [](#error-wrong-scope-reference-エラー-スコープ参照が正しくありません)Error: Wrong Scope Reference (エラー: スコープ参照が正しくありません) スクリプトが、変数が定義されているスコープとは異なるスコープの変数を参照しようとすると、検証は失敗します。 次のスクリプトは、​`payload`​ 変数がラムダ式 ​`[1,2,3] map ((item, index) → payload)`​ 内から参照されているために失敗します。式は ​`[1] map ((item, index) → payload`​ ですが、​`payload`​ が間違ったスコープにあるため、ストリーミングは失敗します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- [1,2,3] map ((item, index) -> payload) ``` この例は次のエラーを返して失敗します。 ```error 4| input payload application/json ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced in a different scope from where it was defined. Locations: --------------------------- 9| [1,2,3] map ((item, index) -> payload) ^^^^^^^^^^^^^^^^^^^^^^^^ at 4| input payload application/json ``` ## [](#stream_output)出力のストリーミング ストリーミングデータの処理後は、別のメッセージプロセッサーに出力を直接ストリーミングすることができます。この動作を簡単に実装するには、​`deferred`​ ライタープロパティを DataWeave スクリプトの output ディレクティブで使用します (例: `output application/json deferred=true`​)。 NOTE `deferred = true`​ を設定すると、例外は処理されません。たとえば、フローで例外が発生したときに、Studio でこの動作を確認できます。Studio デバッグモードでアプリケーションを実行中に、​`deferred = true`​ に設定されていて Transform Message コンポーネントで例外が発生した場合、コンソールにエラーは記録されますが、フローは Tranform Message コンポーネントで停止しません。 [「JSON のストリーミング」](#stream_json)​の例に基づいた次のフローは、DataWeave スクリプトを使用して、ストリーミングされた入力を絞り込み、出力を Write 操作に直接ストリーミングします。 ```XML member.age > 1 }]]> ``` フローは次の設定を使用します。 1. リスナー (​``​) は ​`streaming=true`​ を使用して、受信した JSON データをストリームします。 2. ``​ の DataWeave スクリプトは、ストリーミングデータのレコードを絞り込み、​`deferred = true`​ プロパティを使用して、結果レコードをフロー内の次のプロセッサーに直接ストリーミングします。 3. フロー内の次のコンポーネントである ​``​ は、絞り込まれたストリームを直接受け取り、レコードをファイルに書き込みます。 ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) # DataWeave でのストリーミング DataWeave は、Mule アプリケーション内のフローを通してエンドツーエンドのストリーミングをサポートします。ストリーミングにより、大きなドキュメントでもメモリをオーバーフローさせることなく処理をスピードアップできます。 DataWeave は、ドキュメント全体をスキャンしてインデックス化するのではなく、ストリーミングされたデータのバイトが到着するたびに処理します。遅延モードでは、DataWeave はストリーミングされた出力データをディスクに保存せずに、メッセージプロセッサーに直接渡すこともできます。この動作によって DataWeave と Mule は、デフォルトのプロセスでデータを読み書きするよりも速くデータを処理し、リソースコンシューム量を少なく抑えることができます。 データを正常にストリーミングするためには、以下を理解することが重要です。 - ストリームの基本単位はデータ形式ごとに異なります。 CSV ドキュメントであればレコード、JSON ドキュメントであれば配列の要素、XML ドキュメントであればコレクションが基本単位となります。 - ストリーミングでは、各ストリーム単位に順次アクセスします。 ストリーミングでは、ドキュメントへのランダムアクセスはサポートされません。 ## [](#ストリーミングの有効化)ストリーミングの有効化 ストリーミングはデフォルトでは有効化されていません。2 つの設定プロパティを使用して、サポートされているデータ形式でデータをストリーミングできます。 - ソースデータをストリームとして読み取るための ​`streaming`​ プロパティ - 出力ストリームをフロー内の次のメッセージプロセッサーに直接渡すための ​`deferred`​ ライタープロパティ DataWeave がソースデータをストリームとして読み取るには、データソースで ​`streaming`​ リーダープロパティを ​`true`​ に設定する必要があります。Mule アプリケーション内で、この設定を ​**MIME Type (MIME タイプ)**​ プロパティ ​`outputMimeType`​ または ​`mimeType`​ の値に追加します。HTTP Listener 操作、HTTP Request 操作、On New or Updated File 操作、Set Payload コンポーネントなど、データを生成する任意のコネクタ操作または Mule コンポーネントでプロパティを設定できます。DataWeave は、ストリーミングプロパティを設定したアプリケーション内のポイントから、DataWeave 式とスクリプトを含むすべてのダウンストリームコンポーネントとコネクタ操作を介してデータをストリーミングデータとして読み取ります。 ```XML ``` `streaming=true`​ は ​`outputMimeType`​ 値の一部ですので注意してください。File コンポーネントや FTP コンポーネントなどの他の多くの Mule コンポーネントも MIME タイプ設定をサポートします。 ストリーミングされた出力を次のメッセージプロセッサーに渡すには、DataWeave スクリプトで ​`output`​ ディレクティブを次のように使用します。 ```XML output application/json deferred=true ``` `deferred`​ プロパティの使い方の詳細は、 ​[出力のストリーミング](#stream_output)​を参照してください。 ## [](#stream_csv)CSV のストリーミング CSV は、その構造により最もシンプルなストリーミング形式となります。CSV ヘッダーの下にある各行は、ストリーム可能なレコードです。次の CSV の例は、​`name`​、​`lastName`​、​`age`​ の各値を含むレコードから構成されています。 ​ ```CSV name,lastName,age mariano,achaval,37 leandro,shokida,30 pedro,achaval,4 christian,chibana,25 sara,achaval,2 matias,achaval,8 ``` この CSV の例をストリーミングするため、次のスクリプトは各レコードから値を選択しています。このスクリプトは、​`map`​ 関数を使用して、ドキュメント内の各レコードを反復処理しています。 ​ ```DataWeave payload map (record) -> { FullName: record.lastName ++ "," ++ record.name, Age: record.age } ``` ストリーミングでは、ドキュメント全体へのランダムアクセスはサポートされませんが、各レコードはメモリに読み込まれるため、DataWeave スクリプトは​_各レコード内の_​データにはランダムにアクセスできます。たとえば、​`record.lastName "," record.name,`​ という式により、入力での値の順序が逆であっても、​`name`​ 値にアクセスする前に ​`lastName`​ 値にアクセスできます。 ただし、ストリーミングは次のスクリプトでは機能しません。入力とは異なる順序で要素を返すためには、スクリプトでドキュメント全体へのランダムアクセスが必要になるためです。 ​ ```DataWeave [payload[-2], payload[-1], payload[3]] ``` ​ ## [](#stream_json)JSON のストリーミング JSON ストリーミングの単位は配列の各要素です。 DataWeave 2.2.0 を使用して Mule 4.2 で JSON をストリーミングする場合には、配列が入力のルートに存在する必要があります。Mule 4.3 で JSON をストリーミングする場合には、配列が入力のルートに存在しなくても構いません。 ```JSON { "name" : "Mariano", "lastName": "Achaval", "family": [ {"name": "Sara", "age": 2}, {"name": "Pedro", "age": 4}, {"name": "Matias", "age": 8} ], "age": 37 } ``` この例では、DataWeave は ​`payload.family`​ をストリーミングして、その配列の各要素にランダムアクセスします。ただし、DataWeave はコンテナオブジェクトにはランダムアクセスすることはできません。たとえば、​`age`​ は ​`family`​ の後にあり、DataWeave は後戻りすることはできないため、​`{ a: payload.age , b: payload.family}`​ をストリーミングすることはできません。 ​ ## [](#stream_xml)XML のストリーミング ​ XML ではドキュメントに配列が含まれないため、JSON より複雑になります。 XML をストリーミングするため、DataWeave は次のリーダープロパティを使用して、ストリーミングするドキュメント内の場所を定義します。 - ​`collectionPath` たとえば、次の XML 入力があるとします。 ​ ```XML
Wed Nov 15 13:45:28 EST 2006 Joe
111 2 8.90 222 7 5.20 111 2 8.90 222 7 5.20 222 7 5.20
``` ​ この XML ソースデータに対して、​`outputMimeType`​ 値で ​`collectionPath=order.order-items`​ を設定することにより、ストリーミング単位を ​``​ に設定できます。 ```XML ``` `streaming=true`​ と ​`collectionPath`​ 値の両方を設定する必要があります。いずれかがない場合、コンテンツはストリーミングされません。 次の DataWeave スクリプトは、各 ​``​ 要素をストリーム可能単位として使用することで、XML 入力をストリーミングします。 ```DataWeave %dw 2.0 output application/xml --- { salesorder: { itemList: payload.order."order-items".*"order-item" map { ("i_" ++ $$) : { id: $.@id, productId: $.product, quantity: $.quantity, price: $.price } } } } ``` このスクリプトの XML 出力は次のようになります。 ```XML 31 2 111 8.90 31 7 222 5.20 31 2 111 8.90 31 7 222 5.20 31 7 222 5.20 ``` ## [](#ストリーミングされたデータのスクリプトの検証-実験的機能)ストリーミングされたデータのスクリプトの検証 (実験的機能) コードが入力ストリームを正常に処理できることを確認するため、DataWeave は次の​_高度で実験的な_​アノテーションと関連ディレクティブを提供しています。 - `@StreamCapable()` このアノテーションを使用して、スクリプトが変数 (特に ​`payload`​ 変数) に順次アクセスするかどうかを確認してください。 - `input`​ ディレクティブ: `@StreamCapable()`​ アノテーションでは、データソースの MIME タイプを識別するための入力ディレクティブを DataWeave スクリプトで使用する必要があります (例: `input payload application/xml`​)。 DataWeave バリデーター (スクリプト内の ​`@StreamCapable`​ アノテーションでトリガーされます) は、スクリプトが以下の条件を満たしているかどうかを確認します。 - 変数が 1 回だけ参照される。 - インデックスセレクターが負の値にアクセスしていない (例: `[-1]`​)。 - ネストされたラムダで変数への参照がない。 すべての条件が満たされていれば、選択されたデータはストリーム可能です。 次の例は、正常に検証されます。このスクリプトは、​[JSON ストリーム](#stream_json)​セクションの ​[JSON 入力](#example_json)​を処理します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- payload.family filter (member) -> member.age > 3 ``` スクリプトは検証を正しく実行し、次の出力を返します。 ```JSON [ { "name": "Pedro", "age": 4 }, { "name": "Matias", "age": 8 } ] ``` ### [](#検証の失敗)検証の失敗 いずれかの条件が満足していないとバリデーターは検証に失敗します。 ストリーミングが機能しても検証に失敗する場合がありますので注意してください。指定したデータソースの入力変数に順次アクセスするようにスクリプトを作成しても、スクリプトが機能しない場合があります。たとえば、JSON では、オブジェクト内のキーの順序に制約を設けていません。JSON ドキュメント内のキーがスクリプトの想定とは異なる順序で入力されていると、ストリーミングは失敗します。アノテーションプロセッサーは、書式設定のルールに従い、キーが常に同じ順序で入力されるとは想定できません。 #### [](#error-variable-is-referenced-more-than-once-エラー-変数が複数回参照されています)Error: Variable Is Referenced More Than Once (エラー: 変数が複数回参照されています) スクリプトが同じ変数を複数回参照しようとすると、検証は失敗します。 次のスクリプトは、​[JSON ストリーム](#stream_json)​セクションの ​[JSON 入力](#example_json)​を処理します。スクリプトが ​`payload`​ 変数を複数回参照しようとしているため、検証は失敗します: ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- { family: payload.family filter (member) -> member.age > 3, name: payload.name } ``` スクリプトは次のエラーを返して失敗します。 ```error 4| input payload application/json streaming=true ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced more than once. Locations: --------------------------- 8| family: payload.family filter (member) -> member.age > 3, ^^^^^^^ --------------------------- 9| name: payload.name ^^^^^^^ at 4| input payload application/json streaming=true ``` #### [](#error-wrong-scope-reference-エラー-スコープ参照が正しくありません)Error: Wrong Scope Reference (エラー: スコープ参照が正しくありません) スクリプトが、変数が定義されているスコープとは異なるスコープの変数を参照しようとすると、検証は失敗します。 次のスクリプトは、​`payload`​ 変数がラムダ式 ​`[1,2,3] map ((item, index) → payload)`​ 内から参照されているために失敗します。式は ​`[1] map ((item, index) → payload`​ ですが、​`payload`​ が間違ったスコープにあるため、ストリーミングは失敗します。 ```DataWeave %dw 2.0 @StreamCapable() input payload application/json output application/json --- [1,2,3] map ((item, index) -> payload) ``` この例は次のエラーを返して失敗します。 ```error 4| input payload application/json ^^^^^^^ Parameter `payload` is not stream capable. Reasons: - Variable payload is referenced in a different scope from where it was defined. Locations: --------------------------- 9| [1,2,3] map ((item, index) -> payload) ^^^^^^^^^^^^^^^^^^^^^^^^ at 4| input payload application/json ``` ## [](#stream_output)出力のストリーミング ストリーミングデータの処理後は、別のメッセージプロセッサーに出力を直接ストリーミングすることができます。この動作を簡単に実装するには、​`deferred`​ ライタープロパティを DataWeave スクリプトの output ディレクティブで使用します (例: `output application/json deferred=true`​)。 NOTE `deferred = true`​ を設定すると、例外は処理されません。たとえば、フローで例外が発生したときに、Studio でこの動作を確認できます。Studio デバッグモードでアプリケーションを実行中に、​`deferred = true`​ に設定されていて Transform Message コンポーネントで例外が発生した場合、コンソールにエラーは記録されますが、フローは Tranform Message コンポーネントで停止しません。 [「JSON のストリーミング」](#stream_json)​の例に基づいた次のフローは、DataWeave スクリプトを使用して、ストリーミングされた入力を絞り込み、出力を Write 操作に直接ストリーミングします。 ```XML member.age > 1 }]]> ``` フローは次の設定を使用します。 1. リスナー (​``​) は ​`streaming=true`​ を使用して、受信した JSON データをストリームします。 2. ``​ の DataWeave スクリプトは、ストリーミングデータのレコードを絞り込み、​`deferred = true`​ プロパティを使用して、結果レコードをフロー内の次のプロセッサーに直接ストリーミングします。 3. フロー内の次のコンポーネントである ​``​ は、絞り込まれたストリームを直接受け取り、レコードをファイルに書き込みます。 ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) # DataWeave でのデフォルト値の設定 ペイロード値がない場合やその値が ​`null`​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。 - `default`​ キーワードを使用する。 - `if-else`​ または ​`else-if`​ ステートメントでデフォルトを設定する。 - パターンを照合するときに ​`else`​ を使用する。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 ## [](#キーワード-default-を使用したデフォルト値設定の例)キーワード default を使用したデフォルト値設定の例 項目 ​`id`​ と ​`name`​ を含む JSON 入力を想定し、変換を行う Mule アプリケーションについて考えます。 これらの項目が存在しないか、値が ​`null`​ である場合のデフォルト値を設定できます。たとえば、次のようにします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { "userId": payload.id default "0000", "userName": payload.name default "Undefined" } ``` この Mule アプリケーションが ​`id`​ 項目と ​`name`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって項目 ​`id`​ が ​`userId`​ に照合され、項目 ​`name`​ が ​`userName`​ に照合されます。 入力 JSON ペイロード: ```json { "id": "123", "name": "Max the Mule" } ``` 出力 JSON: ```json { "userId": "123", "userName": "Max the Mule" } ``` ただし、Mule アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では項目 ​`userId`​ と ​`userName`​ に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json { "id": null } ``` 出力 JSON: ```json { "userId": "0000", "userName": "Undefined" } ``` ## [](#ex03)if-else と else-if ステートメントを使用したデフォルト値設定の例 デフォルト値を設定する別の方法は、​[if-else](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control#control_flow_if_else)​ と ​[else-if](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control#control_flow_else_if)​ を使用するものです。 次の例では、JSON 入力メッセージの ​`userLocation`​ が存在しない場合やその値が ​`null`​ である場合にデフォルト値として ​`United States`​ を設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- if (payload.location != null) { "userLocation" : payload.location } else { "userLocation" : "United States" } ``` この Mule アプリケーションが ​`location`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって項目 ​`location`​ が ​`userLocation`​ に照合されます。 入力 JSON ペイロード: ```json { "location": "Argentina" } ``` 出力 JSON: ```json { "userLocation": "Argentina" } ``` ただし、Mule アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では項目 ​`userLocation`​ に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json {} ``` 出力 JSON: ```json { "userLocation": "United States" } ``` ## [](#ex05)照合パターンを使用したデフォルト値設定の例 [パターンを照合するスクリプト](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-pattern-matching)​の場合、DataWeave の ​`case`​ ステートメントは ​`else`​ 式で終了します。これは、先行するすべての ​`case`​ 式で ​`false`​ が返された場合に返されるデフォルトとして機能します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = "someString" output application/json --- myVar match { case myVarOne if (myVar == "some") -> ("some" ++ "is myVar") case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar") else -> myVar ++ " is myVar" } ``` 出力 JSON: ```json "someString is myVar" ``` # DataWeave でのデフォルト値の設定 ペイロード値がない場合やその値が ​`null`​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。 - `default`​ キーワードを使用する。 - `if-else`​ または ​`else-if`​ ステートメントでデフォルトを設定する。 - パターンを照合するときに ​`else`​ を使用する。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キーワード-default-を使用したデフォルト値設定の例)キーワード default を使用したデフォルト値設定の例 `id`​ 項目と ​`name`​ 項目を含む JSON 入力を想定し、変換を行うアプリケーションについて考えます。 これらの項目が存在しないか、値が ​`null`​ である場合のデフォルト値を設定できます。例: DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { "userId": payload.id default "0000", "userName": payload.name default "Undefined" } ``` このアプリケーションが ​`id`​ 項目と ​`name`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`id`​ 項目が ​`userId`​ に照合され、​`name`​ 項目が ​`userName`​ に照合されます。 入力 JSON ペイロード: ```json { "id": "123", "name": "Max the Mule" } ``` 出力 JSON: ```json { "userId": "123", "userName": "Max the Mule" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userId`​ 項目と ​`userName`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json { "id": null } ``` 出力 JSON: ```json { "userId": "0000", "userName": "Undefined" } ``` ## [](#ex03)if-else と else-if ステートメントを使用したデフォルト値設定の例 デフォルト値を設定する別の方法は、​[if-else](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control#control_flow_if_else)​ と ​[else-if](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control#control_flow_else_if)​ を使用するものです。 次の例では、JSON 入力メッセージの ​`userLocation`​ が存在しない場合やその値が ​`null`​ である場合にデフォルト値として ​`United States`​ を設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- if (payload.location != null) { "userLocation" : payload.location } else { "userLocation" : "United States" } ``` このアプリケーションが ​`location`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`location`​ 項目が ​`userLocation`​ に照合されます。 入力 JSON ペイロード: ```json { "location": "Argentina" } ``` 出力 JSON: ```json { "userLocation": "Argentina" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userLocation`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json {} ``` 出力 JSON: ```json { "userLocation": "United States" } ``` ## [](#ex05)照合パターンを使用したデフォルト値設定の例 [パターンを照合するスクリプト](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-pattern-matching)​の場合、DataWeave の ​`case`​ ステートメントは ​`else`​ 式で終了します。これは、先行するすべての ​`case`​ 式で ​`false`​ が返された場合に返されるデフォルトとして機能します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = "someString" output application/json --- myVar match { case myVarOne if (myVar == "some") -> ("some" ++ "is myVar") case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar") else -> myVar ++ " is myVar" } ``` 出力 JSON: ```json "someString is myVar" ``` # DataWeave でのデフォルト値の設定 ペイロード値がない場合やその値が ​`null`​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。 - `default`​ キーワードを使用する。 - `if-else`​ または ​`else-if`​ ステートメントでデフォルトを設定する。 - パターンを照合するときに ​`else`​ を使用する。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キーワード-default-を使用したデフォルト値設定の例)キーワード default を使用したデフォルト値設定の例 `id`​ 項目と ​`name`​ 項目を含む JSON 入力を想定し、変換を行うアプリケーションについて考えます。 これらの項目が存在しないか、値が ​`null`​ である場合のデフォルト値を設定できます。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { "userId": payload.id default "0000", "userName": payload.name default "Undefined" } ``` このアプリケーションが ​`id`​ 項目と ​`name`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`id`​ 項目が ​`userId`​ に照合され、​`name`​ 項目が ​`userName`​ に照合されます。 入力 JSON ペイロード: ```json { "id": "123", "name": "Max the Mule" } ``` 出力 JSON: ```json { "userId": "123", "userName": "Max the Mule" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userId`​ 項目と ​`userName`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json { "id": null } ``` 出力 JSON: ```json { "userId": "0000", "userName": "Undefined" } ``` ## [](#ex03)if-else と else-if ステートメントを使用したデフォルト値設定の例 デフォルト値を設定する別の方法は、​[if-else](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control#control_flow_if_else)​ と ​[else-if](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control#control_flow_else_if)​ を使用するものです。 次の例では、JSON 入力メッセージの ​`userLocation`​ が存在しない場合やその値が ​`null`​ である場合にデフォルト値として ​`United States`​ を設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- if (payload.location != null) { "userLocation" : payload.location } else { "userLocation" : "United States" } ``` このアプリケーションが ​`location`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`location`​ 項目が ​`userLocation`​ に照合されます。 入力 JSON ペイロード: ```json { "location": "Argentina" } ``` 出力 JSON: ```json { "userLocation": "Argentina" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userLocation`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json {} ``` 出力 JSON: ```json { "userLocation": "United States" } ``` ## [](#ex05)照合パターンを使用したデフォルト値設定の例 [パターンを照合するスクリプト](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-pattern-matching)​の場合、DataWeave の ​`case`​ ステートメントは ​`else`​ 式で終了します。これは、先行するすべての ​`case`​ 式で ​`false`​ が返された場合に返されるデフォルトとして機能します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = "someString" output application/json --- myVar match { case myVarOne if (myVar == "some") -> ("some" ++ "is myVar") case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar") else -> myVar ++ " is myVar" } ``` 出力 JSON: ```json "someString is myVar" ``` # DataWeave でのデフォルト値の設定 ペイロード値がない場合やその値が ​`null`​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。 - `default`​ キーワードを使用する。 - `if-else`​ または ​`else-if`​ ステートメントでデフォルトを設定する。 - パターンを照合するときに ​`else`​ を使用する。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キーワード-default-を使用したデフォルト値設定の例)キーワード default を使用したデフォルト値設定の例 `id`​ 項目と ​`name`​ 項目を含む JSON 入力を想定し、変換を行うアプリケーションについて考えます。 これらの項目が存在しないか、値が ​`null`​ である場合のデフォルト値を設定できます。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { "userId": payload.id default "0000", "userName": payload.name default "Undefined" } ``` このアプリケーションが ​`id`​ 項目と ​`name`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`id`​ 項目が ​`userId`​ に照合され、​`name`​ 項目が ​`userName`​ に照合されます。 入力 JSON ペイロード: ```json { "id": "123", "name": "Max the Mule" } ``` 出力 JSON: ```json { "userId": "123", "userName": "Max the Mule" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userId`​ 項目と ​`userName`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json { "id": null } ``` 出力 JSON: ```json { "userId": "0000", "userName": "Undefined" } ``` ## [](#ex03)if-else と else-if ステートメントを使用したデフォルト値設定の例 デフォルト値を設定する別の方法は、​[if-else](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control#control_flow_if_else)​ と ​[else-if](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control#control_flow_else_if)​ を使用するものです。 次の例では、JSON 入力メッセージの ​`userLocation`​ が存在しない場合やその値が ​`null`​ である場合にデフォルト値として ​`United States`​ を設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- if (payload.location != null) { "userLocation" : payload.location } else { "userLocation" : "United States" } ``` このアプリケーションが ​`location`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`location`​ 項目が ​`userLocation`​ に照合されます。 入力 JSON ペイロード: ```json { "location": "Argentina" } ``` 出力 JSON: ```json { "userLocation": "Argentina" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userLocation`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json {} ``` 出力 JSON: ```json { "userLocation": "United States" } ``` ## [](#ex05)照合パターンを使用したデフォルト値設定の例 [パターンを照合するスクリプト](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-pattern-matching)​の場合、DataWeave の ​`case`​ ステートメントは ​`else`​ 式で終了します。これは、先行するすべての ​`case`​ 式で ​`false`​ が返された場合に返されるデフォルトとして機能します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = "someString" output application/json --- myVar match { case myVarOne if (myVar == "some") -> ("some" ++ "is myVar") case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar") else -> myVar ++ " is myVar" } ``` 出力 JSON: ```json "someString is myVar" ``` # DataWeave でのデフォルト値の設定 ペイロード値がない場合やその値が ​`null`​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。 - `default`​ キーワードを使用する。 - `if-else`​ または ​`else-if`​ ステートメントでデフォルトを設定する。 - パターンを照合するときに ​`else`​ を使用する。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キーワード-default-を使用したデフォルト値設定の例)キーワード default を使用したデフォルト値設定の例 `id`​ 項目と ​`name`​ 項目を含む JSON 入力を想定し、変換を行うアプリケーションについて考えます。 これらの項目が存在しないか、値が ​`null`​ である場合のデフォルト値を設定できます。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { "userId": payload.id default "0000", "userName": payload.name default "Undefined" } ``` このアプリケーションが ​`id`​ 項目と ​`name`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`id`​ 項目が ​`userId`​ に照合され、​`name`​ 項目が ​`userName`​ に照合されます。 入力 JSON ペイロード: ```json { "id": "123", "name": "Max the Mule" } ``` 出力 JSON: ```json { "userId": "123", "userName": "Max the Mule" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userId`​ 項目と ​`userName`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json { "id": null } ``` 出力 JSON: ```json { "userId": "0000", "userName": "Undefined" } ``` ## [](#ex03)if-else と else-if ステートメントを使用したデフォルト値設定の例 デフォルト値を設定する別の方法は、​[if-else](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control#control_flow_if_else)​ と ​[else-if](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control#control_flow_else_if)​ を使用するものです。 次の例では、JSON 入力メッセージの ​`userLocation`​ が存在しない場合やその値が ​`null`​ である場合にデフォルト値として ​`United States`​ を設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- if (payload.location != null) { "userLocation" : payload.location } else { "userLocation" : "United States" } ``` このアプリケーションが ​`location`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`location`​ 項目が ​`userLocation`​ に照合されます。 入力 JSON ペイロード: ```json { "location": "Argentina" } ``` 出力 JSON: ```json { "userLocation": "Argentina" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userLocation`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json {} ``` 出力 JSON: ```json { "userLocation": "United States" } ``` ## [](#ex05)照合パターンを使用したデフォルト値設定の例 [パターンを照合するスクリプト](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-pattern-matching)​の場合、DataWeave の ​`case`​ ステートメントは ​`else`​ 式で終了します。これは、先行するすべての ​`case`​ 式で ​`false`​ が返された場合に返されるデフォルトとして機能します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = "someString" output application/json --- myVar match { case myVarOne if (myVar == "some") -> ("some" ++ "is myVar") case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar") else -> myVar ++ " is myVar" } ``` 出力 JSON: ```json "someString is myVar" ``` # DataWeave でのデフォルト値の設定 ペイロード値がない場合やその値が ​`null`​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。 - `default`​ キーワードを使用する。 - `if-else`​ または ​`else-if`​ ステートメントでデフォルトを設定する。 - パターンを照合するときに ​`else`​ を使用する。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キーワード-default-を使用したデフォルト値設定の例)キーワード default を使用したデフォルト値設定の例 `id`​ 項目と ​`name`​ 項目を含む JSON 入力を想定し、変換を行うアプリケーションについて考えます。 これらの項目が存在しないか、値が ​`null`​ である場合のデフォルト値を設定できます。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { "userId": payload.id default "0000", "userName": payload.name default "Undefined" } ``` このアプリケーションが ​`id`​ 項目と ​`name`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`id`​ 項目が ​`userId`​ に照合され、​`name`​ 項目が ​`userName`​ に照合されます。 入力 JSON ペイロード: ```json { "id": "123", "name": "Max the Mule" } ``` 出力 JSON: ```json { "userId": "123", "userName": "Max the Mule" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userId`​ 項目と ​`userName`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json { "id": null } ``` 出力 JSON: ```json { "userId": "0000", "userName": "Undefined" } ``` ## [](#ex03)if-else と else-if ステートメントを使用したデフォルト値設定の例 デフォルト値を設定する別の方法は、​[if-else](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control#control_flow_if_else)​ と ​[else-if](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control#control_flow_else_if)​ を使用するものです。 次の例では、JSON 入力メッセージの ​`userLocation`​ が存在しない場合やその値が ​`null`​ である場合にデフォルト値として ​`United States`​ を設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- if (payload.location != null) { "userLocation" : payload.location } else { "userLocation" : "United States" } ``` このアプリケーションが ​`location`​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって ​`location`​ 項目が ​`userLocation`​ に照合されます。 入力 JSON ペイロード: ```json { "location": "Argentina" } ``` 出力 JSON: ```json { "userLocation": "Argentina" } ``` ただし、アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​`null`​ である場合は、変換では ​`userLocation`​ 項目に設定されたデフォルト値が使用されます。 入力 JSON ペイロード: ```json {} ``` 出力 JSON: ```json { "userLocation": "United States" } ``` ## [](#ex05)照合パターンを使用したデフォルト値設定の例 [パターンを照合するスクリプト](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-pattern-matching)​の場合、DataWeave の ​`case`​ ステートメントは ​`else`​ 式で終了します。これは、先行するすべての ​`case`​ 式で ​`false`​ が返された場合に返されるデフォルトとして機能します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = "someString" output application/json --- myVar match { case myVarOne if (myVar == "some") -> ("some" ++ "is myVar") case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar") else -> myVar ++ " is myVar" } ``` 出力 JSON: ```json "someString is myVar" ``` # DataWeave での優先順位 DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 ## [](#コンパイルの順序)コンパイルの順序 次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル 演算子または関数

1

  • using​: DataWeave スクリプトでローカル変数を初期化するために使用。

  • このレベルの DataWeave 単項演算子:

    • .^​: スキーマセレクター。

    • .#​: 名前空間セレクター。

    • ..​: 子孫セレクター。

    • not​: 否定の論理演算子。

    • .@​: 全属性セレクター。オブジェクトの配列 ​{ "attr1": "foo", "attr2": "bar" }​ 内で入力ペイロード ​<root> <a attr1="foo" attr2="bar" /></root>​ の属性と値を返す式 ​payload.root.a.@​ を使用する場合などで使用。

2

  • as​: 型強制に使用。

3

  • *​: 乗算。

  • /​: 除算。

4

  • +​: 加算。

  • -​: 減算。

  • >>​: データを先頭に追加。

  • <<​: データを末尾に付加。

5

  • >​: 以上。

  • =​: 等しい。

  • <​: 以下。

  • <​: より小さい

  • >​: より大きい。

  • is​: 型を比較。​指定した XML 属性の削除​などで使用。

6

  • !=​: 等しくない。

  • ~=​: 含む。

  • ==​: 値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

7

  • and​: and​ 論理演算子。

8

  • or​: or​ 論理演算子。

9

  • default​: デフォルト値の設定に使用。

  • case​ と ​else​: パターン照合に使用。

  • このレベルの DataWeave 関数:

    • matches​

    • match​

    • map​

    • mapObject​

    • groupBy​

    • filter​

  • このレベルの DataWeave バイナリセレクター:

    • .@keyName​ と ​.*@​: DataWeave バイナリ属性セレクター。

    • .*​: 複数値セレクター。

    • .^​: メタデータセレクター。

    • .&​: キー/値ペアセレクター

    • [?()]​: 絞り込みセレクター

  • .keyName​: 値セレクター。

  • [<index> to <index>]​: 範囲セレクター。

10

  • if else​: DataWeave でのフロー制御に使用する条件式。

## [](#チェーニングされた関数コールの順序)チェーニングされた関数コールの順序 複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。 たとえば、次のスクリプトは、変数 ​`flights`​ によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の ​`price`​ 値をすべて受け入れる配列を返す ​`filter`​ をコールします。次に、入力内のオブジェクトを ​`price`​ 値が低い順に並び替えた配列を返す ​`orderBy`​ をコールします。最後に、入力オブジェクト配列を ​`toAirport`​ 値のアルファベット順にグループ化する ​`groupBy`​ をコールします。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- flights filter $.price < 500 orderBy $.price groupBy $.toAirport ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } DataWeave 式に括弧 ​`(`​ および ​`)`​ を挿入することで、評価の順序を指定できます。次の例は、前の例と同じ出力を返します。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- ( ( ( flights filter $.price < 500 ) orderBy $.price ) groupBy $.toAirport ) ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } 関数コールの順序は重要です。たとえば、順序を変更した式 ​`flights groupBy $.toAirport filter $.price < 500 orderBy $.price`​ は、エラーを返します。これは、​`groupBy`​ はオブジェクトを返し、​`filter`​ は配列を想定しているためです。結果のエラーは ​`Expecting Type: Array>T<, but got: {String: Array<{|toA…​ airline: String|}>}`​ となります。 ## [](#関連情報)関連情報 - [コア (dw::Core) 関数](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core) - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables) - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control) - [DataWeave のパターンマッチング](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-pattern-matching) - [DataWeave を使用した型の強制](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types-coercion) # DataWeave での優先順位 DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#コンパイルの順序)コンパイルの順序 次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル 演算子または関数

1

  • using​: DataWeave スクリプトでローカル変数を初期化するために使用。

  • このレベルの DataWeave 単項演算子:

    • .^​: スキーマセレクター。

    • .#​: 名前空間セレクター。

    • ..​: 子孫セレクター。

    • not​: 否定の論理演算子。

    • .@​: 全属性セレクター。オブジェクトの配列 ​{ "attr1": "foo", "attr2": "bar" }​ 内で入力ペイロード ​<root> <a attr1="foo" attr2="bar" /></root>​ の属性と値を返す式 ​payload.root.a.@​ を使用する場合などで使用。

2

  • as​: 型強制に使用。

3

  • *​: 乗算。

  • /​: 除算。

4

  • +​: 加算。

  • -​: 減算。

  • >>​: データを先頭に追加。

  • <<​: データを末尾に付加。

5

  • >​: 以上。

  • =​: 等しい。

  • <​: 以下。

  • <​: より小さい

  • >​: より大きい。

  • is​: 型を比較。​指定した XML 属性の削除​などで使用。

6

  • !=​: 等しくない。

  • ~=​: 含む。

  • ==​: 値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

7

  • and​: and​ 論理演算子。

8

  • or​: or​ 論理演算子。

9

  • default​: デフォルト値の設定に使用。

  • case​ と ​else​: パターン照合に使用。

  • このレベルの DataWeave 関数:

    • matches​

    • match​

    • map​

    • mapObject​

    • groupBy​

    • filter​

  • このレベルの DataWeave バイナリセレクター:

    • .@keyName​ と ​.*@​: DataWeave バイナリ属性セレクター。

    • .*​: 複数値セレクター。

    • .^​: メタデータセレクター。

    • .&​: キー/値ペアセレクター

    • [?()]​: 絞り込みセレクター

  • .keyName​: 値セレクター。

  • [<index> to <index>]​: 範囲セレクター。

10

  • if else​: DataWeave でのフロー制御に使用する条件式。

## [](#チェーニングされた関数コールの順序)チェーニングされた関数コールの順序 複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。 たとえば、次のスクリプトは、変数 ​`flights`​ によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の ​`price`​ 値をすべて受け入れる配列を返す ​`filter`​ をコールします。次に、入力内のオブジェクトを ​`price`​ 値が低い順に並び替えた配列を返す ​`orderBy`​ をコールします。最後に、入力オブジェクト配列を ​`toAirport`​ 値のアルファベット順にグループ化する ​`groupBy`​ をコールします。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- flights filter $.price < 500 orderBy $.price groupBy $.toAirport ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } DataWeave 式に括弧 ​`(`​ および ​`)`​ を挿入することで、評価の順序を指定できます。次の例は、前の例と同じ出力を返します。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- ( ( ( flights filter $.price < 500 ) orderBy $.price ) groupBy $.toAirport ) ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } 関数コールの順序は重要です。たとえば、順序を変更した式 ​`flights groupBy $.toAirport filter $.price < 500 orderBy $.price`​ は、エラーを返します。これは、​`groupBy`​ はオブジェクトを返し、​`filter`​ は配列を想定しているためです。結果のエラーは ​`Expecting Type: Array>T<, but got: {String: Array<{|toA…​ airline: String|}>}`​ となります。 ## [](#関連情報)関連情報 - [コア (dw::Core) 関数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core) - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables) - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control) - [DataWeave のパターンマッチング](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-pattern-matching) - [DataWeave を使用した型の強制](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types-coercion) # DataWeave での優先順位 DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#コンパイルの順序)コンパイルの順序 次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル 演算子または関数

1

  • using​: DataWeave スクリプトでローカル変数を初期化するために使用。

  • このレベルの DataWeave 単項演算子:

    • .^​: スキーマセレクター。

    • .#​: 名前空間セレクター。

    • ..​: 子孫セレクター。

    • not​: 否定の論理演算子。

    • .@​: 全属性セレクター。オブジェクトの配列 ​{ "attr1": "foo", "attr2": "bar" }​ 内で入力ペイロード ​<root> <a attr1="foo" attr2="bar" /></root>​ の属性と値を返す式 ​payload.root.a.@​ を使用する場合などで使用。

2

  • as​: 型強制に使用。

3

  • *​: 乗算。

  • /​: 除算。

4

  • +​: 加算。

  • -​: 減算。

  • >>​: データを先頭に追加。

  • <<​: データを末尾に付加。

5

  • >​: 以上。

  • =​: 等しい。

  • <​: 以下。

  • <​: より小さい

  • >​: より大きい。

  • is​: 型を比較。​指定した XML 属性の削除​などで使用。

6

  • !=​: 等しくない。

  • ~=​: 含む。

  • ==​: 値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

7

  • and​: and​ 論理演算子。

8

  • or​: or​ 論理演算子。

9

  • default​: デフォルト値の設定に使用。

  • case​ と ​else​: パターン一致に使用。

  • このレベルの DataWeave 関数:

    • matches​

    • match​

    • map​

    • mapObject​

    • groupBy​

    • filter​

  • このレベルの DataWeave バイナリセレクター:

    • .@keyName​ と ​.*@​: DataWeave バイナリ属性セレクター。

    • .*​: 複数値セレクター。

    • .^​: メタデータセレクター。

    • .&​: キー/値ペアセレクター

    • [?()]​: 絞り込みセレクター

  • .keyName​: 値セレクター。

  • [<index> to <index>]​: 範囲セレクター。

10

  • if else​: DataWeave でのフロー制御に使用する条件式。

## [](#チェーニングされた関数コールの順序)チェーニングされた関数コールの順序 複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。 たとえば、次のスクリプトは、変数 ​`flights`​ によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の ​`price`​ 値をすべて受け入れる配列を返す ​`filter`​ をコールします。次に、入力内のオブジェクトを ​`price`​ 値が低い順に並び替えた配列を返す ​`orderBy`​ をコールします。最後に、入力オブジェクト配列を ​`toAirport`​ 値のアルファベット順にグループ化する ​`groupBy`​ をコールします。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- flights filter $.price < 500 orderBy $.price groupBy $.toAirport ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } DataWeave 式に括弧 ​`(`​ および ​`)`​ を挿入することで、評価の順序を指定できます。次の例は、前の例と同じ出力を返します。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- ( ( ( flights filter $.price < 500 ) orderBy $.price ) groupBy $.toAirport ) ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } 関数コールの順序は重要です。たとえば、順序を変更した式 ​`flights groupBy $.toAirport filter $.price < 500 orderBy $.price`​ は、エラーを返します。これは、​`groupBy`​ はオブジェクトを返し、​`filter`​ は配列を想定しているためです。結果のエラーは ​`Expecting Type: Array>T<, but got: {String: Array<{|toA…​ airline: String|}>}`​ となります。 ## [](#関連情報)関連情報 - [コア (dw::Core) 関数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core) - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables) - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-pattern-matching) - [DataWeave を使用した型の強制](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types-coercion) # DataWeave での優先順位 DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#コンパイルの順序)コンパイルの順序 次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル 演算子または関数

1

  • using​: DataWeave スクリプトでローカル変数を初期化するために使用。

  • このレベルの DataWeave 単項演算子:

    • .^​: スキーマセレクター。

    • .#​: 名前空間セレクター。

    • ..​: 子孫セレクター。

    • not​: 否定の論理演算子。

    • .@​: 全属性セレクター。オブジェクトの配列 ​{ "attr1": "foo", "attr2": "bar" }​ 内で入力ペイロード ​<root> <a attr1="foo" attr2="bar" /></root>​ の属性と値を返す式 ​payload.root.a.@​ を使用する場合などで使用。

2

  • as​: 型強制に使用。

3

  • *​: 乗算。

  • /​: 除算。

4

  • +​: 加算。

  • -​: 減算。

  • >>​: データを先頭に追加。

  • <<​: データを末尾に付加。

5

  • >​: 以上。

  • =​: 等しい。

  • <​: 以下。

  • <​: より小さい

  • >​: より大きい。

  • is​: 型を比較。​指定した XML 属性の削除​などで使用。

6

  • !=​: 等しくない。

  • ~=​: 含む。

  • ==​: 値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

7

  • and​: and​ 論理演算子。

8

  • or​: or​ 論理演算子。

9

  • default​: デフォルト値の設定に使用。

  • case​ と ​else​: パターン一致に使用。

  • このレベルの DataWeave 関数:

    • matches​

    • match​

    • map​

    • mapObject​

    • groupBy​

    • filter​

  • このレベルの DataWeave バイナリセレクター:

    • .@keyName​ と ​.*@​: DataWeave バイナリ属性セレクター。

    • .*​: 複数値セレクター。

    • .^​: メタデータセレクター。

    • .&​: キー/値ペアセレクター

    • [?()]​: 絞り込みセレクター

  • .keyName​: 値セレクター。

  • [<index> to <index>]​: 範囲セレクター。

10

  • if else​: DataWeave でのフロー制御に使用する条件式。

## [](#チェーニングされた関数コールの順序)チェーニングされた関数コールの順序 複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。 たとえば、次のスクリプトは、変数 ​`flights`​ によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の ​`price`​ 値をすべて受け入れる配列を返す ​`filter`​ をコールします。次に、入力内のオブジェクトを ​`price`​ 値が低い順に並び替えた配列を返す ​`orderBy`​ をコールします。最後に、入力オブジェクト配列を ​`toAirport`​ 値のアルファベット順にグループ化する ​`groupBy`​ をコールします。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- flights filter $.price < 500 orderBy $.price groupBy $.toAirport ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } DataWeave 式に括弧 ​`(`​ および ​`)`​ を挿入することで、評価の順序を指定できます。次の例は、前の例と同じ出力を返します。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- ( ( ( flights filter $.price < 500 ) orderBy $.price ) groupBy $.toAirport ) ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } 関数コールの順序は重要です。たとえば、順序を変更した式 ​`flights groupBy $.toAirport filter $.price < 500 orderBy $.price`​ は、エラーを返します。これは、​`groupBy`​ はオブジェクトを返し、​`filter`​ は配列を想定しているためです。結果のエラーは ​`Expecting Type: Array>T<, but got: {String: Array<{|toA…​ airline: String|}>}`​ となります。 ## [](#関連情報)関連情報 - [コア (dw::Core) 関数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core) - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables) - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-pattern-matching) - [DataWeave を使用した型の強制](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types-coercion) # DataWeave での優先順位 DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#コンパイルの順序)コンパイルの順序 次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル 演算子または関数

1

  • using​: DataWeave スクリプトでローカル変数を初期化するために使用。

  • このレベルの DataWeave 単項演算子:

    • .^​: スキーマセレクター。

    • .#​: 名前空間セレクター。

    • ..​: 子孫セレクター。

    • not​: 否定の論理演算子。

    • .@​: 全属性セレクター。オブジェクトの配列 ​{ "attr1": "foo", "attr2": "bar" }​ 内で入力ペイロード ​<root> <a attr1="foo" attr2="bar" /></root>​ の属性と値を返す式 ​payload.root.a.@​ を使用する場合などで使用。

2

  • as​: 型強制に使用。

3

  • *​: 乗算。

  • /​: 除算。

4

  • +​: 加算。

  • -​: 減算。

  • >>​: データを先頭に追加。

  • <<​: データを末尾に付加。

5

  • >​: 以上。

  • =​: 等しい。

  • <​: 以下。

  • <​: より小さい

  • >​: より大きい。

  • is​: 型を比較。​指定した XML 属性の削除​などで使用。

6

  • !=​: 等しくない。

  • ~=​: 含む。

  • ==​: 値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

7

  • and​: and​ 論理演算子。

8

  • or​: or​ 論理演算子。

9

  • default​: デフォルト値の設定に使用。

  • case​ と ​else​: パターン一致に使用。

  • このレベルの DataWeave 関数:

    • matches​

    • match​

    • map​

    • mapObject​

    • groupBy​

    • filter​

  • このレベルの DataWeave バイナリセレクター:

    • .@keyName​ と ​.*@​: DataWeave バイナリ属性セレクター。

    • .*​: 複数値セレクター。

    • .^​: メタデータセレクター。

    • .&​: キー/値ペアセレクター

    • [?()]​: 絞り込みセレクター

  • .keyName​: 値セレクター。

  • [<index> to <index>]​: 範囲セレクター。

10

  • if else​: DataWeave でのフロー制御に使用する条件式。

## [](#チェーニングされた関数コールの順序)チェーニングされた関数コールの順序 複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。 たとえば、次のスクリプトは、変数 ​`flights`​ によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の ​`price`​ 値をすべて受け入れる配列を返す ​`filter`​ をコールします。次に、入力内のオブジェクトを ​`price`​ 値が低い順に並び替えた配列を返す ​`orderBy`​ をコールします。最後に、入力オブジェクト配列を ​`toAirport`​ 値のアルファベット順にグループ化する ​`groupBy`​ をコールします。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- flights filter $.price < 500 orderBy $.price groupBy $.toAirport ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } DataWeave 式に括弧 ​`(`​ および ​`)`​ を挿入することで、評価の順序を指定できます。次の例は、前の例と同じ出力を返します。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- ( ( ( flights filter $.price < 500 ) orderBy $.price ) groupBy $.toAirport ) ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } 関数コールの順序は重要です。たとえば、順序を変更した式 ​`flights groupBy $.toAirport filter $.price < 500 orderBy $.price`​ は、エラーを返します。これは、​`groupBy`​ はオブジェクトを返し、​`filter`​ は配列を想定しているためです。結果のエラーは ​`Expecting Type: Array>T<, but got: {String: Array<{|toA…​ airline: String|}>}`​ となります。 ## [](#関連情報)関連情報 - [コア (dw::Core) 関数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core) - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables) - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-pattern-matching) - [DataWeave を使用した型の強制](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types-coercion) # DataWeave での優先順位 DataWeave 式は特定の順序でコンパイルされます。1 つのレベルのコンパイル結果をより高いレベルの式の入力として使用することはできますが、より低いレベルの式の入力として使用することはできません。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#コンパイルの順序)コンパイルの順序 次の表では、演算子と関数を、最初にコンパイルされるもの (1) から最後にコンパイルされるもの (10) への順に並べています。
レベル 演算子または関数

1

  • using​: DataWeave スクリプトでローカル変数を初期化するために使用。

  • このレベルの DataWeave 単項演算子:

    • .^​: スキーマセレクター。

    • .#​: 名前空間セレクター。

    • ..​: 子孫セレクター。

    • not​: 否定の論理演算子。

    • .@​: 全属性セレクター。オブジェクトの配列 ​{ "attr1": "foo", "attr2": "bar" }​ 内で入力ペイロード ​<root> <a attr1="foo" attr2="bar" /></root>​ の属性と値を返す式 ​payload.root.a.@​ を使用する場合などで使用。

2

  • as​: 型強制に使用。

3

  • *​: 乗算。

  • /​: 除算。

4

  • +​: 加算。

  • -​: 減算。

  • >>​: データを先頭に追加。

  • <<​: データを末尾に付加。

5

  • >​: 以上。

  • =​: 等しい。

  • <​: 以下。

  • <​: より小さい。

  • >​: より大きい。

  • is​: 型を比較。​指定した XML 属性の削除​などで使用。

6

  • !=​: 等しくない。

  • ~=​: 含む。

  • ==​: 値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

7

  • and​: and​ 論理演算子。

8

  • or​: or​ 論理演算子。

9

  • default​: デフォルト値の設定に使用。

  • case​ と ​else​: パターン一致に使用。

  • このレベルの DataWeave 関数:

    • matches​

    • match​

    • map​

    • mapObject​

    • groupBy​

    • filter​

  • このレベルの DataWeave バイナリセレクター:

    • .@keyName​ と ​.*@​: DataWeave バイナリ属性セレクター。

    • .*​: 複数値セレクター。

    • .^​: メタデータセレクター。

    • .&​: キー/値ペアセレクター。

    • [?()]​: 絞り込みセレクター。

  • .keyName​: 値セレクター。

  • [<index> to <index>]​: 範囲セレクター。

10

  • if else​: DataWeave でのフロー制御に使用する条件式。

## [](#チェーニングされた関数コールの順序)チェーニングされた関数コールの順序 複数の関数がチェーニングによって 1 つにまとめられると、それらの関数はチェーンで指定された順序で最初の関数から最後の関数まで処理されます。 たとえば、次のスクリプトは、変数 ​`flights`​ によって定義された入力オブジェクトの配列に対して動作します。スクリプトは最初に 500 未満の ​`price`​ 値をすべて受け入れる配列を返す ​`filter`​ をコールします。次に、入力内のオブジェクトを ​`price`​ 値が低い順に並び替えた配列を返す ​`orderBy`​ をコールします。最後に、入力オブジェクト配列を ​`toAirport`​ 値のアルファベット順にグループ化する ​`groupBy`​ をコールします。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- flights filter $.price < 500 orderBy $.price groupBy $.toAirport ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } DataWeave 式に括弧 ​`(`​ および ​`)`​ を挿入することで、評価の順序を指定できます。次の例は、前の例と同じ出力を返します。 DataWeave スクリプト: ```DataWeave %dw 2.0 output application/json var flights = [ { "toAirport": "SFO", "price": 550, "airline": "American" }, { "toAirport": "MUA", "price": 200, "airline": "American" }, { "toAirport": "SFO", "price": 300, "airline": "American" }, { "toAirport": "CLE", "price": 600, "airline": "American" }, { "toAirport": "CLE", "price": 190, "airline": "American" }, { "toAirport": "SFO", "price": 400, "airline": "American" } ] --- ( ( ( flights filter $.price < 500 ) orderBy $.price ) groupBy $.toAirport ) ``` 結果は、キー-値ペアのコレクションを含むオブジェクトになります。 出力: { "CLE": \[ { "toAirport": "CLE", "price": 190, "airline": "American" } \], "SFO": \[ { "toAirport": "SFO", "price": 300, "airline": "United" }, { "toAirport": "SFO", "price": 400, "airline": "American" } \], "MUA": \[ { "toAirport": "MUA", "price": 200, "airline": "American" } \] } 関数コールの順序は重要です。たとえば、順序を変更した式 ​`flights groupBy $.toAirport filter $.price < 500 orderBy $.price`​ は、エラーを返します。これは、​`groupBy`​ はオブジェクトを返し、​`filter`​ は配列を想定しているためです。結果のエラーは ​`Expecting Type: Array>T<, but got: {String: Array<{|toA…​ airline: String|}>}`​ となります。 ## [](#関連情報)関連情報 - [コア (dw::Core) 関数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core) - [DataWeave の演算子](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables) - [DataWeave のフローコントロール](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control) - [DataWeave のパターン一致](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-pattern-matching) - [DataWeave を使用した型の強制](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types-coercion) # DataWeave での正規表現の使用 いくつかの DataWeave 関数は、引数として正規表現を受け入れます。これを使用して、一致を返したりチェックしたりできます。関数と変数を含む DataWeave 式を組み込んだ正規表現を作成することもできます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 ## [](#ex01)文字列から一致を返す この例では、いくつかの DataWeave 関数で正規表現を使用して、入力変数「mycompany.com」との一致を返します。 - `contains`​ は、入力文字列の一部に一致する正規表現に基づいて ​`true`​ を返します。 - `find`​ は、入力文字列内の一致する場所を指定するインデックスの配列を返します。この関数は、入力文字列を文字列配列として扱います。 - `match`​ は、正規表現に一致するサブ文字列の配列を返します。 - `matches`​ は、正規表現が入力文字列と完全に一致するため ​`true`​ を返します。 - `replace`​ は、正規表現 ​`\..*m`​ に基づいて、入力文字列の ​`.com`​ を ​`.net`​ に変更する URL を返します。 - `scan`​ は、正規表現が一致するカンマ区切りのサブ文字列のサブ配列を返します。 - `splitBy`​ は、入力の ​`.`​ に基づいて入力文字列をサブ文字列の配列に分割します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myString = "mycompany.com" output application/json --- { "contains" : myString contains(/c.m/), "find" : myString find(/[m|n].|m$/), "match" : myString match(/([a-z]*).[a-z]*/), "matches" : myString matches(/([a-z]*).[a-z]*/), "replaceWith" : myString replace /\..*m/ with ".net", "scan" : myString scan(/([a-z]*).(com)/), "splitBy" : myString splitBy(/[.\/]/) } ``` 出力 JSON: ```json { "contains": true, "find": [ [ 0 ], [ 4 ], [ 7 ], [ 12 ] ], "match": [ "mycompany.com", "mycompany" ], "matches": true, "replaceWith": "mycompany.net", "scan": [ [ "mycompany.com", "mycompany", "com" ] ], "splitBy": [ "mycompany", "com" ] } ``` 関数のドキュメントについては、以下を参照してください。 - [contains](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-contains) - [find](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-find) - [match](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-match) - [matches](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-matches) - [replace](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-replace) - [scan](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-scan) - [splitby](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-splitby) ## [](#ex02)正規表現での DataWeave 変数と関数の使用 この例は、DataWeave の連結関数 (​`++`​) を使用して正規表現を作成し、DataWeave 変数を正規表現に組み込みます。 この正規表現は「somebiz」を照合します。この例では、​`replace`​ と ​`with`​ を使用して「somebiz」を「abcd」に置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myCompany = { "name" : "biz" } var myInputA = "somebiz-98765" output application/json --- { example: myInputA replace (("(^s.*e)" ++ myCompany.name) as Regex) with ("abcd") } ``` 出力 JSON: ```json { "example": "abcd-98765" } ``` ## [](#関連情報)関連情報 - [Regex (正規表現) (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types#dw_type_regex) - [Core 型 (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # DataWeave での正規表現の使用 いくつかの DataWeave 関数は、引数として正規表現を受け入れます。これを使用して、一致を返したりチェックしたりできます。関数と変数を含む DataWeave 式を組み込んだ正規表現を作成することもできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)文字列から一致を返す この例では、いくつかの DataWeave 関数で正規表現を使用して、入力変数「mycompany.com」との一致を返します。 - `contains`​ は、入力文字列の一部に一致する正規表現に基づいて ​`true`​ を返します。 - `find`​ は、入力文字列内の一致する場所を指定するインデックスの配列を返します。この関数は、入力文字列を文字列配列として扱います。 - `match`​ は、正規表現に一致するサブ文字列の配列を返します。 - `matches`​ は、正規表現が入力文字列と完全に一致するため ​`true`​ を返します。 - `replace`​ は、正規表現 ​`\..*m`​ に基づいて、入力文字列の ​`.com`​ を ​`.net`​ に変更する URL を返します。 - `scan`​ は、正規表現が一致するカンマ区切りのサブ文字列のサブ配列を返します。 - `splitBy`​ は、入力の ​`.`​ に基づいて入力文字列をサブ文字列の配列に分割します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myString = "mycompany.com" output application/json --- { "contains" : myString contains(/c.m/), "find" : myString find(/[m|n].|m$/), "match" : myString match(/([a-z]*).[a-z]*/), "matches" : myString matches(/([a-z]*).[a-z]*/), "replaceWith" : myString replace /\..*m/ with ".net", "scan" : myString scan(/([a-z]*).(com)/), "splitBy" : myString splitBy(/[.\/]/) } ``` 出力 JSON: ```json { "contains": true, "find": [ [ 0 ], [ 4 ], [ 7 ], [ 12 ] ], "match": [ "mycompany.com", "mycompany" ], "matches": true, "replaceWith": "mycompany.net", "scan": [ [ "mycompany.com", "mycompany", "com" ] ], "splitBy": [ "mycompany", "com" ] } ``` 関数のドキュメントについては、以下を参照してください。 - [contains](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-contains) - [find](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-find) - [match](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-match) - [matches](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-matches) - [replace](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-replace) - [scan](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-scan) - [splitby](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-splitby) ## [](#ex02)正規表現での DataWeave 変数と関数の使用 この例は、DataWeave の連結関数 (​`++`​) を使用して正規表現を作成し、DataWeave 変数を正規表現に組み込みます。 この正規表現は「somebiz」を照合します。この例では、​`replace`​ と ​`with`​ を使用して「somebiz」を「abcd」に置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myCompany = { "name" : "biz" } var myInputA = "somebiz-98765" output application/json --- { example: myInputA replace (("(^s.*e)" ++ myCompany.name) as Regex) with ("abcd") } ``` 出力 JSON: ```json { "example": "abcd-98765" } ``` ## [](#関連情報)関連情報 - [Regex (正規表現) (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types#dw_type_regex) - [Core 型 (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # DataWeave での正規表現の使用 いくつかの DataWeave 関数は、引数として正規表現を受け入れます。これを使用して、一致を返したりチェックしたりできます。関数と変数を含む DataWeave 式を組み込んだ正規表現を作成することもできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)文字列から一致を返す この例では、いくつかの DataWeave 関数で正規表現を使用して、入力変数「mycompany.com」との一致を返します。 - `contains`​ は、入力文字列の一部に一致する正規表現に基づいて ​`true`​ を返します。 - `find`​ は、入力文字列内の一致する場所を指定するインデックスの配列を返します。この関数は、入力文字列を文字列配列として扱います。 - `match`​ は、正規表現に一致するサブ文字列の配列を返します。 - `matches`​ は、正規表現が入力文字列と完全に一致するため ​`true`​ を返します。 - `replace`​ は、正規表現 ​`\..*m`​ に基づいて、入力文字列の ​`.com`​ を ​`.net`​ に変更する URL を返します。 - `scan`​ は、正規表現が一致するカンマ区切りのサブ文字列のサブ配列を返します。 - `splitBy`​ は、入力の ​`.`​ に基づいて入力文字列をサブ文字列の配列に分割します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myString = "mycompany.com" output application/json --- { "contains" : myString contains(/c.m/), "find" : myString find(/[m|n].|m$/), "match" : myString match(/([a-z]*).[a-z]*/), "matches" : myString matches(/([a-z]*).[a-z]*/), "replaceWith" : myString replace /\..*m/ with ".net", "scan" : myString scan(/([a-z]*).(com)/), "splitBy" : myString splitBy(/[.\/]/) } ``` 出力 JSON: ```json { "contains": true, "find": [ [ 0 ], [ 4 ], [ 7 ], [ 12 ] ], "match": [ "mycompany.com", "mycompany" ], "matches": true, "replaceWith": "mycompany.net", "scan": [ [ "mycompany.com", "mycompany", "com" ] ], "splitBy": [ "mycompany", "com" ] } ``` 関数のドキュメントについては、以下を参照してください。 - [contains](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-contains) - [find](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-find) - [match](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-match) - [matches](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-matches) - [replace](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-replace) - [scan](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-scan) - [splitby](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-splitby) ## [](#ex02)正規表現での DataWeave 変数と関数の使用 この例は、DataWeave の連結関数 (​`++`​) を使用して正規表現を作成し、DataWeave 変数を正規表現に組み込みます。 この正規表現は「somebiz」を照合します。この例では、​`replace`​ と ​`with`​ を使用して「somebiz」を「abcd」に置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myCompany = { "name" : "biz" } var myInputA = "somebiz-98765" output application/json --- { example: myInputA replace (("(^s.*e)" ++ myCompany.name) as Regex) with ("abcd") } ``` 出力 JSON: ```json { "example": "abcd-98765" } ``` ## [](#関連情報)関連情報 - [Regex (正規表現) (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types#dw_type_regex) - [Core 型 (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # DataWeave での正規表現の使用 いくつかの DataWeave 関数は、引数として正規表現を受け入れます。これを使用して、一致を返したりチェックしたりできます。関数と変数を含む DataWeave 式を組み込んだ正規表現を作成することもできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)文字列から一致を返す この例では、いくつかの DataWeave 関数で正規表現を使用して、入力変数「mycompany.com」との一致を返します。 - `contains`​ は、入力文字列の一部に一致する正規表現に基づいて ​`true`​ を返します。 - `find`​ は、入力文字列内の一致する場所を指定するインデックスの配列を返します。この関数は、入力文字列を文字列配列として扱います。 - `match`​ は、正規表現に一致するサブ文字列の配列を返します。 - `matches`​ は、正規表現が入力文字列と完全に一致するため ​`true`​ を返します。 - `replace`​ は、正規表現 ​`\..*m`​ に基づいて、入力文字列の ​`.com`​ を ​`.net`​ に変更する URL を返します。 - `scan`​ は、正規表現が一致するカンマ区切りのサブ文字列のサブ配列を返します。 - `splitBy`​ は、入力の ​`.`​ に基づいて入力文字列をサブ文字列の配列に分割します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myString = "mycompany.com" output application/json --- { "contains" : myString contains(/c.m/), "find" : myString find(/[m|n].|m$/), "match" : myString match(/([a-z]*).[a-z]*/), "matches" : myString matches(/([a-z]*).[a-z]*/), "replaceWith" : myString replace /\..*m/ with ".net", "scan" : myString scan(/([a-z]*).(com)/), "splitBy" : myString splitBy(/[.\/]/) } ``` 出力 JSON: ```json { "contains": true, "find": [ [ 0 ], [ 4 ], [ 7 ], [ 12 ] ], "match": [ "mycompany.com", "mycompany" ], "matches": true, "replaceWith": "mycompany.net", "scan": [ [ "mycompany.com", "mycompany", "com" ] ], "splitBy": [ "mycompany", "com" ] } ``` 関数のドキュメントについては、以下を参照してください。 - [contains](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-contains) - [find](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-find) - [match](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-match) - [matches](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-matches) - [replace](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-replace) - [scan](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-scan) - [splitby](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-splitby) ## [](#ex02)正規表現での DataWeave 変数と関数の使用 この例は、DataWeave の連結関数 (​`++`​) を使用して正規表現を作成し、DataWeave 変数を正規表現に組み込みます。 この正規表現は「somebiz」を照合します。この例では、​`replace`​ と ​`with`​ を使用して「somebiz」を「abcd」に置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myCompany = { "name" : "biz" } var myInputA = "somebiz-98765" output application/json --- { example: myInputA replace (("(^s.*e)" ++ myCompany.name) as Regex) with ("abcd") } ``` 出力 JSON: ```json { "example": "abcd-98765" } ``` ## [](#関連情報)関連情報 - [Regex (正規表現) (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types#dw_type_regex) - [Core 型 (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # DataWeave での正規表現の使用 いくつかの DataWeave 関数は、引数として正規表現を受け入れます。これを使用して、一致を返したりチェックしたりできます。関数と変数を含む DataWeave 式を組み込んだ正規表現を作成することもできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)文字列から一致を返す この例では、いくつかの DataWeave 関数で正規表現を使用して、入力変数「mycompany.com」との一致を返します。 - `contains`​ は、入力文字列の一部に一致する正規表現に基づいて ​`true`​ を返します。 - `find`​ は、入力文字列内の一致する場所を指定するインデックスの配列を返します。この関数は、入力文字列を文字列配列として扱います。 - `match`​ は、正規表現に一致するサブ文字列の配列を返します。 - `matches`​ は、正規表現が入力文字列と完全に一致するため ​`true`​ を返します。 - `replace`​ は、正規表現 ​`\..*m`​ に基づいて、入力文字列の ​`.com`​ を ​`.net`​ に変更する URL を返します。 - `scan`​ は、正規表現が一致するカンマ区切りのサブ文字列のサブ配列を返します。 - `splitBy`​ は、入力の ​`.`​ に基づいて入力文字列をサブ文字列の配列に分割します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myString = "mycompany.com" output application/json --- { "contains" : myString contains(/c.m/), "find" : myString find(/[m|n].|m$/), "match" : myString match(/([a-z]*).[a-z]*/), "matches" : myString matches(/([a-z]*).[a-z]*/), "replaceWith" : myString replace /\..*m/ with ".net", "scan" : myString scan(/([a-z]*).(com)/), "splitBy" : myString splitBy(/[.\/]/) } ``` 出力 JSON: ```json { "contains": true, "find": [ [ 0 ], [ 4 ], [ 7 ], [ 12 ] ], "match": [ "mycompany.com", "mycompany" ], "matches": true, "replaceWith": "mycompany.net", "scan": [ [ "mycompany.com", "mycompany", "com" ] ], "splitBy": [ "mycompany", "com" ] } ``` 関数のドキュメントについては、以下を参照してください。 - [contains](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-contains) - [find](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-find) - [match](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-match) - [matches](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-matches) - [replace](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-replace) - [scan](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-scan) - [splitby](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-splitby) ## [](#ex02)正規表現での DataWeave 変数と関数の使用 この例は、DataWeave の連結関数 (​`++`​) を使用して正規表現を作成し、DataWeave 変数を正規表現に組み込みます。 この正規表現は「somebiz」を照合します。この例では、​`replace`​ と ​`with`​ を使用して「somebiz」を「abcd」に置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myCompany = { "name" : "biz" } var myInputA = "somebiz-98765" output application/json --- { example: myInputA replace (("(^s.*e)" ++ myCompany.name) as Regex) with ("abcd") } ``` 出力 JSON: ```json { "example": "abcd-98765" } ``` ## [](#関連情報)関連情報 - [Regex (正規表現) (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types#dw_type_regex) - [Core 型 (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # DataWeave での正規表現の使用 いくつかの DataWeave 関数は、引数として正規表現を受け入れます。これを使用して、一致を返したりチェックしたりできます。関数と変数を含む DataWeave 式を組み込んだ正規表現を作成することもできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#ex01)文字列から一致を返す この例では、いくつかの DataWeave 関数で正規表現を使用して、入力変数「mycompany.com」との一致を返します。 - `contains`​ は、入力文字列の一部に一致する正規表現に基づいて ​`true`​ を返します。 - `find`​ は、入力文字列内の一致する場所を指定するインデックスの配列を返します。この関数は、入力文字列を文字列配列として扱います。 - `match`​ は、正規表現に一致するサブ文字列の配列を返します。 - `matches`​ は、正規表現が入力文字列と完全に一致するため ​`true`​ を返します。 - `replace`​ は、正規表現 ​`\..*m`​ に基づいて、入力文字列の ​`.com`​ を ​`.net`​ に変更する URL を返します。 - `scan`​ は、正規表現が一致するカンマ区切りのサブ文字列のサブ配列を返します。 - `splitBy`​ は、入力の ​`.`​ に基づいて入力文字列をサブ文字列の配列に分割します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myString = "mycompany.com" output application/json --- { "contains" : myString contains(/c.m/), "find" : myString find(/[m|n].|m$/), "match" : myString match(/([a-z]*).[a-z]*/), "matches" : myString matches(/([a-z]*).[a-z]*/), "replaceWith" : myString replace /\..*m/ with ".net", "scan" : myString scan(/([a-z]*).(com)/), "splitBy" : myString splitBy(/[.\/]/) } ``` 出力 JSON: ```json { "contains": true, "find": [ [ 0 ], [ 4 ], [ 7 ], [ 12 ] ], "match": [ "mycompany.com", "mycompany" ], "matches": true, "replaceWith": "mycompany.net", "scan": [ [ "mycompany.com", "mycompany", "com" ] ], "splitBy": [ "mycompany", "com" ] } ``` 関数のドキュメントについては、以下を参照してください。 - [contains](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-contains) - [find](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-find) - [match](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-match) - [matches](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-matches) - [replace](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-replace) - [scan](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-scan) - [splitby](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-splitby) ## [](#ex02)正規表現での DataWeave 変数と関数の使用 この例は、DataWeave の連結関数 (​`++`​) を使用して正規表現を作成し、DataWeave 変数を正規表現に組み込みます。 この正規表現は「somebiz」を照合します。この例では、​`replace`​ と ​`with`​ を使用して「somebiz」を「abcd」に置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myCompany = { "name" : "biz" } var myInputA = "somebiz-98765" output application/json --- { example: myInputA replace (("(^s.*e)" ++ myCompany.name) as Regex) with ("abcd") } ``` 出力 JSON: ```json { "example": "abcd-98765" } ``` ## [](#関連情報)関連情報 - [Regex (正規表現) (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types#dw_type_regex) - [Core 型 (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # DataWeave での関数とラムダの操作 DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 `map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。 ## [](#関数の宣言および呼び出し)関数の宣言および呼び出し `fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。 関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。 各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#var-へのラムダの割り当て)Var へのラムダの割り当て `var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json var toUser = (user) -> { firstName: user.field1, lastName: user.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用 次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。 入力 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map((name) -> upper(name)) ``` 変換 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用 次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。 変換 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map upper($) ``` 出力 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats)​ [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction) # DataWeave での関数とラムダの操作 DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 `map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。 ## [](#関数の宣言および呼び出し)関数の宣言および呼び出し `fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。 関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。 各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#var-へのラムダの割り当て)Var へのラムダの割り当て `var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json var toUser = (user) -> { firstName: user.field1, lastName: user.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用 次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。 入力 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map((name) -> upper(name)) ``` 変換 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用 次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。 変換 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map upper($) ``` 出力 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats)​ [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction) # DataWeave での関数とラムダの操作 DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 `map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。 ## [](#関数の宣言および呼び出し)関数の宣言および呼び出し `fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。 関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。 各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#型パラメーターの指定)型パラメーターの指定 DataWeave 構文バージョン 2.5 以降、コールサイトで関数の型パラメーターを指定できます。 入力 ```json { "measures": [1,2,4,1,5,2,3,3] } ``` 変換 ```dataweave %dw 2.5 output application/json fun max(elems: Array): T = elems reduce ((candidate: T, currentMax = elems[0]) -> if (candidate > currentMax) candidate else currentMax) --- { max: max(measures) } ``` 出力 ```linenums { "max": 5 } ``` ## [](#var-へのラムダの割り当て)Var へのラムダの割り当て `var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json var toUser = (user) -> { firstName: user.field1, lastName: user.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用 次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。 入力 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map((name) -> upper(name)) ``` 変換 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用 次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。 変換 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map upper($) ``` 出力 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction) # DataWeave での関数とラムダの操作 DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 `map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。 ## [](#関数の宣言および呼び出し)関数の宣言および呼び出し `fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。 関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。 各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#型パラメーターの指定)型パラメーターの指定 DataWeave 構文バージョン 2.5 以降、コールサイトで関数の型パラメーターを指定できます。 入力 ```json { "measures": [1,2,4,1,5,2,3,3] } ``` 変換 ```dataweave %dw 2.5 output application/json fun max(elems: Array): T = elems reduce ((candidate: T, currentMax = elems[0]) -> if (candidate > currentMax) candidate else currentMax) --- { max: max(measures) } ``` 出力 ```linenums { "max": 5 } ``` ## [](#var-へのラムダの割り当て)Var へのラムダの割り当て `var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json var toUser = (user) -> { firstName: user.field1, lastName: user.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用 次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。 入力 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map((name) -> upper(name)) ``` 変換 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用 次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。 変換 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map upper($) ``` 出力 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction) # DataWeave での関数とラムダの操作 DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 `map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。 ## [](#関数の宣言および呼び出し)関数の宣言および呼び出し `fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。 関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。 各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#型パラメーターの指定)型パラメーターの指定 DataWeave 構文バージョン 2.5 以降、コールサイトで関数の型パラメーターを指定できます。 入力 ```json { "measures": [1,2,4,1,5,2,3,3] } ``` 変換 ```dataweave %dw 2.5 output application/json fun max(elems: Array): T = elems reduce ((candidate: T, currentMax = elems[0]) -> if (candidate > currentMax) candidate else currentMax) --- { max: max(measures) } ``` 出力 ```linenums { "max": 5 } ``` ## [](#var-へのラムダの割り当て)Var へのラムダの割り当て `var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json var toUser = (user) -> { firstName: user.field1, lastName: user.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用 次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。 入力 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map((name) -> upper(name)) ``` 変換 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用 次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。 変換 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map upper($) ``` 出力 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction) # DataWeave での関数とラムダの操作 DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 `map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。 ## [](#関数の宣言および呼び出し)関数の宣言および呼び出し `fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。 関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。 各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json fun toUser(obj) = { firstName: obj.field1, lastName: obj.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#型パラメーターの指定)型パラメーターの指定 DataWeave 構文バージョン 2.5 以降、コールサイトで関数の型パラメーターを指定できます。 入力 ```json { "measures": [1,2,4,1,5,2,3,3] } ``` 変換 ```dataweave %dw 2.5 output application/json fun max(elems: Array): T = elems reduce ((candidate: T, currentMax = elems[0]) -> if (candidate > currentMax) candidate else currentMax) --- { max: max(measures) } ``` 出力 ```linenums { "max": 5 } ``` ## [](#var-へのラムダの割り当て)Var へのラムダの割り当て `var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。 入力 ```json { "field1": "Annie", "field2": "Point", "field3": "Stuff" } ``` 変換 ```dataweave %dw 2.0 output application/json var toUser = (user) -> { firstName: user.field1, lastName: user.field2 } --- { "user" : toUser(payload) } ``` 出力 ```json { "user": { "firstName": "Annie", "lastName": "Point" } } ``` ## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用 次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。 入力 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map((name) -> upper(name)) ``` 変換 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用 次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。 変換 ```dataweave %dw 2.0 output application/json var names = ["john", "peter", "matt"] --- users: names map upper($) ``` 出力 ```json { "users": ["JOHN","PETER","MATT"] } ``` ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction) # DataWeave で使用可能な外部関数 組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 ## [](#functions_runtime)Mule Runtime 関数 以下の関数は Mule Runtime により挿入されています。 - `p`​ - `lookup`​ - `causedBy`

Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。

Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず ​Mule​ 名前空間を使用することをお勧めします。これを使用するには、関数名の先頭に名前空間を追加するだけです。たとえば、​p('http:port')​ ではなく ​Mule::p('http:port')​ のようにします。

DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule モジュールを使用すると、​カスタム DataWeave モジュール​で Mule Runtime 関数を使用することもできます。

バージョン 4.1.4 ​よりも前​の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、​Mule​ 名前空間を使用したり、カスタムモジュールで Mule Runtime 関数を使用したりできません。

### [](#function_p)プロパティの割り当て (p 関数) `p`​ 関数は、以下のプロパティへのアクセスを提供します。 - Mule プロパティのプレースホルダー - システムプロパティ - 環境プロパティ プロパティの設定および処理方法についての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/jp/mule-runtime/4.3/configuring-properties)​を参照してください。 次の例では、プロパティ ​`http.port`​ の値を記録します。 例: Mule 4.1.4 以降のプロパティ関数の使用方法 ```xml ``` DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、​`p`​ 関数を ​`myVar`​ 定義内で使用します。 4.1.4 よりも前のランタイムでは、​`Mule::`​ 名前空間を省略するだけでこれと同様の処理を実行できます。 ```xml ``` 例: Mule 4.1.3 以前のプロパティ関数の使用方法 ```xml ``` Mule 4.2 の Mule 関数モジュールで導入された ​[p](https://docs.mulesoft.com/jp/dataweave/2.3/dw-mule-functions-p)​ 関数も参照してください。 ### [](#function_lookup)フローの実行 (lookup 関数) Flow Reference コンポーネントと同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。 #### [](#パラメーター)パラメーター
名前 説明

​flowName

対象フローを識別する文字列。

​payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

​timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが ​CPU_LIGHT​ または ​CPU_INTENSIVE​ の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 例: Mule 4.1.4 以降の ​`lookup`​ 関数の使用方法 ```XML ``` 例: Mule 4.1.3 以前の ​`lookup`​ 関数の使用方法 ```XML ``` 出力 ```json hello world ```

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。 このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ と並行して呼び出されたり、何も呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#function_causedBy)種別によるエラーの一致 (causedBy 関数) `causedBy`​ 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む ​`COMPOSITE_ROUTING`​ エラーを処理する場合に役立ちます。 一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。 次の例では、​`SECURITY`​ エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、​`HTTP:UNAUTHORIZED`​ と ​`HTTP:FORBIDDEN`​ のエラーについては特定のアクションがセットアップされています。 例: Mule Runtime バージョン 4.1.4 以降のエラーマッチャー関数の使用方法 ```xml ``` 例: Mule Runtime バージョン 4.1.3 以前のエラーマッチャー関数の使用方法 ```xml ``` エラーパラメーターは明示的にも暗黙的にも使用されます。 ## [](#コネクタおよびコンポーネント関数)コネクタおよびコンポーネント関数 Mule アプリケーションでコネクタとコンポーネントを使用する場合、関数を挿入できます。 Runtime 関数とは異なり、この関数には名前空間が必要であり、通常、この名前空間はコンポーネント名に一致します。 たとえば、Batch を使用するアプリケーションでは、​`#[Batch::isSuccessfulRecord()]`​ 式を使用できます。 ## [](#関連情報)関連情報 [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​ [DataWeave 型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types)​ [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) # DataWeave で使用可能な外部関数 組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#functions_runtime)Mule Runtime 関数 以下の関数は Mule Runtime により挿入されています。 - `p` - `lookup` - `causedBy`

Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。

Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず ​Mule​ 名前空間を使用することをお勧めします。これを使用するには、関数名の先頭に名前空間を追加するだけです。たとえば、​p('http:port')​ ではなく ​Mule::p('http:port')​ のようにします。

DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule Module を使用すると、​カスタム DataWeave Module​ で Mule Runtime 関数を使用することもできます。

バージョン 4.1.4 ​よりも前​の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、​Mule​ 名前空間を使用したり、カスタムモジュールで Mule Runtime 関数を使用したりできません。

DataWeave ランタイムプロパティについては、DataWeave 関数 ​[props](https://docs.mulesoft.com/jp/dataweave/2.4/dw-runtime-functions-props) and [prop](https://docs.mulesoft.com/jp/dataweave/2.4/dw-runtime-functions-prop)​ を参照してください。 ### [](#function_p)プロパティの割り当て (p 関数) `p`​ 関数は、以下のプロパティへのアクセスを提供します。 - Mule プロパティのプレースホルダー - システムプロパティ - 環境プロパティ プロパティの設定および処理方法についての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 次の例では、プロパティ ​`http.port`​ の値を記録します。 例: Mule 4.1.4 以降のプロパティ関数の使用方法 ```xml ``` DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、​`p`​ 関数を ​`myVar`​ 定義内で使用します。 4.1.4 よりも前のランタイムでは、​`Mule::`​ 名前空間を省略するだけでこれと同様の処理を実行できます。 ```xml ``` 例: Mule 4.1.3 以前のプロパティ関数の使用方法 ```xml ``` Mule 4.2 の Mule 関数モジュールで導入された ​[p](https://docs.mulesoft.com/jp/dataweave/2.4/dw-mule-functions-p)​ 関数も参照してください。 ### [](#function_lookup)フローの実行 (lookup 関数) Flow Reference コンポーネントと同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。 #### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 例: Mule 4.1.4 以降の ​`lookup`​ 関数の使用方法 ```XML ``` 例: Mule 4.1.3 以前の ​`lookup`​ 関数の使用方法 ```XML ``` 出力 ```json hello world ```

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。 このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ と並行して呼び出されたり、何も呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#function_causedBy)種別によるエラーの一致 (causedBy 関数) `causedBy`​ 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む ​`COMPOSITE_ROUTING`​ エラーを処理する場合に役立ちます。 一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。 次の例では、​`SECURITY`​ エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、​`HTTP:UNAUTHORIZED`​ と ​`HTTP:FORBIDDEN`​ のエラーについては特定のアクションがセットアップされています。 例: Mule Runtime バージョン 4.1.4 以降のエラーマッチャー関数の使用方法 ```xml ``` 例: Mule Runtime バージョン 4.1.3 以前のエラーマッチャー関数の使用方法 ```xml ``` エラーパラメーターは明示的にも暗黙的にも使用されます。 ## [](#コネクタおよびコンポーネント関数)コネクタおよびコンポーネント関数 Mule アプリケーションでコネクタとコンポーネントを使用する場合、関数を挿入できます。 Runtime 関数とは異なり、この関数には名前空間が必要であり、通常、この名前空間はコンポーネント名に一致します。 たとえば、Batch を使用するアプリケーションでは、​`#[Batch::isSuccessfulRecord()]`​ 式を使用できます。 ## [](#関連情報)関連情報 [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions) [DataWeave 型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) # DataWeave で使用可能な外部関数 組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#functions_runtime)Mule Runtime 関数 以下の関数は Mule Runtime により挿入されています。 - `p` - `lookup` - `causedBy`

Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。

Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず ​Mule​ 名前空間を使用することをお勧めします。これを使用するには、関数名の先頭に名前空間を追加するだけです。たとえば、​p('http:port')​ ではなく ​Mule::p('http:port')​ のようにします。

DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule モジュールを使用すると、​カスタム DataWeave モジュール​で Mule Runtime 関数を使用することもできます。

バージョン 4.1.4 ​よりも前​の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、​Mule​ 名前空間を使用したり、カスタムモジュールで Mule Runtime 関数を使用したりできません。

DataWeave ランタイムプロパティについては、DataWeave 関数 ​[props](https://docs.mulesoft.com/jp/dataweave/2.5/dw-runtime-functions-props) and [prop](https://docs.mulesoft.com/jp/dataweave/2.5/dw-runtime-functions-prop)​ を参照してください。 ### [](#function_p)プロパティの割り当て (p 関数) `p`​ 関数は、以下のプロパティへのアクセスを提供します。 - Mule プロパティのプレースホルダー - システムプロパティ - 環境プロパティ プロパティの設定および処理方法についての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 次の例では、プロパティ ​`http.port`​ の値を記録します。 例: Mule 4.1.4 以降のプロパティ関数の使用方法 ```xml ``` DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、​`p`​ 関数を ​`myVar`​ 定義内で使用します。 4.1.4 よりも前のランタイムでは、​`Mule::`​ 名前空間を省略するだけでこれと同様の処理を実行できます。 ```xml ``` 例: Mule 4.1.3 以前のプロパティ関数の使用方法 ```xml ``` Mule 4.2 の Mule 関数モジュールで導入された ​[p](https://docs.mulesoft.com/jp/dataweave/2.5/dw-mule-functions-p)​ 関数も参照してください。 ### [](#function_lookup)フローの実行 (lookup 関数) Flow Reference コンポーネントと同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。 #### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 例: Mule 4.1.4 以降の ​`lookup`​ 関数の使用方法 ```XML ``` 例: Mule 4.1.3 以前の ​`lookup`​ 関数の使用方法 ```XML ``` 出力 ```json hello world ```

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。 このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ と並行して呼び出されたり、何も呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#function_causedBy)種別によるエラーの一致 (causedBy 関数) `causedBy`​ 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む ​`COMPOSITE_ROUTING`​ エラーを処理する場合に役立ちます。 一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。 次の例では、​`SECURITY`​ エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、​`HTTP:UNAUTHORIZED`​ と ​`HTTP:FORBIDDEN`​ のエラーについては特定のアクションがセットアップされています。 例: Mule Runtime バージョン 4.1.4 以降のエラーマッチャー関数の使用方法 ```xml ``` 例: Mule Runtime バージョン 4.1.3 以前のエラーマッチャー関数の使用方法 ```xml ``` エラーパラメーターは明示的にも暗黙的にも使用されます。 ## [](#コネクタおよびコンポーネント関数)コネクタおよびコンポーネント関数 Mule アプリケーションでコネクタとコンポーネントを使用する場合、関数を挿入できます。 Runtime 関数とは異なり、この関数には名前空間が必要であり、通常、この名前空間はコンポーネント名に一致します。 たとえば、Batch を使用するアプリケーションでは、​`#[Batch::isSuccessfulRecord()]`​ 式を使用できます。 ## [](#関連情報)関連情報 [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions) [DataWeave 型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) # DataWeave で使用可能な外部関数 組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#functions_runtime)Mule Runtime 関数 以下の関数は Mule Runtime により挿入されています。 - `p` - `lookup` - `causedBy`

Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。

Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず ​Mule​ 名前空間を使用することをお勧めします。これを使用するには、関数名の先頭に名前空間を追加するだけです。たとえば、​p('http:port')​ ではなく ​Mule::p('http:port')​ のようにします。

DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule モジュールを使用すると、​カスタム DataWeave モジュール​で Mule Runtime 関数を使用することもできます。

バージョン 4.1.4 ​よりも前​の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、​Mule​ 名前空間を使用したり、カスタムモジュールで Mule Runtime 関数を使用したりできません。

DataWeave ランタイムプロパティについては、DataWeave 関数 ​[props](https://docs.mulesoft.com/jp/dataweave/2.6/dw-runtime-functions-props) and [prop](https://docs.mulesoft.com/jp/dataweave/2.6/dw-runtime-functions-prop)​ を参照してください。 ### [](#function_p)プロパティの割り当て (p 関数) `p`​ 関数は、以下のプロパティへのアクセスを提供します。 - Mule プロパティのプレースホルダー - システムプロパティ - 環境プロパティ プロパティの設定および処理方法についての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 次の例では、プロパティ ​`http.port`​ の値を記録します。 例: Mule 4.1.4 以降のプロパティ関数の使用方法 ```xml ``` DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、​`p`​ 関数を ​`myVar`​ 定義内で使用します。 4.1.4 よりも前のランタイムでは、​`Mule::`​ 名前空間を省略するだけでこれと同様の処理を実行できます。 ```xml ``` 例: Mule 4.1.3 以前のプロパティ関数の使用方法 ```xml ``` Mule 4.2 の Mule 関数モジュールで導入された ​[p](https://docs.mulesoft.com/jp/dataweave/2.6/dw-mule-functions-p)​ 関数も参照してください。 ### [](#function_lookup)フローの実行 (lookup 関数) Flow Reference コンポーネントと同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。 #### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 例: Mule 4.1.4 以降の ​`lookup`​ 関数の使用方法 ```XML ``` 例: Mule 4.1.3 以前の ​`lookup`​ 関数の使用方法 ```XML ``` 出力 ```json hello world ```

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。 このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ と並行して呼び出されたり、何も呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#function_causedBy)種別によるエラーの一致 (causedBy 関数) `causedBy`​ 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む ​`COMPOSITE_ROUTING`​ エラーを処理する場合に役立ちます。 一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。 次の例では、​`SECURITY`​ エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、​`HTTP:UNAUTHORIZED`​ と ​`HTTP:FORBIDDEN`​ のエラーについては特定のアクションがセットアップされています。 例: Mule Runtime バージョン 4.1.4 以降のエラーマッチャー関数の使用方法 ```xml ``` 例: Mule Runtime バージョン 4.1.3 以前のエラーマッチャー関数の使用方法 ```xml ``` エラーパラメーターは明示的にも暗黙的にも使用されます。 ## [](#コネクタおよびコンポーネント関数)コネクタおよびコンポーネント関数 Mule アプリケーションでコネクタとコンポーネントを使用する場合、関数を挿入できます。 Runtime 関数とは異なり、この関数には名前空間が必要であり、通常、この名前空間はコンポーネント名に一致します。 たとえば、Batch を使用するアプリケーションでは、​`#[Batch::isSuccessfulRecord()]`​ 式を使用できます。 ## [](#関連情報)関連情報 [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions) [DataWeave 型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) # DataWeave で使用可能な外部関数 組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#functions_runtime)Mule Runtime 関数 以下の関数は Mule Runtime により挿入されています。 - `p` - `lookup` - `causedBy`

Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。

Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず ​Mule​ 名前空間を使用することをお勧めします。これを使用するには、関数名の先頭に名前空間を追加するだけです。たとえば、​p('http:port')​ ではなく ​Mule::p('http:port')​ のようにします。

DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule モジュールを使用すると、​カスタム DataWeave モジュール​で Mule Runtime 関数を使用することもできます。

バージョン 4.1.4 ​よりも前​の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、​Mule​ 名前空間を使用したり、カスタムモジュールで Mule Runtime 関数を使用したりできません。

DataWeave ランタイムプロパティについては、DataWeave 関数 ​[props](https://docs.mulesoft.com/jp/dataweave/2.7/dw-runtime-functions-props) and [prop](https://docs.mulesoft.com/jp/dataweave/2.7/dw-runtime-functions-prop)​ を参照してください。 ### [](#function_p)プロパティの割り当て (p 関数) `p`​ 関数は、以下のプロパティへのアクセスを提供します。 - Mule プロパティのプレースホルダー - システムプロパティ - 環境プロパティ プロパティの設定および処理方法についての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 次の例では、プロパティ ​`http.port`​ の値を記録します。 例: Mule 4.1.4 以降のプロパティ関数の使用方法 ```xml ``` DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、​`p`​ 関数を ​`myVar`​ 定義内で使用します。 4.1.4 よりも前のランタイムでは、​`Mule::`​ 名前空間を省略するだけでこれと同様の処理を実行できます。 ```xml ``` 例: Mule 4.1.3 以前のプロパティ関数の使用方法 ```xml ``` Mule 4.2 の Mule 関数モジュールで導入された ​[p](https://docs.mulesoft.com/jp/dataweave/2.7/dw-mule-functions-p)​ 関数も参照してください。 ### [](#function_lookup)フローの実行 (lookup 関数) Flow Reference コンポーネントと同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。 #### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 例: Mule 4.1.4 以降の ​`lookup`​ 関数の使用方法 ```XML ``` 例: Mule 4.1.3 以前の ​`lookup`​ 関数の使用方法 ```XML ``` 出力 ```json hello world ```

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。 このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ と並行して呼び出されたり、何も呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#function_causedBy)種別によるエラーの一致 (causedBy 関数) `causedBy`​ 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む ​`COMPOSITE_ROUTING`​ エラーを処理する場合に役立ちます。 一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。 次の例では、​`SECURITY`​ エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、​`HTTP:UNAUTHORIZED`​ と ​`HTTP:FORBIDDEN`​ のエラーについては特定のアクションがセットアップされています。 例: Mule Runtime バージョン 4.1.4 以降のエラーマッチャー関数の使用方法 ```xml ``` 例: Mule Runtime バージョン 4.1.3 以前のエラーマッチャー関数の使用方法 ```xml ``` エラーパラメーターは明示的にも暗黙的にも使用されます。 ## [](#コネクタおよびコンポーネント関数)コネクタおよびコンポーネント関数 Mule アプリケーションでコネクタとコンポーネントを使用する場合、関数を挿入できます。 Runtime 関数とは異なり、この関数には名前空間が必要であり、通常、この名前空間はコンポーネント名に一致します。 たとえば、Batch を使用するアプリケーションでは、​`#[Batch::isSuccessfulRecord()]`​ 式を使用できます。 ## [](#関連情報)関連情報 [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions) [DataWeave 型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) # DataWeave で使用可能な外部関数 組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#functions_runtime)Mule Runtime 関数 以下の関数は Mule Runtime により挿入されています。 - `p` - `lookup` - `causedBy`

Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。

Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず ​Mule​ 名前空間を使用することをお勧めします。これを使用するには、関数名の先頭に名前空間を追加するだけです。たとえば、​p('http:port')​ ではなく ​Mule::p('http:port')​ のようにします。

DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule モジュールを使用すると、​カスタム DataWeave モジュール​で Mule Runtime 関数を使用することもできます。

バージョン 4.1.4 ​よりも前​の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、​Mule​ 名前空間を使用したり、カスタムモジュールで Mule Runtime 関数を使用したりできません。

DataWeave ランタイムプロパティについては、DataWeave 関数 ​[props](https://docs.mulesoft.com/jp/dataweave/2.8/dw-runtime-functions-props) and [prop](https://docs.mulesoft.com/jp/dataweave/2.8/dw-runtime-functions-prop)​ を参照してください。 ### [](#function_p)プロパティの割り当て (p 関数) `p`​ 関数は、以下のプロパティへのアクセスを提供します。 - Mule プロパティのプレースホルダー - システムプロパティ - 環境プロパティ プロパティの設定および処理方法についての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 次の例では、プロパティ ​`http.port`​ の値を記録します。 例: Mule 4.1.4 以降のプロパティ関数の使用方法 ```xml ``` DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、​`p`​ 関数を ​`myVar`​ 定義内で使用します。 4.1.4 よりも前のランタイムでは、​`Mule::`​ 名前空間を省略するだけでこれと同様の処理を実行できます。 ```xml ``` 例: Mule 4.1.3 以前のプロパティ関数の使用方法 ```xml ``` Mule 4.2 の Mule 関数モジュールで導入された ​[p](https://docs.mulesoft.com/jp/dataweave/2.8/dw-mule-functions-p)​ 関数も参照してください。 ### [](#function_lookup)フローの実行 (lookup 関数) Flow Reference コンポーネントと同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。 #### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 例: Mule 4.1.4 以降の ​`lookup`​ 関数の使用方法 ```XML ``` 例: Mule 4.1.3 以前の ​`lookup`​ 関数の使用方法 ```XML ``` 出力 ```json hello world ```

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。 このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ と並行して呼び出されたり、何も呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#function_causedBy)種別によるエラーの一致 (causedBy 関数) `causedBy`​ 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む ​`COMPOSITE_ROUTING`​ エラーを処理する場合に役立ちます。 一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。 次の例では、​`SECURITY`​ エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、​`HTTP:UNAUTHORIZED`​ と ​`HTTP:FORBIDDEN`​ のエラーについては特定のアクションがセットアップされています。 例: Mule Runtime バージョン 4.1.4 以降のエラーマッチャー関数の使用方法 ```xml ``` 例: Mule Runtime バージョン 4.1.3 以前のエラーマッチャー関数の使用方法 ```xml ``` エラーパラメーターは明示的にも暗黙的にも使用されます。 ## [](#コネクタおよびコンポーネント関数)コネクタおよびコンポーネント関数 Mule アプリケーションでコネクタとコンポーネントを使用する場合、関数を挿入できます。 Runtime 関数とは異なり、この関数には名前空間が必要であり、通常、この名前空間はコンポーネント名に一致します。 たとえば、Batch を使用するアプリケーションでは、​`#[Batch::isSuccessfulRecord()]`​ 式を使用できます。 ## [](#関連情報)関連情報 [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions) [DataWeave 型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) # DataWeave のインデックス付きリーダー DataWeave では、メモリ内戦略の場合と同じようにランダムアクセスを可能にしつつメモリ内のドキュメント全体が読み込まれるのを避けるために、一部の入力データ (XML、JSON、CSV) のリーダーでインデックス付き戦略がサポートされています。DataWeave では、入力が特定の設定可能なしきい値より長いか ​`indexedReader`​ 設定が ​`true`​ に設定されている場合に、インデックス付きリーダーを使用します。 メモリ内に収まらないファイルを管理する代償として、ファイルをディスク内の一時ファイルに書き込み、ドキュメントコンテンツを事前にインデックス付けすることになり、これには時間もディスクスペースも必要になります。 インデックス付きリーダーでは最大 20 GB の入力ファイルを処理できます。それより大きいファイルでは、より高速なストリーミング戦略を使用します。このモードは機能面ではより厳しく制限されていますが、ストリーミングリーダーに対する最大入力サイズの制限はありません。 サポートされる実際の最大入力ファイルサイズは、入力のコンテンツに依存しているため、推定するのが困難です。 次のリストでは、入力ファイルのさまざまなパートでの制限を示しています。 - 最大ネスト深度: `4096`​ - 個々の値の最大サイズ: `4 GB`​ - トークン: `​​2^32-1`​ (約 40 億) トークンはキー/値のペア、object-start、または array-start のいずれかであり、これによって最大入力ファイルサイズが制限されます。 最大入力ファイルサイズはファイル内の各トークンのサイズとは無関係です。平均の値の長さが長くなるにつれ、入力ファイルサイズが大きくなる傾向があります。これは、重要なのがサイズではなくトークン数であるためです。 次の例では、入力ファイルサイズのサンプルを示しています。 この例では、最大入力ファイルサイズは 40 GB ~ 50 GB です。 ```json [ { "name": "Mariano", "lastName": "Achaval" }, ... ] ``` 次の例は前の例に似ていますが、最大ファイルサイズは約 30 GB と縮小されています。 ```json [{"name":"Mariano","lastName":"Achaval"},...] ``` 次の例では、数値 ​`1`​ の縮小された配列を示しています。DataWeave では、約 8 GB のこうしたファイルのみをサポートしています。 ```json [1,1,1,1,1,1,...] ``` ## [](#large-strings-management)大きな文字列の管理 サイズが 1.5 MB を超える ​`String`​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​`JSON`​ および ​`XML`​ 入力データでのみ機能します。 DataWeave が次のシステムプロパティを変更することでこの分割戦略を使用して文字列を処理するタイミングを判断するために使用するしきい値を設定できます。 ```none com.mulesoft.dw.max_memory_allocation ``` この機能を使用すると、文字列を分割してローカルストレージを通じてアクセスすることによりパフォーマンスが低下する点に注意してください。環境にメモリ内のすべてのコンテンツを読み込むのみ十分なリソースがある場合、次のシステムプロパティの値を ​`false`​ に設定してこの文字列管理機能を完全に無効にすることもできます。 ```none com.mulesoft.dw.buffered_char_sequence.enabled ``` ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) # DataWeave のインデックス付きリーダー DataWeave では、メモリ内戦略の場合と同じようにランダムアクセスを可能にしつつメモリ内のドキュメント全体が読み込まれるのを避けるために、一部の入力データ (XML、JSON、CSV) のリーダーでインデックス付き戦略がサポートされています。DataWeave では、入力が特定の設定可能なしきい値より長いか ​`indexedReader`​ 設定が ​`true`​ に設定されている場合に、インデックス付きリーダーを使用します。 メモリ内に収まらないファイルを管理する代償として、ファイルをディスク内の一時ファイルに書き込み、ドキュメントコンテンツを事前にインデックス付けすることになり、これには時間もディスクスペースも必要になります。 インデックス付きリーダーでは最大 20 GB の入力ファイルを処理できます。それより大きいファイルでは、より高速なストリーミング戦略を使用します。このモードは機能面ではより厳しく制限されていますが、ストリーミングリーダーに対する最大入力サイズの制限はありません。 サポートされる実際の最大入力ファイルサイズは、入力のコンテンツに依存しているため、推定するのが困難です。 次のリストでは、入力ファイルのさまざまなパートでの制限を示しています。 - 最大ネスト深度: `4096` - 個々の値の最大サイズ: `4 GB` - トークン: `​​2^32-1`​ (約 40 億) トークンはキー/値のペア、object-start、または array-start のいずれかであり、これによって最大入力ファイルサイズが制限されます。 最大入力ファイルサイズはファイル内の各トークンのサイズとは無関係です。平均の値の長さが長くなるにつれ、入力ファイルサイズが大きくなる傾向があります。これは、重要なのがサイズではなくトークン数であるためです。 次の例では、入力ファイルサイズのサンプルを示しています。 この例では、最大入力ファイルサイズは 40 GB ~ 50 GB です。 ```json [ { "name": "Mariano", "lastName": "Achaval" }, ... ] ``` 次の例は前の例に似ていますが、最大ファイルサイズは約 30 GB と縮小されています。 ```json [{"name":"Mariano","lastName":"Achaval"},...] ``` 次の例では、数値 ​`1`​ の縮小された配列を示しています。DataWeave では、約 8 GB のこうしたファイルのみをサポートしています。 ```json [1,1,1,1,1,1,...] ``` ## [](#large-strings-management)大きな文字列の管理 サイズが 1.5 MB を超える ​`String`​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​`JSON`​ および ​`XML`​ 入力データでのみ機能します。 DataWeave が次のシステムプロパティを変更することでこの分割戦略を使用して文字列を処理するタイミングを判断するために使用するしきい値を設定できます。 ```none com.mulesoft.dw.max_memory_allocation ``` この機能を使用すると、文字列を分割してローカルストレージを通じてアクセスすることによりパフォーマンスが低下する点に注意してください。環境にメモリ内のすべてのコンテンツを読み込むのみ十分なリソースがある場合、次のシステムプロパティの値を ​`false`​ に設定してこの文字列管理機能を完全に無効にすることもできます。 ```none com.mulesoft.dw.buffered_char_sequence.enabled ``` ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) # DataWeave のインデックス付きリーダー DataWeave では、メモリ内戦略の場合と同じようにランダムアクセスを可能にしつつメモリ内のドキュメント全体が読み込まれるのを避けるために、一部の入力データ (XML、JSON、CSV) のリーダーでインデックス付き戦略がサポートされています。DataWeave では、入力が特定の設定可能なしきい値より長いか ​`indexedReader`​ 設定が ​`true`​ に設定されている場合に、インデックス付きリーダーを使用します。 メモリ内に収まらないファイルを管理する代償として、ファイルをディスク内の一時ファイルに書き込み、ドキュメントコンテンツを事前にインデックス付けすることになり、これには時間もディスクスペースも必要になります。 インデックス付きリーダーでは最大 20 GB の入力ファイルを処理できます。それより大きいファイルでは、より高速なストリーミング戦略を使用します。このモードは機能面ではより厳しく制限されていますが、ストリーミングリーダーに対する最大入力サイズの制限はありません。 サポートされる実際の最大入力ファイルサイズは、入力のコンテンツに依存しているため、推定するのが困難です。 次のリストでは、入力ファイルのさまざまなパートでの制限を示しています。 - 最大ネスト深度: `4096` - 個々の値の最大サイズ: `4 GB` - トークン: `​​2^32-1`​ (約 40 億) トークンはキー/値のペア、object-start、または array-start のいずれかであり、これによって最大入力ファイルサイズが制限されます。 最大入力ファイルサイズはファイル内の各トークンのサイズとは無関係です。平均の値の長さが長くなるにつれ、入力ファイルサイズが大きくなる傾向があります。これは、重要なのがサイズではなくトークン数であるためです。 次の例では、入力ファイルサイズのサンプルを示しています。 この例では、最大入力ファイルサイズは 40 GB ~ 50 GB です。 ```json [ { "name": "Mariano", "lastName": "Achaval" }, ... ] ``` 次の例は前の例に似ていますが、最大ファイルサイズは約 30 GB と縮小されています。 ```json [{"name":"Mariano","lastName":"Achaval"},...] ``` 次の例では、数値 ​`1`​ の縮小された配列を示しています。DataWeave では、約 8 GB のこうしたファイルのみをサポートしています。 ```json [1,1,1,1,1,1,...] ``` ## [](#large-strings-management)大きな文字列の管理 サイズが 1.5 MB を超える ​`String`​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​`JSON`​ および ​`XML`​ 入力データでのみ機能します。 DataWeave が次のシステムプロパティを変更することでこの分割戦略を使用して文字列を処理するタイミングを判断するために使用するしきい値を設定できます。 ```none com.mulesoft.dw.max_memory_allocation ``` この機能を使用すると、文字列を分割してローカルストレージを通じてアクセスすることによりパフォーマンスが低下する点に注意してください。環境にメモリ内のすべてのコンテンツを読み込むのみ十分なリソースがある場合、次のシステムプロパティの値を ​`false`​ に設定してこの文字列管理機能を完全に無効にすることもできます。 ```none com.mulesoft.dw.buffered_char_sequence.enabled ``` ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) # DataWeave のインデックス付きリーダー DataWeave では、メモリ内戦略の場合と同じようにランダムアクセスを可能にしつつメモリ内のドキュメント全体が読み込まれるのを避けるために、一部の入力データ (XML、JSON、CSV) のリーダーでインデックス付き戦略がサポートされています。DataWeave では、入力が特定の設定可能なしきい値より長いか ​`indexedReader`​ 設定が ​`true`​ に設定されている場合に、インデックス付きリーダーを使用します。 メモリ内に収まらないファイルを管理する代償として、ファイルをディスク内の一時ファイルに書き込み、ドキュメントコンテンツを事前にインデックス付けすることになり、これには時間もディスクスペースも必要になります。 インデックス付きリーダーでは最大 20 GB の入力ファイルを処理できます。それより大きいファイルでは、より高速なストリーミング戦略を使用します。このモードは機能面ではより厳しく制限されていますが、ストリーミングリーダーに対する最大入力サイズの制限はありません。 サポートされる実際の最大入力ファイルサイズは、入力のコンテンツに依存しているため、推定するのが困難です。 次のリストでは、入力ファイルのさまざまなパートでの制限を示しています。 - 最大ネスト深度: `4096` - 個々の値の最大サイズ: `4 GB` - トークン: `​​2^32-1`​ (約 40 億) トークンはキー/値のペア、object-start、または array-start のいずれかであり、これによって最大入力ファイルサイズが制限されます。 最大入力ファイルサイズはファイル内の各トークンのサイズとは無関係です。平均の値の長さが長くなるにつれ、入力ファイルサイズが大きくなる傾向があります。これは、重要なのがサイズではなくトークン数であるためです。 次の例では、入力ファイルサイズのサンプルを示しています。 この例では、最大入力ファイルサイズは 40 GB ~ 50 GB です。 ```json [ { "name": "Mariano", "lastName": "Achaval" }, ... ] ``` 次の例は前の例に似ていますが、最大ファイルサイズは約 30 GB と縮小されています。 ```json [{"name":"Mariano","lastName":"Achaval"},...] ``` 次の例では、数値 ​`1`​ の縮小された配列を示しています。DataWeave では、約 8 GB のこうしたファイルのみをサポートしています。 ```json [1,1,1,1,1,1,...] ``` ## [](#large-strings-management)大きな文字列の管理 サイズが 1.5 MB を超える ​`String`​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​`JSON`​ および ​`XML`​ 入力データでのみ機能します。 DataWeave が次のシステムプロパティを変更することでこの分割戦略を使用して文字列を処理するタイミングを判断するために使用するしきい値を設定できます。 ```none com.mulesoft.dw.max_memory_allocation ``` この機能を使用すると、文字列を分割してローカルストレージを通じてアクセスすることによりパフォーマンスが低下する点に注意してください。環境にメモリ内のすべてのコンテンツを読み込むのみ十分なリソースがある場合、次のシステムプロパティの値を ​`false`​ に設定してこの文字列管理機能を完全に無効にすることもできます。 ```none com.mulesoft.dw.buffered_char_sequence.enabled ``` ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) # DataWeave のインデックス付きリーダー DataWeave では、メモリ内戦略の場合と同じようにランダムアクセスを可能にしつつメモリ内のドキュメント全体が読み込まれるのを避けるために、一部の入力データ (XML、JSON、CSV) のリーダーでインデックス付き戦略がサポートされています。DataWeave では、入力が特定の設定可能なしきい値より長いか ​`indexedReader`​ 設定が ​`true`​ に設定されている場合に、インデックス付きリーダーを使用します。 メモリ内に収まらないファイルを管理する代償として、ファイルをディスク内の一時ファイルに書き込み、ドキュメントコンテンツを事前にインデックス付けすることになり、これには時間もディスクスペースも必要になります。 インデックス付きリーダーでは最大 20 GB の入力ファイルを処理できます。それより大きいファイルでは、より高速なストリーミング戦略を使用します。このモードは機能面ではより厳しく制限されていますが、ストリーミングリーダーに対する最大入力サイズの制限はありません。 サポートされる実際の最大入力ファイルサイズは、入力のコンテンツに依存しているため、推定するのが困難です。 次のリストでは、入力ファイルのさまざまなパートでの制限を示しています。 - 最大ネスト深度: `4096` - 個々の値の最大サイズ: `4 GB` - トークン: `​​2^32-1`​ (約 40 億) トークンはキー/値のペア、object-start、または array-start のいずれかであり、これによって最大入力ファイルサイズが制限されます。 最大入力ファイルサイズはファイル内の各トークンのサイズとは無関係です。平均の値の長さが長くなるにつれ、入力ファイルサイズが大きくなる傾向があります。これは、重要なのがサイズではなくトークン数であるためです。 次の例では、入力ファイルサイズのサンプルを示しています。 この例では、最大入力ファイルサイズは 40 GB ~ 50 GB です。 ```json [ { "name": "Mariano", "lastName": "Achaval" }, ... ] ``` 次の例は前の例に似ていますが、最大ファイルサイズは約 30 GB と縮小されています。 ```json [{"name":"Mariano","lastName":"Achaval"},...] ``` 次の例では、数値 ​`1`​ の縮小された配列を示しています。DataWeave では、約 8 GB のこうしたファイルのみをサポートしています。 ```json [1,1,1,1,1,1,...] ``` ## [](#large-strings-management)大きな文字列の管理 サイズが 1.5 MB を超える ​`String`​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​`JSON`​ および ​`XML`​ 入力データでのみ機能します。 DataWeave が次のシステムプロパティを変更することでこの分割戦略を使用して文字列を処理するタイミングを判断するために使用するしきい値を設定できます。 ```none com.mulesoft.dw.max_memory_allocation ``` この機能を使用すると、文字列を分割してローカルストレージを通じてアクセスすることによりパフォーマンスが低下する点に注意してください。環境にメモリ内のすべてのコンテンツを読み込むのみ十分なリソースがある場合、次のシステムプロパティの値を ​`false`​ に設定してこの文字列管理機能を完全に無効にすることもできます。 ```none com.mulesoft.dw.buffered_char_sequence.enabled ``` ## [](#関連情報)関連情報 - [CSV 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-csv) - [JSON 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-json) - [XML 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-xml) - [サポートされる DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) # DataWeave のバージョン設定動作 DataWeave の新しいマイナーバージョンでは、言語の動作を変更できます。​_互換性フラグ_​として機能する DataWeave システムプロパティを使用することで、以前の動作に連動する既存のスクリプトを引き続き使用できます。ただし、各フラグでは、フラグが使用できなくなったバージョンを識別する削除バージョンが定義されます。そのバージョンではデフォルトで変更後の動作が制御されます。 DataWeave 言語レベルを指定して、どのような互換性フラグを使用できるのかを DataWeave ランタイムに示します。アップグレードして後方互換性を維持するには、以前のバージョンの言語レベルを設定して、そのバージョンで使用可能なフラグがアップグレード先の DataWeave バージョンで期限切れになっても引き続き表示されるようにします。言語レベルのデフォルトは実行中の DataWeave バージョンになります。最大でもランタイムと同じバージョンにする必要があります。 Mule アプリケーションでは、言語レベルはアプリケーションの ​`minMuleVersion`​ 設定によって決まります (Mule ドキュメントの​[「機能フラグリファレンス」](https://docs.mulesoft.com/mule-runtime/latest/feature-flagging#feature-flags-reference)​を参照)。​`minMuleVersion`​ の場合、言語レベルは次の表に示すように 2 つのメジャーバージョンを減算して計算されます。
minMuleVersion 言語レベル

4.5

2.5

4.4

2.4

4.3

2.3

Mule バージョンを設定すると、対応する DataWeave 言語レベルを使用するようにアプリケーションが設定されます。この設定は、DataWeave スクリプトの ​`%dw`​ ディレクティブで設定される DataWeave 構文バージョンに連動します。詳細は、​[「DataWeave ヘッダー」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction#dw_header)​を参照してください。 たとえば、​`com.mulesoft.dw.xml_reader.honourMixedContentStructure`​ システムプロパティは、言語レベル 2.4 (導入時の言語レベルで、DataWeave 2.5 で削除される) の互換性フラグになります。DataWeave 2.5 では、このプロパティは言語レベルを 2.4 に設定した​_場合にのみ_​表示されます。そのように設定しないと、プロパティはデフォルトで 2.5 の新しい動作になります。 # DataWeave のバージョン設定動作 DataWeave の新しいマイナーバージョンでは、言語の動作を変更できます。​_互換性フラグ_​として機能する DataWeave システムプロパティを使用することで、以前の動作に連動する既存のスクリプトを引き続き使用できます。ただし、各フラグでは、フラグが使用できなくなったバージョンを識別する削除バージョンが定義されます。そのバージョンではデフォルトで変更後の動作が制御されます。 DataWeave 言語レベルを指定して、どのような互換性フラグを使用できるのかを DataWeave ランタイムに示します。アップグレードして後方互換性を維持するには、以前のバージョンの言語レベルを設定して、そのバージョンで使用可能なフラグがアップグレード先の DataWeave バージョンで期限切れになっても引き続き表示されるようにします。言語レベルのデフォルトは実行中の DataWeave バージョンになります。最大でもランタイムと同じバージョンにする必要があります。 Mule アプリケーションでは、言語レベルはアプリケーションの ​`minMuleVersion`​ 設定によって決まります (Mule ドキュメントの​[「機能フラグリファレンス」](https://docs.mulesoft.com/mule-runtime/latest/feature-flagging#feature-flags-reference)​を参照)。​`minMuleVersion`​ の場合、言語レベルは次の表に示すように 2 つのメジャーバージョンを減算して計算されます。
minMuleVersion 言語レベル

4.5

2.5

4.4

2.4

4.3

2.3

Mule バージョンを設定すると、対応する DataWeave 言語レベルを使用するようにアプリケーションが設定されます。この設定は、DataWeave スクリプトの ​`%dw`​ ディレクティブで設定される DataWeave 構文バージョンに連動します。詳細は、​[「DataWeave ヘッダー」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction#dw_header)​を参照してください。 たとえば、​`com.mulesoft.dw.xml_reader.honourMixedContentStructure`​ システムプロパティは、言語レベル 2.4 (導入時の言語レベルで、DataWeave 2.5 で削除される) の互換性フラグになります。DataWeave 2.5 では、このプロパティは言語レベルを 2.4 に設定した​_場合にのみ_​表示されます。そのように設定しないと、プロパティはデフォルトで 2.5 の新しい動作になります。 # DataWeave のバージョン設定動作 DataWeave の新しいマイナーバージョンでは、言語の動作を変更できます。​_互換性フラグ_​として機能する DataWeave システムプロパティを使用することで、以前の動作に連動する既存のスクリプトを引き続き使用できます。ただし、各フラグでは、フラグが使用できなくなったバージョンを識別する削除バージョンが定義されます。そのバージョンではデフォルトで変更後の動作が制御されます。 DataWeave 言語レベルを指定して、どのような互換性フラグを使用できるのかを DataWeave ランタイムに示します。アップグレードして後方互換性を維持するには、以前のバージョンの言語レベルを設定して、そのバージョンで使用可能なフラグがアップグレード先の DataWeave バージョンで期限切れになっても引き続き表示されるようにします。言語レベルのデフォルトは実行中の DataWeave バージョンになります。最大でもランタイムと同じバージョンにする必要があります。 Mule アプリケーションでは、言語レベルはアプリケーションの ​`minMuleVersion`​ 設定によって決まります (Mule ドキュメントの​[「機能フラグリファレンス」](https://docs.mulesoft.com/mule-runtime/latest/feature-flagging#feature-flags-reference)​を参照)。​`minMuleVersion`​ の場合、言語レベルは次の表に示すように 2 つのメジャーバージョンを減算して計算されます。
minMuleVersion 言語レベル

4.5

2.5

4.4

2.4

4.3

2.3

Mule バージョンを設定すると、対応する DataWeave 言語レベルを使用するようにアプリケーションが設定されます。この設定は、DataWeave スクリプトの ​`%dw`​ ディレクティブで設定される DataWeave 構文バージョンに連動します。詳細は、​[「DataWeave ヘッダー」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction#dw_header)​を参照してください。 たとえば、​`com.mulesoft.dw.xml_reader.honourMixedContentStructure`​ システムプロパティは、言語レベル 2.4 (導入時の言語レベルで、DataWeave 2.5 で削除される) の互換性フラグになります。DataWeave 2.5 では、このプロパティは言語レベルを 2.4 に設定した​_場合にのみ_​表示されます。そのように設定しないと、プロパティはデフォルトで 2.5 の新しい動作になります。 # DataWeave のバージョン設定動作 DataWeave の新しいマイナーバージョンでは、言語の動作を変更できます。​_互換性フラグ_​として機能する DataWeave システムプロパティを使用することで、以前の動作に連動する既存のスクリプトを引き続き使用できます。ただし、各フラグでは、フラグが使用できなくなったバージョンを識別する削除バージョンが定義されます。そのバージョンではデフォルトで変更後の動作が制御されます。 DataWeave 言語レベルを指定して、どのような互換性フラグを使用できるのかを DataWeave ランタイムに示します。アップグレードして後方互換性を維持するには、以前のバージョンの言語レベルを設定して、そのバージョンで使用可能なフラグがアップグレード先の DataWeave バージョンで期限切れになっても引き続き表示されるようにします。言語レベルのデフォルトは実行中の DataWeave バージョンになります。最大でもランタイムと同じバージョンにする必要があります。 Mule アプリケーションでは、言語レベルはアプリケーションの ​`minMuleVersion`​ 設定によって決まります (Mule ドキュメントの​[「機能フラグリファレンス」](https://docs.mulesoft.com/mule-runtime/latest/feature-flagging#feature-flags-reference)​を参照)。​`minMuleVersion`​ の場合、言語レベルは次の表に示すように 2 つのメジャーバージョンを減算して計算されます。
minMuleVersion 言語レベル

4.8

2.8

4.7

2.7

4.6

2.6

4.5

2.5

4.4

2.4

4.3

2.3

Mule バージョンを設定すると、対応する DataWeave 言語レベルを使用するようにアプリケーションが設定されます。この設定は、DataWeave スクリプトの ​`%dw`​ ディレクティブで設定される DataWeave 構文バージョンに連動します。詳細は、​[「DataWeave ヘッダー」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction#dw_header)​を参照してください。 たとえば、​`com.mulesoft.dw.xml_reader.honourMixedContentStructure`​ システムプロパティは、言語レベル 2.4 (導入時の言語レベルで、DataWeave 2.6 で削除される) の互換性フラグになります。DataWeave 2.6 では、このプロパティは言語レベルを 2.4 または 2.5 に設定した​_場合にのみ_​表示されます。言語レベル 2.4 を選択した場合、デフォルトは古い動作になり、言語レベル 2.5 を選択した場合、デフォルトは新しい動作になります。 # DataWeave のフローコントロールとスコープ操作 次の演算子を任意の DataWeave 式内で使用できます。 - [`do`](#control_flow_do)​ - [`if else`](#control_flow_if_else)​ - [`else if`](#control_flow_else_if) 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 ## [](#control_flow_do)`do` `do`​ ステートメントはスコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​`---`​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。 この例では、スクリプトの本文から ​`myfun()`​ がコールされたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun myfun() = do { var name = "DataWeave" --- name } --- { result: myfun() } ``` この例では、スクリプトの本文から変数 ​`myVar`​ が参照されたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var myVar = do { var name = "DataWeave" --- name } --- { result: myVar } ``` どちらのスクリプトも次の出力を生成します。 出力: ```json { "result": "DataWeave" } ``` 次の例では、​`do`​ を使用して、​`test(p: String)`​ 関数に渡す文字列 (​`" Bar"`​) の先頭に文字列 ​`"Foo"`​ を追加します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun test(p: String) = do { var a = "Foo" ++ p --- a } --- { result: test(" Bar") } ``` 出力: ```json { "result": "Foo Bar" } ``` [「例: ローカル DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables#example_local_variable)​も参照してください。 ## [](#control_flow_if_else)`if else` `if`​ ステートメントは条件式を評価し、条件式が ​`true`​ を返した場合のみ、​`if`​ の下の値を返します。それ以外の場合、​`else`​ の下の式を返します。各 ​`if`​ 式に、対応する ​`else`​ 式が必要です。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`{ country : "FRANCE" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` 出力: { "currency": "EUR" } if-else 構文は、数学ステートメント、論理ステートメント、等価ステートメント、比較ステートメントなど、​`true`​ または ​`false`​ に評価されるすべての条件に対して指定できます。条件は、有効な入力に対してのみ適用されます。 次の DataWeave スクリプトは、次の条件ステートメントの結果に ​`if else`​ ステートメントを適用します。 - `ex1`​ の算術演算 `if else`​ ステートメントは、演算 ​`1 + 1 == 55`​ が true であれば ​`true`​ を返し、そうでなければ ​`false`​ を返します。 - `ex2`​ の等価演算 `if else`​ ステートメントは、指定されたインデックスが ​`1`​ であれば ​`1`​ を返し、​`1`​ でなければ文字列を返します。 - `ex3`​ の ​`isEmpty`​ 関数 `if else`​ ステートメントは、​`aRecord.bookId`​ に値が含まれているかどうかによって ​`"ID is empty"`​ または ​`"ID is not empty"`​ を返します。 - `firstInput`​ を反復処理する ​`ex4`​ のマッピング `if else`​ は、値が ​`101`​ と等しければ ​`bookId`​ の値を数値として返します。値が ​`101`​ と等しくなければ、指定された文字列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var aRecord = [ "bookId":"101", "title":"world history", "price":"19.99" ] output application/xml --- { examples: { ex1 : if (1 + 1 == 55) true else false, ex2 : if ([1,2,3,4][1] == 1) 1 else "value of index 1 is not 1", ex3 : if (isEmpty(aRecord.bookId)) "ID is empty" else "ID is not empty", ex4 : aRecord.bookId map (idValue) -> if (idValue as Number == 101) idValue as Number else "not 101" } } ``` 出力: false value of index 1 is not 1 ID is not empty 101 [「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators)​にも例が掲載されています。 ## [](#control_flow_else_if)`else if` `else if`​ を組み込むことで、if-else 構造内で複数の ​`else`​ 式をまとめてチェーニングできます。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`var myVar = { country : "UK" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "UK" } output application/json --- if (myVar.country =="USA") { currency: "USD" } else if (myVar.country =="UK") { currency: "GBP" } else { currency: "EUR" } ``` 出力 { "currency": "GBP" } 次の例も同様ですが、オブジェクトではなく配列を入力として取ります。スクリプトの本文では、​`do`​ 操作で ​`if else`​ ステートメントと ​`else if`​ ステートメントを使用して、​`hello`​ 変数に値を入力します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- ["Argentina", "USA", "Brazil"] map (country) -> do { var hello = if(country == "Argentina") "Hola" else if(country == "USA") "Hello" else if(country == "Brazil") "Ola" else "Sorry! We don't know $(country)'s language." --- "$(hello) DataWeave" } ``` 出力: \[ "Hola DataWeave", "Hello DataWeave", "Ola DataWeave" \] ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) # DataWeave のフローコントロールとスコープ操作 次の演算子を任意の DataWeave 式内で使用できます。 - [`do`](#control_flow_do)​ - [`if else`](#control_flow_if_else)​ - [`else if`](#control_flow_else_if) 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#control_flow_do)`do` `do`​ ステートメントはスコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​`---`​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。 この例では、スクリプトの本文から ​`myfun()`​ がコールされたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun myfun() = do { var name = "DataWeave" --- name } --- { result: myfun() } ``` この例では、スクリプトの本文から変数 ​`myVar`​ が参照されたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var myVar = do { var name = "DataWeave" --- name } --- { result: myVar } ``` どちらのスクリプトも次の出力を生成します。 出力: ```json { "result": "DataWeave" } ``` 次の例では、​`do`​ を使用して、​`test(p: String)`​ 関数に渡す文字列 (​`" Bar"`​) の先頭に文字列 ​`"Foo"`​ を追加します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun test(p: String) = do { var a = "Foo" ++ p --- a } --- { result: test(" Bar") } ``` 出力: ```json { "result": "Foo Bar" } ``` [「例: ローカル DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables#example_local_variable)​も参照してください。 ## [](#control_flow_if_else)`if else` `if`​ ステートメントは条件式を評価し、条件式が ​`true`​ を返した場合のみ、​`if`​ の下の値を返します。それ以外の場合、​`else`​ の下の式を返します。各 ​`if`​ 式に、対応する ​`else`​ 式が必要です。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`{ country : "FRANCE" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` 出力: { "currency": "EUR" } if-else 構文は、数学ステートメント、論理ステートメント、等価ステートメント、比較ステートメントなど、​`true`​ または ​`false`​ に評価されるすべての条件に対して指定できます。条件は、有効な入力に対してのみ適用されます。 次の DataWeave スクリプトは、次の条件ステートメントの結果に ​`if else`​ ステートメントを適用します。 - `ex1`​ の算術演算 `if else`​ ステートメントは、演算 ​`1 + 1 == 55`​ が true であれば ​`true`​ を返し、そうでなければ ​`false`​ を返します。 - `ex2`​ の等価演算 `if else`​ ステートメントは、指定されたインデックスが ​`1`​ であれば ​`1`​ を返し、​`1`​ でなければ文字列を返します。 - `ex3`​ の ​`isEmpty`​ 関数 `if else`​ ステートメントは、​`aRecord.bookId`​ に値が含まれているかどうかによって ​`"ID is empty"`​ または ​`"ID is not empty"`​ を返します。 - `firstInput`​ を反復処理する ​`ex4`​ のマッピング `if else`​ は、値が ​`101`​ と等しければ ​`bookId`​ の値を数値として返します。値が ​`101`​ と等しくなければ、指定された文字列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var aRecord = [ "bookId":"101", "title":"world history", "price":"19.99" ] output application/xml --- { examples: { ex1 : if (1 + 1 == 55) true else false, ex2 : if ([1,2,3,4][1] == 1) 1 else "value of index 1 is not 1", ex3 : if (isEmpty(aRecord.bookId)) "ID is empty" else "ID is not empty", ex4 : aRecord.bookId map (idValue) -> if (idValue as Number == 101) idValue as Number else "not 101" } } ``` 出力: false value of index 1 is not 1 ID is not empty 101 [「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators)​にも例が掲載されています。 ## [](#control_flow_else_if)`else if` `else if`​ を組み込むことで、if-else 構造内で複数の ​`else`​ 式をまとめてチェーニングできます。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`var myVar = { country : "UK" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "UK" } output application/json --- if (myVar.country =="USA") { currency: "USD" } else if (myVar.country =="UK") { currency: "GBP" } else { currency: "EUR" } ``` 出力 { "currency": "GBP" } 次の例も同様ですが、オブジェクトではなく配列を入力として取ります。スクリプトの本文では、​`do`​ 操作で ​`if else`​ ステートメントと ​`else if`​ ステートメントを使用して、​`hello`​ 変数に値を入力します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- ["Argentina", "USA", "Brazil"] map (country) -> do { var hello = if(country == "Argentina") "Hola" else if(country == "USA") "Hello" else if(country == "Brazil") "Ola" else "Sorry! We don't know $(country)'s language." --- "$(hello) DataWeave" } ``` 出力: \[ "Hola DataWeave", "Hello DataWeave", "Ola DataWeave" \] ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) # DataWeave のフローコントロールとスコープ操作 次の演算子を任意の DataWeave 式内で使用できます。 - [`do`](#control_flow_do) - [`if else`](#control_flow_if_else) - [`else if`](#control_flow_else_if) 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#control_flow_do)`do` `do`​ ステートメントはスコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​`---`​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。 この例では、スクリプトの本文から ​`myfun()`​ がコールされたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun myfun() = do { var name = "DataWeave" --- name } --- { result: myfun() } ``` この例では、スクリプトの本文から変数 ​`myVar`​ が参照されたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var myVar = do { var name = "DataWeave" --- name } --- { result: myVar } ``` どちらのスクリプトも次の出力を生成します。 出力: ```json { "result": "DataWeave" } ``` 次の例では、​`do`​ を使用して、​`test(p: String)`​ 関数に渡す文字列 (​`" Bar"`​) の先頭に文字列 ​`"Foo"`​ を追加します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun test(p: String) = do { var a = "Foo" ++ p --- a } --- { result: test(" Bar") } ``` 出力: ```json { "result": "Foo Bar" } ``` [「例: ローカル DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables#example_local_variable)​も参照してください。 ## [](#control_flow_if_else)`if else` `if`​ ステートメントは条件式を評価し、条件式が ​`true`​ を返した場合のみ、​`if`​ の下の値を返します。それ以外の場合、​`else`​ の下の式を返します。各 ​`if`​ 式に、対応する ​`else`​ 式が必要です。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`{ country : "FRANCE" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` 出力: { "currency": "EUR" } if-else 構文は、数学ステートメント、論理ステートメント、等価ステートメント、比較ステートメントなど、​`true`​ または ​`false`​ に評価されるすべての条件に対して指定できます。条件は、有効な入力に対してのみ適用されます。 次の DataWeave スクリプトは、次の条件ステートメントの結果に ​`if else`​ ステートメントを適用します。 - `ex1`​ の算術演算 `if else`​ ステートメントは、演算 ​`1 + 1 == 55`​ が true であれば ​`true`​ を返し、そうでなければ ​`false`​ を返します。 - `ex2`​ の等価演算 `if else`​ ステートメントは、指定されたインデックスが ​`1`​ であれば ​`1`​ を返し、​`1`​ でなければ文字列を返します。 - `ex3`​ の ​`isEmpty`​ 関数 `if else`​ ステートメントは、​`aRecord.bookId`​ に値が含まれているかどうかによって ​`"ID is empty"`​ または ​`"ID is not empty"`​ を返します。 - `firstInput`​ を反復処理する ​`ex4`​ のマッピング `if else`​ は、値が ​`101`​ と等しければ ​`bookId`​ の値を数値として返します。値が ​`101`​ と等しくなければ、指定された文字列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var aRecord = [ "bookId":"101", "title":"world history", "price":"19.99" ] output application/xml --- { examples: { ex1 : if (1 + 1 == 55) true else false, ex2 : if ([1,2,3,4][1] == 1) 1 else "value of index 1 is not 1", ex3 : if (isEmpty(aRecord.bookId)) "ID is empty" else "ID is not empty", ex4 : aRecord.bookId map (idValue) -> if (idValue as Number == 101) idValue as Number else "not 101" } } ``` 出力: false value of index 1 is not 1 ID is not empty 101 [「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators)​にも例が掲載されています。 ## [](#control_flow_else_if)`else if` `else if`​ を組み込むことで、if-else 構造内で複数の ​`else`​ 式をまとめてチェーニングできます。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`var myVar = { country : "UK" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "UK" } output application/json --- if (myVar.country =="USA") { currency: "USD" } else if (myVar.country =="UK") { currency: "GBP" } else { currency: "EUR" } ``` 出力 { "currency": "GBP" } 次の例も同様ですが、オブジェクトではなく配列を入力として取ります。スクリプトの本文では、​`do`​ 操作で ​`if else`​ ステートメントと ​`else if`​ ステートメントを使用して、​`hello`​ 変数に値を入力します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- ["Argentina", "USA", "Brazil"] map (country) -> do { var hello = if(country == "Argentina") "Hola" else if(country == "USA") "Hello" else if(country == "Brazil") "Ola" else "Sorry! We don't know $(country)'s language." --- "$(hello) DataWeave" } ``` 出力: \[ "Hola DataWeave", "Hello DataWeave", "Ola DataWeave" \] ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) # DataWeave のフローコントロールとスコープ操作 次の演算子を任意の DataWeave 式内で使用できます。 - [`do`](#control_flow_do) - [`if else`](#control_flow_if_else) - [`else if`](#control_flow_else_if) 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#control_flow_do)`do` `do`​ ステートメントはスコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​`---`​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。 この例では、スクリプトの本文から ​`myfun()`​ がコールされたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun myfun() = do { var name = "DataWeave" --- name } --- { result: myfun() } ``` この例では、スクリプトの本文から変数 ​`myVar`​ が参照されたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var myVar = do { var name = "DataWeave" --- name } --- { result: myVar } ``` どちらのスクリプトも次の出力を生成します。 出力: ```json { "result": "DataWeave" } ``` 次の例では、​`do`​ を使用して、​`test(p: String)`​ 関数に渡す文字列 (​`" Bar"`​) の先頭に文字列 ​`"Foo"`​ を追加します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun test(p: String) = do { var a = "Foo" ++ p --- a } --- { result: test(" Bar") } ``` 出力: ```json { "result": "Foo Bar" } ``` [「例: ローカル DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables#example_local_variable)​も参照してください。 ## [](#control_flow_if_else)`if else` `if`​ ステートメントは条件式を評価し、条件式が ​`true`​ を返した場合のみ、​`if`​ の下の値を返します。それ以外の場合、​`else`​ の下の式を返します。各 ​`if`​ 式に、対応する ​`else`​ 式が必要です。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`{ country : "FRANCE" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` 出力: { "currency": "EUR" } if-else 構文は、数学ステートメント、論理ステートメント、等価ステートメント、比較ステートメントなど、​`true`​ または ​`false`​ に評価されるすべての条件に対して指定できます。条件は、有効な入力に対してのみ適用されます。 次の DataWeave スクリプトは、次の条件ステートメントの結果に ​`if else`​ ステートメントを適用します。 - `ex1`​ の算術演算 `if else`​ ステートメントは、演算 ​`1 + 1 == 55`​ が true であれば ​`true`​ を返し、そうでなければ ​`false`​ を返します。 - `ex2`​ の等価演算 `if else`​ ステートメントは、指定されたインデックスが ​`1`​ であれば ​`1`​ を返し、​`1`​ でなければ文字列を返します。 - `ex3`​ の ​`isEmpty`​ 関数 `if else`​ ステートメントは、​`aRecord.bookId`​ に値が含まれているかどうかによって ​`"ID is empty"`​ または ​`"ID is not empty"`​ を返します。 - `firstInput`​ を反復処理する ​`ex4`​ のマッピング `if else`​ は、値が ​`101`​ と等しければ ​`bookId`​ の値を数値として返します。値が ​`101`​ と等しくなければ、指定された文字列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var aRecord = [ "bookId":"101", "title":"world history", "price":"19.99" ] output application/xml --- { examples: { ex1 : if (1 + 1 == 55) true else false, ex2 : if ([1,2,3,4][1] == 1) 1 else "value of index 1 is not 1", ex3 : if (isEmpty(aRecord.bookId)) "ID is empty" else "ID is not empty", ex4 : aRecord.bookId map (idValue) -> if (idValue as Number == 101) idValue as Number else "not 101" } } ``` 出力: false value of index 1 is not 1 ID is not empty 101 [「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators)​にも例が掲載されています。 ## [](#control_flow_else_if)`else if` `else if`​ を組み込むことで、if-else 構造内で複数の ​`else`​ 式をまとめてチェーニングできます。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`var myVar = { country : "UK" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "UK" } output application/json --- if (myVar.country =="USA") { currency: "USD" } else if (myVar.country =="UK") { currency: "GBP" } else { currency: "EUR" } ``` 出力 { "currency": "GBP" } 次の例も同様ですが、オブジェクトではなく配列を入力として取ります。スクリプトの本文では、​`do`​ 操作で ​`if else`​ ステートメントと ​`else if`​ ステートメントを使用して、​`hello`​ 変数に値を入力します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- ["Argentina", "USA", "Brazil"] map (country) -> do { var hello = if(country == "Argentina") "Hola" else if(country == "USA") "Hello" else if(country == "Brazil") "Ola" else "Sorry! We don't know $(country)'s language." --- "$(hello) DataWeave" } ``` 出力: \[ "Hola DataWeave", "Hello DataWeave", "Ola DataWeave" \] ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) # DataWeave のフローコントロールとスコープ操作 次の演算子を任意の DataWeave 式内で使用できます。 - [`do`](#control_flow_do) - [`if else`](#control_flow_if_else) - [`else if`](#control_flow_else_if) 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#control_flow_do)`do` `do`​ ステートメントはスコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​`---`​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。 この例では、スクリプトの本文から ​`myfun()`​ がコールされたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun myfun() = do { var name = "DataWeave" --- name } --- { result: myfun() } ``` この例では、スクリプトの本文から変数 ​`myVar`​ が参照されたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var myVar = do { var name = "DataWeave" --- name } --- { result: myVar } ``` どちらのスクリプトも次の出力を生成します。 出力: ```json { "result": "DataWeave" } ``` 次の例では、​`do`​ を使用して、​`test(p: String)`​ 関数に渡す文字列 (​`" Bar"`​) の先頭に文字列 ​`"Foo"`​ を追加します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun test(p: String) = do { var a = "Foo" ++ p --- a } --- { result: test(" Bar") } ``` 出力: ```json { "result": "Foo Bar" } ``` [「例: ローカル DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables#example_local_variable)​も参照してください。 ## [](#control_flow_if_else)`if else` `if`​ ステートメントは条件式を評価し、条件式が ​`true`​ を返した場合のみ、​`if`​ の下の値を返します。それ以外の場合、​`else`​ の下の式を返します。各 ​`if`​ 式に、対応する ​`else`​ 式が必要です。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`{ country : "FRANCE" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` 出力: { "currency": "EUR" } if-else 構文は、数学ステートメント、論理ステートメント、等価ステートメント、比較ステートメントなど、​`true`​ または ​`false`​ に評価されるすべての条件に対して指定できます。条件は、有効な入力に対してのみ適用されます。 次の DataWeave スクリプトは、次の条件ステートメントの結果に ​`if else`​ ステートメントを適用します。 - `ex1`​ の算術演算 `if else`​ ステートメントは、演算 ​`1 + 1 == 55`​ が true であれば ​`true`​ を返し、そうでなければ ​`false`​ を返します。 - `ex2`​ の等価演算 `if else`​ ステートメントは、指定されたインデックスが ​`1`​ であれば ​`1`​ を返し、​`1`​ でなければ文字列を返します。 - `ex3`​ の ​`isEmpty`​ 関数 `if else`​ ステートメントは、​`aRecord.bookId`​ に値が含まれているかどうかによって ​`"ID is empty"`​ または ​`"ID is not empty"`​ を返します。 - `firstInput`​ を反復処理する ​`ex4`​ のマッピング `if else`​ は、値が ​`101`​ と等しければ ​`bookId`​ の値を数値として返します。値が ​`101`​ と等しくなければ、指定された文字列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var aRecord = [ "bookId":"101", "title":"world history", "price":"19.99" ] output application/xml --- { examples: { ex1 : if (1 + 1 == 55) true else false, ex2 : if ([1,2,3,4][1] == 1) 1 else "value of index 1 is not 1", ex3 : if (isEmpty(aRecord.bookId)) "ID is empty" else "ID is not empty", ex4 : aRecord.bookId map (idValue) -> if (idValue as Number == 101) idValue as Number else "not 101" } } ``` 出力: false value of index 1 is not 1 ID is not empty 101 [「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators)​にも例が掲載されています。 ## [](#control_flow_else_if)`else if` `else if`​ を組み込むことで、if-else 構造内で複数の ​`else`​ 式をまとめてチェーニングできます。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`var myVar = { country : "UK" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "UK" } output application/json --- if (myVar.country =="USA") { currency: "USD" } else if (myVar.country =="UK") { currency: "GBP" } else { currency: "EUR" } ``` 出力 { "currency": "GBP" } 次の例も同様ですが、オブジェクトではなく配列を入力として取ります。スクリプトの本文では、​`do`​ 操作で ​`if else`​ ステートメントと ​`else if`​ ステートメントを使用して、​`hello`​ 変数に値を入力します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- ["Argentina", "USA", "Brazil"] map (country) -> do { var hello = if(country == "Argentina") "Hola" else if(country == "USA") "Hello" else if(country == "Brazil") "Ola" else "Sorry! We don't know $(country)'s language." --- "$(hello) DataWeave" } ``` 出力: \[ "Hola DataWeave", "Hello DataWeave", "Ola DataWeave" \] ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) # DataWeave のフローコントロールとスコープ操作 次の演算子を任意の DataWeave 式内で使用できます。 - [`do`](#control_flow_do) - [`if else`](#control_flow_if_else) - [`else if`](#control_flow_else_if) 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#control_flow_do)`do` `do`​ ステートメントはスコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​`---`​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。 この例では、スクリプトの本文から ​`myfun()`​ がコールされたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun myfun() = do { var name = "DataWeave" --- name } --- { result: myfun() } ``` この例では、スクリプトの本文から変数 ​`myVar`​ が参照されたときに、​`do`​ を使用して文字列 ​`"DataWeave"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var myVar = do { var name = "DataWeave" --- name } --- { result: myVar } ``` どちらのスクリプトも次の出力を生成します。 出力: ```json { "result": "DataWeave" } ``` 次の例では、​`do`​ を使用して、​`test(p: String)`​ 関数に渡す文字列 (​`" Bar"`​) の先頭に文字列 ​`"Foo"`​ を追加します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun test(p: String) = do { var a = "Foo" ++ p --- a } --- { result: test(" Bar") } ``` 出力: ```json { "result": "Foo Bar" } ``` [「例: ローカル DataWeave 変数」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables#example_local_variable)​も参照してください。 ## [](#control_flow_if_else)`if else` `if`​ ステートメントは条件式を評価し、条件式が ​`true`​ を返した場合のみ、​`if`​ の下の値を返します。それ以外の場合、​`else`​ の下の式を返します。各 ​`if`​ 式に、対応する ​`else`​ 式が必要です。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`{ country : "FRANCE" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` 出力: { "currency": "EUR" } if-else 構文は、数学ステートメント、論理ステートメント、等価ステートメント、比較ステートメントなど、​`true`​ または ​`false`​ に評価されるすべての条件に対して指定できます。条件は、有効な入力に対してのみ適用されます。 次の DataWeave スクリプトは、次の条件ステートメントの結果に ​`if else`​ ステートメントを適用します。 - `ex1`​ の算術演算 `if else`​ ステートメントは、演算 ​`1 + 1 == 55`​ が true であれば ​`true`​ を返し、そうでなければ ​`false`​ を返します。 - `ex2`​ の等価演算 `if else`​ ステートメントは、指定されたインデックスが ​`1`​ であれば ​`1`​ を返し、​`1`​ でなければ文字列を返します。 - `ex3`​ の ​`isEmpty`​ 関数 `if else`​ ステートメントは、​`aRecord.bookId`​ に値が含まれているかどうかによって ​`"ID is empty"`​ または ​`"ID is not empty"`​ を返します。 - `firstInput`​ を反復処理する ​`ex4`​ のマッピング `if else`​ は、値が ​`101`​ と等しければ ​`bookId`​ の値を数値として返します。値が ​`101`​ と等しくなければ、指定された文字列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var aRecord = [ "bookId":"101", "title":"world history", "price":"19.99" ] output application/xml --- { examples: { ex1 : if (1 + 1 == 55) true else false, ex2 : if ([1,2,3,4][1] == 1) 1 else "value of index 1 is not 1", ex3 : if (isEmpty(aRecord.bookId)) "ID is empty" else "ID is not empty", ex4 : aRecord.bookId map (idValue) -> if (idValue as Number == 101) idValue as Number else "not 101" } } ``` 出力: false value of index 1 is not 1 ID is not empty 101 [「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators)​にも例が掲載されています。 ## [](#control_flow_else_if)`else if` `else if`​ を組み込むことで、if-else 構造内で複数の ​`else`​ 式をまとめてチェーニングできます。 次の例では、ヘッダーで ​`myVar`​ 変数によって定義された入力 ​`var myVar = { country : "UK" }`​ を使用します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = { country : "UK" } output application/json --- if (myVar.country =="USA") { currency: "USD" } else if (myVar.country =="UK") { currency: "GBP" } else { currency: "EUR" } ``` 出力 { "currency": "GBP" } 次の例も同様ですが、オブジェクトではなく配列を入力として取ります。スクリプトの本文では、​`do`​ 操作で ​`if else`​ ステートメントと ​`else if`​ ステートメントを使用して、​`hello`​ 変数に値を入力します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- ["Argentina", "USA", "Brazil"] map (country) -> do { var hello = if(country == "Argentina") "Hola" else if(country == "USA") "Hello" else if(country == "Brazil") "Ola" else "Sorry! We don't know $(country)'s language." --- "$(hello) DataWeave" } ``` 出力: \[ "Hola DataWeave", "Hello DataWeave", "Ola DataWeave" \] ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) # DataWeave の例 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
例 説明

データの抽出​

Mule メッセージなどのデータソースの値を抽出する一般的なセレクター式を示します。

XML 要素の選択​

単一値の DataWeave セレクター (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定​

デフォルト値を設定する一般的な方法を示します。

​リーダーとライターの設定プロパティの設定​

​application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

​XML から JSON への変換​

セレクターを使用して、基本的な形式変換を実行します。関数は使用しません。

​スクリプトの出力 MIME タイプの変更​

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

​データのマップ​

​map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

​配列のマップとフラット化​

​flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

​オブジェクトのマップ​

​mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

​オブジェクトキーのマップ​

​mapObject​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。

​配列内のオブジェクトのマップ​

複数値セレクターを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

​定義に基づいた動的なマップ​

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

​Excel (XLSX) ファイルのデータの参照​

​filter​ を使用して、特定の値を含む行を返します。

​CSV ファイルのデータの参照​

​filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。

​Base64 のデコードとエンコード​

ファイルストリームを Base64 に変換し、Base64 文字列をファイルストリームに変換します。入力および出力として PDF ファイルを使用します。

​DataWeave を使用した Java メソッドのコール​

Mule プロジェクトの Java クラスから Java メソッドをコールします。

​キーの名前の変更​

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

​存在する項目の出力​

​map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

​型に応じた形式​

​mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

​項目の再グループ化​

​groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

​複数の配列要素のグループ化​

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

​上位要素の取得​

​groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

​項目の値の変更​

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

​出力からの項目の除外​

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

​定数ディレクティブの使用​

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

​カスタム追加関数の定義​

​accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

​リスト内のデータをフラット化する関数の定義​

​reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

​フラット化された配列要素​

​flatten​、オブジェクトコンストラクター括弧 (​{}​)、およびセレクターを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクターをキーに対して使用して、フラット化されたリストから値を選択します。

​正規表現の使用​

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

​自己終了 XML タグの出力​

​inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

​XML タグへの属性の挿入​

​@(key:value)​ 構文を使用して、XML 属性を作成します。

​指定した XML 属性の削除​

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

​XML 属性を渡す​

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

​XML 名前空間を含める​

複数の XML 名前空間を定義し、各タグでそれらを参照します。

​指定したキー-値ペアを含むオブジェクトの削除​

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​filter​ と ​contains​ および ​not​ 演算子を使用します。

​複数の入力の参照​

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

​個別のオブジェクトの項目のマージ​

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

​日付の解析​

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

​日付の加算と減算​

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

​タイムゾーンの変更​

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

​日付と時刻の書式設定​

​uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

​マルチパートデータの操作​

​mapObject​ を使用してマルチパートペイロードを反復処理し、各パートからデータを抽出します。また、​read​ と ​boundary​ 値を使用してマルチパートコンテンツを読み取ります。

​関数を使用したリストの条件付き削減​

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

​関数を引数として渡す​

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

## [](#関連情報)関連情報 - [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.3/) - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions) # DataWeave の例 以下の DataWeave の例は、データ抽出および変換の一般的なアプローチを示しています。データ変換方法の DataWeave コード例や、DataWeave 変換を実装する Mule アプリケーションの例もあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-コード例)DataWeave コード例 これらの例では、スタンドアロンの DataWeave を使用してデータを抽出および変換する方法を説明します。
例 説明

データの抽出​

Mule メッセージなどのデータソースの値を抽出する一般的なセレクター式を示します。

XML 要素の選択​

単一値の DataWeave セレクター (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定​

デフォルト値を設定する一般的な方法を示します。

​リーダーとライターの設定プロパティの設定​

​application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

​XML から JSON への変換​

セレクターを使用して、基本的な形式変換を実行します。関数は使用しません。

​データのマップ​

​map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

​配列のマップとフラット化​

​flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

​オブジェクトのマップ​

​mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

​オブジェクトキーのマップ​

​mapObject​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。

​配列内のオブジェクトのマップ​

複数値セレクターを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

​定義に基づいた動的なマップ​

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

​キーの名前の変更​

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

​存在する項目の出力​

​map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

​型に応じた形式​

​mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

​項目の再グループ化​

​groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

​複数の配列要素のグループ化​

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

​上位要素の取得​

​groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

​項目の値の変更​

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

​出力からの項目の除外​

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

​定数ディレクティブの使用​

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

​カスタム追加関数の定義​

​accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

​リスト内のデータをフラット化する関数の定義​

​reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

​フラット化された配列要素​

​flatten​、オブジェクトコンストラクター括弧 (​{}​)、およびセレクターを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクターをキーに対して使用して、フラット化されたリストから値を選択します。

​正規表現の使用​

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

​自己終了 XML タグの出力​

​inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

​XML タグへの属性の挿入​

​@(key:value)​ 構文を使用して、XML 属性を作成します。

​指定した XML 属性の削除​

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

​XML 属性を渡す​

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

​XML 名前空間を含める​

複数の XML 名前空間を定義し、各タグでそれらを参照します。

​指定したキー-値ペアを含むオブジェクトの削除​

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​filter​ と ​contains​ および ​not​ 演算子を使用します。

​複数の入力の参照​

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

​個別のオブジェクトの項目のマージ​

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

​日付の解析​

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

​日付の加算と減算​

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

​タイムゾーンの変更​

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

​日付と時刻の書式設定​

​uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

​マルチパートデータの操作​

​mapObject​ を使用してマルチパートペイロードを反復処理し、各パートからデータを抽出します。また、​read​ と ​boundary​ 値を使用してマルチパートコンテンツを読み取ります。

​関数を使用したリストの条件付き削減​

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

​関数を引数として渡す​

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

## [](#mulesoft-アプリケーション内の-dataweave-コードの例)MuleSoft アプリケーション内の DataWeave コードの例 これらの例では、MuleSoft アプリケーションで DataWeave を使用してデータを抽出および変換する方法を説明します
例 説明

​スクリプトの出力 MIME タイプの変更​

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

​Excel (XLSX) ファイルのデータの参照​

​filter​ を使用して、特定の値を含む行を返します。

​CSV ファイルのデータの参照​

​filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。

​Base64 のデコードとエンコード​

ファイルストリームを Base64 に変換し、Base64 文字列をファイルストリームに変換します。入力および出力として PDF ファイルを使用します。

​DataWeave を使用した Java メソッドのコール​

Mule プロジェクトの Java クラスから Java メソッドをコールします。

​フラットファイルの読み取りと書き込み​

Mule アプリケーションで DataWeave を使用してフラットファイルの読み取りと書き込みを行います。

​コネクタを介したリーダープロパティの使用​

Connector 操作を介してリーダープロパティを使用します。

​動的ライタープロパティの使用​

Mule 変数を設定値として使用します。

​pluck 関数を使用したキー/値ペアの抽出 ​

DataWeave ​pluck​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。

## [](#関連情報)関連情報 - [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.4/) - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions) # DataWeave の例 以下の DataWeave の例は、データ抽出および変換の一般的なアプローチを示しています。データ変換方法の DataWeave コード例や、DataWeave 変換を実装する Mule アプリケーションの例もあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-コード例)DataWeave コード例 これらの例では、スタンドアロンの DataWeave を使用してデータを抽出および変換する方法を説明します。
例 説明

データの抽出

Mule メッセージなどのデータソースの値を抽出する一般的なセレクター式を示します。

XML 要素の選択

単一値の DataWeave セレクター (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定

デフォルト値を設定する一般的な方法を示します。

リーダーとライターの設定プロパティの設定

application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

XML から JSON への変換

セレクターを使用して、基本的な形式変換を実行します。関数は使用しません。

データのマップ

map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

配列のマップとフラット化

flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

オブジェクトのマップ

mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

オブジェクトキーのマップ

mapObject​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。

配列内のオブジェクトのマップ

複数値セレクターを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

定義に基づいた動的なマップ

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

キーの名前の変更

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

存在する項目の出力

map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

型に応じた形式

mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

項目の再グループ化

groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

複数の配列要素のグループ化

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

上位要素の取得

groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

項目の値の変更

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

出力からの項目の除外

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

定数ディレクティブの使用

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

カスタム追加関数の定義

accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

リスト内のデータをフラット化する関数の定義

reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

フラット化された配列要素

flatten​、オブジェクトコンストラクター括弧 (​{}​)、およびセレクターを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクターをキーに対して使用して、フラット化されたリストから値を選択します。

正規表現の使用

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

自己終了 XML タグの出力

inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

XML タグへの属性の挿入

@(key:value)​ 構文を使用して、XML 属性を作成します。

指定した XML 属性の削除

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

XML 属性を渡す

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

XML 名前空間を含める

複数の XML 名前空間を定義し、各タグでそれらを参照します。

指定したキー-値ペアを含むオブジェクトの削除

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​filter​ と ​contains​ および ​not​ 演算子を使用します。

複数の入力の参照

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

個別のオブジェクトの項目のマージ

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

日付の解析

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

日付の加算と減算

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

タイムゾーンの変更

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

日付と時刻の書式設定

uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

マルチパートデータの操作

mapObject​ を使用してマルチパートペイロードを反復処理し、各パートからデータを抽出します。また、​read​ と ​boundary​ 値を使用してマルチパートコンテンツを読み取ります。

関数を使用したリストの条件付き削減

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

関数を引数として渡す

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

## [](#mulesoft-アプリケーション内の-dataweave-コードの例)MuleSoft アプリケーション内の DataWeave コードの例 これらの例では、MuleSoft アプリケーションで DataWeave を使用してデータを抽出および変換する方法を説明します
例 説明

スクリプトの出力 MIME タイプの変更

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

Excel (XLSX) ファイルのデータの参照

filter​ を使用して、特定の値を含む行を返します。

CSV ファイルのデータの参照

filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。

Base64 のデコードとエンコード

ファイルストリームを Base64 に変換し、Base64 文字列をファイルストリームに変換します。入力および出力として PDF ファイルを使用します。

DataWeave を使用した Java メソッドのコール

Mule プロジェクトの Java クラスから Java メソッドをコールします。

フラットファイルの読み取りと書き込み

Mule アプリケーションで DataWeave を使用してフラットファイルの読み取りと書き込みを行います。

コネクタを介したリーダープロパティの使用

Connector 操作を介してリーダープロパティを使用します。

動的ライタープロパティの使用

Mule 変数を設定値として使用します。

pluck 関数を使用したキー/値ペアの抽出

DataWeave ​pluck​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。

## [](#関連情報)関連情報 - [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.5/) - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions) # DataWeave の例 以下の DataWeave の例は、データ抽出および変換の一般的なアプローチを示しています。データ変換方法の DataWeave コード例や、DataWeave 変換を実装する Mule アプリケーションの例もあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-コード例)DataWeave コード例 これらの例では、スタンドアロンの DataWeave を使用してデータを抽出および変換する方法を説明します。
例 説明

データの抽出

Mule メッセージなどのデータソースの値を抽出する一般的なセレクター式を示します。

XML 要素の選択

単一値の DataWeave セレクター (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定

デフォルト値を設定する一般的な方法を示します。

リーダーとライターの設定プロパティの設定

application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

XML から JSON への変換

セレクターを使用して、基本的な形式変換を実行します。関数は使用しません。

データのマップ

map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

配列のマップとフラット化

flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

オブジェクトのマップ

mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

オブジェクトキーのマップ

mapObject​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。

配列内のオブジェクトのマップ

複数値セレクターを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

定義に基づいた動的なマップ

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

キーの名前の変更

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

存在する項目の出力

map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

型に応じた形式

mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

項目の再グループ化

groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

複数の配列要素のグループ化

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

上位要素の取得

groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

項目の値の変更

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

出力からの項目の除外

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

定数ディレクティブの使用

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

カスタム追加関数の定義

accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

リスト内のデータをフラット化する関数の定義

reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

フラット化された配列要素

flatten​、オブジェクトコンストラクター括弧 (​{}​)、およびセレクターを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクターをキーに対して使用して、フラット化されたリストから値を選択します。

正規表現の使用

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

自己終了 XML タグの出力

inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

XML タグへの属性の挿入

@(key:value)​ 構文を使用して、XML 属性を作成します。

指定した XML 属性の削除

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

XML 属性を渡す

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

XML 名前空間を含める

複数の XML 名前空間を定義し、各タグでそれらを参照します。

指定したキー-値ペアを含むオブジェクトの削除

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​filter​ と ​contains​ および ​not​ 演算子を使用します。

複数の入力の参照

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

個別のオブジェクトの項目のマージ

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

日付の解析

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

日付の加算と減算

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

タイムゾーンの変更

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

日付と時刻の書式設定

uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

マルチパートデータの操作

mapObject​ を使用してマルチパートペイロードを反復処理し、各パートからデータを抽出します。また、​read​ と ​boundary​ 値を使用してマルチパートコンテンツを読み取ります。

関数を使用したリストの条件付き削減

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

関数を引数として渡す

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

## [](#mulesoft-アプリケーション内の-dataweave-コードの例)MuleSoft アプリケーション内の DataWeave コードの例 これらの例では、MuleSoft アプリケーションで DataWeave を使用してデータを抽出および変換する方法を説明します
例 説明

スクリプトの出力 MIME タイプの変更

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

Excel (XLSX) ファイルのデータの参照

filter​ を使用して、特定の値を含む行を返します。

CSV ファイルのデータの参照

filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。

Base64 のデコードとエンコード

ファイルストリームを Base64 に変換し、Base64 文字列をファイルストリームに変換します。入力および出力として PDF ファイルを使用します。

DataWeave を使用した Java メソッドのコール

Mule プロジェクトの Java クラスから Java メソッドをコールします。

フラットファイルの読み取りと書き込み

Mule アプリケーションで DataWeave を使用してフラットファイルの読み取りと書き込みを行います。

コネクタを介したリーダープロパティの使用

Connector 操作を介してリーダープロパティを使用します。

動的ライタープロパティの使用

Mule 変数を設定値として使用します。

pluck 関数を使用したキー/値ペアの抽出

DataWeave ​pluck​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。

## [](#関連情報)関連情報 - [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.6/) - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions) # DataWeave の例 以下の DataWeave の例は、データ抽出および変換の一般的なアプローチを示しています。データ変換方法の DataWeave コード例や、DataWeave 変換を実装する Mule アプリケーションの例もあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-コード例)DataWeave コード例 これらの例では、スタンドアロンの DataWeave を使用してデータを抽出および変換する方法を説明します。
例 説明

データの抽出

Mule メッセージなどのデータソースの値を抽出する一般的なセレクター式を示します。

XML 要素の選択

単一値の DataWeave セレクター (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定

デフォルト値を設定する一般的な方法を示します。

リーダーとライターの設定プロパティの設定

application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

XML から JSON への変換

セレクターを使用して、基本的な形式変換を実行します。関数は使用しません。

データのマップ

map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

配列のマップとフラット化

flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

オブジェクトのマップ

mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

オブジェクトキーのマップ

mapObject​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。

配列内のオブジェクトのマップ

複数値セレクターを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

定義に基づいた動的なマップ

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

キーの名前の変更

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

存在する項目の出力

map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

型に応じた形式

mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

項目の再グループ化

groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

複数の配列要素のグループ化

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

上位要素の取得

groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

項目の値の変更

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

出力からの項目の除外

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

定数ディレクティブの使用

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

カスタム追加関数の定義

accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

リスト内のデータをフラット化する関数の定義

reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

フラット化された配列要素

flatten​、オブジェクトコンストラクター括弧 (​{}​)、およびセレクターを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクターをキーに対して使用して、フラット化されたリストから値を選択します。

正規表現の使用

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

自己終了 XML タグの出力

inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

XML タグへの属性の挿入

@(key:value)​ 構文を使用して、XML 属性を作成します。

指定した XML 属性の削除

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

XML 属性を渡す

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

XML 名前空間を含める

複数の XML 名前空間を定義し、各タグでそれらを参照します。

指定したキー-値ペアを含むオブジェクトの削除

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​filter​ と ​contains​ および ​not​ 演算子を使用します。

複数の入力の参照

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

個別のオブジェクトの項目のマージ

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

日付の解析

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

日付の加算と減算

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

タイムゾーンの変更

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

日付と時刻の書式設定

uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

マルチパートデータの操作

mapObject​ を使用してマルチパートペイロードを反復処理し、各パートからデータを抽出します。また、​read​ と ​boundary​ 値を使用してマルチパートコンテンツを読み取ります。

関数を使用したリストの条件付き削減

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

関数を引数として渡す

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

## [](#mulesoft-アプリケーション内の-dataweave-コードの例)MuleSoft アプリケーション内の DataWeave コードの例 これらの例では、MuleSoft アプリケーションで DataWeave を使用してデータを抽出および変換する方法を説明します
例 説明

スクリプトの出力 MIME タイプの変更

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

Excel (XLSX) ファイルのデータの参照

filter​ を使用して、特定の値を含む行を返します。

CSV ファイルのデータの参照

filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。

Base64 のデコードとエンコード

ファイルストリームを Base64 に変換し、Base64 文字列をファイルストリームに変換します。入力および出力として PDF ファイルを使用します。

DataWeave を使用した Java メソッドのコール

Mule プロジェクトの Java クラスから Java メソッドをコールします。

フラットファイルの読み取りと書き込み

Mule アプリケーションで DataWeave を使用してフラットファイルの読み取りと書き込みを行います。

コネクタを介したリーダープロパティの使用

Connector 操作を介してリーダープロパティを使用します。

動的ライタープロパティの使用

Mule 変数を設定値として使用します。

pluck 関数を使用したキー/値ペアの抽出

DataWeave ​pluck​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。

## [](#関連情報)関連情報 - [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.7/) - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions) # DataWeave の例 以下の DataWeave の例は、データ抽出および変換の一般的なアプローチを示しています。データ変換方法の DataWeave コード例や、DataWeave 変換を実装する Mule アプリケーションの例もあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-コード例)DataWeave コード例 これらの例では、スタンドアロンの DataWeave を使用してデータを抽出および変換する方法を説明します。
例 説明

データの抽出

Mule メッセージなどのデータソースの値を抽出する一般的なセレクター式を示します。

XML 要素の選択

単一値の DataWeave セレクター (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定

デフォルト値を設定する一般的な方法を示します。

リーダーとライターの設定プロパティの設定

application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

XML から JSON への変換

セレクターを使用して、基本的な形式変換を実行します。関数は使用しません。

データのマップ

map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

配列のマップとフラット化

flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

オブジェクトのマップ

mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

オブジェクトキーのマップ

mapObject​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。

配列内のオブジェクトのマップ

複数値セレクターを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

定義に基づいた動的なマップ

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

キーの名前の変更

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

存在する項目の出力

map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

型に応じた形式

mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

項目の再グループ化

groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

複数の配列要素のグループ化

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

上位要素の取得

groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

項目の値の変更

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

出力からの項目の除外

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

定数ディレクティブの使用

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

カスタム追加関数の定義

accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

リスト内のデータをフラット化する関数の定義

reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

フラット化された配列要素

flatten​、オブジェクトコンストラクター括弧 (​{}​)、およびセレクターを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクターをキーに対して使用して、フラット化されたリストから値を選択します。

正規表現の使用

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

自己終了 XML タグの出力

inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

XML タグへの属性の挿入

@(key:value)​ 構文を使用して、XML 属性を作成します。

指定した XML 属性の削除

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

XML 属性を渡す

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

XML 名前空間を含める

複数の XML 名前空間を定義し、各タグでそれらを参照します。

指定したキー-値ペアを含むオブジェクトの削除

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​filter​ と ​contains​ および ​not​ 演算子を使用します。

複数の入力の参照

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

個別のオブジェクトの項目のマージ

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

日付の解析

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

日付の加算と減算

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

タイムゾーンの変更

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

日付と時刻の書式設定

uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

マルチパートデータの操作

mapObject​ を使用してマルチパートペイロードを反復処理し、各パートからデータを抽出します。また、​read​ と ​boundary​ 値を使用してマルチパートコンテンツを読み取ります。

関数を使用したリストの条件付き削減

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

関数を引数として渡す

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

## [](#mulesoft-アプリケーション内の-dataweave-コードの例)MuleSoft アプリケーション内の DataWeave コードの例 これらの例では、MuleSoft アプリケーションで DataWeave を使用してデータを抽出および変換する方法を説明します。
例 説明

スクリプトの出力 MIME タイプの変更

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

Excel (XLSX) ファイルのデータの参照

filter​ を使用して、特定の値を含む行を返します。

CSV ファイルのデータの参照

filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出された通話コードごとに国コードを返します。

Base64 のデコードとエンコード

ファイルストリームを Base64 に変換し、Base64 文字列をファイルストリームに変換します。入力および出力として PDF ファイルを使用します。

DataWeave を使用した Java メソッドのコール

Mule プロジェクトの Java クラスから Java メソッドをコールします。

フラットファイルの読み取りと書き込み

Mule アプリケーションで DataWeave を使用してフラットファイルの読み取りと書き込みを行います。

コネクタを介したリーダープロパティの使用

Connector 操作を介してリーダープロパティを使用します。

動的ライタープロパティの使用

Mule 変数を設定値として使用します。

pluck 関数を使用したキー/値ペアの抽出

DataWeave ​pluck​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。

## [](#関連情報)関連情報 - [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.8/) - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction) - [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions) # DataWeave の新機能 DataWeave 2.4 は Mule 4.4 にバンドルされています。DataWeave の 2.4 バージョンでは次の機能が導入されます。 - メモリ量を超える文字列を自動的に読み取る機能。インデックス付けされたリーダーの戦略を使用し、サイズが 1.5 MB を超える文字列を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。関連するリーダープロパティは ​`com.mulesoft.dw.max_memory_allocation`​ と ​`com.mulesoft.dw.buffered_char_sequence.enabled`​ です。​[「DataWeave のインデックス付きリーダー」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-indexed-readers#large-strings-management)​を参照してください。 - データ形式を操作する新しいリーダープロパティとライタープロパティ。たとえば、XML ライターでは、ルートレベルで名前空間を定義できるようになりました。 - 多くの新しいモジュール、関数、型、アノテーション、変数。一部は実験的に導入されたものであり、今後のリリースで変更される可能性があります。 - 多くの関数が、​`null`​ 値を処理する新しいヘルパー関数を導入するためにオーバーロードされます。 ドキュメントの変更により、関数シグネチャーがより詳細に説明され、関数が ​`dw::Core`​、​`dw::core::Strings`​、​`dw::util::Math`​ などのモジュール名別に整理されるようになりました。 DataWeave 2.4 は Mule 4.4 にバンドルされています。Mule 4.4 リリースについての詳細は、​[「Mule 4.4 の新機能」](https://docs.mulesoft.com/jp/mule-runtime/4.4/whats-new-in-mule)​を参照してください。 ## [](#データ形式の新しいプロパティ)データ形式の新しいプロパティ DataWeave では、次のリーダープロパティとライタープロパティが導入されています。 - DataWeave (dw) リーダープロパティ: `privileges`​ を使用すれば、​`'Resources,Properties'`​ など、形式で使用する権限のカンマ区切りリストを提供できます。 - Excel (XLSX) リーダープロパティ: `tableLimit`​ を使用すれば、各行の最後の列の位置を設定できます。 - YAML ライタープロパティ: `writeDeclaration`​ を使用すれば、ヘッダー宣言を記述できます。 - XML ライタープロパティ: `defaultNamespace`​ では出力 XML のデフォルトの名前空間が指定され、​`writeDeclaredNamespaces`​ では XML のルート要素で宣言する名前空間がマークされます。 ## [](#新しい-dataweave-の関数モジュールと機能)新しい DataWeave の関数モジュールと機能 新しい DataWeave のモジュールと機能: - [dw::Core](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core)​ では、新しい関数とアノテーションが導入されています。 - [indexOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-indexof)​ - [lastIndexOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-lastindexof)​ - [onNull](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-onnull)​ - [then](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-then)​ - [Core Annotations](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-annotations)​ では、多数の新しいアノテーションが導入されています。 - [dw::core::Dates](https://docs.mulesoft.com/jp/dataweave/2.4/dw-dates)​ は Date (日付) 型を作成して操作するための関数と型が含まれる新しいモジュールです (たとえば、​`today`​ 関数)。 - [dw::core::Strings](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings)​ では新しい関数が導入されています。 - [collapse](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-collapse)​ - [countCharactersBy](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-countcharactersby)​ - [countMatches](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-countmatches)​ - [everyCharacter](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-everycharacter)​ - [first](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-first)​ - [hammingDistance](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-hammingdistance)​ - [last](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-last)​ - [levenshteinDistance](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-levenshteindistance)​ - [lines](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-lines)​ - [mapString](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-mapstring)​ - [remove](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-remove)​ - [replaceAll](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-replaceall)​ - [reverse](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-reverse)​ - [someCharacter](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-somecharacter)​ - [substring](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-substring)​ - [substringBy](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-substringby)​ - [substringEvery](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-substringevery)​ - [words](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings-functions-words)​ - [dw::util::Coercions](https://docs.mulesoft.com/jp/dataweave/2.4/dw-coercions)​ は日付型の変換を簡略化するための関数と型が含まれる新しい DataWeave モジュールです (たとえば、​`toString`​ 関数)。 - [dw::util::Math](https://docs.mulesoft.com/jp/dataweave/2.4/dw-math)​ は数学関数を提供する関数と変数が含まれる新しい DataWeave モジュールです (たとえば、​`sin`​ 関数)。 - [dw::util::Periods](https://docs.mulesoft.com/jp/dataweave/2.4/dw-periods)​ は Periods (期間) の作成を簡略化するための関数と型が含まれる新しい DataWeave モジュールです (たとえば、​`days`​ 関数)。 - [dw::util::Tree](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree)​ では新しい関数が導入されています。 - [filterArrayLeafs](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-functions-filterarrayleafs)​ - [filterObjectLeafs](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-functions-filterobjectleafs)​ - [filterTree](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-functions-filtertree)​ - [isArrayType](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-functions-isarraytype)​ - [isAttributeType](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-functions-isattributetype)​ - [isObjectType](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-functions-isobjecttype)​ - [dw::util::Values](https://docs.mulesoft.com/jp/dataweave/2.4/dw-values-types)​ では新しい型である ​`UpdaterValueProvider`​ が用意されています。 # DataWeave の概要 Unresolved include directive in modules/ROOT/pages/index.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] - DataWeave についての詳細は、​[言語ガイド](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-guide)​を参照してください。 - DataWeave の演算子および関数についてのリファレンス情報は、​[リファレンスガイド](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions)​を参照してください。 - 一般的な変換シナリオを解決するサンプルのスクリプトを確認するには、​[「DataWeave examples (DataWeave の例)」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook)​にアクセスしてください。 - DataWeave スクリプトを対話的に試すには、 [DataWeave プレイグラウンド](https://developer.mulesoft.com/learn/dataweave/)​にアクセスしてください。 - DataWeave for Mule Runtime Engine (Mule) バージョン 4.4 以降の使用を開始するには、​[クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-quickstart)​を参照してください。 ## [](#互換性)互換性 This table specifies which version of DataWeave is bundled with each Mule runtime engine release:
Mule Version DataWeave Version

4.13

2.13

4.12

2.12

4.11

2.11

4.10

2.10

4.9

2.9

4.8

2.8

4.7

2.7

4.6

2.6

4.5

2.5

4.4

2.4

4.3

2.3

4.2

2.2

4.1

2.1

3.9

1.2

3.8

1.1

3.7

1.0

# DataWeave の演算子 DataWeave バージョン 2 では、数学演算子、等価演算子、さらに prepend、append、update などの演算子など、いくつかの演算子をサポートしています。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの​[「DataWeave の演算子」](#3.9@mule-runtime::dataweave-operators.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 ## [](#数学演算子)数学演算子 DataWeave バージョン 2 は、ほとんどの一般的な数学演算子をサポートしています。
演算子 説明

+

加算。

-

減算。

*

乗算。

/

除算。

`(-)`​ および ​`(+)`​ 演算子では、数値の操作に加えて、配列、オブジェクト、日付など、複雑なデータ構造も操作できます。 次の例では、さまざまなデータ型で数学演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "mathOperators" : [ { "2 + 2" : (2 + 2) }, { "2 - 2" : (2 - 2) }, { "2 * 2" : (2 * 2) }, { "2 / 2" : (2 / 2) }, { "[1,2,3] - 1 + 4" : [1,2,3] - 1 + 4}, { "{a:1, b:2, c:3} - 'a' " : {a:1, b:2, c:3} - "a"}, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|" : |2021-03-02T10:39:59| - |P1D| + |PT3H|} ] } ``` 出力 ```json { "mathOperators": [ { "2 + 2": 4 }, { "2 - 2": 0 }, { "2 * 2": 4 }, { "2 / 2": 1 }, { "[1,2,3] - 1 + 4": [2,3,4] }, { "{a:1, b:2, c:3} - 'a' ": {"b": 2, "c": 3} }, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|": "2021-03-01T13:39:59" }] } ``` いくつかの DataWeave 関数は数値を操作します。たとえば、​[sum](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-sum)​、​[mod](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-mod)​ (剰余)、​[avg](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-abs)​ (平均) などがあります。 ## [](#等価演算子と比較演算子)等価演算子と比較演算子 DataWeave バージョン 2 は、次の等価演算子と比較演算子をサポートしています。
演算子 説明

<

次の値より小さい。

>

次の値より大きい。

<=

次の値以下。

>=

次の値以上。

==

次の値と等しい。

~=

値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

[論理演算子](#logical_operators)​ ​`not`​ を使用することで、これらの演算子を否定することができます。 次の例では、比較演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "relational" : [ { "1 < 1" : (1 < 1) }, { "1 > 2" : (1 > 2) }, { "1 <= 1" : (1 <= 1) }, { "1 >= 1" : (1 >= 1) } ] } ``` 出力 ```json { "relational": [ { "(1 < 1)": false }, { "(1 > 2)": false }, { "(1 <= 1)": true }, { "(1 >= 1)": true } ] } ``` 比較演算子のオペランドの型が異なる場合は、DataWeave は右側のオペランドを左側のオペランドの方に強制変換します。 たとえば、式 ​`"123" > 12`​ では、​`12`​ (数値型) が ​`"12"`​ (文字列型) に強制変換され、各文字列値が辞書的順序で比較されます。 式 ​`123 > "12"`​ では、文字列値 ​`"12"`​ が数値 ​`12`​ に強制変換され、数値が比較されます。 次の例では、等価演算子を使用しています。 ソース ```dataweave %dw 2.0 output application/dw --- { "equality" : [ (1 == 1), (1 == 2), ("true" == true), ("true" ~= true), (['true'] ~= [true]), ('1' ~= 1) ] } ``` 出力 ```text { equality: [ true, false, false, true, true, true ] } ``` ## [](#logical_operators)論理演算子 DataWeave バージョン 2 は、次の論理演算子をサポートしています。
演算子 説明

not

入力の結果を否定します。​!​ も参照してください。

!

入力の結果を否定します。​not​ も参照してください。​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。

and

すべての入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

or

いずれかの入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

not​ と ​!​ のセマンティクスは同じですが、優先順位は異なります。 not true or true​ は ​not (true or true)​ として実行されるため ​false​ を返しますが、​!true or true​ は ​true​ を返します。​!​ が最初の ​true​ にのみ適用されるためです。​!(true or true)​ は ​false​ を返します。
次の例では、論理演算子を使用します。 ソース ```dataweave %dw 2.0 var myArray = [1,2,3,4,5] var myMap = myArray map not (($ mod 2) == 0) output application/json --- { "not" : [ "notTrue" : not true, "notFalse" : not false, "myMapWithNot" : myMap ], "and" : [ "andTrueFalse" : true and false, "andIsTrue" : (1 + 1 == 2) and (2 + 2 == 4), "andIsFalse" : (1 + 1 == 2) and (2 + 2 == 2) ], "or" : [ "orTrueFalse" : true or false, "orIsTrue" : (1 + 1 == 2) or (2 + 2 == 2), "orIsFalse" : (1 + 1 == 1) or (2 + 2 == 2) ], "!-vs-not" : [ "example-!" : (! true or true), "example-not" : (not true or true) ] } ``` `myMap`​ はリスト (​`myArray`​) 内の項目を反復処理し、剰余 (​`mod`​) 式が各項目に適用されたときに ​`0`​ と評価​_されない_​かどうかを決定します。 出力 ```json { "not": [ { "notTrue": false }, { "notFalse": true }, { "myMapWithNot": [ true, false, true, false, true ] } ], "and": [ { "andTrueFalse": false }, { "andIsTrue": true }, { "andIsFalse": false } ], "or": [ { "orTrueFalse": true }, { "orIsTrue": true }, { "orIsFalse": false } ], "!-vs-not": [ { "example-!": true }, { "example-not": false } ] } ``` `not`​ は ​`not (true)`​ のような式では機能しますが、​`not(true)`​ (スペースなし) では機能しないことに注意してください。 論理演算子は組み合わせて使用することができます。次の例では、以下を使用します。 - `orNot`​ 式で定義されている ​`or not`​。 - `andNot`​ の ​`and not`​。 - `notWithAndNot`​ の ​`not`​ および ​`and not`​。 ```dataweave %dw 2.0 var orNot = if (1 + 1 == 4 or not 1 == 2) {"answer": "orNot - Condition met"} else {"answer": "nope"} var andNot = if (1 + 1 == 2 and not 1 == 2) {"answer": "andNot - Condition met"} else {"answer": "nope"} var notWithAndNot = if (not (1 + 1 == 2 and not 1 == 1)) {"answer": "notWithAndNot - Condition met"} else {"answer": "nope"} output application/json --- { "answers" : [ orNot, andNot, notWithAndNot ] } ``` 出力 ```json { "answers": [ { "answer": "orNot - Condition met" }, { "answer": "andNot - Condition met" }, { "answer": "notWithAndNot - Condition met" } ] } ``` 例のすべての条件式が ​`true`​ に評価されるため、DataWeave は各 ​`if`​ ブロック内のコードを実行します。 ## [](#配列用の先頭追加演算子追加演算子および削除加演算子)配列用の先頭追加演算子、追加演算子、および削除加演算子 DataWeave バージョン 2 は、配列内に項目を追加および先頭に追加する演算子をサポートしています。
演算子 説明

>>

演算子の左側のデータを右側の配列内の項目の先頭に追加します。たとえば、​1 >> [2]​ の結果は ​[ 1, 2 ]​ となり、配列内の ​2​ の前に ​1​ が追加されます。

<<

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] << 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。

+

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] + 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。配列は、常に演算子の左側になります。

-

配列から、サポートされる型の指定された要素を削除します。

次の例では、配列での prepend、append、remove 演算子の使用を示します。 ```dataweave %dw 2.0 output application/json --- { "prepend-append" : [ // Array on right side when prepending. { "prepend" : 1 >> [2] }, { "prepend-number" : 1 >> [1] }, { "prepend-string" : "a" >> [1] }, { "prepend-object" : { "a" : "b"} >> [1] }, { "prepend-array" : [1] >> [2, 3] }, { "prepend-binary" : (1 as Binary) >> [1] }, { "prepend-date-time" : |23:57:59Z| >> [ |2017-10-01| ] }, // Array is on left side when appending. { "append-number" : [1] << 2 }, { "append-string" : [1] << "a" }, { "append-object" : [1] << { "a" : "b"} }, { "append-array" : [1,2] << [1, 2, 3] }, { "append-binary" : [1] << (1 as Binary) }, { "append-date-time" : [ |2017-10-01| ] << |23:57:59Z| }, { "append-object-to-array" : [1,2] << {"a" : "b"} }, { "append-array-to-array1" : ["a","b"] << ["c","d"] }, { "append-array-to-array2" : [["a","b"],["c","d"]] << ["e","f"] }, // + always appends within the array { "append-with-+" : [1] + 2 }, { "append-with-+" : [2] + 1 }, { "removeNumberFromArray" : ( [1,2,3] - 2 ) }, { "removeObjectFromArray" : ( [ {a : "b"}, {c : "d"} , { e : "f"} ] - { c : "d"} ) } ] } ``` 出力 ```json { "prepend-append": [ { "prepend": [ 1, 2 ] }, { "prepend-number": [ 1, 1 ] }, { "prepend-string": [ "a", 1 ] }, { "prepend-array": [ [ 1 ], 2, 3 ] }, { "prepend-object": [ { "a": "b" }, 1 ] }, { "prepend-binary": [ "\u0001", 1 ] }, { "prepend-date-time": [ "23:57:59Z", "2017-10-01" ] }, { "append-number": [ 1, 2 ] }, { "append-string": [ 1, "a" ] }, { "append-object": [ 1, { "a": "b" } ] }, { "append-array": [ 1, 2, [ 1, 2, 3 ] ] }, { "append-binary": [ 1, "\u0001" ] }, { "append-date-time": [ "2017-10-01", "23:57:59Z" ] }, { "append-object-to-array": [ 1, 2, { "a": "b" } ] }, { "append-array-to-array1": [ "a", "b", ["c","d"] ] }, { "append-array-to-array2": [ ["a","b"], ["c","d"], ["e","f"] ] }, { "append-with-+": [ 1, 2] }, { "append-with-+": [ 2, 1] }, { "removeNumberFromArray": [ 1, 3 ] }, { "removeObjectFromArray": [ { "a": "b" }, { "e": "f" } ] } ] } ``` ## [](#スコープ演算子とフローコントロール演算子)スコープ演算子とフローコントロール演算子 DataWeave バージョン 2 は、式のフローとスコープを制御する演算子をサポートしています。 - [`do`​ と ​`using`](#control_flow_do) - [`if else`​ と ​`else if`](#control_flow_if)
Table 1. スコープ変数
演算子 説明

do

スコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​---​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。例については​「do」​と​「例: ローカル DataWeave 変数」​を参照してください。

using

do​ に置き換えられました。 後方互換性のためにのみサポートされています。

Table 2. フローコントロール演算子
演算子 説明

if else

if​ 演算子は条件式を評価し、条件式が true の場合のみ、​if​ の下の値を返します。それ以外の場合、​else​ の下の式を返します。各 ​if​ 式に、対応する ​else​ 式が必要です。例については​「if else」​を参照してください。

else if

else if​ を組み込むと、​else​ 演算子によって if-else 構造内での式をまとめてチェーニングできます。例については​「else if」​を参照してください。

## [](#update-operator)update 演算子 DataWeave では ​`update`​ 演算子をサポートしています。これにより、データ構造の指定された項目を新しい値で更新できます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ Mule 4.3 より前のバージョンでは、次の構文を使用して、オブジェクト全体を再作成せずに ​`myInput`​ の ​`age`​ 値を 1 ずつ増やす必要があります。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput mapObject ((value,key) -> if(key as String == "age") {(key): value as Number + 1} else {(key): value} ) ``` Mule 4.3 では、​`update`​ 演算子によって構文が簡略化されています。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput update { case age at .age -> age + 1 } ``` どちらの DataWeave スクリプトでも同じ結果が返されます。 ```JSON { "name": "Ken", "lastName": "Shokida", "age": 31 } ``` `update`​ を使用した場合、すべてのキー-値のペアでのキャストまたは反復処理は必要ありません。 `update`​ 構文は次のようになります。 ```weave update { case at [!]? [if()]? -> ... } ``` - `value_to_update`​ は更新する元の値を表します。 - `update_expression`​ は ​`value_to_update`​ の値に一致するセレクター式です。 - `variable_name`​ は一致した ​`update_expression`​ 値にバインドする変数の名前です。 - `new_value`​ は新しい値を使用する式です。 - `[if()]?` ​`conditional_expression`​ で ​`true`​ が返される場合、スクリプトで値が更新されます。条件式の使用は任意です。 - `[!]`​ はセレクターを upsert としてマークします。式で一致が見つからなかった場合、​`!`​ によって ​`update`​ 演算子ですべての必須要素が作成され、新しい値が挿入されます。 - `update_expression`​ では複数の ​`case`​ 式をサポートしています。
update​ 演算子では既存の値は変換されません。代わりに、更新された式を使用して新しい値が作成されます。
### [](#セレクター式)セレクター式 `update`​ 演算子と一緒にセレクター式を使用して、更新する項目を指定します。 #### [](#値セレクター)値セレクター この一致セレクターでは、オブジェクト内の任意の値への一致を確認できます。 次の例では、値セレクターを使用してルートレベルの項目とネストレベルの項目を更新します。 ソース ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } output application/json --- myInput update { case age at .age -> age + 1 case s at .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` #### [](#インデックスセレクター)インデックスセレクター この一致セレクターを使用すれば、配列をそのインデックスで照合できます。 次の例では、配列の最初の場所にある要素を更新します。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "addresses": [{ "street": "Amenabar", "zipCode": "AB1234" }] } ``` ソース ```weave %dw 2.0 output application/json --- payload update { case s at .addresses[0] -> { "street": "Second Street", "zipCode": "ZZ123" } } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 30, "addresses": [ { "street": "Second Street", "zipCode": "ZZ123" } ] } ``` #### [](#属性セレクター)属性セレクター この一致セレクターを使用すれば、属性値を照合できます。 次の例では、属性値を更新して大文字に変更します。 入力 ```xml ``` ソース ```weave %dw 2.0 output application/xml --- payload update { case name at .user.@name -> upper(name) } ``` 出力 ```xml ``` #### [](#動的セレクター)動的セレクター 任意のセレクターに式を組み込み、選択を動的にできます。 次の例では、ハードコード化されていない項目の値を動的に選択して更新します。このような項目は実行時に変更される場合があります。この例では ​`theFieldName`​ 変数を使用してキーが ​`name`​ の項目を取得し、その項目の値を ​`Shoki`​ に変更します。 入力 ```json { "name": "Ken", "lastName":"Shokida" } ``` ソース ```weave %dw 2.0 var theFieldName = "name" output application/json --- payload update { case s at ."$(theFieldName)" -> "Shoki" } ``` 出力 ```json { "name": "Shoki", "lastName": "Shokida" } ``` ### [](#条件付き更新)条件付き更新 `update`​ 演算子には、特定の条件で項目を変更する場合の条件付き更新を記述する構文があります。 次の例では、ユーザーの名前に基づいてカテゴリを更新します。 入力 ```json [{"name": "Ken", "age": 30}, {"name": "Tomo", "age": 70}, {"name": "Kajika", "age": 10}] ``` ソース ```weave %dw 2.0 output application/json --- payload map ((user) -> user update { case name at .name if(name == "Ken") -> name ++ " (Leandro)" case name at .name if(name == "Tomo") -> name ++ " (Christian)" } ) ``` 出力 ```json [ { "name": "Ken (Leandro)", "age": 30 }, { "name": "Tomo (Christian)", "age": 70 }, { "name": "Kajika", "age": 10 } ] ``` ### [](#更新挿入)更新/挿入 `update`​ 演算子を使用すれば、セレクター式の末尾にある ​`!`​ 記号を使用して、項目が存在しない場合に挿入できます。項目が存在しない場合、演算子によって ​`null`​ 値が変数にバインドされます。 次の例では、配列 ​`myInput`​ の各オブジェクトを更新します。項目 ​`name`​ がオブジェクトに存在する場合、例では ​`upper`​ 関数を ​`name`​ の値に適用します。項目 ​`name`​ がオブジェクトに存在しない場合、例ではキー-値のペア ​`"name": "JOHN"`​ をオブジェクトに追加します。 ソース ```weave %dw 2.0 var myInput = [{"lastName": "Doe"}, {"lastName": "Parker", "name": "Peter" }] output application/json --- myInput map ((value) -> value update { case name at .name! -> if(name == null) "JOHN" else upper(name) } ) ``` 出力 ```json [ { "lastName": "Doe", "name": "JOHN" }, { "lastName": "Parker", "name": "PETER" } ] ``` ### [](#糖衣構文)糖衣構文 `update`​ 演算子では、もっと長い ​` at`​ 構文の場所で ​`$`​ という名前のデフォルトの変数を受け入れます。 次の例では、式 ​`.age`​ の値をデフォルトの変数名 ​`$`​ にバインドしており、これが新しい値を表すために使用されます。もっと長い代替の構文はコメント内で示しています。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } ``` ソース ```weave %dw 2.0 output application/json --- payload update { //equivalent expression: //case age at .age -> age + 1 case .age -> $ + 1 case .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` # DataWeave の演算子 DataWeave では、数学演算子、等価演算子、さらに prepend、append、update などの演算子など、いくつかの演算子をサポートしています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#数学演算子)数学演算子 DataWeave は、ほとんどの一般的な数学演算子をサポートしています。
演算子 説明

+

加算。

-

減算。

*

乗算。

/

除算。

`(-)`​ および ​`(+)`​ 演算子では、数値の操作に加えて、配列、オブジェクト、日付など、複雑なデータ構造も操作できます。 次の例では、さまざまなデータ型で数学演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "mathOperators" : [ { "2 + 2" : (2 + 2) }, { "2 - 2" : (2 - 2) }, { "2 * 2" : (2 * 2) }, { "2 / 2" : (2 / 2) }, { "[1,2,3] - 1 + 4" : [1,2,3] - 1 + 4}, { "{a:1, b:2, c:3} - 'a' " : {a:1, b:2, c:3} - "a"}, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|" : |2021-03-02T10:39:59| - |P1D| + |PT3H|} ] } ``` 出力 ```json { "mathOperators": [ { "2 + 2": 4 }, { "2 - 2": 0 }, { "2 * 2": 4 }, { "2 / 2": 1 }, { "[1,2,3] - 1 + 4": [2,3,4] }, { "{a:1, b:2, c:3} - 'a' ": {"b": 2, "c": 3} }, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|": "2021-03-01T13:39:59" }] } ``` いくつかの DataWeave 関数は数値を操作します。たとえば、​[sum](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-sum)​、​[mod](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-mod)​ (剰余)、​[avg](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-abs)​ (平均) などがあります。 ## [](#等価演算子と比較演算子)等価演算子と比較演算子 DataWeave は、次の等価演算子と比較演算子をサポートしています。
演算子 説明

<

次の値より小さい。

>

次の値より大きい。

<=

次の値以下。

>=

次の値以上。

==

次の値と等しい。

~=

値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

[論理演算子](#logical_operators)​ ​`not`​ を使用することで、これらの演算子を否定することができます。 次の例では、比較演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "relational" : [ { "1 < 1" : (1 < 1) }, { "1 > 2" : (1 > 2) }, { "1 <= 1" : (1 <= 1) }, { "1 >= 1" : (1 >= 1) } ] } ``` 出力 ```json { "relational": [ { "(1 < 1)": false }, { "(1 > 2)": false }, { "(1 <= 1)": true }, { "(1 >= 1)": true } ] } ``` 比較演算子のオペランドの型が異なる場合は、DataWeave は右側のオペランドを左側のオペランドの方に強制変換します。 たとえば、式 ​`"123" > 12`​ では、​`12`​ (数値型) が ​`"12"`​ (文字列型) に強制変換され、各文字列値が辞書的順序で比較されます。 式 ​`123 > "12"`​ では、文字列値 ​`"12"`​ が数値 ​`12`​ に強制変換され、数値が比較されます。 次の例では、等価演算子を使用しています。 ソース ```dataweave %dw 2.0 output application/dw --- { "equality" : [ (1 == 1), (1 == 2), ("true" == true), ("true" ~= true), (['true'] ~= [true]), ('1' ~= 1) ] } ``` 出力 ```text { equality: [ true, false, false, true, true, true ] } ``` ## [](#logical_operators)論理演算子 DataWeave は、次の論理演算子をサポートしています。
演算子 説明

not

入力の結果を否定します。​!​ も参照してください。

!

入力の結果を否定します。​not​ も参照してください。​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。

and

すべての入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

or

いずれかの入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

not​ と ​!​ のセマンティクスは同じですが、優先順位は異なります。 not true or true​ は ​not (true or true)​ として実行されるため ​false​ を返しますが、​!true or true​ は ​true​ を返します。​!​ が最初の ​true​ にのみ適用されるためです。​!(true or true)​ は ​false​ を返します。
次の例では、論理演算子を使用します。 ソース ```dataweave %dw 2.0 var myArray = [1,2,3,4,5] var myMap = myArray map not (($ mod 2) == 0) output application/json --- { "not" : [ "notTrue" : not true, "notFalse" : not false, "myMapWithNot" : myMap ], "and" : [ "andTrueFalse" : true and false, "andIsTrue" : (1 + 1 == 2) and (2 + 2 == 4), "andIsFalse" : (1 + 1 == 2) and (2 + 2 == 2) ], "or" : [ "orTrueFalse" : true or false, "orIsTrue" : (1 + 1 == 2) or (2 + 2 == 2), "orIsFalse" : (1 + 1 == 1) or (2 + 2 == 2) ], "!-vs-not" : [ "example-!" : (! true or true), "example-not" : (not true or true) ] } ``` `myMap`​ はリスト (​`myArray`​) 内の項目を反復処理し、剰余 (​`mod`​) 式が各項目に適用されたときに ​`0`​ と評価​_されない_​かどうかを決定します。 出力 ```json { "not": [ { "notTrue": false }, { "notFalse": true }, { "myMapWithNot": [ true, false, true, false, true ] } ], "and": [ { "andTrueFalse": false }, { "andIsTrue": true }, { "andIsFalse": false } ], "or": [ { "orTrueFalse": true }, { "orIsTrue": true }, { "orIsFalse": false } ], "!-vs-not": [ { "example-!": true }, { "example-not": false } ] } ``` `not`​ は ​`not (true)`​ のような式では機能しますが、​`not(true)`​ (スペースなし) では機能しないことに注意してください。 論理演算子は組み合わせて使用することができます。次の例では、以下を使用します。 - `orNot`​ 式で定義されている ​`or not`​。 - `andNot`​ の ​`and not`​。 - `notWithAndNot`​ の ​`not`​ および ​`and not`​。 ```dataweave %dw 2.0 var orNot = if (1 + 1 == 4 or not 1 == 2) {"answer": "orNot - Condition met"} else {"answer": "nope"} var andNot = if (1 + 1 == 2 and not 1 == 2) {"answer": "andNot - Condition met"} else {"answer": "nope"} var notWithAndNot = if (not (1 + 1 == 2 and not 1 == 1)) {"answer": "notWithAndNot - Condition met"} else {"answer": "nope"} output application/json --- { "answers" : [ orNot, andNot, notWithAndNot ] } ``` 出力 ```json { "answers": [ { "answer": "orNot - Condition met" }, { "answer": "andNot - Condition met" }, { "answer": "notWithAndNot - Condition met" } ] } ``` 例のすべての条件式が ​`true`​ に評価されるため、DataWeave は各 ​`if`​ ブロック内のコードを実行します。 ## [](#配列用の先頭追加演算子追加演算子および削除加演算子)配列用の先頭追加演算子、追加演算子、および削除加演算子 DataWeave では、配列内に項目を追加および先頭に追加する演算子をサポートしています。
演算子 説明

>>

演算子の左側のデータを右側の配列内の項目の先頭に追加します。たとえば、​1 >> [2]​ の結果は ​[ 1, 2 ]​ となり、配列内の ​2​ の前に ​1​ が追加されます。

<<

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] << 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。

+

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] + 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。配列は、常に演算子の左側になります。

-

配列から、サポートされる型の指定された要素を削除します。

次の例では、配列での prepend、append、remove 演算子の使用を示します。 ```dataweave %dw 2.0 output application/json --- { "prepend-append" : [ // Array on right side when prepending. { "prepend" : 1 >> [2] }, { "prepend-number" : 1 >> [1] }, { "prepend-string" : "a" >> [1] }, { "prepend-object" : { "a" : "b"} >> [1] }, { "prepend-array" : [1] >> [2, 3] }, { "prepend-binary" : (1 as Binary) >> [1] }, { "prepend-date-time" : |23:57:59Z| >> [ |2017-10-01| ] }, // Array is on left side when appending. { "append-number" : [1] << 2 }, { "append-string" : [1] << "a" }, { "append-object" : [1] << { "a" : "b"} }, { "append-array" : [1,2] << [1, 2, 3] }, { "append-binary" : [1] << (1 as Binary) }, { "append-date-time" : [ |2017-10-01| ] << |23:57:59Z| }, { "append-object-to-array" : [1,2] << {"a" : "b"} }, { "append-array-to-array1" : ["a","b"] << ["c","d"] }, { "append-array-to-array2" : [["a","b"],["c","d"]] << ["e","f"] }, // + always appends within the array { "append-with-+" : [1] + 2 }, { "append-with-+" : [2] + 1 }, { "removeNumberFromArray" : ( [1,2,3] - 2 ) }, { "removeObjectFromArray" : ( [ {a : "b"}, {c : "d"} , { e : "f"} ] - { c : "d"} ) } ] } ``` 出力 ```json { "prepend-append": [ { "prepend": [ 1, 2 ] }, { "prepend-number": [ 1, 1 ] }, { "prepend-string": [ "a", 1 ] }, { "prepend-array": [ [ 1 ], 2, 3 ] }, { "prepend-object": [ { "a": "b" }, 1 ] }, { "prepend-binary": [ "\u0001", 1 ] }, { "prepend-date-time": [ "23:57:59Z", "2017-10-01" ] }, { "append-number": [ 1, 2 ] }, { "append-string": [ 1, "a" ] }, { "append-object": [ 1, { "a": "b" } ] }, { "append-array": [ 1, 2, [ 1, 2, 3 ] ] }, { "append-binary": [ 1, "\u0001" ] }, { "append-date-time": [ "2017-10-01", "23:57:59Z" ] }, { "append-object-to-array": [ 1, 2, { "a": "b" } ] }, { "append-array-to-array1": [ "a", "b", ["c","d"] ] }, { "append-array-to-array2": [ ["a","b"], ["c","d"], ["e","f"] ] }, { "append-with-+": [ 1, 2] }, { "append-with-+": [ 2, 1] }, { "removeNumberFromArray": [ 1, 3 ] }, { "removeObjectFromArray": [ { "a": "b" }, { "e": "f" } ] } ] } ``` ## [](#スコープ演算子とフローコントロール演算子)スコープ演算子とフローコントロール演算子 DataWeave は、式のフローとスコープを制御する演算子をサポートしています。 - [`do`​ と ​`using`](#control_flow_do) - [`if else`​ と ​`else if`](#control_flow_if)
Table 1. スコープ変数
演算子 説明

do

スコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​---​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。例については​「do」​と​「例: ローカル DataWeave 変数」​を参照してください。

using

do​ に置き換えられました。 後方互換性のためにのみサポートされています。

Table 2. フローコントロール演算子
演算子 説明

if else

if​ 演算子は条件式を評価し、条件式が true の場合のみ、​if​ の下の値を返します。それ以外の場合、​else​ の下の式を返します。各 ​if​ 式に、対応する ​else​ 式が必要です。例については​「if else」​を参照してください。

else if

else if​ を組み込むと、​else​ 演算子によって if-else 構造内での式をまとめてチェーニングできます。例については​「else if」​を参照してください。

## [](#update-operator)update 演算子 DataWeave では ​`update`​ 演算子をサポートしています。これにより、データ構造の指定された項目を新しい値で更新できます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ Mule 4.3 より前のバージョンでは、次の構文を使用して、オブジェクト全体を再作成せずに ​`myInput`​ の ​`age`​ 値を 1 ずつ増やす必要があります。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput mapObject ((value,key) -> if(key as String == "age") {(key): value as Number + 1} else {(key): value} ) ``` Mule 4.3 では、​`update`​ 演算子によって構文が簡略化されています。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput update { case age at .age -> age + 1 } ``` どちらの DataWeave スクリプトでも同じ結果が返されます。 ```JSON { "name": "Ken", "lastName": "Shokida", "age": 31 } ``` `update`​ を使用した場合、すべてのキー-値のペアでのキャストまたは反復処理は必要ありません。 `update`​ 構文は次のようになります。 ```weave update { case at [!]? [if()]? -> ... } ``` - `value_to_update`​ は更新する元の値を表します。 - `update_expression`​ は ​`value_to_update`​ の値に一致するセレクター式です。 - `variable_name`​ は一致した ​`update_expression`​ 値にバインドする変数の名前です。 - `new_value`​ は新しい値を使用する式です。 - `[if()]?` ​`conditional_expression`​ で ​`true`​ が返される場合、スクリプトで値が更新されます。条件式の使用は任意です。 - `[!]`​ はセレクターを upsert としてマークします。式で一致が見つからなかった場合、​`!`​ によって ​`update`​ 演算子ですべての必須要素が作成され、新しい値が挿入されます。 - `update_expression`​ では複数の ​`case`​ 式をサポートしています。
update​ 演算子では既存の値は変換されません。代わりに、更新された式を使用して新しい値が作成されます。
### [](#セレクター式)セレクター式 `update`​ 演算子と一緒にセレクター式を使用して、更新する項目を指定します。 #### [](#値セレクター)値セレクター この一致セレクターでは、オブジェクト内の任意の値への一致を確認できます。 次の例では、値セレクターを使用してルートレベルの項目とネストレベルの項目を更新します。 ソース ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } output application/json --- myInput update { case age at .age -> age + 1 case s at .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` #### [](#インデックスセレクター)インデックスセレクター この一致セレクターを使用すれば、配列をそのインデックスで照合できます。 次の例では、配列の最初の場所にある要素を更新します。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "addresses": [{ "street": "Amenabar", "zipCode": "AB1234" }] } ``` ソース ```weave %dw 2.0 output application/json --- payload update { case s at .addresses[0] -> { "street": "Second Street", "zipCode": "ZZ123" } } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 30, "addresses": [ { "street": "Second Street", "zipCode": "ZZ123" } ] } ``` #### [](#属性セレクター)属性セレクター この一致セレクターを使用すれば、属性値を照合できます。 次の例では、属性値を更新して大文字に変更します。 入力 ```xml ``` ソース ```weave %dw 2.0 output application/xml --- payload update { case name at .user.@name -> upper(name) } ``` 出力 ```xml ``` #### [](#動的セレクター)動的セレクター 任意のセレクターに式を組み込み、選択を動的にできます。 次の例では、ハードコード化されていない項目の値を動的に選択して更新します。このような項目は実行時に変更される場合があります。この例では ​`theFieldName`​ 変数を使用してキーが ​`name`​ の項目を取得し、その項目の値を ​`Shoki`​ に変更します。 入力 ```json { "name": "Ken", "lastName":"Shokida" } ``` ソース ```weave %dw 2.0 var theFieldName = "name" output application/json --- payload update { case s at ."$(theFieldName)" -> "Shoki" } ``` 出力 ```json { "name": "Shoki", "lastName": "Shokida" } ``` ### [](#条件付き更新)条件付き更新 `update`​ 演算子には、特定の条件で項目を変更する場合の条件付き更新を記述する構文があります。 次の例では、ユーザーの名前に基づいてカテゴリを更新します。 入力 ```json [{"name": "Ken", "age": 30}, {"name": "Tomo", "age": 70}, {"name": "Kajika", "age": 10}] ``` ソース ```weave %dw 2.0 output application/json --- payload map ((user) -> user update { case name at .name if(name == "Ken") -> name ++ " (Leandro)" case name at .name if(name == "Tomo") -> name ++ " (Christian)" } ) ``` 出力 ```json [ { "name": "Ken (Leandro)", "age": 30 }, { "name": "Tomo (Christian)", "age": 70 }, { "name": "Kajika", "age": 10 } ] ``` ### [](#更新挿入)更新/挿入 `update`​ 演算子を使用すれば、セレクター式の末尾にある ​`!`​ 記号を使用して、項目が存在しない場合に挿入できます。項目が存在しない場合、演算子によって ​`null`​ 値が変数にバインドされます。 次の例では、配列 ​`myInput`​ の各オブジェクトを更新します。項目 ​`name`​ がオブジェクトに存在する場合、例では ​`upper`​ 関数を ​`name`​ の値に適用します。項目 ​`name`​ がオブジェクトに存在しない場合、例ではキー-値のペア ​`"name": "JOHN"`​ をオブジェクトに追加します。 ソース ```weave %dw 2.0 var myInput = [{"lastName": "Doe"}, {"lastName": "Parker", "name": "Peter" }] output application/json --- myInput map ((value) -> value update { case name at .name! -> if(name == null) "JOHN" else upper(name) } ) ``` 出力 ```json [ { "lastName": "Doe", "name": "JOHN" }, { "lastName": "Parker", "name": "PETER" } ] ``` ### [](#糖衣構文)糖衣構文 `update`​ 演算子では、もっと長い ​` at`​ 構文の場所で ​`$`​ という名前のデフォルトの変数を受け入れます。 次の例では、式 ​`.age`​ の値をデフォルトの変数名 ​`$`​ にバインドしており、これが新しい値を表すために使用されます。もっと長い代替の構文はコメント内で示しています。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } ``` ソース ```weave %dw 2.0 output application/json --- payload update { //equivalent expression: //case age at .age -> age + 1 case .age -> $ + 1 case .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` # DataWeave の演算子 DataWeave では、数学演算子、等価演算子、さらに prepend、append、update などの演算子など、いくつかの演算子をサポートしています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#数学演算子)数学演算子 DataWeave は、ほとんどの一般的な数学演算子をサポートしています。
演算子 説明

+

加算。

-

減算。

*

乗算。

/

除算。

`(-)`​ および ​`(+)`​ 演算子では、数値の操作に加えて、配列、オブジェクト、日付など、複雑なデータ構造も操作できます。 次の例では、さまざまなデータ型で数学演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "mathOperators" : [ { "2 + 2" : (2 + 2) }, { "2 - 2" : (2 - 2) }, { "2 * 2" : (2 * 2) }, { "2 / 2" : (2 / 2) }, { "[1,2,3] - 1 + 4" : [1,2,3] - 1 + 4}, { "{a:1, b:2, c:3} - 'a' " : {a:1, b:2, c:3} - "a"}, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|" : |2021-03-02T10:39:59| - |P1D| + |PT3H|} ] } ``` 出力 ```json { "mathOperators": [ { "2 + 2": 4 }, { "2 - 2": 0 }, { "2 * 2": 4 }, { "2 / 2": 1 }, { "[1,2,3] - 1 + 4": [2,3,4] }, { "{a:1, b:2, c:3} - 'a' ": {"b": 2, "c": 3} }, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|": "2021-03-01T13:39:59" }] } ``` いくつかの DataWeave 関数は数値を操作します。たとえば、​[sum](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-sum)​、​[mod](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-mod)​ (剰余)、​[avg](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-abs)​ (平均) などがあります。 ## [](#等価演算子と比較演算子)等価演算子と比較演算子 DataWeave は、次の等価演算子と比較演算子をサポートしています。
演算子 説明

<

次の値より小さい。

>

次の値より大きい。

<=

次の値以下。

>=

次の値以上。

==

次の値と等しい。

~=

値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

[論理演算子](#logical_operators)​ ​`not`​ を使用することで、これらの演算子を否定することができます。 次の例では、比較演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "relational" : [ { "1 < 1" : (1 < 1) }, { "1 > 2" : (1 > 2) }, { "1 <= 1" : (1 <= 1) }, { "1 >= 1" : (1 >= 1) } ] } ``` 出力 ```json { "relational": [ { "(1 < 1)": false }, { "(1 > 2)": false }, { "(1 <= 1)": true }, { "(1 >= 1)": true } ] } ``` 比較演算子のオペランドの型が異なる場合は、DataWeave は右側のオペランドを左側のオペランドの方に強制変換します。 たとえば、式 ​`"123" > 12`​ では、​`12`​ (数値型) が ​`"12"`​ (文字列型) に強制変換され、各文字列値が辞書的順序で比較されます。 式 ​`123 > "12"`​ では、文字列値 ​`"12"`​ が数値 ​`12`​ に強制変換され、数値が比較されます。 次の例では、等価演算子を使用しています。 ソース ```dataweave %dw 2.0 output application/dw --- { "equality" : [ (1 == 1), (1 == 2), ("true" == true), ("true" ~= true), (['true'] ~= [true]), ('1' ~= 1) ] } ``` 出力 ```text { equality: [ true, false, false, true, true, true ] } ``` ## [](#logical_operators)論理演算子 DataWeave は、次の論理演算子をサポートしています。
演算子 説明

not

入力の結果を否定します。​!​ も参照してください。

!

入力の結果を否定します。​not​ も参照してください。​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。

and

すべての入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

or

いずれかの入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

not​ と ​!​ のセマンティクスは同じですが、優先順位は異なります。 not true or true​ は ​not (true or true)​ として実行されるため ​false​ を返しますが、​!true or true​ は ​true​ を返します。​!​ が最初の ​true​ にのみ適用されるためです。​!(true or true)​ は ​false​ を返します。
次の例では、論理演算子を使用します。 ソース ```dataweave %dw 2.0 var myArray = [1,2,3,4,5] var myMap = myArray map not (($ mod 2) == 0) output application/json --- { "not" : [ "notTrue" : not true, "notFalse" : not false, "myMapWithNot" : myMap ], "and" : [ "andTrueFalse" : true and false, "andIsTrue" : (1 + 1 == 2) and (2 + 2 == 4), "andIsFalse" : (1 + 1 == 2) and (2 + 2 == 2) ], "or" : [ "orTrueFalse" : true or false, "orIsTrue" : (1 + 1 == 2) or (2 + 2 == 2), "orIsFalse" : (1 + 1 == 1) or (2 + 2 == 2) ], "!-vs-not" : [ "example-!" : (! true or true), "example-not" : (not true or true) ] } ``` `myMap`​ はリスト (​`myArray`​) 内の項目を反復処理し、剰余 (​`mod`​) 式が各項目に適用されたときに ​`0`​ と評価​_されない_​かどうかを決定します。 出力 ```json { "not": [ { "notTrue": false }, { "notFalse": true }, { "myMapWithNot": [ true, false, true, false, true ] } ], "and": [ { "andTrueFalse": false }, { "andIsTrue": true }, { "andIsFalse": false } ], "or": [ { "orTrueFalse": true }, { "orIsTrue": true }, { "orIsFalse": false } ], "!-vs-not": [ { "example-!": true }, { "example-not": false } ] } ``` `not`​ は ​`not (true)`​ のような式では機能しますが、​`not(true)`​ (スペースなし) では機能しないことに注意してください。 論理演算子は組み合わせて使用することができます。次の例では、以下を使用します。 - `orNot`​ 式で定義されている ​`or not`​。 - `andNot`​ の ​`and not`​。 - `notWithAndNot`​ の ​`not`​ および ​`and not`​。 ```dataweave %dw 2.0 var orNot = if (1 + 1 == 4 or not 1 == 2) {"answer": "orNot - Condition met"} else {"answer": "nope"} var andNot = if (1 + 1 == 2 and not 1 == 2) {"answer": "andNot - Condition met"} else {"answer": "nope"} var notWithAndNot = if (not (1 + 1 == 2 and not 1 == 1)) {"answer": "notWithAndNot - Condition met"} else {"answer": "nope"} output application/json --- { "answers" : [ orNot, andNot, notWithAndNot ] } ``` 出力 ```json { "answers": [ { "answer": "orNot - Condition met" }, { "answer": "andNot - Condition met" }, { "answer": "notWithAndNot - Condition met" } ] } ``` 例のすべての条件式が ​`true`​ に評価されるため、DataWeave は各 ​`if`​ ブロック内のコードを実行します。 ## [](#配列用の先頭追加演算子追加演算子および削除加演算子)配列用の先頭追加演算子、追加演算子、および削除加演算子 DataWeave では、配列内に項目を追加および先頭に追加する演算子をサポートしています。
演算子 説明

>>

演算子の左側のデータを右側の配列内の項目の先頭に追加します。たとえば、​1 >> [2]​ の結果は ​[ 1, 2 ]​ となり、配列内の ​2​ の前に ​1​ が追加されます。

<<

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] << 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。

+

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] + 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。配列は、常に演算子の左側になります。

-

配列から、サポートされる型の指定された要素を削除します。

次の例では、配列での prepend、append、remove 演算子の使用を示します。 ```dataweave %dw 2.0 output application/json --- { "prepend-append" : [ // Array on right side when prepending. { "prepend" : 1 >> [2] }, { "prepend-number" : 1 >> [1] }, { "prepend-string" : "a" >> [1] }, { "prepend-object" : { "a" : "b"} >> [1] }, { "prepend-array" : [1] >> [2, 3] }, { "prepend-binary" : (1 as Binary) >> [1] }, { "prepend-date-time" : |23:57:59Z| >> [ |2017-10-01| ] }, // Array is on left side when appending. { "append-number" : [1] << 2 }, { "append-string" : [1] << "a" }, { "append-object" : [1] << { "a" : "b"} }, { "append-array" : [1,2] << [1, 2, 3] }, { "append-binary" : [1] << (1 as Binary) }, { "append-date-time" : [ |2017-10-01| ] << |23:57:59Z| }, { "append-object-to-array" : [1,2] << {"a" : "b"} }, { "append-array-to-array1" : ["a","b"] << ["c","d"] }, { "append-array-to-array2" : [["a","b"],["c","d"]] << ["e","f"] }, // + always appends within the array { "append-with-+" : [1] + 2 }, { "append-with-+" : [2] + 1 }, { "removeNumberFromArray" : ( [1,2,3] - 2 ) }, { "removeObjectFromArray" : ( [ {a : "b"}, {c : "d"} , { e : "f"} ] - { c : "d"} ) } ] } ``` 出力 ```json { "prepend-append": [ { "prepend": [ 1, 2 ] }, { "prepend-number": [ 1, 1 ] }, { "prepend-string": [ "a", 1 ] }, { "prepend-array": [ [ 1 ], 2, 3 ] }, { "prepend-object": [ { "a": "b" }, 1 ] }, { "prepend-binary": [ "\u0001", 1 ] }, { "prepend-date-time": [ "23:57:59Z", "2017-10-01" ] }, { "append-number": [ 1, 2 ] }, { "append-string": [ 1, "a" ] }, { "append-object": [ 1, { "a": "b" } ] }, { "append-array": [ 1, 2, [ 1, 2, 3 ] ] }, { "append-binary": [ 1, "\u0001" ] }, { "append-date-time": [ "2017-10-01", "23:57:59Z" ] }, { "append-object-to-array": [ 1, 2, { "a": "b" } ] }, { "append-array-to-array1": [ "a", "b", ["c","d"] ] }, { "append-array-to-array2": [ ["a","b"], ["c","d"], ["e","f"] ] }, { "append-with-+": [ 1, 2] }, { "append-with-+": [ 2, 1] }, { "removeNumberFromArray": [ 1, 3 ] }, { "removeObjectFromArray": [ { "a": "b" }, { "e": "f" } ] } ] } ``` ## [](#スコープ演算子とフローコントロール演算子)スコープ演算子とフローコントロール演算子 DataWeave は、式のフローとスコープを制御する演算子をサポートしています。 - [`do`​ と ​`using`](#control_flow_do) - [`if else`​ と ​`else if`](#control_flow_if)
Table 1. スコープ変数
演算子 説明

do

スコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​---​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。例については​「do」​と​「例: ローカル DataWeave 変数」​を参照してください。

using

do​ に置き換えられました。 後方互換性のためにのみサポートされています。

Table 2. フローコントロール演算子
演算子 説明

if else

if​ 演算子は条件式を評価し、条件式が true の場合のみ、​if​ の下の値を返します。それ以外の場合、​else​ の下の式を返します。各 ​if​ 式に、対応する ​else​ 式が必要です。例については​「if else」​を参照してください。

else if

else if​ を組み込むと、​else​ 演算子によって if-else 構造内での式をまとめてチェーニングできます。例については​「else if」​を参照してください。

## [](#update-operator)update 演算子 DataWeave では ​`update`​ 演算子をサポートしています。これにより、データ構造の指定された項目を新しい値で更新できます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ Mule 4.3 より前のバージョンでは、次の構文を使用して、オブジェクト全体を再作成せずに ​`myInput`​ の ​`age`​ 値を 1 ずつ増やす必要があります。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput mapObject ((value,key) -> if(key as String == "age") {(key): value as Number + 1} else {(key): value} ) ``` Mule 4.3 では、​`update`​ 演算子によって構文が簡略化されています。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput update { case age at .age -> age + 1 } ``` どちらの DataWeave スクリプトでも同じ結果が返されます。 ```JSON { "name": "Ken", "lastName": "Shokida", "age": 31 } ``` `update`​ を使用した場合、すべてのキー-値のペアでのキャストまたは反復処理は必要ありません。 `update`​ 構文は次のようになります。 ```weave update { case at [!]? [if()]? -> ... } ``` - `value_to_update`​ は更新する元の値を表します。 - `update_expression`​ は ​`value_to_update`​ の値に一致するセレクター式です。 - `variable_name`​ は一致した ​`update_expression`​ 値にバインドする変数の名前です。 - `new_value`​ は新しい値を使用する式です。 - `[if()]?` ​`conditional_expression`​ で ​`true`​ が返される場合、スクリプトで値が更新されます。条件式の使用は任意です。 - `[!]`​ はセレクターを upsert としてマークします。式で一致が見つからなかった場合、​`!`​ によって ​`update`​ 演算子ですべての必須要素が作成され、新しい値が挿入されます。 - `update_expression`​ では複数の ​`case`​ 式をサポートしています。
update​ 演算子では既存の値は変換されません。代わりに、更新された式を使用して新しい値が作成されます。
### [](#セレクター式)セレクター式 `update`​ 演算子と一緒にセレクター式を使用して、更新する項目を指定します。 #### [](#値セレクター)値セレクター この一致セレクターでは、オブジェクト内の任意の値への一致を確認できます。 次の例では、値セレクターを使用してルートレベルの項目とネストレベルの項目を更新します。 ソース ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } output application/json --- myInput update { case age at .age -> age + 1 case s at .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` #### [](#インデックスセレクター)インデックスセレクター この一致セレクターを使用すれば、配列をそのインデックスで照合できます。 次の例では、配列の最初の場所にある要素を更新します。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "addresses": [{ "street": "Amenabar", "zipCode": "AB1234" }] } ``` ソース ```weave %dw 2.0 output application/json --- payload update { case s at .addresses[0] -> { "street": "Second Street", "zipCode": "ZZ123" } } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 30, "addresses": [ { "street": "Second Street", "zipCode": "ZZ123" } ] } ``` #### [](#属性セレクター)属性セレクター この一致セレクターを使用すれば、属性値を照合できます。 次の例では、属性値を更新して大文字に変更します。 入力 ```xml ``` ソース ```weave %dw 2.0 output application/xml --- payload update { case name at .user.@name -> upper(name) } ``` 出力 ```xml ``` #### [](#動的セレクター)動的セレクター 任意のセレクターに式を組み込み、選択を動的にできます。 次の例では、ハードコード化されていない項目の値を動的に選択して更新します。このような項目は実行時に変更される場合があります。この例では ​`theFieldName`​ 変数を使用してキーが ​`name`​ の項目を取得し、その項目の値を ​`Shoki`​ に変更します。 入力 ```json { "name": "Ken", "lastName":"Shokida" } ``` ソース ```weave %dw 2.0 var theFieldName = "name" output application/json --- payload update { case s at ."$(theFieldName)" -> "Shoki" } ``` 出力 ```json { "name": "Shoki", "lastName": "Shokida" } ``` ### [](#条件付き更新)条件付き更新 `update`​ 演算子には、特定の条件で項目を変更する場合の条件付き更新を記述する構文があります。 次の例では、ユーザーの名前に基づいてカテゴリを更新します。 入力 ```json [{"name": "Ken", "age": 30}, {"name": "Tomo", "age": 70}, {"name": "Kajika", "age": 10}] ``` ソース ```weave %dw 2.0 output application/json --- payload map ((user) -> user update { case name at .name if(name == "Ken") -> name ++ " (Leandro)" case name at .name if(name == "Tomo") -> name ++ " (Christian)" } ) ``` 出力 ```json [ { "name": "Ken (Leandro)", "age": 30 }, { "name": "Tomo (Christian)", "age": 70 }, { "name": "Kajika", "age": 10 } ] ``` ### [](#更新挿入)更新/挿入 `update`​ 演算子を使用すれば、セレクター式の末尾にある ​`!`​ 記号を使用して、項目が存在しない場合に挿入できます。項目が存在しない場合、演算子によって ​`null`​ 値が変数にバインドされます。 次の例では、配列 ​`myInput`​ の各オブジェクトを更新します。項目 ​`name`​ がオブジェクトに存在する場合、例では ​`upper`​ 関数を ​`name`​ の値に適用します。項目 ​`name`​ がオブジェクトに存在しない場合、例ではキー-値のペア ​`"name": "JOHN"`​ をオブジェクトに追加します。 ソース ```weave %dw 2.0 var myInput = [{"lastName": "Doe"}, {"lastName": "Parker", "name": "Peter" }] output application/json --- myInput map ((value) -> value update { case name at .name! -> if(name == null) "JOHN" else upper(name) } ) ``` 出力 ```json [ { "lastName": "Doe", "name": "JOHN" }, { "lastName": "Parker", "name": "PETER" } ] ``` ### [](#糖衣構文)糖衣構文 `update`​ 演算子では、もっと長い ​` at`​ 構文の場所で ​`$`​ という名前のデフォルトの変数を受け入れます。 次の例では、式 ​`.age`​ の値をデフォルトの変数名 ​`$`​ にバインドしており、これが新しい値を表すために使用されます。もっと長い代替の構文はコメント内で示しています。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } ``` ソース ```weave %dw 2.0 output application/json --- payload update { //equivalent expression: //case age at .age -> age + 1 case .age -> $ + 1 case .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` ## [](#metadata-assignment-operator)メタデータ代入演算子 DataWeave では、​`as`​ 演算子を使用せずに値のメタデータを設定できるメタデータ代入演算子 ​`<~`​ がサポートされます。 この演算子は、メタデータを設定して現在の値の型を維持する場合に便利です。値を新しい型に型強制する場合は、​[as](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types-coercion)​ を使用してください。 _DataWeave 2.5.0 で導入されました。Mule 4.5 以降でサポートされます。_ 演算子の構文は次のようになります。 ```none <~ ``` 演算子によって ​`objectA`​ がメタデータとして ​`valueB`​ に代入されます。矢印は、メタデータが代入される値を指しています。 Mule 4.5 より前のバージョンでは、たとえば ​`class`​ メタデータ項目をオブジェクトに追加するのに次の構文が必要です。 ```weave %dw 2.0 --- {name: "Ken"} as Object {class: "Person"} ``` Mule 4.5 では、メタデータ代入演算子 ​`<~`​ によって構文が簡略化されます。 ```weave %dw 2.0 --- {name: "Ken"} <~ {class: "Person"} ``` ### [](#メタデータ)メタデータ メタデータとは、値に添付され、その同一性には影響しない追加情報です。2 つの等しい値 ​`A`​ と ​`B`​ があるとして、メタデータを ​`A`​ に添付して ​`A'`​ とすると、​`A == A' == B`​ となります。 そのため、値と値に添付されたメタデータで形成される値を定義できます。 # DataWeave の演算子 DataWeave では、数学演算子、等価演算子、さらに prepend、append、update などの演算子など、いくつかの演算子をサポートしています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#数学演算子)数学演算子 DataWeave は、ほとんどの一般的な数学演算子をサポートしています。
演算子 説明

+

加算。

-

減算。

*

乗算。

/

除算。

`(-)`​ および ​`(+)`​ 演算子では、数値の操作に加えて、配列、オブジェクト、日付など、複雑なデータ構造も操作できます。 次の例では、さまざまなデータ型で数学演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "mathOperators" : [ { "2 + 2" : (2 + 2) }, { "2 - 2" : (2 - 2) }, { "2 * 2" : (2 * 2) }, { "2 / 2" : (2 / 2) }, { "[1,2,3] - 1 + 4" : [1,2,3] - 1 + 4}, { "{a:1, b:2, c:3} - 'a' " : {a:1, b:2, c:3} - "a"}, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|" : |2021-03-02T10:39:59| - |P1D| + |PT3H|} ] } ``` 出力 ```json { "mathOperators": [ { "2 + 2": 4 }, { "2 - 2": 0 }, { "2 * 2": 4 }, { "2 / 2": 1 }, { "[1,2,3] - 1 + 4": [2,3,4] }, { "{a:1, b:2, c:3} - 'a' ": {"b": 2, "c": 3} }, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|": "2021-03-01T13:39:59" }] } ``` いくつかの DataWeave 関数は数値を操作します。たとえば、​[sum](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-sum)​、​[mod](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-mod)​ (剰余)、​[avg](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-abs)​ (平均) などがあります。 ## [](#等価演算子と比較演算子)等価演算子と比較演算子 DataWeave は、次の等価演算子と比較演算子をサポートしています。
演算子 説明

<

次の値より小さい。

>

次の値より大きい。

<=

次の値以下。

>=

次の値以上。

==

次の値と等しい。

~=

値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

[論理演算子](#logical_operators)​ ​`not`​ を使用することで、これらの演算子を否定することができます。 次の例では、比較演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "relational" : [ { "1 < 1" : (1 < 1) }, { "1 > 2" : (1 > 2) }, { "1 <= 1" : (1 <= 1) }, { "1 >= 1" : (1 >= 1) } ] } ``` 出力 ```json { "relational": [ { "(1 < 1)": false }, { "(1 > 2)": false }, { "(1 <= 1)": true }, { "(1 >= 1)": true } ] } ``` 比較演算子のオペランドの型が異なる場合は、DataWeave は右側のオペランドを左側のオペランドの方に強制変換します。 たとえば、式 ​`"123" > 12`​ では、​`12`​ (数値型) が ​`"12"`​ (文字列型) に強制変換され、各文字列値が辞書的順序で比較されます。 式 ​`123 > "12"`​ では、文字列値 ​`"12"`​ が数値 ​`12`​ に強制変換され、数値が比較されます。 次の例では、等価演算子を使用しています。 ソース ```dataweave %dw 2.0 output application/dw --- { "equality" : [ (1 == 1), (1 == 2), ("true" == true), ("true" ~= true), (['true'] ~= [true]), ('1' ~= 1) ] } ``` 出力 ```text { equality: [ true, false, false, true, true, true ] } ``` ## [](#logical_operators)論理演算子 DataWeave は、次の論理演算子をサポートしています。
演算子 説明

not

入力の結果を否定します。​!​ も参照してください。

!

入力の結果を否定します。​not​ も参照してください。​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。

and

すべての入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

or

いずれかの入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

not​ と ​!​ のセマンティクスは同じですが、優先順位は異なります。 not true or true​ は ​not (true or true)​ として実行されるため ​false​ を返しますが、​!true or true​ は ​true​ を返します。​!​ が最初の ​true​ にのみ適用されるためです。​!(true or true)​ は ​false​ を返します。
次の例では、論理演算子を使用します。 ソース ```dataweave %dw 2.0 var myArray = [1,2,3,4,5] var myMap = myArray map not (($ mod 2) == 0) output application/json --- { "not" : [ "notTrue" : not true, "notFalse" : not false, "myMapWithNot" : myMap ], "and" : [ "andTrueFalse" : true and false, "andIsTrue" : (1 + 1 == 2) and (2 + 2 == 4), "andIsFalse" : (1 + 1 == 2) and (2 + 2 == 2) ], "or" : [ "orTrueFalse" : true or false, "orIsTrue" : (1 + 1 == 2) or (2 + 2 == 2), "orIsFalse" : (1 + 1 == 1) or (2 + 2 == 2) ], "!-vs-not" : [ "example-!" : (! true or true), "example-not" : (not true or true) ] } ``` `myMap`​ はリスト (​`myArray`​) 内の項目を反復処理し、剰余 (​`mod`​) 式が各項目に適用されたときに ​`0`​ と評価​_されない_​かどうかを決定します。 出力 ```json { "not": [ { "notTrue": false }, { "notFalse": true }, { "myMapWithNot": [ true, false, true, false, true ] } ], "and": [ { "andTrueFalse": false }, { "andIsTrue": true }, { "andIsFalse": false } ], "or": [ { "orTrueFalse": true }, { "orIsTrue": true }, { "orIsFalse": false } ], "!-vs-not": [ { "example-!": true }, { "example-not": false } ] } ``` `not`​ は ​`not (true)`​ のような式では機能しますが、​`not(true)`​ (スペースなし) では機能しないことに注意してください。 論理演算子は組み合わせて使用することができます。次の例では、以下を使用します。 - `orNot`​ 式で定義されている ​`or not`​。 - `andNot`​ の ​`and not`​。 - `notWithAndNot`​ の ​`not`​ および ​`and not`​。 ```dataweave %dw 2.0 var orNot = if (1 + 1 == 4 or not 1 == 2) {"answer": "orNot - Condition met"} else {"answer": "nope"} var andNot = if (1 + 1 == 2 and not 1 == 2) {"answer": "andNot - Condition met"} else {"answer": "nope"} var notWithAndNot = if (not (1 + 1 == 2 and not 1 == 1)) {"answer": "notWithAndNot - Condition met"} else {"answer": "nope"} output application/json --- { "answers" : [ orNot, andNot, notWithAndNot ] } ``` 出力 ```json { "answers": [ { "answer": "orNot - Condition met" }, { "answer": "andNot - Condition met" }, { "answer": "notWithAndNot - Condition met" } ] } ``` 例のすべての条件式が ​`true`​ に評価されるため、DataWeave は各 ​`if`​ ブロック内のコードを実行します。 ## [](#配列用の先頭追加演算子追加演算子および削除加演算子)配列用の先頭追加演算子、追加演算子、および削除加演算子 DataWeave では、配列内に項目を追加および先頭に追加する演算子をサポートしています。
演算子 説明

>>

演算子の左側のデータを右側の配列内の項目の先頭に追加します。たとえば、​1 >> [2]​ の結果は ​[ 1, 2 ]​ となり、配列内の ​2​ の前に ​1​ が追加されます。

<<

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] << 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。

+

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] + 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。配列は、常に演算子の左側になります。

-

配列から、サポートされる型の指定された要素を削除します。

次の例では、配列での prepend、append、remove 演算子の使用を示します。 ```dataweave %dw 2.0 output application/json --- { "prepend-append" : [ // Array on right side when prepending. { "prepend" : 1 >> [2] }, { "prepend-number" : 1 >> [1] }, { "prepend-string" : "a" >> [1] }, { "prepend-object" : { "a" : "b"} >> [1] }, { "prepend-array" : [1] >> [2, 3] }, { "prepend-binary" : (1 as Binary) >> [1] }, { "prepend-date-time" : |23:57:59Z| >> [ |2017-10-01| ] }, // Array is on left side when appending. { "append-number" : [1] << 2 }, { "append-string" : [1] << "a" }, { "append-object" : [1] << { "a" : "b"} }, { "append-array" : [1,2] << [1, 2, 3] }, { "append-binary" : [1] << (1 as Binary) }, { "append-date-time" : [ |2017-10-01| ] << |23:57:59Z| }, { "append-object-to-array" : [1,2] << {"a" : "b"} }, { "append-array-to-array1" : ["a","b"] << ["c","d"] }, { "append-array-to-array2" : [["a","b"],["c","d"]] << ["e","f"] }, // + always appends within the array { "append-with-+" : [1] + 2 }, { "append-with-+" : [2] + 1 }, { "removeNumberFromArray" : ( [1,2,3] - 2 ) }, { "removeObjectFromArray" : ( [ {a : "b"}, {c : "d"} , { e : "f"} ] - { c : "d"} ) } ] } ``` 出力 ```json { "prepend-append": [ { "prepend": [ 1, 2 ] }, { "prepend-number": [ 1, 1 ] }, { "prepend-string": [ "a", 1 ] }, { "prepend-array": [ [ 1 ], 2, 3 ] }, { "prepend-object": [ { "a": "b" }, 1 ] }, { "prepend-binary": [ "\u0001", 1 ] }, { "prepend-date-time": [ "23:57:59Z", "2017-10-01" ] }, { "append-number": [ 1, 2 ] }, { "append-string": [ 1, "a" ] }, { "append-object": [ 1, { "a": "b" } ] }, { "append-array": [ 1, 2, [ 1, 2, 3 ] ] }, { "append-binary": [ 1, "\u0001" ] }, { "append-date-time": [ "2017-10-01", "23:57:59Z" ] }, { "append-object-to-array": [ 1, 2, { "a": "b" } ] }, { "append-array-to-array1": [ "a", "b", ["c","d"] ] }, { "append-array-to-array2": [ ["a","b"], ["c","d"], ["e","f"] ] }, { "append-with-+": [ 1, 2] }, { "append-with-+": [ 2, 1] }, { "removeNumberFromArray": [ 1, 3 ] }, { "removeObjectFromArray": [ { "a": "b" }, { "e": "f" } ] } ] } ``` ## [](#スコープ演算子とフローコントロール演算子)スコープ演算子とフローコントロール演算子 DataWeave は、式のフローとスコープを制御する演算子をサポートしています。 - [`do`​ と ​`using`](#control_flow_do) - [`if else`​ と ​`else if`](#control_flow_if)
Table 1. スコープ変数
演算子 説明

do

スコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​---​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。例については​「do」​と​「例: ローカル DataWeave 変数」​を参照してください。

using

do​ に置き換えられました。 後方互換性のためにのみサポートされています。

Table 2. フローコントロール演算子
演算子 説明

if else

if​ 演算子は条件式を評価し、条件式が true の場合のみ、​if​ の下の値を返します。それ以外の場合、​else​ の下の式を返します。各 ​if​ 式に、対応する ​else​ 式が必要です。例については​「if else」​を参照してください。

else if

else if​ を組み込むと、​else​ 演算子によって if-else 構造内での式をまとめてチェーニングできます。例については​「else if」​を参照してください。

## [](#update-operator)update 演算子 DataWeave では ​`update`​ 演算子をサポートしています。これにより、データ構造の指定された項目を新しい値で更新できます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ Mule 4.3 より前のバージョンでは、次の構文を使用して、オブジェクト全体を再作成せずに ​`myInput`​ の ​`age`​ 値を 1 ずつ増やす必要があります。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput mapObject ((value,key) -> if(key as String == "age") {(key): value as Number + 1} else {(key): value} ) ``` Mule 4.3 では、​`update`​ 演算子によって構文が簡略化されています。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput update { case age at .age -> age + 1 } ``` どちらの DataWeave スクリプトでも同じ結果が返されます。 ```JSON { "name": "Ken", "lastName": "Shokida", "age": 31 } ``` `update`​ を使用した場合、すべてのキー-値のペアでのキャストまたは反復処理は必要ありません。 `update`​ 構文は次のようになります。 ```weave update { case at [!]? [if()]? -> ... } ``` - `value_to_update`​ は更新する元の値を表します。 - `update_expression`​ は ​`value_to_update`​ の値に一致するセレクター式です。 - `variable_name`​ は一致した ​`update_expression`​ 値にバインドする変数の名前です。 - `new_value`​ は新しい値を使用する式です。 - `[if()]?` ​`conditional_expression`​ で ​`true`​ が返される場合、スクリプトで値が更新されます。条件式の使用は任意です。 - `[!]`​ はセレクターを upsert としてマークします。式で一致が見つからなかった場合、​`!`​ によって ​`update`​ 演算子ですべての必須要素が作成され、新しい値が挿入されます。 - `update_expression`​ では複数の ​`case`​ 式をサポートしています。
update​ 演算子では既存の値は変換されません。代わりに、更新された式を使用して新しい値が作成されます。
### [](#セレクター式)セレクター式 `update`​ 演算子と一緒にセレクター式を使用して、更新する項目を指定します。 #### [](#値セレクター)値セレクター この一致セレクターでは、オブジェクト内の任意の値への一致を確認できます。 次の例では、値セレクターを使用してルートレベルの項目とネストレベルの項目を更新します。 ソース ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } output application/json --- myInput update { case age at .age -> age + 1 case s at .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` #### [](#インデックスセレクター)インデックスセレクター この一致セレクターを使用すれば、配列をそのインデックスで照合できます。 次の例では、配列の最初の場所にある要素を更新します。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "addresses": [{ "street": "Amenabar", "zipCode": "AB1234" }] } ``` ソース ```weave %dw 2.0 output application/json --- payload update { case s at .addresses[0] -> { "street": "Second Street", "zipCode": "ZZ123" } } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 30, "addresses": [ { "street": "Second Street", "zipCode": "ZZ123" } ] } ``` #### [](#属性セレクター)属性セレクター この一致セレクターを使用すれば、属性値を照合できます。 次の例では、属性値を更新して大文字に変更します。 入力 ```xml ``` ソース ```weave %dw 2.0 output application/xml --- payload update { case name at .user.@name -> upper(name) } ``` 出力 ```xml ``` #### [](#動的セレクター)動的セレクター 任意のセレクターに式を組み込み、選択を動的にできます。 次の例では、ハードコード化されていない項目の値を動的に選択して更新します。このような項目は実行時に変更される場合があります。この例では ​`theFieldName`​ 変数を使用してキーが ​`name`​ の項目を取得し、その項目の値を ​`Shoki`​ に変更します。 入力 ```json { "name": "Ken", "lastName":"Shokida" } ``` ソース ```weave %dw 2.0 var theFieldName = "name" output application/json --- payload update { case s at ."$(theFieldName)" -> "Shoki" } ``` 出力 ```json { "name": "Shoki", "lastName": "Shokida" } ``` ### [](#条件付き更新)条件付き更新 `update`​ 演算子には、特定の条件で項目を変更する場合の条件付き更新を記述する構文があります。 次の例では、ユーザーの名前に基づいてカテゴリを更新します。 入力 ```json [{"name": "Ken", "age": 30}, {"name": "Tomo", "age": 70}, {"name": "Kajika", "age": 10}] ``` ソース ```weave %dw 2.0 output application/json --- payload map ((user) -> user update { case name at .name if(name == "Ken") -> name ++ " (Leandro)" case name at .name if(name == "Tomo") -> name ++ " (Christian)" } ) ``` 出力 ```json [ { "name": "Ken (Leandro)", "age": 30 }, { "name": "Tomo (Christian)", "age": 70 }, { "name": "Kajika", "age": 10 } ] ``` ### [](#更新挿入)更新/挿入 `update`​ 演算子を使用すれば、セレクター式の末尾にある ​`!`​ 記号を使用して、項目が存在しない場合に挿入できます。項目が存在しない場合、演算子によって ​`null`​ 値が変数にバインドされます。 次の例では、配列 ​`myInput`​ の各オブジェクトを更新します。項目 ​`name`​ がオブジェクトに存在する場合、例では ​`upper`​ 関数を ​`name`​ の値に適用します。項目 ​`name`​ がオブジェクトに存在しない場合、例ではキー-値のペア ​`"name": "JOHN"`​ をオブジェクトに追加します。 ソース ```weave %dw 2.0 var myInput = [{"lastName": "Doe"}, {"lastName": "Parker", "name": "Peter" }] output application/json --- myInput map ((value) -> value update { case name at .name! -> if(name == null) "JOHN" else upper(name) } ) ``` 出力 ```json [ { "lastName": "Doe", "name": "JOHN" }, { "lastName": "Parker", "name": "PETER" } ] ``` ### [](#糖衣構文)糖衣構文 `update`​ 演算子では、もっと長い ​` at`​ 構文の場所で ​`$`​ という名前のデフォルトの変数を受け入れます。 次の例では、式 ​`.age`​ の値をデフォルトの変数名 ​`$`​ にバインドしており、これが新しい値を表すために使用されます。もっと長い代替の構文はコメント内で示しています。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } ``` ソース ```weave %dw 2.0 output application/json --- payload update { //equivalent expression: //case age at .age -> age + 1 case .age -> $ + 1 case .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` ## [](#metadata-assignment-operator)メタデータ代入演算子 DataWeave では、​`as`​ 演算子を使用せずに値のメタデータを設定できるメタデータ代入演算子 ​`<~`​ がサポートされます。 この演算子は、メタデータを設定して現在の値の型を維持する場合に便利です。値を新しい型に型強制する場合は、​[as](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types-coercion)​ を使用してください。 _DataWeave 2.5.0 で導入されました。Mule 4.5 以降でサポートされます。_ 演算子の構文は次のようになります。 ```none <~ ``` 演算子によって ​`objectA`​ がメタデータとして ​`valueB`​ に代入されます。矢印は、メタデータが代入される値を指しています。 Mule 4.5 より前のバージョンでは、たとえば ​`class`​ メタデータ項目をオブジェクトに追加するのに次の構文が必要です。 ```weave %dw 2.0 --- {name: "Ken"} as Object {class: "Person"} ``` Mule 4.5 では、メタデータ代入演算子 ​`<~`​ によって構文が簡略化されます。 ```weave %dw 2.0 --- {name: "Ken"} <~ {class: "Person"} ``` ### [](#メタデータ)メタデータ メタデータとは、値に添付され、その同一性には影響しない追加情報です。2 つの等しい値 ​`A`​ と ​`B`​ があるとして、メタデータを ​`A`​ に添付して ​`A'`​ とすると、​`A == A' == B`​ となります。 そのため、値と値に添付されたメタデータで形成される値を定義できます。 # DataWeave の演算子 DataWeave では、数学演算子、等価演算子、さらに prepend、append、update などの演算子など、いくつかの演算子をサポートしています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#数学演算子)数学演算子 DataWeave は、ほとんどの一般的な数学演算子をサポートしています。
演算子 説明

+

加算。

-

減算。

*

乗算。

/

除算。

`(-)`​ および ​`(+)`​ 演算子では、数値の操作に加えて、配列、オブジェクト、日付など、複雑なデータ構造も操作できます。 次の例では、さまざまなデータ型で数学演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "mathOperators" : [ { "2 + 2" : (2 + 2) }, { "2 - 2" : (2 - 2) }, { "2 * 2" : (2 * 2) }, { "2 / 2" : (2 / 2) }, { "[1,2,3] - 1 + 4" : [1,2,3] - 1 + 4}, { "{a:1, b:2, c:3} - 'a' " : {a:1, b:2, c:3} - "a"}, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|" : |2021-03-02T10:39:59| - |P1D| + |PT3H|} ] } ``` 出力 ```json { "mathOperators": [ { "2 + 2": 4 }, { "2 - 2": 0 }, { "2 * 2": 4 }, { "2 / 2": 1 }, { "[1,2,3] - 1 + 4": [2,3,4] }, { "{a:1, b:2, c:3} - 'a' ": {"b": 2, "c": 3} }, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|": "2021-03-01T13:39:59" }] } ``` いくつかの DataWeave 関数は数値を操作します。たとえば、​[sum](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-sum)​、​[mod](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-mod)​ (剰余)、​[avg](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-abs)​ (平均) などがあります。 ## [](#等価演算子と比較演算子)等価演算子と比較演算子 DataWeave は、次の等価演算子と比較演算子をサポートしています。
演算子 説明

<

次の値より小さい。

>

次の値より大きい。

<=

次の値以下。

>=

次の値以上。

==

次の値と等しい。

~=

値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

[論理演算子](#logical_operators)​ ​`not`​ を使用することで、これらの演算子を否定することができます。 次の例では、比較演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "relational" : [ { "1 < 1" : (1 < 1) }, { "1 > 2" : (1 > 2) }, { "1 <= 1" : (1 <= 1) }, { "1 >= 1" : (1 >= 1) } ] } ``` 出力 ```json { "relational": [ { "(1 < 1)": false }, { "(1 > 2)": false }, { "(1 <= 1)": true }, { "(1 >= 1)": true } ] } ``` 比較演算子のオペランドの型が異なる場合は、DataWeave は右側のオペランドを左側のオペランドの方に強制変換します。 たとえば、式 ​`"123" > 12`​ では、​`12`​ (数値型) が ​`"12"`​ (文字列型) に強制変換され、各文字列値が辞書的順序で比較されます。 式 ​`123 > "12"`​ では、文字列値 ​`"12"`​ が数値 ​`12`​ に強制変換され、数値が比較されます。 次の例では、等価演算子を使用しています。 ソース ```dataweave %dw 2.0 output application/dw --- { "equality" : [ (1 == 1), (1 == 2), ("true" == true), ("true" ~= true), (['true'] ~= [true]), ('1' ~= 1) ] } ``` 出力 ```text { equality: [ true, false, false, true, true, true ] } ``` ## [](#logical_operators)論理演算子 DataWeave は、次の論理演算子をサポートしています。
演算子 説明

not

入力の結果を否定します。​!​ も参照してください。

!

入力の結果を否定します。​not​ も参照してください。​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。

and

すべての入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

or

いずれかの入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

not​ と ​!​ のセマンティクスは同じですが、優先順位は異なります。 not true or true​ は ​not (true or true)​ として実行されるため ​false​ を返しますが、​!true or true​ は ​true​ を返します。​!​ が最初の ​true​ にのみ適用されるためです。​!(true or true)​ は ​false​ を返します。
次の例では、論理演算子を使用します。 ソース ```dataweave %dw 2.0 var myArray = [1,2,3,4,5] var myMap = myArray map not (($ mod 2) == 0) output application/json --- { "not" : [ "notTrue" : not true, "notFalse" : not false, "myMapWithNot" : myMap ], "and" : [ "andTrueFalse" : true and false, "andIsTrue" : (1 + 1 == 2) and (2 + 2 == 4), "andIsFalse" : (1 + 1 == 2) and (2 + 2 == 2) ], "or" : [ "orTrueFalse" : true or false, "orIsTrue" : (1 + 1 == 2) or (2 + 2 == 2), "orIsFalse" : (1 + 1 == 1) or (2 + 2 == 2) ], "!-vs-not" : [ "example-!" : (! true or true), "example-not" : (not true or true) ] } ``` `myMap`​ はリスト (​`myArray`​) 内の項目を反復処理し、剰余 (​`mod`​) 式が各項目に適用されたときに ​`0`​ と評価​_されない_​かどうかを決定します。 出力 ```json { "not": [ { "notTrue": false }, { "notFalse": true }, { "myMapWithNot": [ true, false, true, false, true ] } ], "and": [ { "andTrueFalse": false }, { "andIsTrue": true }, { "andIsFalse": false } ], "or": [ { "orTrueFalse": true }, { "orIsTrue": true }, { "orIsFalse": false } ], "!-vs-not": [ { "example-!": true }, { "example-not": false } ] } ``` `not`​ は ​`not (true)`​ のような式では機能しますが、​`not(true)`​ (スペースなし) では機能しないことに注意してください。 論理演算子は組み合わせて使用することができます。次の例では、以下を使用します。 - `orNot`​ 式で定義されている ​`or not`​。 - `andNot`​ の ​`and not`​。 - `notWithAndNot`​ の ​`not`​ および ​`and not`​。 ```dataweave %dw 2.0 var orNot = if (1 + 1 == 4 or not 1 == 2) {"answer": "orNot - Condition met"} else {"answer": "nope"} var andNot = if (1 + 1 == 2 and not 1 == 2) {"answer": "andNot - Condition met"} else {"answer": "nope"} var notWithAndNot = if (not (1 + 1 == 2 and not 1 == 1)) {"answer": "notWithAndNot - Condition met"} else {"answer": "nope"} output application/json --- { "answers" : [ orNot, andNot, notWithAndNot ] } ``` 出力 ```json { "answers": [ { "answer": "orNot - Condition met" }, { "answer": "andNot - Condition met" }, { "answer": "notWithAndNot - Condition met" } ] } ``` 例のすべての条件式が ​`true`​ に評価されるため、DataWeave は各 ​`if`​ ブロック内のコードを実行します。 ## [](#配列用の先頭追加演算子追加演算子および削除加演算子)配列用の先頭追加演算子、追加演算子、および削除加演算子 DataWeave では、配列内に項目を追加および先頭に追加する演算子をサポートしています。
演算子 説明

>>

演算子の左側のデータを右側の配列内の項目の先頭に追加します。たとえば、​1 >> [2]​ の結果は ​[ 1, 2 ]​ となり、配列内の ​2​ の前に ​1​ が追加されます。

<<

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] << 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。

+

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] + 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。配列は、常に演算子の左側になります。

-

配列から、サポートされる型の指定された要素を削除します。

次の例では、配列での prepend、append、remove 演算子の使用を示します。 ```dataweave %dw 2.0 output application/json --- { "prepend-append" : [ // Array on right side when prepending. { "prepend" : 1 >> [2] }, { "prepend-number" : 1 >> [1] }, { "prepend-string" : "a" >> [1] }, { "prepend-object" : { "a" : "b"} >> [1] }, { "prepend-array" : [1] >> [2, 3] }, { "prepend-binary" : (1 as Binary) >> [1] }, { "prepend-date-time" : |23:57:59Z| >> [ |2017-10-01| ] }, // Array is on left side when appending. { "append-number" : [1] << 2 }, { "append-string" : [1] << "a" }, { "append-object" : [1] << { "a" : "b"} }, { "append-array" : [1,2] << [1, 2, 3] }, { "append-binary" : [1] << (1 as Binary) }, { "append-date-time" : [ |2017-10-01| ] << |23:57:59Z| }, { "append-object-to-array" : [1,2] << {"a" : "b"} }, { "append-array-to-array1" : ["a","b"] << ["c","d"] }, { "append-array-to-array2" : [["a","b"],["c","d"]] << ["e","f"] }, // + always appends within the array { "append-with-+" : [1] + 2 }, { "append-with-+" : [2] + 1 }, { "removeNumberFromArray" : ( [1,2,3] - 2 ) }, { "removeObjectFromArray" : ( [ {a : "b"}, {c : "d"} , { e : "f"} ] - { c : "d"} ) } ] } ``` 出力 ```json { "prepend-append": [ { "prepend": [ 1, 2 ] }, { "prepend-number": [ 1, 1 ] }, { "prepend-string": [ "a", 1 ] }, { "prepend-array": [ [ 1 ], 2, 3 ] }, { "prepend-object": [ { "a": "b" }, 1 ] }, { "prepend-binary": [ "\u0001", 1 ] }, { "prepend-date-time": [ "23:57:59Z", "2017-10-01" ] }, { "append-number": [ 1, 2 ] }, { "append-string": [ 1, "a" ] }, { "append-object": [ 1, { "a": "b" } ] }, { "append-array": [ 1, 2, [ 1, 2, 3 ] ] }, { "append-binary": [ 1, "\u0001" ] }, { "append-date-time": [ "2017-10-01", "23:57:59Z" ] }, { "append-object-to-array": [ 1, 2, { "a": "b" } ] }, { "append-array-to-array1": [ "a", "b", ["c","d"] ] }, { "append-array-to-array2": [ ["a","b"], ["c","d"], ["e","f"] ] }, { "append-with-+": [ 1, 2] }, { "append-with-+": [ 2, 1] }, { "removeNumberFromArray": [ 1, 3 ] }, { "removeObjectFromArray": [ { "a": "b" }, { "e": "f" } ] } ] } ``` ## [](#スコープ演算子とフローコントロール演算子)スコープ演算子とフローコントロール演算子 DataWeave は、式のフローとスコープを制御する演算子をサポートしています。 - [`do`​ と ​`using`](#control_flow_do) - [`if else`​ と ​`else if`](#control_flow_if)
Table 1. スコープ変数
演算子 説明

do

スコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​---​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。例については​「do」​と​「例: ローカル DataWeave 変数」​を参照してください。

using

do​ に置き換えられました。 後方互換性のためにのみサポートされています。

Table 2. フローコントロール演算子
演算子 説明

if else

if​ 演算子は条件式を評価し、条件式が true の場合のみ、​if​ の下の値を返します。それ以外の場合、​else​ の下の式を返します。各 ​if​ 式に、対応する ​else​ 式が必要です。例については​「if else」​を参照してください。

else if

else if​ を組み込むと、​else​ 演算子によって if-else 構造内での式をまとめてチェーニングできます。例については​「else if」​を参照してください。

## [](#update-operator)update 演算子 DataWeave では ​`update`​ 演算子をサポートしています。これにより、データ構造の指定された項目を新しい値で更新できます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ Mule 4.3 より前のバージョンでは、次の構文を使用して、オブジェクト全体を再作成せずに ​`myInput`​ の ​`age`​ 値を 1 ずつ増やす必要があります。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput mapObject ((value,key) -> if(key as String == "age") {(key): value as Number + 1} else {(key): value} ) ``` Mule 4.3 では、​`update`​ 演算子によって構文が簡略化されています。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput update { case age at .age -> age + 1 } ``` どちらの DataWeave スクリプトでも同じ結果が返されます。 ```JSON { "name": "Ken", "lastName": "Shokida", "age": 31 } ``` `update`​ を使用した場合、すべてのキー-値のペアでのキャストまたは反復処理は必要ありません。 `update`​ 構文は次のようになります。 ```weave update { case at [!]? [if()]? -> ... } ``` - `value_to_update`​ は更新する元の値を表します。 - `update_expression`​ は ​`value_to_update`​ の値に一致するセレクター式です。 - `variable_name`​ は一致した ​`update_expression`​ 値にバインドする変数の名前です。 - `new_value`​ は新しい値を使用する式です。 - `[if()]?` ​`conditional_expression`​ で ​`true`​ が返される場合、スクリプトで値が更新されます。条件式の使用は任意です。 - `[!]`​ はセレクターを upsert としてマークします。式で一致が見つからなかった場合、​`!`​ によって ​`update`​ 演算子ですべての必須要素が作成され、新しい値が挿入されます。 - `update_expression`​ では複数の ​`case`​ 式をサポートしています。
update​ 演算子では既存の値は変換されません。代わりに、更新された式を使用して新しい値が作成されます。
### [](#セレクター式)セレクター式 `update`​ 演算子と一緒にセレクター式を使用して、更新する項目を指定します。 #### [](#値セレクター)値セレクター この一致セレクターでは、オブジェクト内の任意の値への一致を確認できます。 次の例では、値セレクターを使用してルートレベルの項目とネストレベルの項目を更新します。 ソース ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } output application/json --- myInput update { case age at .age -> age + 1 case s at .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` #### [](#インデックスセレクター)インデックスセレクター この一致セレクターを使用すれば、配列をそのインデックスで照合できます。 次の例では、配列の最初の場所にある要素を更新します。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "addresses": [{ "street": "Amenabar", "zipCode": "AB1234" }] } ``` ソース ```weave %dw 2.0 output application/json --- payload update { case s at .addresses[0] -> { "street": "Second Street", "zipCode": "ZZ123" } } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 30, "addresses": [ { "street": "Second Street", "zipCode": "ZZ123" } ] } ``` #### [](#属性セレクター)属性セレクター この一致セレクターを使用すれば、属性値を照合できます。 次の例では、属性値を更新して大文字に変更します。 入力 ```xml ``` ソース ```weave %dw 2.0 output application/xml --- payload update { case name at .user.@name -> upper(name) } ``` 出力 ```xml ``` #### [](#動的セレクター)動的セレクター 任意のセレクターに式を組み込み、選択を動的にできます。 次の例では、ハードコード化されていない項目の値を動的に選択して更新します。このような項目は実行時に変更される場合があります。この例では ​`theFieldName`​ 変数を使用してキーが ​`name`​ の項目を取得し、その項目の値を ​`Shoki`​ に変更します。 入力 ```json { "name": "Ken", "lastName":"Shokida" } ``` ソース ```weave %dw 2.0 var theFieldName = "name" output application/json --- payload update { case s at ."$(theFieldName)" -> "Shoki" } ``` 出力 ```json { "name": "Shoki", "lastName": "Shokida" } ``` ### [](#条件付き更新)条件付き更新 `update`​ 演算子には、特定の条件で項目を変更する場合の条件付き更新を記述する構文があります。 次の例では、ユーザーの名前に基づいてカテゴリを更新します。 入力 ```json [{"name": "Ken", "age": 30}, {"name": "Tomo", "age": 70}, {"name": "Kajika", "age": 10}] ``` ソース ```weave %dw 2.0 output application/json --- payload map ((user) -> user update { case name at .name if(name == "Ken") -> name ++ " (Leandro)" case name at .name if(name == "Tomo") -> name ++ " (Christian)" } ) ``` 出力 ```json [ { "name": "Ken (Leandro)", "age": 30 }, { "name": "Tomo (Christian)", "age": 70 }, { "name": "Kajika", "age": 10 } ] ``` ### [](#更新挿入)更新/挿入 `update`​ 演算子を使用すれば、セレクター式の末尾にある ​`!`​ 記号を使用して、項目が存在しない場合に挿入できます。項目が存在しない場合、演算子によって ​`null`​ 値が変数にバインドされます。 次の例では、配列 ​`myInput`​ の各オブジェクトを更新します。項目 ​`name`​ がオブジェクトに存在する場合、例では ​`upper`​ 関数を ​`name`​ の値に適用します。項目 ​`name`​ がオブジェクトに存在しない場合、例ではキー-値のペア ​`"name": "JOHN"`​ をオブジェクトに追加します。 ソース ```weave %dw 2.0 var myInput = [{"lastName": "Doe"}, {"lastName": "Parker", "name": "Peter" }] output application/json --- myInput map ((value) -> value update { case name at .name! -> if(name == null) "JOHN" else upper(name) } ) ``` 出力 ```json [ { "lastName": "Doe", "name": "JOHN" }, { "lastName": "Parker", "name": "PETER" } ] ``` ### [](#糖衣構文)糖衣構文 `update`​ 演算子では、もっと長い ​` at`​ 構文の場所で ​`$`​ という名前のデフォルトの変数を受け入れます。 次の例では、式 ​`.age`​ の値をデフォルトの変数名 ​`$`​ にバインドしており、これが新しい値を表すために使用されます。もっと長い代替の構文はコメント内で示しています。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } ``` ソース ```weave %dw 2.0 output application/json --- payload update { //equivalent expression: //case age at .age -> age + 1 case .age -> $ + 1 case .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` ## [](#metadata-assignment-operator)メタデータ代入演算子 DataWeave では、​`as`​ 演算子を使用せずに値のメタデータを設定できるメタデータ代入演算子 ​`<~`​ がサポートされます。 この演算子は、メタデータを設定して現在の値の型を維持する場合に便利です。値を新しい型に型強制する場合は、​[as](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types-coercion)​ を使用してください。 _DataWeave 2.5.0 で導入されました。Mule 4.5 以降でサポートされます。_ 演算子の構文は次のようになります。 ```none <~ ``` 演算子によって ​`objectA`​ がメタデータとして ​`valueB`​ に代入されます。矢印は、メタデータが代入される値を指しています。 Mule 4.5 より前のバージョンでは、たとえば ​`class`​ メタデータ項目をオブジェクトに追加するのに次の構文が必要です。 ```weave %dw 2.0 --- {name: "Ken"} as Object {class: "Person"} ``` Mule 4.5 では、メタデータ代入演算子 ​`<~`​ によって構文が簡略化されます。 ```weave %dw 2.0 --- {name: "Ken"} <~ {class: "Person"} ``` ### [](#メタデータ)メタデータ メタデータとは、値に添付され、その同一性には影響しない追加情報です。2 つの等しい値 ​`A`​ と ​`B`​ があるとして、メタデータを ​`A`​ に添付して ​`A'`​ とすると、​`A == A' == B`​ となります。 そのため、値と値に添付されたメタデータで形成される値を定義できます。 # DataWeave の演算子 DataWeave では、数学演算子、等価演算子、さらに prepend、append、update などの演算子など、いくつかの演算子をサポートしています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#数学演算子)数学演算子 DataWeave は、ほとんどの一般的な数学演算子をサポートしています。
演算子 説明

+

加算。

-

減算。

*

乗算。

/

除算。

`(-)`​ および ​`(+)`​ 演算子では、数値の操作に加えて、配列、オブジェクト、日付など、複雑なデータ構造も操作できます。 次の例では、さまざまなデータ型で数学演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "mathOperators" : [ { "2 + 2" : (2 + 2) }, { "2 - 2" : (2 - 2) }, { "2 * 2" : (2 * 2) }, { "2 / 2" : (2 / 2) }, { "[1,2,3] - 1 + 4" : [1,2,3] - 1 + 4}, { "{a:1, b:2, c:3} - 'a' " : {a:1, b:2, c:3} - "a"}, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|" : |2021-03-02T10:39:59| - |P1D| + |PT3H|} ] } ``` 出力 ```json { "mathOperators": [ { "2 + 2": 4 }, { "2 - 2": 0 }, { "2 * 2": 4 }, { "2 / 2": 1 }, { "[1,2,3] - 1 + 4": [2,3,4] }, { "{a:1, b:2, c:3} - 'a' ": {"b": 2, "c": 3} }, { "|2021-03-02T10:39:59| - |P1D| + |PT3H|": "2021-03-01T13:39:59" }] } ``` いくつかの DataWeave 関数は数値を操作します。たとえば、​[sum](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-sum)​、​[mod](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-mod)​ (剰余)、​[avg](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-abs)​ (平均) などがあります。 ## [](#等価演算子と比較演算子)等価演算子と比較演算子 DataWeave は、次の等価演算子と比較演算子をサポートしています。
演算子 説明

<

次の値より小さい。

>

次の値より大きい。

<=

次の値以下。

>=

次の値以上。

==

次の値と等しい。

~=

値の型が異なる場合、等価演算子は、1 つの値をもう 1 つの値の型に強制変換しようとします。

[論理演算子](#logical_operators)​ ​`not`​ を使用することで、これらの演算子を否定することができます。 次の例では、比較演算子を使用します。 ソース ```dataweave %dw 2.0 output application/json --- { "relational" : [ { "1 < 1" : (1 < 1) }, { "1 > 2" : (1 > 2) }, { "1 <= 1" : (1 <= 1) }, { "1 >= 1" : (1 >= 1) } ] } ``` 出力 ```json { "relational": [ { "(1 < 1)": false }, { "(1 > 2)": false }, { "(1 <= 1)": true }, { "(1 >= 1)": true } ] } ``` 比較演算子のオペランドの型が異なる場合は、DataWeave は右側のオペランドを左側のオペランドの方に強制変換します。 たとえば、式 ​`"123" > 12`​ では、​`12`​ (数値型) が ​`"12"`​ (文字列型) に強制変換され、各文字列値が辞書的順序で比較されます。 式 ​`123 > "12"`​ では、文字列値 ​`"12"`​ が数値 ​`12`​ に強制変換され、数値が比較されます。 次の例では、等価演算子を使用しています。 ソース ```dataweave %dw 2.0 output application/dw --- { "equality" : [ (1 == 1), (1 == 2), ("true" == true), ("true" ~= true), (['true'] ~= [true]), ('1' ~= 1) ] } ``` 出力 ```text { equality: [ true, false, false, true, true, true ] } ``` ## [](#logical_operators)論理演算子 DataWeave は、次の論理演算子をサポートしています。
演算子 説明

not

入力の結果を否定します。​!​ も参照してください。

!

入力の結果を否定します。​not​ も参照してください。​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。

and

すべての入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

or

いずれかの入力の結果が true の場合は ​true​ を返し、それ以外の場合は ​false​ を返します。

not​ と ​!​ のセマンティクスは同じですが、優先順位は異なります。 not true or true​ は ​not (true or true)​ として実行されるため ​false​ を返しますが、​!true or true​ は ​true​ を返します。​!​ が最初の ​true​ にのみ適用されるためです。​!(true or true)​ は ​false​ を返します。
次の例では、論理演算子を使用します。 ソース ```dataweave %dw 2.0 var myArray = [1,2,3,4,5] var myMap = myArray map not (($ mod 2) == 0) output application/json --- { "not" : [ "notTrue" : not true, "notFalse" : not false, "myMapWithNot" : myMap ], "and" : [ "andTrueFalse" : true and false, "andIsTrue" : (1 + 1 == 2) and (2 + 2 == 4), "andIsFalse" : (1 + 1 == 2) and (2 + 2 == 2) ], "or" : [ "orTrueFalse" : true or false, "orIsTrue" : (1 + 1 == 2) or (2 + 2 == 2), "orIsFalse" : (1 + 1 == 1) or (2 + 2 == 2) ], "!-vs-not" : [ "example-!" : (! true or true), "example-not" : (not true or true) ] } ``` `myMap`​ はリスト (​`myArray`​) 内の項目を反復処理し、剰余 (​`mod`​) 式が各項目に適用されたときに ​`0`​ と評価​_されない_​かどうかを決定します。 出力 ```json { "not": [ { "notTrue": false }, { "notFalse": true }, { "myMapWithNot": [ true, false, true, false, true ] } ], "and": [ { "andTrueFalse": false }, { "andIsTrue": true }, { "andIsFalse": false } ], "or": [ { "orTrueFalse": true }, { "orIsTrue": true }, { "orIsFalse": false } ], "!-vs-not": [ { "example-!": true }, { "example-not": false } ] } ``` `not`​ は ​`not (true)`​ のような式では機能しますが、​`not(true)`​ (スペースなし) では機能しないことに注意してください。 論理演算子は組み合わせて使用することができます。次の例では、以下を使用します。 - `orNot`​ 式で定義されている ​`or not`​。 - `andNot`​ の ​`and not`​。 - `notWithAndNot`​ の ​`not`​ および ​`and not`​。 ```dataweave %dw 2.0 var orNot = if (1 + 1 == 4 or not 1 == 2) {"answer": "orNot - Condition met"} else {"answer": "nope"} var andNot = if (1 + 1 == 2 and not 1 == 2) {"answer": "andNot - Condition met"} else {"answer": "nope"} var notWithAndNot = if (not (1 + 1 == 2 and not 1 == 1)) {"answer": "notWithAndNot - Condition met"} else {"answer": "nope"} output application/json --- { "answers" : [ orNot, andNot, notWithAndNot ] } ``` 出力 ```json { "answers": [ { "answer": "orNot - Condition met" }, { "answer": "andNot - Condition met" }, { "answer": "notWithAndNot - Condition met" } ] } ``` 例のすべての条件式が ​`true`​ に評価されるため、DataWeave は各 ​`if`​ ブロック内のコードを実行します。 ## [](#配列用の先頭追加演算子追加演算子および削除加演算子)配列用の先頭追加演算子、追加演算子、および削除加演算子 DataWeave では、配列内に項目を追加および先頭に追加する演算子をサポートしています。
演算子 説明

>>

演算子の左側のデータを右側の配列内の項目の先頭に追加します。たとえば、​1 >> [2]​ の結果は ​[ 1, 2 ]​ となり、配列内の ​2​ の前に ​1​ が追加されます。

<<

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] << 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。

+

演算子の右側のデータを左側の配列内の項目に追加します。たとえば、​[1] + 2​ の結果は ​[ 1, 2 ]​ となり、配列内の ​1​ の後に ​2​ が追加されます。配列は、常に演算子の左側になります。

-

配列から、サポートされる型の指定された要素を削除します。

次の例では、配列での prepend、append、remove 演算子の使用を示します。 ```dataweave %dw 2.0 output application/json --- { "prepend-append" : [ // Array on right side when prepending. { "prepend" : 1 >> [2] }, { "prepend-number" : 1 >> [1] }, { "prepend-string" : "a" >> [1] }, { "prepend-object" : { "a" : "b"} >> [1] }, { "prepend-array" : [1] >> [2, 3] }, { "prepend-binary" : (1 as Binary) >> [1] }, { "prepend-date-time" : |23:57:59Z| >> [ |2017-10-01| ] }, // Array is on left side when appending. { "append-number" : [1] << 2 }, { "append-string" : [1] << "a" }, { "append-object" : [1] << { "a" : "b"} }, { "append-array" : [1,2] << [1, 2, 3] }, { "append-binary" : [1] << (1 as Binary) }, { "append-date-time" : [ |2017-10-01| ] << |23:57:59Z| }, { "append-object-to-array" : [1,2] << {"a" : "b"} }, { "append-array-to-array1" : ["a","b"] << ["c","d"] }, { "append-array-to-array2" : [["a","b"],["c","d"]] << ["e","f"] }, // + always appends within the array { "append-with-+" : [1] + 2 }, { "append-with-+" : [2] + 1 }, { "removeNumberFromArray" : ( [1,2,3] - 2 ) }, { "removeObjectFromArray" : ( [ {a : "b"}, {c : "d"} , { e : "f"} ] - { c : "d"} ) } ] } ``` 出力 ```json { "prepend-append": [ { "prepend": [ 1, 2 ] }, { "prepend-number": [ 1, 1 ] }, { "prepend-string": [ "a", 1 ] }, { "prepend-array": [ [ 1 ], 2, 3 ] }, { "prepend-object": [ { "a": "b" }, 1 ] }, { "prepend-binary": [ "\u0001", 1 ] }, { "prepend-date-time": [ "23:57:59Z", "2017-10-01" ] }, { "append-number": [ 1, 2 ] }, { "append-string": [ 1, "a" ] }, { "append-object": [ 1, { "a": "b" } ] }, { "append-array": [ 1, 2, [ 1, 2, 3 ] ] }, { "append-binary": [ 1, "\u0001" ] }, { "append-date-time": [ "2017-10-01", "23:57:59Z" ] }, { "append-object-to-array": [ 1, 2, { "a": "b" } ] }, { "append-array-to-array1": [ "a", "b", ["c","d"] ] }, { "append-array-to-array2": [ ["a","b"], ["c","d"], ["e","f"] ] }, { "append-with-+": [ 1, 2] }, { "append-with-+": [ 2, 1] }, { "removeNumberFromArray": [ 1, 3 ] }, { "removeObjectFromArray": [ { "a": "b" }, { "e": "f" } ] } ] } ``` ## [](#スコープ演算子とフローコントロール演算子)スコープ演算子とフローコントロール演算子 DataWeave は、式のフローとスコープを制御する演算子をサポートしています。 - [`do`​ と ​`using`](#control_flow_do) - [`if else`​ と ​`else if`](#control_flow_if)
Table 1. スコープ変数
演算子 説明

do

スコープを作成します。このスコープ内で、新しい変数、関数、アノテーション、または名前空間を宣言し、使用できます。構文は、​---​ で区切られたヘッダーと本文で構成されるという点でマッピングに似ています。このヘッダーはすべての宣言を定義する場所であり、本文は式の結果です。例については​「do」​と​「例: ローカル DataWeave 変数」​を参照してください。

using

do​ に置き換えられました。 後方互換性のためにのみサポートされています。

Table 2. フローコントロール演算子
演算子 説明

if else

if​ 演算子は条件式を評価し、条件式が true の場合のみ、​if​ の下の値を返します。それ以外の場合、​else​ の下の式を返します。各 ​if​ 式に、対応する ​else​ 式が必要です。例については​「if else」​を参照してください。

else if

else if​ を組み込むと、​else​ 演算子によって if-else 構造内での式をまとめてチェーニングできます。例については​「else if」​を参照してください。

## [](#update-operator)update 演算子 DataWeave では ​`update`​ 演算子をサポートしています。これにより、データ構造の指定された項目を新しい値で更新できます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ Mule 4.3 より前のバージョンでは、次の構文を使用して、オブジェクト全体を再作成せずに ​`myInput`​ の ​`age`​ 値を 1 ずつ増やす必要があります。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput mapObject ((value,key) -> if(key as String == "age") {(key): value as Number + 1} else {(key): value} ) ``` Mule 4.3 では、​`update`​ 演算子によって構文が簡略化されています。 ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30 } output application/json --- myInput update { case age at .age -> age + 1 } ``` どちらの DataWeave スクリプトでも同じ結果が返されます。 ```JSON { "name": "Ken", "lastName": "Shokida", "age": 31 } ``` `update`​ を使用した場合、すべてのキー-値のペアでのキャストまたは反復処理は必要ありません。 `update`​ 構文は次のようになります。 ```weave update { case at [!]? [if()]? -> ... } ``` - `value_to_update`​ は更新する元の値を表します。 - `update_expression`​ は ​`value_to_update`​ の値に一致するセレクター式です。 - `variable_name`​ は一致した ​`update_expression`​ 値にバインドする変数の名前です。 - `new_value`​ は新しい値を使用する式です。 - `[if()]?` ​`conditional_expression`​ で ​`true`​ が返される場合、スクリプトで値が更新されます。条件式の使用は任意です。 - `[!]`​ はセレクターを upsert としてマークします。式で一致が見つからなかった場合、​`!`​ によって ​`update`​ 演算子ですべての必須要素が作成され、新しい値が挿入されます。 - `update_expression`​ では複数の ​`case`​ 式をサポートしています。
update​ 演算子では既存の値は変換されません。代わりに、更新された式を使用して新しい値が作成されます。
### [](#セレクター式)セレクター式 `update`​ 演算子と一緒にセレクター式を使用して、更新する項目を指定します。 #### [](#値セレクター)値セレクター この一致セレクターでは、オブジェクト内の任意の値への一致を確認できます。 次の例では、値セレクターを使用してルートレベルの項目とネストレベルの項目を更新します。 ソース ```weave %dw 2.0 var myInput = { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } output application/json --- myInput update { case age at .age -> age + 1 case s at .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` #### [](#インデックスセレクター)インデックスセレクター この一致セレクターを使用すれば、配列をそのインデックスで照合できます。 次の例では、配列の最初の場所にある要素を更新します。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "addresses": [{ "street": "Amenabar", "zipCode": "AB1234" }] } ``` ソース ```weave %dw 2.0 output application/json --- payload update { case s at .addresses[0] -> { "street": "Second Street", "zipCode": "ZZ123" } } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 30, "addresses": [ { "street": "Second Street", "zipCode": "ZZ123" } ] } ``` #### [](#属性セレクター)属性セレクター この一致セレクターを使用すれば、属性値を照合できます。 次の例では、属性値を更新して大文字に変更します。 入力 ```xml ``` ソース ```weave %dw 2.0 output application/xml --- payload update { case name at .user.@name -> upper(name) } ``` 出力 ```xml ``` #### [](#動的セレクター)動的セレクター 任意のセレクターに式を組み込み、選択を動的にできます。 次の例では、ハードコード化されていない項目の値を動的に選択して更新します。このような項目は実行時に変更される場合があります。この例では ​`theFieldName`​ 変数を使用してキーが ​`name`​ の項目を取得し、その項目の値を ​`Shoki`​ に変更します。 入力 ```json { "name": "Ken", "lastName":"Shokida" } ``` ソース ```weave %dw 2.0 var theFieldName = "name" output application/json --- payload update { case s at ."$(theFieldName)" -> "Shoki" } ``` 出力 ```json { "name": "Shoki", "lastName": "Shokida" } ``` ### [](#条件付き更新)条件付き更新 `update`​ 演算子には、特定の条件で項目を変更する場合の条件付き更新を記述する構文があります。 次の例では、ユーザーの名前に基づいてカテゴリを更新します。 入力 ```json [{"name": "Ken", "age": 30}, {"name": "Tomo", "age": 70}, {"name": "Kajika", "age": 10}] ``` ソース ```weave %dw 2.0 output application/json --- payload map ((user) -> user update { case name at .name if(name == "Ken") -> name ++ " (Leandro)" case name at .name if(name == "Tomo") -> name ++ " (Christian)" } ) ``` 出力 ```json [ { "name": "Ken (Leandro)", "age": 30 }, { "name": "Tomo (Christian)", "age": 70 }, { "name": "Kajika", "age": 10 } ] ``` ### [](#更新挿入)更新/挿入 `update`​ 演算子を使用すれば、セレクター式の末尾にある ​`!`​ 記号を使用して、項目が存在しない場合に挿入できます。項目が存在しない場合、演算子によって ​`null`​ 値が変数にバインドされます。 次の例では、配列 ​`myInput`​ の各オブジェクトを更新します。項目 ​`name`​ がオブジェクトに存在する場合、例では ​`upper`​ 関数を ​`name`​ の値に適用します。項目 ​`name`​ がオブジェクトに存在しない場合、例ではキー-値のペア ​`"name": "JOHN"`​ をオブジェクトに追加します。 ソース ```weave %dw 2.0 var myInput = [{"lastName": "Doe"}, {"lastName": "Parker", "name": "Peter" }] output application/json --- myInput map ((value) -> value update { case name at .name! -> if(name == null) "JOHN" else upper(name) } ) ``` 出力 ```json [ { "lastName": "Doe", "name": "JOHN" }, { "lastName": "Parker", "name": "PETER" } ] ``` ### [](#糖衣構文)糖衣構文 `update`​ 演算子では、もっと長い ​` at`​ 構文の場所で ​`$`​ という名前のデフォルトの変数を受け入れます。 次の例では、式 ​`.age`​ の値をデフォルトの変数名 ​`$`​ にバインドしており、これが新しい値を表すために使用されます。もっと長い代替の構文はコメント内で示しています。 入力 ```json { "name": "Ken", "lastName":"Shokida", "age": 30, "address": { "street": "Amenabar", "zipCode": "AB1234" } } ``` ソース ```weave %dw 2.0 output application/json --- payload update { //equivalent expression: //case age at .age -> age + 1 case .age -> $ + 1 case .address.street -> "First Street" } ``` 出力 ```json { "name": "Ken", "lastName": "Shokida", "age": 31, "address": { "street": "First Street", "zipCode": "AB1234" } } ``` ## [](#metadata-assignment-operator)メタデータ代入演算子 DataWeave では、​`as`​ 演算子を使用せずに値のメタデータを設定できるメタデータ代入演算子 ​`<~`​ がサポートされます。 この演算子は、メタデータを設定して現在の値の型を維持する場合に便利です。値を新しい型に型強制する場合は、​[as](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types-coercion)​ を使用してください。 _DataWeave 2.5.0 で導入されました。Mule 4.5 以降でサポートされます。_ 演算子の構文は次のようになります。 ```none <~ ``` 演算子によって ​`objectA`​ がメタデータとして ​`valueB`​ に代入されます。矢印は、メタデータが代入される値を指しています。 Mule 4.5 より前のバージョンでは、たとえば ​`class`​ メタデータ項目をオブジェクトに追加するのに次の構文が必要です。 ```weave %dw 2.0 --- {name: "Ken"} as Object {class: "Person"} ``` Mule 4.5 では、メタデータ代入演算子 ​`<~`​ によって構文が簡略化されます。 ```weave %dw 2.0 --- {name: "Ken"} <~ {class: "Person"} ``` ### [](#metadata-annotations)メタデータアノテーションを使用したメタデータ代入 DataWeave では、メタデータアノテーションのサポートが追加されます。​`@Metadata`​ でマークされたこの特別なアノテーションでは、キー-値ペアのメタデータが、使用されている任意の値に添付されます。 _DataWeave 2.8.0 で導入されました。_ 次の例は前の例と同じ結果を達成しますが、アノテーションを定義しています。これは、メタデータキー ​`class`​ を、それが使用されている指定された値にバインドするクラスです。 ```weave %dw 2.8 @Metadata(key="class") annotation Class(value: String) --- @Class(value="Person") {name: "Ken"} ``` アノテーションを使用してメタデータを定義すると、次の利点が得られます。 - アノテーションを一度定義したら、コード全体でメタデータとして再利用できます。 - アノテーションは付加的です。複数のアノテーションを使用して、すべてのキー-値ペアをまとめて添付します。 - 型チェックを取得すると、アノテーションの値を特定の型に強制できるため、一貫性を確保できます。 ただし、メタデータアノテーションを定義する場合、特定の制限があります。 - `@Metadata`​ でマークされたアノテーションでは 1 つのパラメーターのみを使用できます。 - パラメーターは ​`value`​ と呼ばれる必要があります。 - メタデータキーは、メタデータアノテーションのキー引数に設定された値であり、アノテーション自体の名前ではありません (前の例では、メタデータ値は ​`class`​ キーに関連付けられています)。 - メタデータアノテーションは付加的です。メタデータがすでに含まれている参照でメタデータアノテーションを使用した場合、新しいメタデータが付加されます。 値を XML ライター用の CData としてマークするメタデータアノテーションの例を次に示します。 ソース ```weave %dw 2.8 output application/xml @Metadata(key="cdata") annotation CData(value: true) --- root: { test: @CData(value = true) "testCData" } ``` 出力 ```xml ``` ### [](#メタデータ)メタデータ メタデータとは、値に添付され、その同一性には影響しない追加情報です。2 つの等しい値 ​`A`​ と ​`B`​ があるとして、メタデータを ​`A`​ に添付して ​`A'`​ とすると、​`A == A' == B`​ となります。 そのため、値と値に添付されたメタデータで形成される値を定義できます。 # DataWeave バイナリ (dwb) 形式 MIME タイプ: `application/dwb`​ ID: `dwb`​ TODO FOR 2.4? ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

indexedReader​

Boolean​

​true​

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

writeIndex​

Boolean​

​false​

トークンと階層インデックスを末尾に追加して、これが読み取られたときに再び解析されるのを回避する必要がある場合。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/dwb​

# DataWeave バイナリ (dwb) 形式 MIME タイプ: `application/dwb` ID: `dwb` TODO FOR 2.4? ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

writeIndex

Boolean

false

トークンと階層インデックスを末尾に追加して、これが読み取られたときに再び解析されるのを回避する必要がある場合。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/dwb

# DataWeave バイナリ (dwb) 形式 MIME タイプ: `application/dwb` ID: `dwb` TODO FOR 2.4? ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

writeIndex

Boolean

false

トークンと階層インデックスを末尾に追加して、これが読み取られたときに再び解析されるのを回避する必要がある場合。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/dwb

# DataWeave バイナリ (dwb) 形式 MIME タイプ: `application/dwb` ID: `dwb` TODO FOR 2.4? ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

writeIndex

Boolean

false

トークンと階層インデックスを末尾に追加して、これが読み取られたときに再び解析されるのを回避する必要がある場合。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/dwb

# DataWeave バイナリ (dwb) 形式 MIME タイプ: `application/dwb` ID: `dwb` TODO FOR 2.4? ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

writeIndex

Boolean

false

トークンと階層インデックスを末尾に追加して、これが読み取られたときに再び解析されるのを回避する必要がある場合。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/dwb

# DataWeave メモリ管理 Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。 ## [](#buffersize)RAM の使用とディスクの使用 DataWeave は小さいファイルをメモリに保存しますが、設定可能なしきい値を超えると、ディスク領域を使用してメモリ不足にならないようにします。作成されたバッファファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​`java.io.tmpdir`​ プロパティを使用してディレクトリを指定できます。 3 種類の DataWeave バッファファイルが生成されます。 - `dw-buffer-output-${count}.tmp` 変換の結果がしきい値の ​**1572864 バイト**​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​`com.mulesoft.dw.max_memory_allocation`​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。 - `dw-buffer-input-${count}.tmp` 変換の入力がメモリ内のバッファ (デフォルトでは ​**1572864 バイト**​) よりも大きい場合に、変換の入力を保存するために使用されます。 これは ​`dw-buffer-output-${count}.tmp`​ ファイルと似ていますが、入力データ用です。 - `dw-buffer-index-${count}.tmp` 読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。 システムプロパティ: システムプロパティはいくつかの方法で定義できます。詳細は、​[システムプロパティ](https://docs.mulesoft.com/jp/mule-runtime/4.3/configuring-properties#system-properties)​を参照してください。 - `com.mulesoft.dw.buffersize` このシステムプロパティは、処理された入力および出力を保存するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を決定します。デフォルトのバッファサイズは 8192 バイト (8 KB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.buffersize=8192`​。 - `com.mulesoft.dw.directbuffer.disable` Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはオフヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.directbuffer.disable=true`​。 - `com.mulesoft.dw.memory_pool_size` Mule 4.3.0 以降、DataWeave バッファでは、定義されたサイズまでプールからのオフヒープメモリが使用され、残りはヒープメモリを使用して割り当てられます。このプロパティはプール内のスロット数を決定します。 デフォルトのスロット数は 60 です。 このプロパティは数値 (プールのスロット数) を受け取ります。例: `-Dcom.mulesoft.dw.memory_pool_size=60`​。 - `com.mulesoft.dw.max_memory_allocation` Mule 4.3.0 で導入されたこのプロパティにより、ディスクに切り替える前に使用される最大メモリ量が決まります。ペイロードがこのサイズを超えると、ペイロードは ​`dw-buffer-input-${count}.tmp`​ および ​`dw-buffer-output-${count}.tmp`​ の一時ファイルに保存されます。 また、オフヒープメモリのプールの各スロットのサイズ (バイト単位) も決まります。デフォルトのサイズは 1572864 バイト (1.5 MB) です。 - `com.mulesoft.dw.buffer.memory.monitoring`​ (実験段階) Mule 4.3.0 で導入されたこのプロパティを有効にすると、スロットがメモリプールから取得または解放されるたびにメッセージが記録されます。 これは今後のバージョンでは削除されるか、動作が変更される場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.buffer.memory.monitoring=true`​。 ## [](#関連情報)関連情報 - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) # DataWeave メモリ管理 Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。 ## [](#buffersize)RAM の使用とディスクの使用 DataWeave は小さいファイルをメモリに保存しますが、設定可能なしきい値を超えると、ディスク領域を使用してメモリ不足にならないようにします。作成されたバッファファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​`java.io.tmpdir`​ プロパティを使用してディレクトリを指定できます。 バッファファイルは、そのファイルを参照するストリームが終了するまで一時ディレクトリに保持されます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 3 種類の DataWeave バッファファイルが生成されます。 - `dw-buffer-output-${count}.tmp` 変換の結果がしきい値の ​**1572864 バイト**​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​`com.mulesoft.dw.max_memory_allocation`​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。 - `dw-buffer-input-${count}.tmp` 変換の入力がメモリ内のバッファ (デフォルトでは ​**1572864 バイト**​) よりも大きい場合に、変換の入力を保存するために使用されます。 これは ​`dw-buffer-output-${count}.tmp`​ ファイルと似ていますが、入力データ用です。 - `dw-buffer-index-${count}.tmp` 読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。 システムプロパティ: システムプロパティはいくつかの方法で定義できます。詳細は、​[システムプロパティ](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties#system-properties)​を参照してください。 - `com.mulesoft.dw.buffersize` このシステムプロパティは、処理された入力および出力を保存するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を決定します。デフォルトのバッファサイズは 8192 バイト (8 KB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.buffersize=8192`​。 - `com.mulesoft.dw.directbuffer.disable` Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.directbuffer.disable=true`​。 - `com.mulesoft.dw.memory_pool_size` Mule 4.3.0 以降、DataWeave バッファでは、定義されたサイズまでプールからのオフヒープメモリが使用され、残りはヒープメモリを使用して割り当てられます。このプロパティはプール内のスロット数を決定します。 デフォルトのスロット数は 60 です。 このプロパティは数値 (プールのスロット数) を受け取ります。例: `-Dcom.mulesoft.dw.memory_pool_size=60`​。 - `com.mulesoft.dw.max_memory_allocation` Mule 4.3.0 で導入されたこのプロパティにより、ディスクに切り替える前に使用される最大メモリ量が決まります。ペイロードがこのサイズを超えると、ペイロードは ​`dw-buffer-input-${count}.tmp`​ および ​`dw-buffer-output-${count}.tmp`​ の一時ファイルに保存されます。 また、オフヒープメモリのプールの各スロットのサイズ (バイト単位) も決まります。デフォルトのサイズは 1572864 バイト (1.5 MB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.max_memory_allocation=1572864`​。 - `com.mulesoft.dw.buffer.memory.monitoring`​ (実験段階) Mule 4.3.0 で導入されたこのプロパティを有効にすると、スロットがメモリプールから取得または解放されるたびにメッセージが記録されます。 これは今後のバージョンでは削除されるか、動作が変更される場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.buffer.memory.monitoring=true`​。 - `mule.weave.script.parser.cache.size` このシステムプロパティは、キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。デフォルト値は 10.000 です。 - `com.mulesoft.dw.charbuffersize` このシステムプロパティは、ライターが使用するバッファのサイズ (バイト) を決定します。デフォルト値は 4.096 です。 ## [](#関連情報)関連情報 - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) # DataWeave メモリ管理 Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。 ## [](#buffersize)RAM の使用とディスクの使用 DataWeave は小さいファイルをメモリに保存しますが、設定可能なしきい値を超えると、ディスク領域を使用してメモリ不足にならないようにします。作成されたバッファファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​`java.io.tmpdir`​ プロパティを使用してディレクトリを指定できます。 バッファファイルは、そのファイルを参照するストリームが終了するまで一時ディレクトリに保持されます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 3 種類の DataWeave バッファファイルが生成されます。 - `dw-buffer-output-${count}.tmp` 変換の結果がしきい値の ​**1572864 バイト**​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​`com.mulesoft.dw.max_memory_allocation`​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。 - `dw-buffer-input-${count}.tmp` 変換の入力がメモリ内のバッファ (デフォルトでは ​**1572864 バイト**​) よりも大きい場合に、変換の入力を保存するために使用されます。 これは ​`dw-buffer-output-${count}.tmp`​ ファイルと似ていますが、入力データ用です。 - `dw-buffer-index-${count}.tmp` 読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。 システムプロパティ: システムプロパティはいくつかの方法で定義できます。詳細は、​[システムプロパティ](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties#system-properties)​を参照してください。 - `com.mulesoft.dw.buffersize` このシステムプロパティは、処理された入力および出力を保存するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を決定します。デフォルトのバッファサイズは 8192 バイト (8 KB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.buffersize=8192`​。 - `com.mulesoft.dw.directbuffer.disable` Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.directbuffer.disable=true`​。 - `com.mulesoft.dw.memory_pool_size` Mule 4.3.0 以降、DataWeave バッファでは、定義されたサイズまでプールからのオフヒープメモリが使用され、残りはヒープメモリを使用して割り当てられます。このプロパティはプール内のスロット数を決定します。 デフォルトのスロット数は 60 です。 このプロパティは数値 (プールのスロット数) を受け取ります。例: `-Dcom.mulesoft.dw.memory_pool_size=60`​。 - `com.mulesoft.dw.max_memory_allocation` Mule 4.3.0 で導入されたこのプロパティにより、ディスクに切り替える前に使用される最大メモリ量が決まります。ペイロードがこのサイズを超えると、ペイロードは ​`dw-buffer-input-${count}.tmp`​ および ​`dw-buffer-output-${count}.tmp`​ の一時ファイルに保存されます。 また、オフヒープメモリのプールの各スロットのサイズ (バイト単位) も決まります。デフォルトのサイズは 1572864 バイト (1.5 MB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.max_memory_allocation=1572864`​。 - `com.mulesoft.dw.buffer.memory.monitoring`​ (実験段階) Mule 4.3.0 で導入されたこのプロパティを有効にすると、スロットがメモリプールから取得または解放されるたびにメッセージが記録されます。 これは今後のバージョンでは削除されるか、動作が変更される場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.buffer.memory.monitoring=true`​。 - `mule.weave.script.parser.cache.size` このシステムプロパティは、キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。デフォルト値は 10.000 です。 - `com.mulesoft.dw.charbuffersize` このシステムプロパティは、ライターが使用するバッファのサイズ (バイト) を決定します。デフォルト値は 4.096 です。 ## [](#関連情報)関連情報 - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) # DataWeave メモリ管理 Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。 ## [](#buffersize)RAM の使用とディスクの使用 DataWeave は小さいファイルをメモリに保存しますが、設定可能なしきい値を超えると、ディスク領域を使用してメモリ不足にならないようにします。作成されたバッファファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​`java.io.tmpdir`​ プロパティを使用してディレクトリを指定できます。 バッファファイルは、そのファイルを参照するストリームが終了するまで一時ディレクトリに保持されます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 3 種類の DataWeave バッファファイルが生成されます。 - `dw-buffer-output-${count}.tmp` 変換の結果がしきい値の ​**1572864 バイト**​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​`com.mulesoft.dw.max_memory_allocation`​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。 - `dw-buffer-input-${count}.tmp` 変換の入力がメモリ内のバッファ (デフォルトでは ​**1572864 バイト**​) よりも大きい場合に、変換の入力を保存するために使用されます。 これは ​`dw-buffer-output-${count}.tmp`​ ファイルと似ていますが、入力データ用です。 - `dw-buffer-index-${count}.tmp` 読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。 システムプロパティ: システムプロパティはいくつかの方法で定義できます。詳細は、​[システムプロパティ](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties#system-properties)​を参照してください。 - `com.mulesoft.dw.buffersize` このシステムプロパティは、処理された入力および出力を保存するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を決定します。デフォルトのバッファサイズは 8192 バイト (8 KB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.buffersize=8192`​。 - `com.mulesoft.dw.directbuffer.disable` Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.directbuffer.disable=true`​。 - `com.mulesoft.dw.memory_pool_size` Mule 4.3.0 以降、DataWeave バッファでは、定義されたサイズまでプールからのオフヒープメモリが使用され、残りはヒープメモリを使用して割り当てられます。このプロパティはプール内のスロット数を決定します。 デフォルトのスロット数は 60 です。 このプロパティは数値 (プールのスロット数) を受け取ります。例: `-Dcom.mulesoft.dw.memory_pool_size=60`​。 - `com.mulesoft.dw.max_memory_allocation` Mule 4.3.0 で導入されたこのプロパティにより、ディスクに切り替える前に使用される最大メモリ量が決まります。ペイロードがこのサイズを超えると、ペイロードは ​`dw-buffer-input-${count}.tmp`​ および ​`dw-buffer-output-${count}.tmp`​ の一時ファイルに保存されます。 また、オフヒープメモリのプールの各スロットのサイズ (バイト単位) も決まります。デフォルトのサイズは 1572864 バイト (1.5 MB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.max_memory_allocation=1572864`​。 - `com.mulesoft.dw.buffer.memory.monitoring`​ (実験段階) Mule 4.3.0 で導入されたこのプロパティを有効にすると、スロットがメモリプールから取得または解放されるたびにメッセージが記録されます。 これは今後のバージョンでは削除されるか、動作が変更される場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.buffer.memory.monitoring=true`​。 - `mule.weave.script.parser.cache.size` このシステムプロパティは、キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。デフォルト値は 10.000 です。 - `com.mulesoft.dw.charbuffersize` このシステムプロパティは、ライターが使用するバッファのサイズ (バイト) を決定します。デフォルト値は 4.096 です。 ## [](#関連情報)関連情報 - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) # DataWeave メモリ管理 Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。 ## [](#buffersize)RAM の使用とディスクの使用 DataWeave は小さいファイルをメモリに保存しますが、設定可能なしきい値を超えると、ディスク領域を使用してメモリ不足にならないようにします。作成されたバッファファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​`java.io.tmpdir`​ プロパティを使用してディレクトリを指定できます。 バッファファイルは、そのファイルを参照するストリームが終了するまで一時ディレクトリに保持されます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 3 種類の DataWeave バッファファイルが生成されます。 - `dw-buffer-output-${count}.tmp` 変換の結果がしきい値の ​**1572864 バイト**​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​`com.mulesoft.dw.max_memory_allocation`​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。 - `dw-buffer-input-${count}.tmp` 変換の入力がメモリ内のバッファ (デフォルトでは ​**1572864 バイト**​) よりも大きい場合に、変換の入力を保存するために使用されます。 これは ​`dw-buffer-output-${count}.tmp`​ ファイルと似ていますが、入力データ用です。 - `dw-buffer-index-${count}.tmp` 読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。 システムプロパティ: システムプロパティはいくつかの方法で定義できます。詳細は、​[システムプロパティ](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties#system-properties)​を参照してください。 - `com.mulesoft.dw.buffersize` このシステムプロパティは、処理された入力および出力を保存するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を決定します。デフォルトのバッファサイズは 8192 バイト (8 KB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.buffersize=8192`​。 - `com.mulesoft.dw.directbuffer.disable` Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.directbuffer.disable=true`​。 - `com.mulesoft.dw.memory_pool_size` Mule 4.3.0 以降、DataWeave バッファでは、定義されたサイズまでプールからのオフヒープメモリが使用され、残りはヒープメモリを使用して割り当てられます。このプロパティはプール内のスロット数を決定します。 デフォルトのスロット数は 60 です。 このプロパティは数値 (プールのスロット数) を受け取ります。例: `-Dcom.mulesoft.dw.memory_pool_size=60`​。 - `com.mulesoft.dw.max_memory_allocation` Mule 4.3.0 で導入されたこのプロパティにより、ディスクに切り替える前に使用される最大メモリ量が決まります。ペイロードがこのサイズを超えると、ペイロードは ​`dw-buffer-input-${count}.tmp`​ および ​`dw-buffer-output-${count}.tmp`​ の一時ファイルに保存されます。 また、オフヒープメモリのプールの各スロットのサイズ (バイト単位) も決まります。デフォルトのサイズは 1572864 バイト (1.5 MB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.max_memory_allocation=1572864`​。 - `com.mulesoft.dw.buffer.memory.monitoring`​ (実験段階) Mule 4.3.0 で導入されたこのプロパティを有効にすると、スロットがメモリプールから取得または解放されるたびにメッセージが記録されます。 これは今後のバージョンでは削除されるか、動作が変更される場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.buffer.memory.monitoring=true`​。 - `mule.weave.script.parser.cache.size` このシステムプロパティは、キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。デフォルト値は 10.000 です。 - `com.mulesoft.dw.charbuffersize` このシステムプロパティは、ライターが使用するバッファのサイズ (バイト) を決定します。デフォルト値は 4.096 です。 ## [](#関連情報)関連情報 - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) # DataWeave メモリ管理 Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。 ## [](#buffersize)RAM の使用とディスクの使用 DataWeave は小さいファイルをメモリに保存しますが、設定可能なしきい値を超えると、ディスク領域を使用してメモリ不足にならないようにします。作成されたバッファファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​`java.io.tmpdir`​ プロパティを使用してディレクトリを指定できます。 バッファファイルは、そのファイルを参照するストリームが終了するまで一時ディレクトリに保持されます。終了するのは通常、フローの実行が完了するときであるため、一時フォルダーにある多くのバッファファイルは、長時間や同時の実行の間、使用中のままになることがあります。 3 種類の DataWeave バッファファイルが生成されます。 - `dw-buffer-output-${count}.tmp` 変換の結果がしきい値の ​**1572864 バイト**​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​`com.mulesoft.dw.max_memory_allocation`​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。 - `dw-buffer-input-${count}.tmp` 変換の入力がメモリ内のバッファ (デフォルトでは ​**1572864 バイト**​) よりも大きい場合に、変換の入力を保存するために使用されます。 これは ​`dw-buffer-output-${count}.tmp`​ ファイルと似ていますが、入力データ用です。 - `dw-buffer-index-${count}.tmp` 読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。 システムプロパティ: システムプロパティはいくつかの方法で定義できます。詳細は、​[システムプロパティ](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties#system-properties)​を参照してください。 - `com.mulesoft.dw.buffersize` このシステムプロパティは、処理された入力および出力を保存するために DataWeave で使用するメモリ内の入力バッファおよび出力バッファのサイズ (バイト単位) を決定します。デフォルトのバッファサイズは 8192 バイト (8 KB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.buffersize=8192`​。 - `com.mulesoft.dw.directbuffer.disable` Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.directbuffer.disable=true`​。 - `com.mulesoft.dw.memory_pool_size` Mule 4.3.0 以降、DataWeave バッファでは、定義されたサイズまでプールからのオフヒープメモリが使用され、残りはヒープメモリを使用して割り当てられます。このプロパティはプール内のスロット数を決定します。 デフォルトのスロット数は 60 です。 このプロパティは数値 (プールのスロット数) を受け取ります。例: `-Dcom.mulesoft.dw.memory_pool_size=60`​。 - `com.mulesoft.dw.max_memory_allocation` Mule 4.3.0 で導入されたこのプロパティにより、ディスクに切り替える前に使用される最大メモリ量が決まります。ペイロードがこのサイズを超えると、ペイロードは ​`dw-buffer-input-${count}.tmp`​ および ​`dw-buffer-output-${count}.tmp`​ の一時ファイルに保存されます。 また、オフヒープメモリのプールの各スロットのサイズ (バイト単位) も決まります。デフォルトのサイズは 1572864 バイト (1.5 MB) です。 このプロパティは数値 (バイト数での数値) を受け取ります。例: `-Dcom.mulesoft.dw.max_memory_allocation=1572864`​。 - `com.mulesoft.dw.buffer.memory.monitoring`​ (実験段階) Mule 4.3.0 で導入されたこのプロパティを有効にすると、スロットがメモリプールから取得または解放されるたびにメッセージが記録されます。 これは今後のバージョンでは削除されるか、動作が変更される場合があります。 このプロパティは論理値を受け取ります。例: `-Dcom.mulesoft.dw.buffer.memory.monitoring=true`​。 - `mule.weave.script.parser.cache.size` このシステムプロパティは、キャッシュされるコンパイル済みスクリプトの最大サイズを決定します。デフォルト値は 10.000 です。 - `com.mulesoft.dw.charbuffersize` このシステムプロパティは、ライターが使用するバッファのサイズ (バイト) を決定します。デフォルト値は 4.096 です。 ## [](#関連情報)関連情報 - [DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) # DataWeave モジュールの型の再利用 他の DataWeave モジュールで宣言されている型を再利用するには、​`import`​ ディレクティブを使用します。 DataWeave モジュール (​`dw/Weather.dwl`​): ```dataweave %dw 2.0 type Weather = "cloudy" | "sunny" | "rainy" | "stormy" type DetailedWeather = {temperature: Number, weather: Weather} ``` それらのインポートされた型は、DataWeave の他の型のように、変数と関数の制約や、パターン一致および実行時の型のチェックの制約として使用できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import * from dw::Weather fun weatherMessage(todayWeather: Weather) = "The weather for today is: " ++ todayWeather var worstPossibleWeather: DetailedWeather = {temperature: -10, weather: "stormy"} --- { a: weatherMessage("sunny"), b: worstPossibleWeather.weather is Weather } ``` ## [](#関連情報)関連情報 - [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-create-module) # DataWeave モジュールの型の再利用 他の DataWeave モジュールで宣言されている型を再利用するには、​`import`​ ディレクティブを使用します。 DataWeave モジュール (​`dw/Weather.dwl`​): ```dataweave %dw 2.0 type Weather = "cloudy" | "sunny" | "rainy" | "stormy" type DetailedWeather = {temperature: Number, weather: Weather} ``` それらのインポートされた型は、DataWeave の他の型のように、変数と関数の制約や、パターン一致および実行時の型のチェックの制約として使用できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import * from dw::Weather fun weatherMessage(todayWeather: Weather) = "The weather for today is: " ++ todayWeather var worstPossibleWeather: DetailedWeather = {temperature: -10, weather: "stormy"} --- { a: weatherMessage("sunny"), b: worstPossibleWeather.weather is Weather } ``` ## [](#関連情報)関連情報 - [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-create-module) # DataWeave モジュールの型の再利用 他の DataWeave モジュールで宣言されている型を再利用するには、​`import`​ ディレクティブを使用します。 DataWeave モジュール (​`dw/Weather.dwl`​): ```dataweave %dw 2.0 type Weather = "cloudy" | "sunny" | "rainy" | "stormy" type DetailedWeather = {temperature: Number, weather: Weather} ``` それらのインポートされた型は、DataWeave の他の型のように、変数と関数の制約や、パターン一致および実行時の型のチェックの制約として使用できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import * from dw::Weather fun weatherMessage(todayWeather: Weather) = "The weather for today is: " ++ todayWeather var worstPossibleWeather: DetailedWeather = {temperature: -10, weather: "stormy"} --- { a: weatherMessage("sunny"), b: worstPossibleWeather.weather is Weather } ``` ## [](#関連情報)関連情報 - [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-create-module) # DataWeave モジュールの型の再利用 他の DataWeave モジュールで宣言されている型を再利用するには、​`import`​ ディレクティブを使用します。 DataWeave モジュール (​`dw/Weather.dwl`​): ```dataweave %dw 2.0 type Weather = "cloudy" | "sunny" | "rainy" | "stormy" type DetailedWeather = {temperature: Number, weather: Weather} ``` それらのインポートされた型は、DataWeave の他の型のように、変数と関数の制約や、パターン一致および実行時の型のチェックの制約として使用できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import * from dw::Weather fun weatherMessage(todayWeather: Weather) = "The weather for today is: " ++ todayWeather var worstPossibleWeather: DetailedWeather = {temperature: -10, weather: "stormy"} --- { a: weatherMessage("sunny"), b: worstPossibleWeather.weather is Weather } ``` ## [](#関連情報)関連情報 - [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-create-module) # DataWeave リファレンス DataWeave バージョン 2 関数はモジュールにパッケージ化されています。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの​[「DataWeave の演算子」](#3.9@mule-runtime::dataweave-operators.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 コア (​`dw::Core`​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。 - `import dw::core::Strings`​ - `import camelize, capitalize from dw::core::Strings`​ - `import * from dw::core::Strings` モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​`* from`​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String モジュールからインポートする関数が指定されていないため、​`pluralize`​ 関数をコールするときには ​`Strings::pluralize("box")`​ のようになります。 変換 ```dataweave %dw 2.0 import dw::core::Strings output application/json --- { 'plural': Strings::pluralize("box") } ``` 次の例では、String モジュールからインポートする特定の関数が指定されているため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import pluralize from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` 次の例では、String モジュールからすべての関数がインポートされるため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` ## [](#dw_modules)DataWeave モジュール - [Arrays (dw::core::Arrays)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-arrays) - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-binaries) - [Core (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core) - [Encryption (dw::Crypto)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-crypto) - [Diff (dw::util::Diff)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-diff) - [Objects (dw::core::Objects)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-objects) - [Runtime (dw::Runtime)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-runtime) - [Strings (dw::core::Strings)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-strings) - [System (dw::System)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-system) - [URL (dw::core::URL)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-url) ## [](#function_signatures)関数シグネチャー DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値のデータ型が指定されます。 2 個のパラメーターの関数シグネチャーの基本構文: `function(parameterType,parameterType): returnType`​ たとえば、​`contains`​ 関数のシグネチャー ​`contains(String, String): Boolean`​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。 関数シグネチャー内のパラメーターは名前付きパラメーターに​_順番に_​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​[contains(String, String): Boolean](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-contains#contains2)​ では、​`text`​ が 1 番目のパラメーターで ​`toSearch`​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。 多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​[isEmpty](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-isempty)​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。 データ型についての詳細は、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-type-system)​を参照してください。 ### [](#関数シグネチャー内の型パラメーター)関数シグネチャー内の型パラメーター 関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​`contains(Array, Any): Boolean`​ の ​`Array`​ は、DataWeave でサポートされる任意の型 (​`T`​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​`Array`​、​`Array`​、または両方の型 ​`Array`​) を指定します。 ### [](#関数シグネチャー内の関数型)関数シグネチャー内の関数型 関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​`parameterName:Type`​ 形式の 1 つ以上のパラメーターを取り、戻り値のデータ型 (​`→ ReturnType`​) を持つ関数型になっている場合があります。たとえば、関数型 ​`(item: T, index: Number) → R)`​ は ​[map](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-map)​ 関数 (​`map(Array, (item: T, index: Number) → R): Array`​) のパラメーター型です。この関数型は任意の型 ​`T`​ の値と Number (数値) 型の値を受け入れ、​`R`​ 型の値を返すパラメーターとして機能します。 ## [](#see_also)関連情報 [関数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-guide#functions)​ [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.3/)​ [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-quickstart) # DataWeave リファレンス DataWeave 関数はモジュールにパッケージ化されています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 コア (​`dw::Core`​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。 - `import dw::core::Strings` - `import camelize, capitalize from dw::core::Strings` - `import * from dw::core::Strings` モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​`* from`​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String Module からインポートする関数が指定されていないため、​`pluralize`​ 関数をコールするときには ​`Strings::pluralize("box")`​ のようになります。 変換 ```dataweave %dw 2.0 import dw::core::Strings output application/json --- { 'plural': Strings::pluralize("box") } ``` 次の例では、String Module からインポートする特定の関数が指定されているため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import pluralize from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` 次の例では、String Module からすべての関数がインポートされるため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` ## [](#dw_modules)DataWeave Module - [Arrays (dw::core::Arrays)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-arrays) - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-binaries) - [Coercions (dw::util::Coercions)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-coercions) - [Core (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core) - [DataFormat (dw::extension::DataFormat)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-dataformat) - [Dates (dw::core::Dates)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-dates) - [Diff (dw::util::Diff)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-diff) - [Encryption (dw::Crypto)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-crypto) - [Math (dw::util::Math)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-math) - [Mule (dw::Mule)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-mule) - [Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-multipart) - [Numbers (dw::core::Numbers)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-numbers) - [Objects (dw::core::Objects)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-objects) - [Periods (dw::core::Periods)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-periods) - [Runtime (dw::Runtime)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-runtime) - [Strings (dw::core::Strings)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-strings) - [System (dw::System)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-system) - [Timer (dw::util::Timer)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-timer) - [Tree (dw::util::Tree)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree) - [Types (データ型) (dw::core::Types)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-types) - [URL (dw::core::URL)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-url) - [Values (dw::util::Values)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-values) ## [](#function_signatures)関数シグネチャー DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値の型が指定されます。 2 個のパラメーターの関数シグネチャーの基本構文: `function(parameterType,parameterType): returnType` たとえば、​`contains`​ 関数のシグネチャー ​`contains(String, String): Boolean`​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。 関数シグネチャー内のパラメーターは名前付きパラメーターに​_順番に_​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​[contains(String, String): Boolean](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-contains#contains2)​ では、​`text`​ が 1 番目のパラメーターで ​`toSearch`​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。 多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​[isEmpty](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-isempty)​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。 データ型についての詳細は、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-type-system)​を参照してください。 ### [](#関数シグネチャー内の型パラメーター)関数シグネチャー内の型パラメーター 関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​`contains(Array, Any): Boolean`​ の ​`Array`​ は、DataWeave でサポートされる任意の型 (​`T`​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​`Array`​、​`Array`​、または両方の型 ​`Array`​) を指定します。 ### [](#関数シグネチャー内の関数型)関数シグネチャー内の関数型 関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​`parameterName:Type`​ 形式の 1 つ以上のパラメーターを取り、戻り値の型 (​`→ ReturnType`​) を持つ関数型になっている場合があります。たとえば、関数型 ​`(item: T, index: Number) → R)`​ は ​[map](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-map)​ 関数 (​`map(Array, (item: T, index: Number) → R): Array`​) のパラメーター型です。この関数型は任意の型 ​`T`​ の値と Number (数値) 型の値を受け入れ、​`R`​ 型の値を返すパラメーターとして機能します。 ## [](#see_also)関連情報 [関数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-guide#functions) [DataWeave について](https://docs.mulesoft.com/jp/dataweave/2.4/) [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-quickstart) # DataWeave リファレンス DataWeave 関数はモジュールにパッケージ化されています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 コア (​`dw::Core`​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。 - `import dw::core::Strings` - `import camelize, capitalize from dw::core::Strings` - `import * from dw::core::Strings` モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​`* from`​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String Module からインポートする関数が指定されていないため、​`pluralize`​ 関数をコールするときには ​`Strings::pluralize("box")`​ のようになります。 変換 ```dataweave %dw 2.0 import dw::core::Strings output application/json --- { 'plural': Strings::pluralize("box") } ``` 次の例では、String Module からインポートする特定の関数が指定されているため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import pluralize from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` 次の例では、String Module からすべての関数がインポートされるため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` ## [](#dw_modules)DataWeave Module - [Arrays (dw::core::Arrays)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-arrays) - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-binaries) - [Coercions (dw::util::Coercions)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-coercions) - [Core (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core) - [DataFormat (dw::extension::DataFormat)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dataformat) - [Dates (dw::core::Dates)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dates) - [Diff (dw::util::Diff)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-diff) - [Dtd (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dtd) - [Encryption (dw::Crypto)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-crypto) - [Math (dw::util::Math)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-math) - [Mule (dw::Mule)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-mule) - [Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-multipart) - [Numbers (dw::core::Numbers)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-numbers) - [Objects (dw::core::Objects)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-objects) - [Periods (dw::core::Periods)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-periods) - [Runtime (dw::Runtime)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-runtime) - [Strings (dw::core::Strings)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-strings) - [System (dw::System)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-system) - [Timer (dw::util::Timer)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-timer) - [Tree (dw::util::Tree)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-tree) - [Types (データ型) (dw::core::Types)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-types) - [URL (dw::core::URL)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-url) - [Values (dw::util::Values)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-values) ## [](#function_signatures)関数シグネチャー DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値の型が指定されます。 2 個のパラメーターの関数シグネチャーの基本構文: `function(parameterType,parameterType): returnType` たとえば、​`contains`​ 関数のシグネチャー ​`contains(String, String): Boolean`​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。 関数シグネチャー内のパラメーターは名前付きパラメーターに​_順番に_​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​[contains(String, String): Boolean](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-contains#contains2)​ では、​`text`​ が 1 番目のパラメーターで ​`toSearch`​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。 多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​[isEmpty](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-isempty)​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。 データ型についての詳細は、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-system)​を参照してください。 ### [](#関数シグネチャー内の型パラメーター)関数シグネチャー内の型パラメーター 関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​`contains(Array, Any): Boolean`​ の ​`Array`​ は、DataWeave でサポートされる任意の型 (​`T`​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​`Array`​、​`Array`​、または両方の型 ​`Array`​) を指定します。 ### [](#関数シグネチャー内の関数型)関数シグネチャー内の関数型 関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​`parameterName:Type`​ 形式の 1 つ以上のパラメーターを取り、戻り値の型 (​`→ ReturnType`​) を持つ関数型になっている場合があります。たとえば、関数型 ​`(item: T, index: Number) → R)`​ は ​[map](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-map)​ 関数 (​`map(Array, (item: T, index: Number) → R): Array`​) のパラメーター型です。この関数型は任意の型 ​`T`​ の値と Number (数値) 型の値を受け入れ、​`R`​ 型の値を返すパラメーターとして機能します。 ## [](#see_also)関連情報 [関数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-guide#functions) [DataWeave について](https://docs.mulesoft.com/jp/dataweave/2.5/) [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-quickstart) # DataWeave リファレンス DataWeave 関数はモジュールにパッケージ化されています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 コア (​`dw::Core`​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。 - `import dw::core::Strings` - `import camelize, capitalize from dw::core::Strings` - `import * from dw::core::Strings` モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​`* from`​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String Module からインポートする関数が指定されていないため、​`pluralize`​ 関数をコールするときには ​`Strings::pluralize("box")`​ のようになります。 変換 ```dataweave %dw 2.0 import dw::core::Strings output application/json --- { 'plural': Strings::pluralize("box") } ``` 次の例では、String Module からインポートする特定の関数が指定されているため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import pluralize from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` 次の例では、String Module からすべての関数がインポートされるため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` ## [](#dw_modules)DataWeave Module - [Arrays (dw::core::Arrays)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-arrays) - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-binaries) - [Coercions (dw::util::Coercions)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-coercions) - [Core (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core) - [DataFormat (dw::extension::DataFormat)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dataformat) - [Dates (dw::core::Dates)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dates) - [Diff (dw::util::Diff)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-diff) - [Dtd (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dtd) - [Encryption (dw::Crypto)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-crypto) - [Math (dw::util::Math)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-math) - [Mule (dw::Mule)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-mule) - [Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-multipart) - [Numbers (dw::core::Numbers)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-numbers) - [Objects (dw::core::Objects)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-objects) - [Periods (dw::core::Periods)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-periods) - [Runtime (dw::Runtime)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-runtime) - [Strings (dw::core::Strings)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-strings) - [System (dw::System)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-system) - [Timer (dw::util::Timer)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-timer) - [Tree (dw::util::Tree)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-tree) - [Types (データ型) (dw::core::Types)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-types) - [URL (dw::core::URL)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-url) - [Values (dw::util::Values)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-values) ## [](#function_signatures)関数シグネチャー DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値の型が指定されます。 2 個のパラメーターの関数シグネチャーの基本構文: `function(parameterType,parameterType): returnType` たとえば、​`contains`​ 関数のシグネチャー ​`contains(String, String): Boolean`​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。 関数シグネチャー内のパラメーターは名前付きパラメーターに​_順番に_​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​[contains(String, String): Boolean](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-contains#contains2)​ では、​`text`​ が 1 番目のパラメーターで ​`toSearch`​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。 多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​[isEmpty](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-isempty)​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。 データ型についての詳細は、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-system)​を参照してください。 ### [](#関数シグネチャー内の型パラメーター)関数シグネチャー内の型パラメーター 関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​`contains(Array, Any): Boolean`​ の ​`Array`​ は、DataWeave でサポートされる任意の型 (​`T`​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​`Array`​、​`Array`​、または両方の型 ​`Array`​) を指定します。 ### [](#関数シグネチャー内の関数型)関数シグネチャー内の関数型 関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​`parameterName:Type`​ 形式の 1 つ以上のパラメーターを取り、戻り値の型 (​`→ ReturnType`​) を持つ関数型になっている場合があります。たとえば、関数型 ​`(item: T, index: Number) → R)`​ は ​[map](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-map)​ 関数 (​`map(Array, (item: T, index: Number) → R): Array`​) のパラメーター型です。この関数型は任意の型 ​`T`​ の値と Number (数値) 型の値を受け入れ、​`R`​ 型の値を返すパラメーターとして機能します。 ## [](#see_also)関連情報 [関数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-guide#functions) [DataWeave について](https://docs.mulesoft.com/jp/dataweave/2.6/) [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-quickstart) # DataWeave リファレンス DataWeave 関数はモジュールにパッケージ化されています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 コア (​`dw::Core`​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。 - `import dw::core::Strings` - `import camelize, capitalize from dw::core::Strings` - `import * from dw::core::Strings` モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​`* from`​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String Module からインポートする関数が指定されていないため、​`pluralize`​ 関数をコールするときには ​`Strings::pluralize("box")`​ のようになります。 変換 ```dataweave %dw 2.0 import dw::core::Strings output application/json --- { 'plural': Strings::pluralize("box") } ``` 次の例では、String Module からインポートする特定の関数が指定されているため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import pluralize from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` 次の例では、String Module からすべての関数がインポートされるため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` ## [](#dw_modules)DataWeave Module - [Arrays (dw::core::Arrays)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-arrays) - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-binaries) - [Coercions (dw::util::Coercions)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-coercions) - [Core (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core) - [DataFormat (dw::extension::DataFormat)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dataformat) - [Dates (dw::core::Dates)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dates) - [Diff (dw::util::Diff)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-diff) - [Dtd (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dtd) - [Encryption (dw::Crypto)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-crypto) - [Math (dw::util::Math)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-math) - [Mule (dw::Mule)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-mule) - [Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-multipart) - [Numbers (dw::core::Numbers)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-numbers) - [Objects (dw::core::Objects)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-objects) - [Periods (dw::core::Periods)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-periods) - [Runtime (dw::Runtime)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-runtime) - [Strings (dw::core::Strings)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-strings) - [System (dw::System)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-system) - [Timer (dw::util::Timer)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-timer) - [Tree (dw::util::Tree)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-tree) - [Types (データ型) (dw::core::Types)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-types) - [URL (dw::core::URL)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-url) - [Values (dw::util::Values)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-values) ## [](#function_signatures)関数シグネチャー DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値の型が指定されます。 2 個のパラメーターの関数シグネチャーの基本構文: `function(parameterType,parameterType): returnType` たとえば、​`contains`​ 関数のシグネチャー ​`contains(String, String): Boolean`​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。 関数シグネチャー内のパラメーターは名前付きパラメーターに​_順番に_​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​[contains(String, String): Boolean](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-contains#contains2)​ では、​`text`​ が 1 番目のパラメーターで ​`toSearch`​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。 多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​[isEmpty](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-isempty)​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。 データ型についての詳細は、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-system)​を参照してください。 ### [](#関数シグネチャー内の型パラメーター)関数シグネチャー内の型パラメーター 関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​`contains(Array, Any): Boolean`​ の ​`Array`​ は、DataWeave でサポートされる任意の型 (​`T`​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​`Array`​、​`Array`​、または両方の型 ​`Array`​) を指定します。 ### [](#関数シグネチャー内の関数型)関数シグネチャー内の関数型 関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​`parameterName:Type`​ 形式の 1 つ以上のパラメーターを取り、戻り値の型 (​`→ ReturnType`​) を持つ関数型になっている場合があります。たとえば、関数型 ​`(item: T, index: Number) → R)`​ は ​[map](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-map)​ 関数 (​`map(Array, (item: T, index: Number) → R): Array`​) のパラメーター型です。この関数型は任意の型 ​`T`​ の値と Number (数値) 型の値を受け入れ、​`R`​ 型の値を返すパラメーターとして機能します。 ## [](#see_also)関連情報 [関数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-guide#functions) [DataWeave について](https://docs.mulesoft.com/jp/dataweave/2.7/) [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-quickstart) # DataWeave リファレンス DataWeave 関数はモジュールにパッケージ化されています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の演算子](#1.2@dataweave::dataweave-operators.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 コア (​`dw::Core`​) モジュールの関数は、自動的に DataWeave スクリプトにインポートされます。その他のモジュールを使用するには、DataWeave スクリプトの先頭に次のようなインポートディレクティブを追加することによって、使用するモジュールまたは関数をインポートする必要があります。 - `import dw::core::Strings` - `import camelize, capitalize from dw::core::Strings` - `import * from dw::core::Strings` モジュールのインポート方法は、DataWeave スクリプトから関数をコールする方法に影響します。ディレクティブでインポートする関数を具体的にリストしない場合や ​`* from`​ を使用して関数モジュールのすべての関数をインポートする場合は、スクリプトから関数をコールするときにモジュールを指定する必要があります。たとえば、次のインポートディレクティブでは String モジュールからインポートする関数が指定されていないため、​`pluralize`​ 関数をコールするときには ​`Strings::pluralize("box")`​ のようになります。 変換 ```dataweave %dw 2.0 import dw::core::Strings output application/json --- { 'plural': Strings::pluralize("box") } ``` 次の例では、String モジュールからインポートする特定の関数が指定されているため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import pluralize from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` 次の例では、String モジュールからすべての関数がインポートされるため、​`pluralize("box")`​ のようにメソッドをコールできます。 変換 ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- { 'plural': pluralize("box") } ``` ## [](#dw_modules)DataWeave モジュール - [Arrays (dw::core::Arrays)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-arrays) - [Binaries (dw::core::Binaries)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-binaries) - [Coercions (dw::util::Coercions)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-coercions) - [Core (dw::Core)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core) - [DataFormat (dw::extension::DataFormat)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dataformat) - [Dates (dw::core::Dates)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dates) - [Diff (dw::util::Diff)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-diff) - [Dtd (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dtd) - [Encryption (dw::Crypto)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-crypto) - [Math (dw::util::Math)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-math) - [Mime (dw::module::Mime)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-mime) - [Mule (dw::Mule)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-mule) - [Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-multipart) - [Numbers (dw::core::Numbers)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-numbers) - [Objects (dw::core::Objects)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-objects) - [Periods (dw::core::Periods)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-periods) - [Runtime (dw::Runtime)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-runtime) - [Strings (dw::core::Strings)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-strings) - [System (dw::System)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-system) - [Timer (dw::util::Timer)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-timer) - [Tree (dw::util::Tree)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-tree) - [Types (データ型) (dw::core::Types)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-types) - [URL (dw::core::URL)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-url) - [Values (dw::util::Values)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-values) ## [](#function_signatures)関数シグネチャー DataWeave リファレンスの各 DataWeave 関数はその関数シグネチャーによって識別されます。関数では、関数名、0 個以上のパラメーター、戻り値のデータ型が指定されます。 2 個のパラメーターの関数シグネチャーの基本構文: `function(parameterType,parameterType): returnType` たとえば、​`contains`​ 関数のシグネチャー ​`contains(String, String): Boolean`​ には 2 個のパラメーターがあり、それぞれのパラメーターで String (文字列) 型の値を受け入れます。関数は Boolean (ブール) 値を返します。 関数シグネチャー内のパラメーターは名前付きパラメーターに​_順番に_​対応し、名前付きパラメーターは各シグネチャーのパラメーターテーブルで記述されます。たとえば、​[contains(String, String): Boolean](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-contains#contains2)​ では、​`text`​ が 1 番目のパラメーターで ​`toSearch`​ が 2 番目のパラメーターであることがパラメーターテーブルで示されています。 多くの DataWeave 関数が、異なるデータ型を処理するためにオーバーロードされます。関数のバリエーションごとに一意の関数シグネチャーがあります。たとえば、​[isEmpty](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-isempty)​ は、Array (配列)、String (文字列)、Object (オブジェクト)、または Null 型の入力値をサポートするためにオーバーロードされます。 データ型についての詳細は、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-system)​を参照してください。 ### [](#関数シグネチャー内の型パラメーター)関数シグネチャー内の型パラメーター 関数シグネチャーには型パラメーターを含めることができます。型パラメーターは一部のプログラミング言語の総称に似ています。たとえば、​`contains(Array, Any): Boolean`​ の ​`Array`​ は、DataWeave でサポートされる任意の型 (​`T`​) の要素を配列に含めることができることを示します。対照的に、特定の型の配列では型 (​`Array`​、​`Array`​、または両方の型 ​`Array`​) を指定します。 ### [](#関数シグネチャー内の関数型)関数シグネチャー内の関数型 関数を引数として渡すことができます。関数シグネチャー内のパラメーターが、​`parameterName:Type`​ 形式の 1 つ以上のパラメーターを取り、戻り値のデータ型 (​`→ ReturnType`​) を持つ関数型になっている場合があります。たとえば、関数型 ​`(item: T, index: Number) → R)`​ は ​[map](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-map)​ 関数 (​`map(Array, (item: T, index: Number) → R): Array`​) のパラメーター型です。この関数型は任意の型 ​`T`​ の値と Number (数値) 型の値を受け入れ、​`R`​ 型の値を返すパラメーターとして機能します。 ## [](#see_also)関連情報 [関数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-guide#functions) [DataWeave について](https://docs.mulesoft.com/jp/dataweave/2.8/) [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-quickstart) # DataWeave を使用した Java メソッドのコール DataWeave ステートメントから、Mule プロジェクトにある任意の Java クラスの Java メソッドをコールできます。DataWeave では、静的メソッド (クラスの特定のインスタンスに属するメソッドではなく、Java クラスに属するメソッド) のみをコールできます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 ## [](#java-メソッドのコール)Java メソッドのコール メソッドをコールする前に、まず属するクラスを DataWeave コードにインポートする必要があります。DataWeave モジュールをインポートするときのように、​`java!`​ をステートメントに含めて Java クラスをインポートできます。 たとえば、以下は文字列の最後に乱数を追加する 1 つのメソッドがある簡単な Java クラスです。このクラスは、Mule プロジェクトの ​`src/main/java`​ フォルダーの ​`org.mycompany.utils`​ という名前の Java パッケージの一部として作成されていることが前提となっています。 ```java package org.mycompany.utils; import java.util.Random; public class MyUtils { public static String appendRandom(String base) { return base + new Random().nextInt(); } } ``` 次のいずれかの方法で DataWeave コードから ​`appendRandom()`​ メソッドをコールできます。 - クラスをインポートして、メソッドを参照する: %dw 2.0 import java!org::mycompany::utils::MyUtils output application/json --- { a: MyUtils::appendRandom("myString") } - クラス全体ではなく 1 つ以上のメソッドをインポートする: %dw 2.0 import java!org::mycompany::utils::MyUtils::appendRandom output application/json --- { a: appendRandom("myString") } - メソッドが静的メソッドの場合、1 行でインポートしてコールする: %dw 2.0 output application/json --- { a: java!org::mycompany::utils::MyUtils::appendRandom(vars.myString) } 3 つのすべての方法で、ランダムな文字列が追加された変数値が返されます。 ```json { "a":"myString969858409" } ``` ## [](#java-クラスのインスタンス化)Java クラスのインスタンス化 DataWeave コードで、任意のクラスの新しいオブジェクトをインスタンス化できます。インスタンスを作成したら、DataWeave でそのインスタンスメソッドをコールできなくなります。ただし、その変数を参照することはできます。 この簡単な Java クラスにはメソッドと変数があります。 ```java package org.mycompany.utils; public class MyClass { private String foo; public MyClass(String foo) { this.foo = foo; } public String getFoo() { return foo; } } ``` Studio プロジェクトで ​`MyClass`​ サンプルを作成する手順は、次のとおりです。 1. Studio でクラスのプロジェクトを作成します。これを行うには、​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックし、​**my-app**​ などの名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 2. **my-app**​ から ​`org.mycompany.utils`​ パッケージを作成します。これを行うには、Studio の ​**Package Explorer**​ から ​**src/main/java**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Package (パッケージ)\]**​ を選択し、パッケージに ​`org.mycompany.utils`​ という名前を付けます。 3. 新しい ​`org.mycompany.utils`​ パッケージで ​`MyClass`​ クラスを作成します。これを行うには、​**org.mycompany.utils**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Class (クラス)\]**​ を選択し、クラスに ​`MyClass`​ という名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 4. Studio で開いている ​**\[MyClass.java\]**​ タブで、コンテンツ ​`MyClass`​ をコピーして貼り付け、保存します。 次の DataWeave の例では、​`MyClass`​ をインポートし、クラスの新しいインスタンスを作成して、そのインスタンス変数 ​`foo`​ をコールします。DataWeave からオブジェクトの非公開 ​`getFoo()`​ メソッドをコールすることはできません。 ```dataweave %dw 2.0 import java!org::mycompany::utils::MyClass output application/json --- { a: MyClass::new("myString").foo } ``` この DataWeave の例を Studio プロジェクトに追加する手順は、次のとおりです。 1. **src/main/mule**​ の ​`my-app.xml`​ に戻り、Transform Message コンポーネントをプロジェクトのキャンバスにドラッグし、クリックして開きます。 2. コンポーネントの ​**\[Transform Message\]**​ タブで、ソースコード領域 (右側) のスクリプト全体を DataWeave スクリプト (上記) に置き換えます。 3. 変更内容を保存し、​**\[Preview (プレビュー)\]**​ (タブの右端にある) をクリックして、次の出力を表示します。 { "a":"myString" } Mule フローの Transform Message の設定の XML は、次のようになります。 ```xml ``` ## [](#java_bridge)Java ブリッジの使用 DataWeave では、Java ブリッジを使用して Java の任意の静的関数やコンストラクターをコールできます。この機能は、Java で記述されたビジネスロジックを再利用する必要がある場合や、空の公開コンストラクターがない Java オブジェクトをインスタンス化する必要がある場合に役立ちます。 Java ブリッジを使用するには、完全修飾された Java 名を DataWeave 名に変換します。 1. プレフィックス ​`!java`​ を追加します。 2. 完全修飾名のドットを ​`::`​ に置き換えます。 Java 関数を呼び出すときには、DataWeave は各引数を関数パラメーターで想定される型に変換します。 次の例は、​`java.lang.NullPointerException`​ の新しいインスタンスを作成する方法を示しています。 ```dataweave %dw 2.0 output application/json --- java!java::lang::NullPointerException::new("foo") ``` 次の例では、関数 ​`java.lang.String.valueOf`​ を呼び出しています。 ```dataweave %dw 2.0 output text/plain import valueOf from java!java::lang::String --- valueOf(true) ``` ## [](#関連情報)関連情報 - [Java 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-java) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) # DataWeave を使用した Java メソッドのコール DataWeave ステートメントから、Mule プロジェクトにある任意の Java クラスの Java メソッドをコールできます。DataWeave では、静的メソッド (クラスの特定のインスタンスに属するメソッドではなく、Java クラスに属するメソッド) のみをコールできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#java-メソッドのコール)Java メソッドのコール メソッドをコールする前に、まず属するクラスを DataWeave コードにインポートする必要があります。DataWeave モジュールをインポートするときのように、​`java!`​ をステートメントに含めて Java クラスをインポートできます。 たとえば、以下は文字列の最後に乱数を追加する 1 つのメソッドがある簡単な Java クラスです。このクラスは、Mule プロジェクトの ​`src/main/java`​ フォルダーの ​`org.mycompany.utils`​ という名前の Java パッケージの一部として作成されていることが前提となっています。 ```java package org.mycompany.utils; import java.util.Random; public class MyUtils { public static String appendRandom(String base) { return base + new Random().nextInt(); } } ``` 次のいずれかの方法で DataWeave コードから ​`appendRandom()`​ メソッドをコールできます。 - クラスをインポートして、メソッドを参照する: %dw 2.0 import java!org::mycompany::utils::MyUtils output application/json --- { a: MyUtils::appendRandom("myString") } - クラス全体ではなく 1 つ以上のメソッドをインポートする: %dw 2.0 import java!org::mycompany::utils::MyUtils::appendRandom output application/json --- { a: appendRandom("myString") } - メソッドが静的メソッドの場合、1 行でインポートしてコールする: %dw 2.0 output application/json --- { a: java!org::mycompany::utils::MyUtils::appendRandom(vars.myString) } 3 つのすべての方法で、ランダムな文字列が追加された変数値が返されます。 ```json { "a":"myString969858409" } ``` ## [](#java-クラスのインスタンス化)Java クラスのインスタンス化 DataWeave コードで、任意のクラスの新しいオブジェクトをインスタンス化できます。インスタンスを作成したら、DataWeave でそのインスタンスメソッドをコールできなくなります。ただし、その変数を参照することはできます。 この簡単な Java クラスにはメソッドと変数があります。 ```java package org.mycompany.utils; public class MyClass { private String foo; public MyClass(String foo) { this.foo = foo; } public String getFoo() { return foo; } } ``` Studio プロジェクトで ​`MyClass`​ サンプルを作成する手順は、次のとおりです。 1. Studio でクラスのプロジェクトを作成します。これを行うには、​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックし、​**my-app**​ などの名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 2. **my-app**​ から ​`org.mycompany.utils`​ パッケージを作成します。これを行うには、Studio の ​**Package Explorer**​ から ​**src/main/java**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Package (パッケージ)\]**​ を選択し、パッケージに ​`org.mycompany.utils`​ という名前を付けます。 3. 新しい ​`org.mycompany.utils`​ パッケージで ​`MyClass`​ クラスを作成します。これを行うには、​**org.mycompany.utils**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Class (クラス)\]**​ を選択し、クラスに ​`MyClass`​ という名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 4. Studio で開いている ​**\[MyClass.java\]**​ タブで、コンテンツ ​`MyClass`​ をコピーして貼り付け、保存します。 次の DataWeave の例では、​`MyClass`​ をインポートし、クラスの新しいインスタンスを作成して、そのインスタンス変数 ​`foo`​ をコールします。DataWeave からオブジェクトの非公開 ​`getFoo()`​ メソッドをコールすることはできません。 ```dataweave %dw 2.0 import java!org::mycompany::utils::MyClass output application/json --- { a: MyClass::new("myString").foo } ``` この DataWeave の例を Studio プロジェクトに追加する手順は、次のとおりです。 1. **src/main/mule**​ の ​`my-app.xml`​ に戻り、Transform Message コンポーネントをプロジェクトのキャンバスにドラッグし、クリックして開きます。 2. コンポーネントの ​**\[Transform Message\]**​ タブで、ソースコード領域 (右側) のスクリプト全体を DataWeave スクリプト (上記) に置き換えます。 3. 変更内容を保存し、​**\[Preview (プレビュー)\]**​ (タブの右端にある) をクリックして、次の出力を表示します。 { "a":"myString" } Mule フローの Transform Message の設定の XML は、次のようになります。 ```xml ``` ## [](#java_bridge)Java ブリッジの使用 DataWeave では、Java ブリッジを使用して Java の任意の静的関数やコンストラクターをコールできます。この機能は、Java で記述されたビジネスロジックを再利用する必要がある場合や、空の公開コンストラクターがない Java オブジェクトをインスタンス化する必要がある場合に役立ちます。 Java ブリッジを使用するには、完全修飾された Java 名を DataWeave 名に変換します。 1. プレフィックス ​`!java`​ を追加します。 2. 完全修飾名のドットを ​`::`​ に置き換えます。 Java 関数を呼び出すときには、DataWeave は各引数を関数パラメーターで想定される型に変換します。 次の例は、​`java.lang.NullPointerException`​ の新しいインスタンスを作成する方法を示しています。 ```dataweave %dw 2.0 output application/json --- java!java::lang::NullPointerException::new("foo") ``` 次の例では、関数 ​`java.lang.String.valueOf`​ を呼び出しています。 ```dataweave %dw 2.0 output text/plain import valueOf from java!java::lang::String --- valueOf(true) ``` ## [](#java-ブリッジの例)Java ブリッジの例 次の例は、入力 ​`uriParam`​ に基づいて挨拶メッセージを返す API を示しています。 Java ブリッジは、応答メッセージを作成する ​`my.class.org.Greeter`​ クラス内の静的メソッドをコールします。 ```dataweave %dw 2.0 output application/json import java!my::class::org::Greeter --- { response: Greeter::greet(attributes.uriParams."name" } ``` ### [](#java-ブリッジの-xml-例)Java ブリッジの XML 例 この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ### [](#アプリケーションをテストする)アプリケーションをテストする アプリケーションをテストする手順は、次のとおりです。 1. Mule アプリケーションを保存して実行します。 2. curl コマンド ​`http://localhost:8081/greet/Username`​ を実行します。 Mule アプリケーションは、次の応答メッセージを返します。 ```xml { "response": "Greetings, Username!" } ``` ## [](#関連情報)関連情報 - [Java 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-java) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) # DataWeave を使用した Java メソッドのコール DataWeave ステートメントから、Mule プロジェクトにある任意の Java クラスの Java メソッドをコールできます。DataWeave では、静的メソッド (クラスの特定のインスタンスに属するメソッドではなく、Java クラスに属するメソッド) のみをコールできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#java-メソッドのコール)Java メソッドのコール メソッドをコールする前に、まず属するクラスを DataWeave コードにインポートする必要があります。DataWeave モジュールをインポートするときのように、​`java!`​ をステートメントに含めて Java クラスをインポートできます。 たとえば、以下は文字列の最後に乱数を追加する 1 つのメソッドがある簡単な Java クラスです。このクラスは、Mule プロジェクトの ​`src/main/java`​ フォルダーの ​`org.mycompany.utils`​ という名前の Java パッケージの一部として作成されていることが前提となっています。 ```java package org.mycompany.utils; import java.util.Random; public class MyUtils { public static String appendRandom(String base) { return base + new Random().nextInt(); } } ``` 次のいずれかの方法で DataWeave コードから ​`appendRandom()`​ メソッドをコールできます。 - クラスをインポートして、メソッドを参照する: %dw 2.0 import java!org::mycompany::utils::MyUtils output application/json --- { a: MyUtils::appendRandom("myString") } - クラス全体ではなく 1 つ以上のメソッドをインポートする: %dw 2.0 import java!org::mycompany::utils::MyUtils::appendRandom output application/json --- { a: appendRandom("myString") } - メソッドが静的メソッドの場合、1 行でインポートしてコールする: %dw 2.0 output application/json --- { a: java!org::mycompany::utils::MyUtils::appendRandom(vars.myString) } 3 つのすべての方法で、ランダムな文字列が追加された変数値が返されます。 ```json { "a":"myString969858409" } ``` ## [](#java-クラスのインスタンス化)Java クラスのインスタンス化 DataWeave コードで、任意のクラスの新しいオブジェクトをインスタンス化できます。インスタンスを作成したら、DataWeave でそのインスタンスメソッドをコールできなくなります。ただし、その変数を参照することはできます。 この簡単な Java クラスにはメソッドと変数があります。 ```java package org.mycompany.utils; public class MyClass { private String foo; public MyClass(String foo) { this.foo = foo; } public String getFoo() { return foo; } } ``` Studio プロジェクトで ​`MyClass`​ サンプルを作成する手順は、次のとおりです。 1. Studio でクラスのプロジェクトを作成します。これを行うには、​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックし、​**my-app**​ などの名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 2. **my-app**​ から ​`org.mycompany.utils`​ パッケージを作成します。これを行うには、Studio の ​**Package Explorer**​ から ​**src/main/java**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Package (パッケージ)\]**​ を選択し、パッケージに ​`org.mycompany.utils`​ という名前を付けます。 3. 新しい ​`org.mycompany.utils`​ パッケージで ​`MyClass`​ クラスを作成します。これを行うには、​**org.mycompany.utils**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Class (クラス)\]**​ を選択し、クラスに ​`MyClass`​ という名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 4. Studio で開いている ​**\[MyClass.java\]**​ タブで、コンテンツ ​`MyClass`​ をコピーして貼り付け、保存します。 次の DataWeave の例では、​`MyClass`​ をインポートし、クラスの新しいインスタンスを作成して、そのインスタンス変数 ​`foo`​ をコールします。DataWeave からオブジェクトの非公開 ​`getFoo()`​ メソッドをコールすることはできません。 ```dataweave %dw 2.0 import java!org::mycompany::utils::MyClass output application/json --- { a: MyClass::new("myString").foo } ``` この DataWeave の例を Studio プロジェクトに追加する手順は、次のとおりです。 1. **src/main/mule**​ の ​`my-app.xml`​ に戻り、Transform Message コンポーネントをプロジェクトのキャンバスにドラッグし、クリックして開きます。 2. コンポーネントの ​**\[Transform Message\]**​ タブで、ソースコード領域 (右側) のスクリプト全体を DataWeave スクリプト (上記) に置き換えます。 3. 変更内容を保存し、​**\[Preview (プレビュー)\]**​ (タブの右端にある) をクリックして、次の出力を表示します。 { "a":"myString" } Mule フローの Transform Message の設定の XML は、次のようになります。 ```xml ``` ## [](#java_bridge)Java ブリッジの使用 DataWeave では、Java ブリッジを使用して Java の任意の静的関数やコンストラクターをコールできます。この機能は、Java で記述されたビジネスロジックを再利用する必要がある場合や、空の公開コンストラクターがない Java オブジェクトをインスタンス化する必要がある場合に役立ちます。 Java ブリッジを使用するには、完全修飾された Java 名を DataWeave 名に変換します。 1. プレフィックス ​`!java`​ を追加します。 2. 完全修飾名のドットを ​`::`​ に置き換えます。 Java 関数を呼び出すときには、DataWeave は各引数を関数パラメーターで想定される型に変換します。 次の例は、​`java.lang.NullPointerException`​ の新しいインスタンスを作成する方法を示しています。 ```dataweave %dw 2.0 output application/json --- java!java::lang::NullPointerException::new("foo") ``` 次の例では、関数 ​`java.lang.String.valueOf`​ を呼び出しています。 ```dataweave %dw 2.0 output text/plain import valueOf from java!java::lang::String --- valueOf(true) ``` ## [](#java-ブリッジの例)Java ブリッジの例 次の例は、入力 ​`uriParam`​ に基づいて挨拶メッセージを返す API を示しています。 Java ブリッジは、応答メッセージを作成する ​`my.class.org.Greeter`​ クラス内の静的メソッドをコールします。 ```dataweave %dw 2.0 output application/json import java!my::class::org::Greeter --- { response: Greeter::greet(attributes.uriParams."name" } ``` ### [](#java-ブリッジの-xml-例)Java ブリッジの XML 例 この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ### [](#アプリケーションをテストする)アプリケーションをテストする アプリケーションをテストする手順は、次のとおりです。 1. Mule アプリケーションを保存して実行します。 2. curl コマンド ​`http://localhost:8081/greet/Username`​ を実行します。 Mule アプリケーションは、次の応答メッセージを返します。 ```xml { "response": "Greetings, Username!" } ``` ## [](#関連情報)関連情報 - [Java 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-java) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) # DataWeave を使用した Java メソッドのコール DataWeave ステートメントから、Mule プロジェクトにある任意の Java クラスの Java メソッドをコールできます。DataWeave では、静的メソッド (クラスの特定のインスタンスに属するメソッドではなく、Java クラスに属するメソッド) のみをコールできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#java-メソッドのコール)Java メソッドのコール メソッドをコールする前に、まず属するクラスを DataWeave コードにインポートする必要があります。DataWeave モジュールをインポートするときのように、​`java!`​ をステートメントに含めて Java クラスをインポートできます。 たとえば、以下は文字列の最後に乱数を追加する 1 つのメソッドがある簡単な Java クラスです。このクラスは、Mule プロジェクトの ​`src/main/java`​ フォルダーの ​`org.mycompany.utils`​ という名前の Java パッケージの一部として作成されていることが前提となっています。 ```java package org.mycompany.utils; import java.util.Random; public class MyUtils { public static String appendRandom(String base) { return base + new Random().nextInt(); } } ``` 次のいずれかの方法で DataWeave コードから ​`appendRandom()`​ メソッドをコールできます。 - クラスをインポートして、メソッドを参照する: %dw 2.0 import java!org::mycompany::utils::MyUtils output application/json --- { a: MyUtils::appendRandom("myString") } - クラス全体ではなく 1 つ以上のメソッドをインポートする: %dw 2.0 import java!org::mycompany::utils::MyUtils::appendRandom output application/json --- { a: appendRandom("myString") } - メソッドが静的メソッドの場合、1 行でインポートしてコールする: %dw 2.0 output application/json --- { a: java!org::mycompany::utils::MyUtils::appendRandom(vars.myString) } 3 つのすべての方法で、ランダムな文字列が追加された変数値が返されます。 ```json { "a":"myString969858409" } ``` ## [](#java-クラスのインスタンス化)Java クラスのインスタンス化 DataWeave コードで、任意のクラスの新しいオブジェクトをインスタンス化できます。インスタンスを作成したら、DataWeave でそのインスタンスメソッドをコールできなくなります。ただし、その変数を参照することはできます。 この簡単な Java クラスにはメソッドと変数があります。 ```java package org.mycompany.utils; public class MyClass { private String foo; public MyClass(String foo) { this.foo = foo; } public String getFoo() { return foo; } } ``` Studio プロジェクトで ​`MyClass`​ サンプルを作成する手順は、次のとおりです。 1. Studio でクラスのプロジェクトを作成します。これを行うには、​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックし、​**my-app**​ などの名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 2. **my-app**​ から ​`org.mycompany.utils`​ パッケージを作成します。これを行うには、Studio の ​**Package Explorer**​ から ​**src/main/java**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Package (パッケージ)\]**​ を選択し、パッケージに ​`org.mycompany.utils`​ という名前を付けます。 3. 新しい ​`org.mycompany.utils`​ パッケージで ​`MyClass`​ クラスを作成します。これを行うには、​**org.mycompany.utils**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Class (クラス)\]**​ を選択し、クラスに ​`MyClass`​ という名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 4. Studio で開いている ​**\[MyClass.java\]**​ タブで、コンテンツ ​`MyClass`​ をコピーして貼り付け、保存します。 次の DataWeave の例では、​`MyClass`​ をインポートし、クラスの新しいインスタンスを作成して、そのインスタンス変数 ​`foo`​ をコールします。DataWeave からオブジェクトの非公開 ​`getFoo()`​ メソッドをコールすることはできません。 ```dataweave %dw 2.0 import java!org::mycompany::utils::MyClass output application/json --- { a: MyClass::new("myString").foo } ``` この DataWeave の例を Studio プロジェクトに追加する手順は、次のとおりです。 1. **src/main/mule**​ の ​`my-app.xml`​ に戻り、Transform Message コンポーネントをプロジェクトのキャンバスにドラッグし、クリックして開きます。 2. コンポーネントの ​**\[Transform Message\]**​ タブで、ソースコード領域 (右側) のスクリプト全体を DataWeave スクリプト (上記) に置き換えます。 3. 変更内容を保存し、​**\[Preview (プレビュー)\]**​ (タブの右端にある) をクリックして、次の出力を表示します。 { "a":"myString" } Mule フローの Transform Message の設定の XML は、次のようになります。 ```xml ``` ## [](#java_bridge)Java ブリッジの使用 DataWeave では、Java ブリッジを使用して Java の任意の静的関数やコンストラクターをコールできます。この機能は、Java で記述されたビジネスロジックを再利用する必要がある場合や、空の公開コンストラクターがない Java オブジェクトをインスタンス化する必要がある場合に役立ちます。 Java ブリッジを使用するには、完全修飾された Java 名を DataWeave 名に変換します。 1. プレフィックス ​`!java`​ を追加します。 2. 完全修飾名のドットを ​`::`​ に置き換えます。 Java 関数を呼び出すときには、DataWeave は各引数を関数パラメーターで想定される型に変換します。 次の例は、​`java.lang.NullPointerException`​ の新しいインスタンスを作成する方法を示しています。 ```dataweave %dw 2.0 output application/json --- java!java::lang::NullPointerException::new("foo") ``` 次の例では、関数 ​`java.lang.String.valueOf`​ を呼び出しています。 ```dataweave %dw 2.0 output text/plain import valueOf from java!java::lang::String --- valueOf(true) ``` ## [](#java-ブリッジの例)Java ブリッジの例 次の例は、入力 ​`uriParam`​ に基づいて挨拶メッセージを返す API を示しています。 Java ブリッジは、応答メッセージを作成する ​`my.class.org.Greeter`​ クラス内の静的メソッドをコールします。 ```dataweave %dw 2.0 output application/json import java!my::class::org::Greeter --- { response: Greeter::greet(attributes.uriParams."name" } ``` ### [](#java-ブリッジの-xml-例)Java ブリッジの XML 例 この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ### [](#アプリケーションをテストする)アプリケーションをテストする アプリケーションをテストする手順は、次のとおりです。 1. Mule アプリケーションを保存して実行します。 2. curl コマンド ​`http://localhost:8081/greet/Username`​ を実行します。 Mule アプリケーションは、次の応答メッセージを返します。 ```xml { "response": "Greetings, Username!" } ``` ## [](#関連情報)関連情報 - [Java 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-java) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) # DataWeave を使用した Java メソッドのコール DataWeave ステートメントから、Mule プロジェクトにある任意の Java クラスの Java メソッドをコールできます。DataWeave では、静的メソッド (クラスの特定のインスタンスに属するメソッドではなく、Java クラスに属するメソッド) のみをコールできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#java-メソッドのコール)Java メソッドのコール メソッドをコールする前に、まず属するクラスを DataWeave コードにインポートする必要があります。DataWeave モジュールをインポートするときのように、​`java!`​ をステートメントに含めて Java クラスをインポートできます。 たとえば、以下は文字列の最後に乱数を追加する 1 つのメソッドがある簡単な Java クラスです。このクラスは、Mule プロジェクトの ​`src/main/java`​ フォルダーの ​`org.mycompany.utils`​ という名前の Java パッケージの一部として作成されていることが前提となっています。 ```java package org.mycompany.utils; import java.util.Random; public class MyUtils { public static String appendRandom(String base) { return base + new Random().nextInt(); } } ``` 次のいずれかの方法で DataWeave コードから ​`appendRandom()`​ メソッドをコールできます。 - クラスをインポートして、メソッドを参照する: %dw 2.0 import java!org::mycompany::utils::MyUtils output application/json --- { a: MyUtils::appendRandom("myString") } - クラス全体ではなく 1 つ以上のメソッドをインポートする: %dw 2.0 import java!org::mycompany::utils::MyUtils::appendRandom output application/json --- { a: appendRandom("myString") } - メソッドが静的メソッドの場合、1 行でインポートしてコールする: %dw 2.0 output application/json --- { a: java!org::mycompany::utils::MyUtils::appendRandom(vars.myString) } 3 つのすべての方法で、ランダムな文字列が追加された変数値が返されます。 ```json { "a":"myString969858409" } ``` ## [](#java-クラスのインスタンス化)Java クラスのインスタンス化 DataWeave コードで、任意のクラスの新しいオブジェクトをインスタンス化できます。インスタンスを作成したら、DataWeave でそのインスタンスメソッドをコールできなくなります。ただし、その変数を参照することはできます。 この簡単な Java クラスにはメソッドと変数があります。 ```java package org.mycompany.utils; public class MyClass { private String foo; public MyClass(String foo) { this.foo = foo; } public String getFoo() { return foo; } } ``` Studio プロジェクトで ​`MyClass`​ サンプルを作成する手順は、次のとおりです。 1. Studio でクラスのプロジェクトを作成します。これを行うには、​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックし、​**my-app**​ などの名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 2. **my-app**​ から ​`org.mycompany.utils`​ パッケージを作成します。これを行うには、Studio の ​**Package Explorer**​ から ​**src/main/java**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Package (パッケージ)\]**​ を選択し、パッケージに ​`org.mycompany.utils`​ という名前を付けます。 3. 新しい ​`org.mycompany.utils`​ パッケージで ​`MyClass`​ クラスを作成します。これを行うには、​**org.mycompany.utils**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Class (クラス)\]**​ を選択し、クラスに ​`MyClass`​ という名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 4. Studio で開いている ​**\[MyClass.java\]**​ タブで、コンテンツ ​`MyClass`​ をコピーして貼り付け、保存します。 次の DataWeave の例では、​`MyClass`​ をインポートし、クラスの新しいインスタンスを作成して、そのインスタンス変数 ​`foo`​ をコールします。DataWeave からオブジェクトの非公開 ​`getFoo()`​ メソッドをコールすることはできません。 ```dataweave %dw 2.0 import java!org::mycompany::utils::MyClass output application/json --- { a: MyClass::new("myString").foo } ``` この DataWeave の例を Studio プロジェクトに追加する手順は、次のとおりです。 1. **src/main/mule**​ の ​`my-app.xml`​ に戻り、Transform Message コンポーネントをプロジェクトのキャンバスにドラッグし、クリックして開きます。 2. コンポーネントの ​**\[Transform Message\]**​ タブで、ソースコード領域 (右側) のスクリプト全体を DataWeave スクリプト (上記) に置き換えます。 3. 変更内容を保存し、​**\[Preview (プレビュー)\]**​ (タブの右端にある) をクリックして、次の出力を表示します。 { "a":"myString" } Mule フローの Transform Message の設定の XML は、次のようになります。 ```xml ``` ## [](#java_bridge)Java ブリッジの使用 DataWeave では、Java ブリッジを使用して Java の任意の静的関数やコンストラクターをコールできます。この機能は、Java で記述されたビジネスロジックを再利用する必要がある場合や、空の公開コンストラクターがない Java オブジェクトをインスタンス化する必要がある場合に役立ちます。 Java ブリッジを使用するには、完全修飾された Java 名を DataWeave 名に変換します。 1. プレフィックス ​`!java`​ を追加します。 2. 完全修飾名のドットを ​`::`​ に置き換えます。 Java 関数を呼び出すときには、DataWeave は各引数を関数パラメーターで想定される型に変換します。 次の例は、​`java.lang.NullPointerException`​ の新しいインスタンスを作成する方法を示しています。 ```dataweave %dw 2.0 output application/json --- java!java::lang::NullPointerException::new("foo") ``` 次の例では、関数 ​`java.lang.String.valueOf`​ を呼び出しています。 ```dataweave %dw 2.0 output text/plain import valueOf from java!java::lang::String --- valueOf(true) ``` ## [](#java-ブリッジの例)Java ブリッジの例 次の例は、入力 ​`uriParam`​ に基づいて挨拶メッセージを返す API を示しています。 Java ブリッジは、応答メッセージを作成する ​`my.class.org.Greeter`​ クラス内の静的メソッドをコールします。 ```dataweave %dw 2.0 output application/json import java!my::class::org::Greeter --- { response: Greeter::greet(attributes.uriParams."name" } ``` ### [](#java-ブリッジの-xml-例)Java ブリッジの XML 例 この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ### [](#アプリケーションをテストする)アプリケーションをテストする アプリケーションをテストする手順は、次のとおりです。 1. Mule アプリケーションを保存して実行します。 2. curl コマンド ​`http://localhost:8081/greet/Username`​ を実行します。 Mule アプリケーションは、次の応答メッセージを返します。 ```xml { "response": "Greetings, Username!" } ``` ## [](#関連情報)関連情報 - [Java 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-java) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) # DataWeave を使用した Java メソッドのコール DataWeave ステートメントから、Mule プロジェクトにある任意の Java クラスの Java メソッドをコールできます。DataWeave では、静的メソッド (クラスの特定のインスタンスに属するメソッドではなく、Java クラスに属するメソッド) のみをコールできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#java-メソッドのコール)Java メソッドのコール メソッドをコールする前に、まず属するクラスを DataWeave コードにインポートする必要があります。DataWeave モジュールをインポートするときのように、​`java!`​ をステートメントに含めて Java クラスをインポートできます。 たとえば、以下は文字列の最後に乱数を追加する 1 つのメソッドがある簡単な Java クラスです。このクラスは、Mule プロジェクトの ​`src/main/java`​ フォルダーの ​`org.mycompany.utils`​ という名前の Java パッケージの一部として作成されていることが前提となっています。 ```java package org.mycompany.utils; import java.util.Random; public class MyUtils { public static String appendRandom(String base) { return base + new Random().nextInt(); } } ``` 次のいずれかの方法で DataWeave コードから ​`appendRandom()`​ メソッドをコールできます。 - クラスをインポートして、メソッドを参照する: %dw 2.0 import java!org::mycompany::utils::MyUtils output application/json --- { a: MyUtils::appendRandom("myString") } - クラス全体ではなく 1 つ以上のメソッドをインポートする: %dw 2.0 import java!org::mycompany::utils::MyUtils::appendRandom output application/json --- { a: appendRandom("myString") } - メソッドが静的メソッドの場合、1 行でインポートしてコールする: %dw 2.0 output application/json --- { a: java!org::mycompany::utils::MyUtils::appendRandom(vars.myString) } 3 つのすべての方法で、ランダムな文字列が追加された変数値が返されます。 ```json { "a":"myString969858409" } ``` ## [](#java-クラスのインスタンス化)Java クラスのインスタンス化 DataWeave コードで、任意のクラスの新しいオブジェクトをインスタンス化できます。インスタンスを作成したら、DataWeave でそのインスタンスメソッドをコールできなくなります。ただし、その変数を参照することはできます。 この簡単な Java クラスにはメソッドと変数があります。 ```java package org.mycompany.utils; public class MyClass { private String foo; public MyClass(String foo) { this.foo = foo; } public String getFoo() { return foo; } } ``` Studio プロジェクトで ​`MyClass`​ サンプルを作成する手順は、次のとおりです。 1. Studio でクラスのプロジェクトを作成します。これを行うには、​**\[New (新規)\]**​ → ​**\[Mule Project (Mule プロジェクト)\]**​ をクリックし、​**my-app**​ などの名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 2. **my-app**​ から ​`org.mycompany.utils`​ パッケージを作成します。これを行うには、Studio の ​**Package Explorer**​ から ​**src/main/java**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Package (パッケージ)\]**​ を選択し、パッケージに ​`org.mycompany.utils`​ という名前を付けます。 3. 新しい ​`org.mycompany.utils`​ パッケージで ​`MyClass`​ クラスを作成します。これを行うには、​**org.mycompany.utils**​ を右クリックして、​**\[New (新規)\]**​ → ​**\[Class (クラス)\]**​ を選択し、クラスに ​`MyClass`​ という名前を付けて ​**\[Finish (完了)\]**​ をクリックします。 4. Studio で開いている ​**\[MyClass.java\]**​ タブで、コンテンツ ​`MyClass`​ をコピーして貼り付け、保存します。 次の DataWeave の例では、​`MyClass`​ をインポートし、クラスの新しいインスタンスを作成して、そのインスタンス変数 ​`foo`​ をコールします。DataWeave からオブジェクトの非公開 ​`getFoo()`​ メソッドをコールすることはできません。 ```dataweave %dw 2.0 import java!org::mycompany::utils::MyClass output application/json --- { a: MyClass::new("myString").foo } ``` この DataWeave の例を Studio プロジェクトに追加する手順は、次のとおりです。 1. **src/main/mule**​ の ​`my-app.xml`​ に戻り、Transform Message コンポーネントをプロジェクトのキャンバスにドラッグし、クリックして開きます。 2. コンポーネントの ​**\[Transform Message\]**​ タブで、ソースコード領域 (右側) のスクリプト全体を DataWeave スクリプト (上記) に置き換えます。 3. 変更内容を保存し、​**\[Preview (プレビュー)\]**​ (タブの右端にある) をクリックして、次の出力を表示します。 { "a":"myString" } Mule フローの Transform Message の設定の XML は、次のようになります。 ```xml ``` ## [](#java_bridge)Java ブリッジの使用 DataWeave では、Java ブリッジを使用して Java の任意の静的関数やコンストラクターをコールできます。この機能は、Java で記述されたビジネスロジックを再利用する必要がある場合や、空の公開コンストラクターがない Java オブジェクトをインスタンス化する必要がある場合に役立ちます。 Java ブリッジを使用するには、完全修飾された Java 名を DataWeave 名に変換します。 1. プレフィックス ​`!java`​ を追加します。 2. 完全修飾名のドットを ​`::`​ に置き換えます。 Java 関数を呼び出すときには、DataWeave は各引数を関数パラメーターで想定される型に変換します。 次の例は、​`java.lang.NullPointerException`​ の新しいインスタンスを作成する方法を示しています。 ```dataweave %dw 2.0 output application/json --- java!java::lang::NullPointerException::new("foo") ``` 次の例では、関数 ​`java.lang.String.valueOf`​ を呼び出しています。 ```dataweave %dw 2.0 output text/plain import valueOf from java!java::lang::String --- valueOf(true) ``` ## [](#java-ブリッジの例)Java ブリッジの例 次の例は、入力 ​`uriParam`​ に基づいて挨拶メッセージを返す API を示しています。 Java ブリッジは、応答メッセージを作成する ​`my.class.org.Greeter`​ クラス内の静的メソッドをコールします。 ```dataweave %dw 2.0 output application/json import java!my::class::org::Greeter --- { response: Greeter::greet(attributes.uriParams."name" } ``` ### [](#java-ブリッジの-xml-例)Java ブリッジの XML 例 この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ### [](#アプリケーションをテストする)アプリケーションをテストする アプリケーションをテストする手順は、次のとおりです。 1. Mule アプリケーションを保存して実行します。 2. curl コマンド ​`http://localhost:8081/greet/Username`​ を実行します。 Mule アプリケーションは、次の応答メッセージを返します。 ```xml { "response": "Greetings, Username!" } ``` ## [](#関連情報)関連情報 - [Java 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-java) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) # DataWeave を使用したデータのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、本の配列を反復処理し、それぞれで一連のタスクを実行します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - `books`​ 配列の各オブジェクトを調べる ​`map`​。 - 価格データを Number (数値) 型に強制変換する ​`as`​。これにより、変換で各要素の正しい型が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ```
本に複数の著者がいる場合、​item.author​ は 1 つの名前ではなく著者の配列全体に評価されます。
## [](#デフォルト値の使用)デフォルト値の使用 次の例では、上記と同じ変換を実行しますが、プロパティ「item」および「index」を明示的に定義しません。代わりに、それぞれのデフォルト名 (​`$`​ および ​`$$`​) でコールします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: (payload.books map { category: "book", price: $.price as Number, id: $$, properties: { title: $.title, author: $.author, year: $.year as Number } }) ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "category": "book", "price": 30.00, "id": 0, "properties": { "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": 2005 } }, { "category": "book", "price": 29.99, "id": 1, "properties": { "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": 2005 } }, { "category": "book", "price": 49.99, "id": 2, "properties": { "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": 2003 } }, { "category": "book", "price": 39.95, "id": 3, "properties": { "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": 2003 } } ] } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-rename-keys) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map-object-elements-as-an-array) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map-an-object) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # DataWeave を使用したデータのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、本の配列を反復処理し、それぞれで一連のタスクを実行します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - `books`​ 配列の各オブジェクトを調べる ​`map`​。 - 価格データを Number (数値) 型に強制変換する ​`as`​。これにより、変換で各要素の正しい型が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ```
本に複数の著者がいる場合、​item.author​ は 1 つの名前ではなく著者の配列全体に評価されます。
## [](#デフォルト値の使用)デフォルト値の使用 次の例では、上記と同じ変換を実行しますが、プロパティ「item」および「index」を明示的に定義しません。代わりに、それぞれのデフォルト名 (​`$`​ および ​`$$`​) でコールします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: (payload.books map { category: "book", price: $.price as Number, id: $$, properties: { title: $.title, author: $.author, year: $.year as Number } }) ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "category": "book", "price": 30.00, "id": 0, "properties": { "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": 2005 } }, { "category": "book", "price": 29.99, "id": 1, "properties": { "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": 2005 } }, { "category": "book", "price": 49.99, "id": 2, "properties": { "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": 2003 } }, { "category": "book", "price": 39.95, "id": 3, "properties": { "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": 2003 } } ] } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-rename-keys) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-object-elements-as-an-array) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-an-object) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # DataWeave を使用したデータのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、本の配列を反復処理し、それぞれで一連のタスクを実行します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - `books`​ 配列の各オブジェクトを調べる ​`map`​。 - 価格データを Number (数値) 型に強制変換する ​`as`​。これにより、変換で各要素の正しい型が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ```
本に複数の著者がいる場合、​item.author​ は 1 つの名前ではなく著者の配列全体に評価されます。
## [](#デフォルト値の使用)デフォルト値の使用 次の例では、上記と同じ変換を実行しますが、プロパティ「item」および「index」を明示的に定義しません。代わりに、それぞれのデフォルト名 (​`$`​ および ​`$$`​) でコールします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: (payload.books map { category: "book", price: $.price as Number, id: $$, properties: { title: $.title, author: $.author, year: $.year as Number } }) ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "category": "book", "price": 30.00, "id": 0, "properties": { "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": 2005 } }, { "category": "book", "price": 29.99, "id": 1, "properties": { "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": 2005 } }, { "category": "book", "price": 49.99, "id": 2, "properties": { "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": 2003 } }, { "category": "book", "price": 39.95, "id": 3, "properties": { "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": 2003 } } ] } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-rename-keys) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map-object-elements-as-an-array) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map-an-object) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # DataWeave を使用したデータのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、本の配列を反復処理し、それぞれで一連のタスクを実行します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - `books`​ 配列の各オブジェクトを調べる ​`map`​。 - 価格データを Number (数値) 型に強制変換する ​`as`​。これにより、変換で各要素の正しい型が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ```
本に複数の著者がいる場合、​item.author​ は 1 つの名前ではなく著者の配列全体に評価されます。
## [](#デフォルト値の使用)デフォルト値の使用 次の例では、上記と同じ変換を実行しますが、プロパティ「item」および「index」を明示的に定義しません。代わりに、それぞれのデフォルト名 (​`$`​ および ​`$$`​) でコールします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: (payload.books map { category: "book", price: $.price as Number, id: $$, properties: { title: $.title, author: $.author, year: $.year as Number } }) ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "category": "book", "price": 30.00, "id": 0, "properties": { "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": 2005 } }, { "category": "book", "price": 29.99, "id": 1, "properties": { "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": 2005 } }, { "category": "book", "price": 49.99, "id": 2, "properties": { "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": 2003 } }, { "category": "book", "price": 39.95, "id": 3, "properties": { "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": 2003 } } ] } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-rename-keys) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-object-elements-as-an-array) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-an-object) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # DataWeave を使用したデータのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、本の配列を反復処理し、それぞれで一連のタスクを実行します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - `books`​ 配列の各オブジェクトを調べる ​`map`​。 - 価格データを Number (数値) 型に強制変換する ​`as`​。これにより、変換で各要素の正しい型が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ```
本に複数の著者がいる場合、​item.author​ は 1 つの名前ではなく著者の配列全体に評価されます。
## [](#デフォルト値の使用)デフォルト値の使用 次の例では、上記と同じ変換を実行しますが、プロパティ「item」および「index」を明示的に定義しません。代わりに、それぞれのデフォルト名 (​`$`​ および ​`$$`​) でコールします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: (payload.books map { category: "book", price: $.price as Number, id: $$, properties: { title: $.title, author: $.author, year: $.year as Number } }) ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "category": "book", "price": 30.00, "id": 0, "properties": { "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": 2005 } }, { "category": "book", "price": 29.99, "id": 1, "properties": { "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": 2005 } }, { "category": "book", "price": 49.99, "id": 2, "properties": { "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": 2003 } }, { "category": "book", "price": 39.95, "id": 3, "properties": { "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": 2003 } } ] } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-rename-keys) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map-object-elements-as-an-array) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map-an-object) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # DataWeave を使用したデータのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、本の配列を反復処理し、それぞれで一連のタスクを実行します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - `books`​ 配列の各オブジェクトを調べる ​`map`​。 - 価格データを Number (数値) 型に強制変換する ​`as`​。これにより、変換で各要素の正しい型が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ```
本に複数の著者がいる場合、​item.author​ は 1 つの名前ではなく著者の配列全体に評価されます。
## [](#デフォルト値の使用)デフォルト値の使用 次の例では、上記と同じ変換を実行しますが、プロパティ「item」および「index」を明示的に定義しません。代わりに、それぞれのデフォルト名 (​`$`​ および ​`$$`​) でコールします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: (payload.books map { category: "book", price: $.price as Number, id: $$, properties: { title: $.title, author: $.author, year: $.year as Number } }) ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "category": "book", "price": 30.00, "id": 0, "properties": { "title": { "-lang": "en", "#text": "Everyday Italian" }, "author": "Giada De Laurentiis", "year": 2005 } }, { "category": "book", "price": 29.99, "id": 1, "properties": { "title": { "-lang": "en", "#text": "Harry Potter" }, "author": "J K. Rowling", "year": 2005 } }, { "category": "book", "price": 49.99, "id": 2, "properties": { "title": { "-lang": "en", "#text": "XQuery Kick Start" }, "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": 2003 } }, { "category": "book", "price": 39.95, "id": 3, "properties": { "title": { "-lang": "en", "#text": "Learning XML" }, "author": "Erik T. Ray", "year": 2003 } } ] } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-rename-keys) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-object-elements-as-an-array) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-an-object) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # DataWeave を使用した型の強制 DataWeave では、​`as`​ 演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。 ## [](#型強制のための-dataweave-型の定義)型強制のための DataWeave 型の定義 この DataWeave 例では、​`String`​ 型を使用して型 ​`Currency`​ を定義し、Java DecimalFormat パターン (​`##`​) を使用して値を書式設定し、​`as`​ を使用して ​`price`​ 値を ​`Currency`​ 型に強制的に変換します。 入力 ```xml 22.30 20.31 ``` DataWeave ```dataweave %dw 2.0 output application/json type Currency = String { format: "\$#,###.00"} --- books: payload.items.*item map book: price: $.price as Currency ``` 出力 ```json { "books": [ { "book": { "price": "22.30" } }, { "book": { "price": "20.31" } } ] } ``` ## [](#型強制表)型強制表 次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
変換元 変換先 プロパティ

Range​

Array​

Number​

Binary​

String​

Binary​

String​

Boolean​

Number​

DateTime​

​unit​

LocalDateTime​

DateTime​

String​

DateTime​

​format​ / ​locale​

DateTime​

LocalDate​

LocalDateTime​

LocalDate​

String​

LocalDate​

​format​ / ​locale​

DateTime​

LocalDateTime​

String​

LocalDateTime​

​format​ / ​locale​

DateTime​

LocalTime​

LocalDateTime​

LocalTime​

Time​

LocalTime​

String​

LocalTime​

​format​ / ​locale​

DateTime​

Number​

​unit​

String​

Number​

​format​ / ​locale​

String​

Period​

String​

Regex​

DateTime​

String​

​format​ / ​locale​

LocalDateTime​

String​

​format​ / ​locale​

LocalTime​

String​

​format​ / ​locale​

LocalDate​

String​

​format​ / ​locale​

Time​

String​

​format​ / ​locale​

Period​

String​

TimeZone​

String​

Number​

String​

​format​ / ​locale​

Boolean​

String​

Range​

String​

​,​ を区切り文字として使用して、範囲のすべての値を含む文字列を返します。

Type​

String​

DateTime​

Time​

LocalDateTime

Time​

LocalTime​

Time​

String​

Time​

​format​

DateTime​

TimeZone​

Time​

TimeZone`​

String​

TimeZone​

### [](#型強制のプロパティ)型強制のプロパティ
プロパティ 説明

​class​

Object (オブジェクト) 型の Java クラスを受け入れます。

format​

数値と日付を書式設定するための Java ​DecimalFormat​ パターンを受け入れます。

​locale​

Java ロケールを受け入れます。Java ​Locale​ オブジェクトは地域 (地理的、政治的、または文化的) を表します。

​mode​

日付値と時刻値の解析モード。有効な値: SMART​、​STRICT​、​LENIENT

LENIENT​ と ​SMART​ では、無効な日付の自動修正方法が異なります。また、​STRICT​ は、日付に対してエラーを返します。​mode​ を使用した​例​を参照してください。

​unit​

値には ​milliseconds​ または ​seconds​ を使用できます。これは、Number (数値) から DateTime (日時) への変換で使用されます。

次の例は、​`mode`​ プロパティの使用方法を示しています。​`LENIENT`​ と ​`SMART`​ は、​`02/31/2020`​ のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。​`STRICT`​ は、無効な日付に対してエラーを返します。例では、​`yyyy`​ ではなく ​`uuuu`​ を使用して年を表しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { examples : { badDateWithLenient: '02/31/2020' as Date {mode: "LENIENT", format: 'MM/dd/uuuu'}, badDateWithSmart: '02/31/2020' as Date {mode: "SMART", format: 'MM/dd/uuuu'} } } ``` 出力: ```json %dw 2.0 output application/json --- { "examples": { "badDateWithLenient": "03/02/2020", "badDateWithSmart": "02/29/2020" } } ``` 無効な日付に対して STRICT を使用するとエラーが返されます。次の例では、​`badDateWithStrict: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'}`​ によってエラーが返されています。 ```txt "Cannot coerce String (02/31/2020) to Date, caused by: Text '02/31/2020' could not be parsed: Invalid date 'FEBRUARY 31' 9| badDateWithSmart: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` 次の例では、2 つの文字列を日付形式に変換し、結果を連結します。最初の文字列は日付を表し、2 番目の文字列は時刻を表します。この変換は、​`as`​ を使用して最初の文字列を ​`LocalDateTime`​ に強制変換してから、指定された形式の ​`String`​ に強制変換します。また、​`++`​ を使用して結果を連結します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var s1= 20201228 // (uuuuMMdd), var s2= 1608 //(HHMM) --- (s1 ++ s2) as LocalDateTime {format:"uuuuMMddHHMM"} as String {format:"MM-dd-uuuu HH:MM:ss"} ``` 出力: ```json "12-28-2020 16:08:00" ``` 次の例も、文字列を日付形式に変換します。まず、この変換は ​`as`​ を使用して文字列を ​`LocalDateTime`​ 型に強制変換してから、結果を指定された出力形式の ​`String`​ 型に強制変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- "8/30/2020 4:00:13 PM" as LocalDateTime {format: "M/dd/uuuu H:MM:ss a"} as String {format: "MM/dd/uuuu"} ``` 出力: ```json "08/30/2020" ``` 次の例では、文字列を 10 進数表現の数値に変換します。数値から文字列への変換時に ​`format`​ はゼロを追加するため、まず文字列値 ​`"22"`​ を ​`Number`​ に変換してから ​`String`​ に再度変換します。入力データが数値 ​`22`​ の場合、最初の ​`Number`​ 変換を実行する必要はありません。 後者の ​`Number`​ 変換では、出力を 10 進数表現の数値にします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { data: "22" as Number as String {format: ".00"} as Number } ``` 出力: ```json { "data": 22.00 } ``` 次の例では、​`locale`​ プロパティを使用して数値と日付値を書式設定します。まず、数値を ​`String`​ 型に型強制し、Java DecimalFormat パターン (##) と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) も使用する指定された出力形式に変換します。​`locale: "en"`​ プロパティでは、​`.`​ を使用して出力の数値の 10 進数表現を書式設定し、​`locale: "es"`​ プロパティでは、​`,`​ を使用して出力を書式設定します。 次に、日付値を ​`Date`​ 型に型強制した後、出力形式 ​`dd-MMM-yy`​ と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) を使用する ​`String`​ 型に型強制します。​`locale: "en"`​ プロパティでは、月 ​`MMM`​ を英語で書式設定し、​`locale: "es"`​ プロパティでは、月をスペイン語で書式設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { enNumber: 12.3 as String {format: "##.##", locale: "en"}, esNumber: 12.3 as String {format: "##.##", locale: "es"}, esDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "es"}, enDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "en"} } ``` 出力: ```json { "enNumber": "12.3", "esNumber": "12,3", "esDate": "31-dic.-20", "enDate": "31-Dec-20" } ``` ## [](#関連情報)関連情報 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-format-dates) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) # DataWeave を使用した型の強制 DataWeave では、​`as`​ 演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。 ## [](#型強制のための-dataweave-型の定義)型強制のための DataWeave 型の定義 この DataWeave 例では、​`String`​ 型を使用して型 ​`Currency`​ を定義し、Java DecimalFormat パターン (​`##`​) を使用して値を書式設定し、​`as`​ を使用して ​`price`​ 値を ​`Currency`​ 型に強制的に変換します。 入力 ```xml 22.30 20.31 ``` DataWeave ```dataweave %dw 2.0 output application/json type Currency = String { format: "\$#,###.00"} --- books: payload.items.*item map book: price: $.price as Currency ``` 出力 ```json { "books": [ { "book": { "price": "22.30" } }, { "book": { "price": "20.31" } } ] } ``` ## [](#型強制表)型強制表 次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
ソース 変換先 プロパティ

Range​

Array​

Number​

Binary​

String​

Binary​

String​

Boolean​

Number​

DateTime​

unit

LocalDateTime

DateTime​

String​

DateTime​

format​ / ​locale

DateTime​

LocalDate​

LocalDateTime

LocalDate​

String​

LocalDate​

format​ / ​locale

DateTime​

LocalDateTime

String​

LocalDateTime

format​ / ​locale

DateTime​

LocalTime​

LocalDateTime

LocalTime​

Time​

LocalTime​

String​

LocalTime​

format​ / ​locale

DateTime​

Number​

unit

String​

Number​

format​ / ​locale

String​

Period​

String​

Regex​

DateTime​

String​

format​ / ​locale

LocalDateTime

String​

format​ / ​locale

LocalTime​

String​

format​ / ​locale

LocalDate​

String​

format​ / ​locale

Time​

String​

format​ / ​locale

Period​

String​

TimeZone​

String​

Number​

String​

format​ / ​locale

Boolean​

String​

Range

String

,​ を区切り文字として使用して、範囲のすべての値を含む文字列を返します。

Type​

String​

DateTime​

Time​

LocalDateTime

Time​

LocalTime​

Time​

String​

Time​

format

DateTime​

TimeZone​

Time​

TimeZone`​

String​

TimeZone​

### [](#型強制のプロパティ)型強制のプロパティ
プロパティ 説明

class

Object (オブジェクト) 型の Java クラスを受け入れます。

format

数値と日付を書式設定するための Java ​DecimalFormat​ パターンを受け入れます。

locale

Java ロケールを受け入れます。Java ​Locale​ オブジェクトは地域 (地理的、政治的、または文化的) を表します。

mode

日付値と時刻値の解析モード。有効な値: SMART​、​STRICT​、​LENIENT​

LENIENT​ と ​SMART​ では、無効な日付の自動修正方法が異なります。また、​STRICT​ は、日付に対してエラーを返します。​mode​ を使用した​​ 例​を参照してください。

unit

値には ​milliseconds​ または ​seconds​ を使用できます。これは、Number (数値) から DateTime (日時) への変換で使用されます。

次の例は、​`mode`​ プロパティの使用方法を示しています。​`LENIENT`​ と ​`SMART`​ は、​`02/31/2020`​ のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。 `STRICT`​ は、無効な日付に対してエラーを返します。例では、​`yyyy`​ ではなく ​`uuuu`​ を使用して年を表しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { examples : { badDateWithLenient: '02/31/2020' as Date {mode: "LENIENT", format: 'MM/dd/uuuu'}, badDateWithSmart: '02/31/2020' as Date {mode: "SMART", format: 'MM/dd/uuuu'} } } ``` 出力: ```json %dw 2.0 output application/json --- { "examples": { "badDateWithLenient": "03/02/2020", "badDateWithSmart": "02/29/2020" } } ``` 無効な日付に対して STRICT を使用するとエラーが返されます。次の例では、​`badDateWithStrict: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'}`​ によってエラーが返されています。 ```txt "Cannot coerce String (02/31/2020) to Date, caused by: Text '02/31/2020' could not be parsed: Invalid date 'FEBRUARY 31' 9| badDateWithSmart: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` 次の例では、2 つの文字列を日付形式に変換し、結果を連結します。最初の文字列は日付を表し、2 番目の文字列は時刻を表します。この変換は、​`as`​ を使用して最初の文字列を ​`LocalDateTime`​ に強制変換してから、指定された形式の ​`String`​ に強制変換します。また、​`++`​ を使用して結果を連結します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var s1= 20201228 // (uuuuMMdd), var s2= 1608 //(HHMM) --- (s1 ++ s2) as LocalDateTime {format:"uuuuMMddHHmm"} as String {format:"MM-dd-uuuu HH:mm:ss"} ``` 出力: ```json "12-28-2020 16:08:00" ``` 次の例も、文字列を日付形式に変換します。まず、この変換は ​`as`​ を使用して文字列を ​`LocalDateTime`​ 型に強制変換してから、結果を指定された出力形式の ​`String`​ 型に強制変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- "8/30/2020 4:00:13 PM" as LocalDateTime {format: "M/dd/uuuu h:mm:ss a"} as String {format: "MM/dd/uuuu"} ``` 出力: ```json "08/30/2020" ``` 次の例では、文字列を 10 進数表現の数値に変換します。数値から文字列への変換時に ​`format`​ はゼロを追加するため、まず文字列値 ​`"22"`​ を ​`Number`​ に変換してから ​`String`​ に再度変換します。入力データが数値 ​`22`​ の場合、最初の ​`Number`​ 変換を実行する必要はありません。 後者の ​`Number`​ 変換では、出力を 10 進数表現の数値にします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { data: "22" as Number as String {format: ".00"} as Number } ``` 出力: ```json { "data": 22.00 } ``` 次の例では、​`locale`​ プロパティを使用して数値と日付値を書式設定します。まず、数値を ​`String`​ 型に型強制し、Java DecimalFormat パターン (##) と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) も使用する指定された出力形式に変換します。​`locale: "en"`​ プロパティでは、​`.`​ を使用して出力の数値の 10 進数表現を書式設定し、​`locale: "es"`​ プロパティでは、​`,`​ を使用して出力を書式設定します。 次に、日付値を ​`Date`​ 型に型強制した後、出力形式 ​`dd-MMM-yy`​ と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) を使用する ​`String`​ 型に型強制します。​`locale: "en"`​ プロパティでは、月 ​`MMM`​ を英語で書式設定し、​`locale: "es"`​ プロパティでは、月をスペイン語で書式設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { enNumber: 12.3 as String {format: "##.##", locale: "en"}, esNumber: 12.3 as String {format: "##.##", locale: "es"}, esDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "es"}, enDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "en"} } ``` 出力: ```json { "enNumber": "12.3", "esNumber": "12,3", "esDate": "31-dic.-20", "enDate": "31-Dec-20" } ``` ## [](#関連情報)関連情報 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-format-dates) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) # DataWeave を使用した型の強制 DataWeave では、​`as`​ 演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。 ## [](#型強制のための-dataweave-型の定義)型強制のための DataWeave 型の定義 この DataWeave 例では、​`String`​ 型を使用して型 ​`Currency`​ を定義し、Java DecimalFormat パターン (​`##`​) を使用して値を書式設定し、​`as`​ を使用して ​`price`​ 値を ​`Currency`​ 型に強制的に変換します。 入力 ```xml 22.30 20.31 ``` DataWeave ```dataweave %dw 2.0 output application/json type Currency = String { format: "\$#,###.00"} --- books: payload.items.*item map book: price: $.price as Currency ``` 出力 ```json { "books": [ { "book": { "price": "22.30" } }, { "book": { "price": "20.31" } } ] } ``` ## [](#型強制表)型強制表 次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
ソース 対象 プロパティ

Range​

Array​

Number​

Binary​

String​

Binary​

String​

Boolean​

Number​

DateTime​

unit

LocalDateTime

DateTime​

String​

DateTime​

format​ / ​locale

DateTime​

LocalDate​

LocalDateTime

LocalDate​

String​

LocalDate​

format​ / ​locale

DateTime​

LocalDateTime

String​

LocalDateTime

format​ / ​locale

DateTime​

LocalTime​

LocalDateTime

LocalTime​

Time​

LocalTime​

String​

LocalTime​

format​ / ​locale

DateTime​

Number​

unit

String​

Number​

format​ / ​locale

String​

Period​

String​

Regex​

DateTime​

String​

format​ / ​locale

LocalDateTime

String​

format​ / ​locale

LocalTime​

String​

format​ / ​locale

LocalDate​

String​

format​ / ​locale

Time​

String​

format​ / ​locale

Period​

String​

TimeZone​

String​

Number​

String​

format​ / ​locale

Boolean​

String​

Range

String

,​ を区切り文字として使用して、範囲のすべての値を含む文字列を返します。

Type​

String​

DateTime​

Time​

LocalDateTime

Time​

LocalTime​

Time​

String​

Time​

format

DateTime​

TimeZone​

Time​

TimeZone`​

String​

TimeZone​

### [](#型強制のプロパティ)型強制のプロパティ
プロパティ 説明

class

Object (オブジェクト) 型の Java クラスを受け入れます。

format

数値と日付を書式設定するための Java ​DecimalFormat​ パターンを受け入れます。

locale

Java ロケールを受け入れます。Java ​Locale​ オブジェクトは地域 (地理的、政治的、または文化的) を表します。

mode

日付値と時刻値の解析モード。有効な値: SMART​、​STRICT​、​LENIENT​

LENIENT​ と ​SMART​ では、無効な日付の自動修正方法が異なります。また、​STRICT​ は、日付に対してエラーを返します。​mode​ を使用した​例​を参照してください。

unit

値には ​milliseconds​ または ​seconds​ を使用できます。これは、Number (数値) から DateTime (日時) への変換で使用されます。

次の例は、​`mode`​ プロパティの使用方法を示しています。​`LENIENT`​ と ​`SMART`​ は、​`02/31/2020`​ のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。 `STRICT`​ は、無効な日付に対してエラーを返します。例では、​`yyyy`​ ではなく ​`uuuu`​ を使用して年を表しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { examples : { badDateWithLenient: '02/31/2020' as Date {mode: "LENIENT", format: 'MM/dd/uuuu'}, badDateWithSmart: '02/31/2020' as Date {mode: "SMART", format: 'MM/dd/uuuu'} } } ``` 出力: ```json %dw 2.0 output application/json --- { "examples": { "badDateWithLenient": "03/02/2020", "badDateWithSmart": "02/29/2020" } } ``` 無効な日付に対して STRICT を使用するとエラーが返されます。次の例では、​`badDateWithStrict: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'}`​ によってエラーが返されています。 ```txt "Cannot coerce String (02/31/2020) to Date, caused by: Text '02/31/2020' could not be parsed: Invalid date 'FEBRUARY 31' 9| badDateWithSmart: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` 次の例では、2 つの文字列を日付形式に変換し、結果を連結します。最初の文字列は日付を表し、2 番目の文字列は時刻を表します。この変換は、​`as`​ を使用して最初の文字列を ​`LocalDateTime`​ に強制変換してから、指定された形式の ​`String`​ に強制変換します。また、​`++`​ を使用して結果を連結します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var s1= 20201228 // (uuuuMMdd), var s2= 1608 //(HHMM) --- (s1 ++ s2) as LocalDateTime {format:"uuuuMMddHHmm"} as String {format:"MM-dd-uuuu HH:mm:ss"} ``` 出力: ```json "12-28-2020 16:08:00" ``` 次の例も、文字列を日付形式に変換します。まず、この変換は ​`as`​ を使用して文字列を ​`LocalDateTime`​ 型に強制変換してから、結果を指定された出力形式の ​`String`​ 型に強制変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- "8/30/2020 4:00:13 PM" as LocalDateTime {format: "M/dd/uuuu h:mm:ss a"} as String {format: "MM/dd/uuuu"} ``` 出力: ```json "08/30/2020" ``` 次の例では、文字列を 10 進数表現の数値に変換します。数値から文字列への変換時に ​`format`​ はゼロを追加するため、まず文字列値 ​`"22"`​ を ​`Number`​ に変換してから ​`String`​ に再度変換します。入力データが数値 ​`22`​ の場合、最初の ​`Number`​ 変換を実行する必要はありません。 後者の ​`Number`​ 変換では、出力を 10 進数表現の数値にします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { data: "22" as Number as String {format: ".00"} as Number } ``` 出力: ```json { "data": 22.00 } ``` 次の例では、​`locale`​ プロパティを使用して数値と日付値を書式設定します。まず、数値を ​`String`​ 型に型強制し、Java DecimalFormat パターン (##) と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) も使用する指定された出力形式に変換します。​`locale: "en"`​ プロパティでは、​`.`​ を使用して出力の数値の 10 進数表現を書式設定し、​`locale: "es"`​ プロパティでは、​`,`​ を使用して出力を書式設定します。 次に、日付値を ​`Date`​ 型に型強制した後、出力形式 ​`dd-MMM-yy`​ と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) を使用する ​`String`​ 型に型強制します。​`locale: "en"`​ プロパティでは、月 ​`MMM`​ を英語で書式設定し、​`locale: "es"`​ プロパティでは、月をスペイン語で書式設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { enNumber: 12.3 as String {format: "##.##", locale: "en"}, esNumber: 12.3 as String {format: "##.##", locale: "es"}, esDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "es"}, enDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "en"} } ``` 出力: ```json { "enNumber": "12.3", "esNumber": "12,3", "esDate": "31-dic.-20", "enDate": "31-Dec-20" } ``` ## [](#関連情報)関連情報 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-format-dates) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) # DataWeave を使用した型の強制 DataWeave では、​`as`​ 演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。 ## [](#型強制のための-dataweave-型の定義)型強制のための DataWeave 型の定義 この DataWeave 例では、​`String`​ 型を使用して型 ​`Currency`​ を定義し、Java DecimalFormat パターン (​`##`​) を使用して値を書式設定し、​`as`​ を使用して ​`price`​ 値を ​`Currency`​ 型に強制的に変換します。 入力 ```xml 22.30 20.31 ``` DataWeave ```dataweave %dw 2.0 output application/json type Currency = String { format: "\$#,###.00"} --- books: payload.items.*item map book: price: $.price as Currency ``` 出力 ```json { "books": [ { "book": { "price": "22.30" } }, { "book": { "price": "20.31" } } ] } ``` ## [](#型強制表)型強制表 次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
ソース 対象 プロパティ

Range​

Array​

Number​

Binary​

String​

Binary​

String​

Boolean​

Number​

DateTime​

unit

LocalDateTime

DateTime​

String​

DateTime​

format​ / ​locale

DateTime​

LocalDate​

LocalDateTime

LocalDate​

String​

LocalDate​

format​ / ​locale

DateTime​

LocalDateTime

String​

LocalDateTime

format​ / ​locale

DateTime​

LocalTime​

LocalDateTime

LocalTime​

Time​

LocalTime​

String​

LocalTime​

format​ / ​locale

DateTime​

Number​

unit

String​

Number​

format​ / ​locale

String​

Period​

String​

Regex​

DateTime​

String​

format​ / ​locale

LocalDateTime

String​

format​ / ​locale

LocalTime​

String​

format​ / ​locale

LocalDate​

String​

format​ / ​locale

Time​

String​

format​ / ​locale

Period​

String​

TimeZone​

String​

Number​

String​

format​ / ​locale

Boolean​

String​

Range

String

,​ を区切り文字として使用して、範囲のすべての値を含む文字列を返します。

Type​

String​

DateTime​

Time​

LocalDateTime

Time​

LocalTime​

Time​

String​

Time​

format

DateTime​

TimeZone​

Time​

TimeZone`​

String​

TimeZone​

### [](#型強制のプロパティ)型強制のプロパティ
プロパティ 説明

class

Object (オブジェクト) 型の Java クラスを受け入れます。

format

数値と日付を書式設定するための Java ​DecimalFormat​ パターンを受け入れます。

locale

Java ロケールを受け入れます。Java ​Locale​ オブジェクトは地域 (地理的、政治的、または文化的) を表します。

mode

日付値と時刻値の解析モード。有効な値: SMART​、​STRICT​、​LENIENT​

LENIENT​ と ​SMART​ では、無効な日付の自動修正方法が異なります。また、​STRICT​ は、日付に対してエラーを返します。​mode​ を使用した​例​を参照してください。

unit

値には ​milliseconds​ または ​seconds​ を使用できます。これは、Number (数値) から DateTime (日時) への変換で使用されます。

次の例は、​`mode`​ プロパティの使用方法を示しています。​`LENIENT`​ と ​`SMART`​ は、​`02/31/2020`​ のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。 `STRICT`​ は、無効な日付に対してエラーを返します。例では、​`yyyy`​ ではなく ​`uuuu`​ を使用して年を表しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { examples : { badDateWithLenient: '02/31/2020' as Date {mode: "LENIENT", format: 'MM/dd/uuuu'}, badDateWithSmart: '02/31/2020' as Date {mode: "SMART", format: 'MM/dd/uuuu'} } } ``` 出力: ```json %dw 2.0 output application/json --- { "examples": { "badDateWithLenient": "03/02/2020", "badDateWithSmart": "02/29/2020" } } ``` 無効な日付に対して STRICT を使用するとエラーが返されます。次の例では、​`badDateWithStrict: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'}`​ によってエラーが返されています。 ```txt "Cannot coerce String (02/31/2020) to Date, caused by: Text '02/31/2020' could not be parsed: Invalid date 'FEBRUARY 31' 9| badDateWithSmart: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` 次の例では、2 つの文字列を日付形式に変換し、結果を連結します。最初の文字列は日付を表し、2 番目の文字列は時刻を表します。この変換は、​`as`​ を使用して最初の文字列を ​`LocalDateTime`​ に強制変換してから、指定された形式の ​`String`​ に強制変換します。また、​`++`​ を使用して結果を連結します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var s1= 20201228 // (uuuuMMdd), var s2= 1608 //(HHMM) --- (s1 ++ s2) as LocalDateTime {format:"uuuuMMddHHmm"} as String {format:"MM-dd-uuuu HH:mm:ss"} ``` 出力: ```json "12-28-2020 16:08:00" ``` 次の例も、文字列を日付形式に変換します。まず、この変換は ​`as`​ を使用して文字列を ​`LocalDateTime`​ 型に強制変換してから、結果を指定された出力形式の ​`String`​ 型に強制変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- "8/30/2020 4:00:13 PM" as LocalDateTime {format: "M/dd/uuuu h:mm:ss a"} as String {format: "MM/dd/uuuu"} ``` 出力: ```json "08/30/2020" ``` 次の例では、数値を 10 進数表現の文字列に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { data: 22 as String {format: ".00"} } ``` 出力: ```json { "data": "22.00" } ```
すべての形式で一貫性を保つために、DataWeave 2.5 以降、数値を直接書き込むと書式設定が保持されず、末尾の 0 が削除されます。形式メタデータは、提供された文字列を正しい数値表現に解析するためにのみ使用されます。この動作を維持するには、​stripTrailingZeroes​ プロパティを使用して再度有効にします。DataWeave システムプロパティを参照してください。
次の例では、​`locale`​ プロパティを使用して数値と日付値を書式設定します。まず、数値を ​`String`​ 型に型強制し、Java DecimalFormat パターン (##) と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) も使用する指定された出力形式に変換します。​`locale: "en"`​ プロパティでは、​`.`​ を使用して出力の数値の 10 進数表現を書式設定し、​`locale: "es"`​ プロパティでは、​`,`​ を使用して出力を書式設定します。 次に、日付値を ​`Date`​ 型に型強制した後、出力形式 ​`dd-MMM-yy`​ と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) を使用する ​`String`​ 型に型強制します。​`locale: "en"`​ プロパティでは、月 ​`MMM`​ を英語で書式設定し、​`locale: "es"`​ プロパティでは、月をスペイン語で書式設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { enNumber: 12.3 as String {format: "##.##", locale: "en"}, esNumber: 12.3 as String {format: "##.##", locale: "es"}, esDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "es"}, enDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "en"} } ``` 出力: ```json { "enNumber": "12.3", "esNumber": "12,3", "esDate": "31-dic.-20", "enDate": "31-Dec-20" } ``` ## [](#関連情報)関連情報 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-format-dates) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) # DataWeave を使用した型の強制 DataWeave では、​`as`​ 演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。 ## [](#型強制のための-dataweave-型の定義)型強制のための DataWeave 型の定義 この DataWeave 例では、​`String`​ 型を使用して型 ​`Currency`​ を定義し、Java DecimalFormat パターン (​`##`​) を使用して値を書式設定し、​`as`​ を使用して ​`price`​ 値を ​`Currency`​ 型に強制的に変換します。 入力 ```xml 22.30 20.31 ``` DataWeave ```dataweave %dw 2.0 output application/json type Currency = String { format: "\$#,###.00"} --- books: payload.items.*item map book: price: $.price as Currency ``` 出力 ```json { "books": [ { "book": { "price": "22.30" } }, { "book": { "price": "20.31" } } ] } ``` ## [](#型強制表)型強制表 次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
ソース 対象 プロパティ

Range​

Array​

Number​

Binary​

String​

Binary​

String​

Boolean​

Number​

DateTime​

unit

LocalDateTime

DateTime​

String​

DateTime​

format​ / ​locale

DateTime​

LocalDate​

LocalDateTime

LocalDate​

String​

LocalDate​

format​ / ​locale

DateTime​

LocalDateTime

String​

LocalDateTime

format​ / ​locale

DateTime​

LocalTime​

LocalDateTime

LocalTime​

Time​

LocalTime​

String​

LocalTime​

format​ / ​locale

DateTime​

Number​

unit

String​

Number​

format​ / ​locale

String​

Period​

String​

Regex​

DateTime​

String​

format​ / ​locale

LocalDateTime

String​

format​ / ​locale

LocalTime​

String​

format​ / ​locale

LocalDate​

String​

format​ / ​locale

Time​

String​

format​ / ​locale

Period​

String​

TimeZone​

String​

Number​

String​

format​ / ​locale

Boolean​

String​

Range

String

,​ を区切り文字として使用して、範囲のすべての値を含む文字列を返します。

Type​

String​

DateTime​

Time​

LocalDateTime

Time​

LocalTime​

Time​

String​

Time​

format

DateTime​

TimeZone​

Time​

TimeZone`​

String​

TimeZone​

### [](#型強制のプロパティ)型強制のプロパティ
プロパティ 説明

class

Object (オブジェクト) 型の Java クラスを受け入れます。

format

数値と日付を書式設定するための Java ​DecimalFormat​ パターンを受け入れます。

locale

Java ロケールを受け入れます。Java ​Locale​ オブジェクトは地域 (地理的、政治的、または文化的) を表します。

mode

日付値と時刻値の解析モード。有効な値: SMART​、​STRICT​、​LENIENT​

LENIENT​ と ​SMART​ では、無効な日付の自動修正方法が異なります。また、​STRICT​ は、日付に対してエラーを返します。​mode​ を使用した​例​を参照してください。

unit

値には ​milliseconds​ または ​seconds​ を使用できます。これは、Number (数値) から DateTime (日時) への変換で使用されます。

次の例は、​`mode`​ プロパティの使用方法を示しています。​`LENIENT`​ と ​`SMART`​ は、​`02/31/2020`​ のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。 `STRICT`​ は、無効な日付に対してエラーを返します。例では、​`yyyy`​ ではなく ​`uuuu`​ を使用して年を表しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { examples : { badDateWithLenient: '02/31/2020' as Date {mode: "LENIENT", format: 'MM/dd/uuuu'}, badDateWithSmart: '02/31/2020' as Date {mode: "SMART", format: 'MM/dd/uuuu'} } } ``` 出力: ```json %dw 2.0 output application/json --- { "examples": { "badDateWithLenient": "03/02/2020", "badDateWithSmart": "02/29/2020" } } ``` 無効な日付に対して STRICT を使用するとエラーが返されます。次の例では、​`badDateWithStrict: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'}`​ によってエラーが返されています。 ```txt "Cannot coerce String (02/31/2020) to Date, caused by: Text '02/31/2020' could not be parsed: Invalid date 'FEBRUARY 31' 9| badDateWithSmart: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` 次の例では、2 つの文字列を日付形式に変換し、結果を連結します。最初の文字列は日付を表し、2 番目の文字列は時刻を表します。この変換は、​`as`​ を使用して最初の文字列を ​`LocalDateTime`​ に強制変換してから、指定された形式の ​`String`​ に強制変換します。また、​`++`​ を使用して結果を連結します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var s1= 20201228 // (uuuuMMdd), var s2= 1608 //(HHMM) --- (s1 ++ s2) as LocalDateTime {format:"uuuuMMddHHmm"} as String {format:"MM-dd-uuuu HH:mm:ss"} ``` 出力: ```json "12-28-2020 16:08:00" ``` 次の例も、文字列を日付形式に変換します。まず、この変換は ​`as`​ を使用して文字列を ​`LocalDateTime`​ 型に強制変換してから、結果を指定された出力形式の ​`String`​ 型に強制変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- "8/30/2020 4:00:13 PM" as LocalDateTime {format: "M/dd/uuuu h:mm:ss a"} as String {format: "MM/dd/uuuu"} ``` 出力: ```json "08/30/2020" ``` 次の例では、文字列を 10 進数表現の数値に変換します。数値から文字列への変換時に ​`format`​ はゼロを追加するため、まず文字列値 ​`"22"`​ を ​`Number`​ に変換してから ​`String`​ に再度変換します。入力データが数値 ​`22`​ の場合、最初の ​`Number`​ 変換を実行する必要はありません。 後者の ​`Number`​ 変換では、出力を 10 進数表現の数値にします。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { data: "22" as Number as String {format: ".00"} as Number } ``` 出力: ```json { "data": 22.00 } ``` 次の例では、​`locale`​ プロパティを使用して数値と日付値を書式設定します。まず、数値を ​`String`​ 型に型強制し、Java DecimalFormat パターン (##) と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) も使用する指定された出力形式に変換します。​`locale: "en"`​ プロパティでは、​`.`​ を使用して出力の数値の 10 進数表現を書式設定し、​`locale: "es"`​ プロパティでは、​`,`​ を使用して出力を書式設定します。 次に、日付値を ​`Date`​ 型に型強制した後、出力形式 ​`dd-MMM-yy`​ と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) を使用する ​`String`​ 型に型強制します。​`locale: "en"`​ プロパティでは、月 ​`MMM`​ を英語で書式設定し、​`locale: "es"`​ プロパティでは、月をスペイン語で書式設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { enNumber: 12.3 as String {format: "##.##", locale: "en"}, esNumber: 12.3 as String {format: "##.##", locale: "es"}, esDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "es"}, enDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "en"} } ``` 出力: ```json { "enNumber": "12.3", "esNumber": "12,3", "esDate": "31-dic.-20", "enDate": "31-Dec-20" } ``` ## [](#関連情報)関連情報 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-format-dates) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) # DataWeave を使用した型の強制 DataWeave では、​`as`​ 演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。 ## [](#型強制のための-dataweave-型の定義)型強制のための DataWeave 型の定義 この DataWeave 例では、​`String`​ 型を使用して型 ​`Currency`​ を定義し、Java DecimalFormat パターン (​`##`​) を使用して値を書式設定し、​`as`​ を使用して ​`price`​ 値を ​`Currency`​ 型に強制的に変換します。 入力 ```xml 22.30 20.31 ``` DataWeave ```dataweave %dw 2.0 output application/json type Currency = String { format: "\$#,###.00"} --- books: payload.items.*item map book: price: $.price as Currency ``` 出力 ```json { "books": [ { "book": { "price": "22.30" } }, { "book": { "price": "20.31" } } ] } ``` ## [](#型強制表)型強制表 次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
ソース 対象 プロパティ

Range​

Array​

Number​

Binary​

String​

Binary​

String​

Boolean​

Number​

DateTime​

unit

LocalDateTime

DateTime​

String​

DateTime​

format​ / ​locale

DateTime​

LocalDate​

LocalDateTime

LocalDate​

String​

LocalDate​

format​ / ​locale

DateTime​

LocalDateTime

String​

LocalDateTime

format​ / ​locale

DateTime​

LocalTime​

LocalDateTime

LocalTime​

Time​

LocalTime​

String​

LocalTime​

format​ / ​locale

DateTime​

Number​

unit

String​

Number​

format​ / ​locale

String​

Period​

String​

Regex​

DateTime​

String​

format​ / ​locale

LocalDateTime

String​

format​ / ​locale

LocalTime​

String​

format​ / ​locale

LocalDate​

String​

format​ / ​locale

Time​

String​

format​ / ​locale

Period​

String​

TimeZone​

String​

Number​

String​

format​ / ​locale

Boolean​

String​

Range

String

,​ を区切り文字として使用して、範囲のすべての値を含む文字列を返します。

Type​

String​

DateTime​

Time​

LocalDateTime

Time​

LocalTime​

Time​

String​

Time​

format

DateTime​

TimeZone​

Time​

TimeZone​

String​

TimeZone​

### [](#型強制のプロパティ)型強制のプロパティ
プロパティ 説明

class

Object (オブジェクト) 型の Java クラスを受け入れます。

format

数値と日付を書式設定するための Java ​DecimalFormat​ パターンを受け入れます。

locale

Java ロケールを受け入れます。Java ​Locale​ オブジェクトは地域 (地理的、政治的、または文化的) を表します。

mode

日付値と時刻値の解析モード。有効な値: SMART​、​STRICT​、​LENIENT​

LENIENT​ と ​SMART​ では、無効な日付の自動修正方法が異なります。また、​STRICT​ は、日付に対してエラーを返します。​mode​ を使用した​例​を参照してください。

unit

値には ​milliseconds​ または ​seconds​ を使用できます。これは、Number (数値) から DateTime (日時) への変換で使用されます。

次の例は、​`mode`​ プロパティの使用方法を示しています。​`LENIENT`​ と ​`SMART`​ は、​`02/31/2020`​ のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。 `STRICT`​ は、無効な日付に対してエラーを返します。例では、​`yyyy`​ ではなく ​`uuuu`​ を使用して年を表しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { examples : { badDateWithLenient: '02/31/2020' as Date {mode: "LENIENT", format: 'MM/dd/uuuu'}, badDateWithSmart: '02/31/2020' as Date {mode: "SMART", format: 'MM/dd/uuuu'} } } ``` 出力: ```json %dw 2.0 output application/json --- { "examples": { "badDateWithLenient": "03/02/2020", "badDateWithSmart": "02/29/2020" } } ``` 無効な日付に対して STRICT を使用するとエラーが返されます。次の例では、​`badDateWithStrict: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'}`​ によってエラーが返されています。 ```txt "Cannot coerce String (02/31/2020) to Date, caused by: Text '02/31/2020' could not be parsed: Invalid date 'FEBRUARY 31' 9| badDateWithSmart: '02/31/2020' as Date {mode: "STRICT", format: 'MM/dd/uuuu'} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` 次の例では、2 つの文字列を日付形式に変換し、結果を連結します。最初の文字列は日付を表し、2 番目の文字列は時刻を表します。この変換は、​`as`​ を使用して最初の文字列を ​`LocalDateTime`​ に強制変換してから、指定された形式の ​`String`​ に強制変換します。また、​`++`​ を使用して結果を連結します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var s1= 20201228 // (uuuuMMdd), var s2= 1608 //(HHMM) --- (s1 ++ s2) as LocalDateTime {format:"uuuuMMddHHmm"} as String {format:"MM-dd-uuuu HH:mm:ss"} ``` 出力: ```json "12-28-2020 16:08:00" ``` 次の例も、文字列を日付形式に変換します。まず、この変換は ​`as`​ を使用して文字列を ​`LocalDateTime`​ 型に強制変換してから、結果を指定された出力形式の ​`String`​ 型に強制変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- "8/30/2020 4:00:13 PM" as LocalDateTime {format: "M/dd/uuuu h:mm:ss a"} as String {format: "MM/dd/uuuu"} ``` 出力: ```json "08/30/2020" ``` 次の例では、数値を 10 進数表現の文字列に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { data: 22 as String {format: ".00"} } ``` 出力: ```json { "data": "22.00" } ```
DataWeave 2.5 以降、すべての形式で一貫性を維持するため、数値を直接書き込むと、書式設定が保持されず、末尾のゼロが削除されます。形式メタデータは、提供された文字列を正しい数値表現に解析するためにのみ使用されます。この動作を維持するには、​stripTrailingZeroes​ プロパティを使用して再度有効にします。DataWeave システムプロパティを参照してください。
次の例では、​`locale`​ プロパティを使用して数値と日付値を書式設定します。まず、数値を ​`String`​ 型に型強制し、Java DecimalFormat パターン (##) と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) も使用する指定された出力形式に変換します。​`locale: "en"`​ プロパティでは、​`.`​ を使用して出力の数値の 10 進数表現を書式設定し、​`locale: "es"`​ プロパティでは、​`,`​ を使用して出力を書式設定します。 次に、日付値を ​`Date`​ 型に型強制した後、出力形式 ​`dd-MMM-yy`​ と ​`locale`​ プロパティ ​`en`​ (英語) または ​`es`​ (スペイン語) を使用する ​`String`​ 型に型強制します。​`locale: "en"`​ プロパティでは、月 ​`MMM`​ を英語で書式設定し、​`locale: "es"`​ プロパティでは、月をスペイン語で書式設定します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { enNumber: 12.3 as String {format: "##.##", locale: "en"}, esNumber: 12.3 as String {format: "##.##", locale: "es"}, esDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "es"}, enDate: "2020-12-31" as Date as String {format: "dd-MMM-yy", locale: "en"} } ``` 出力: ```json { "enNumber": "12.3", "esNumber": "12,3", "esDate": "31-dic.-20", "enDate": "31-Dec-20" } ``` ## [](#関連情報)関連情報 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-format-dates) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) # DataWeave を使用した日付の解析 これらの DataWeave の例では、DataWeave ヘッダーで関数 (​`fun`​) を定義して、さまざまな日付形式内の日付区切り文字 (​`/`​、​`.`​、​`-`​) を正規化して、すべてで同じ区切り文字 (​`-`​) が使用されるようにします。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、次の関数を使用します。 - すべての日付を 1 つのパターンに一致させる ​`replace`​。 - `date`​ 要素を調べる ​`mapObject`​。スクリプトで正規化関数を各 ​`date`​ に適用します。 - 値のデータ型を特定の日付形式の Date (日付) 型に変更する ​`as`​ (2 番目の DataWeave スクリプト)。 ## [](#例-string-文字列-型として日付を返す)例: String (文字列) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- dates: (payload.dates mapObject { normalized_as_string: normalize($) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 26-JUL-16 27-JUL-16 28-JUL-16 ``` ## [](#例-date-日付-型として日付を返す)例: Date (日付) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- // Outputs date values as Date types in the specified format dates: (payload.dates mapObject { normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"}) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 2016-07-26 2016-07-27 2016-07-28 ``` ## [](#関連する例)関連する例 - [日付の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-add-and-subtract-time) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-reference-multiple-inputs) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # DataWeave を使用した日付の解析 これらの DataWeave の例では、DataWeave ヘッダーで関数 (​`fun`​) を定義して、さまざまな日付形式内の日付区切り文字 (​`/`​、​`.`​、​`-`​) を正規化して、すべてで同じ区切り文字 (​`-`​) が使用されるようにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - すべての日付を 1 つのパターンに一致させる ​`replace`​。 - `date`​ 要素を調べる ​`mapObject`​。スクリプトで正規化関数を各 ​`date`​ に適用します。 - 値のデータ型を特定の日付形式の Date (日付) 型に変更する ​`as`​ (2 番目の DataWeave スクリプト)。 ## [](#例-string-文字列-型として日付を返す)例: String (文字列) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- dates: (payload.dates mapObject { normalized_as_string: normalize($) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 26-JUL-16 27-JUL-16 28-JUL-16 ``` ## [](#例-date-日付-型として日付を返す)例: Date (日付) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- // Outputs date values as Date types in the specified format dates: (payload.dates mapObject { normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"}) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 2016-07-26 2016-07-27 2016-07-28 ``` ## [](#関連する例)関連する例 - [日付の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-add-and-subtract-time) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-reference-multiple-inputs) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # DataWeave を使用した日付の解析 これらの DataWeave の例では、DataWeave ヘッダーで関数 (​`fun`​) を定義して、さまざまな日付形式内の日付区切り文字 (​`/`​、​`.`​、​`-`​) を正規化して、すべてで同じ区切り文字 (​`-`​) が使用されるようにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - すべての日付を 1 つのパターンに一致させる ​`replace`​。 - `date`​ 要素を調べる ​`mapObject`​。スクリプトで正規化関数を各 ​`date`​ に適用します。 - 値のデータ型を特定の日付形式の Date (日付) 型に変更する ​`as`​ (2 番目の DataWeave スクリプト)。 ## [](#例-string-文字列-型として日付を返す)例: String (文字列) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- dates: (payload.dates mapObject { normalized_as_string: normalize($) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 26-JUL-16 27-JUL-16 28-JUL-16 ``` ## [](#例-date-日付-型として日付を返す)例: Date (日付) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- // Outputs date values as Date types in the specified format dates: (payload.dates mapObject { normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"}) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 2016-07-26 2016-07-27 2016-07-28 ``` ## [](#関連する例)関連する例 - [日付の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-add-and-subtract-time) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-reference-multiple-inputs) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # DataWeave を使用した日付の解析 これらの DataWeave の例では、DataWeave ヘッダーで関数 (​`fun`​) を定義して、さまざまな日付形式内の日付区切り文字 (​`/`​、​`.`​、​`-`​) を正規化して、すべてで同じ区切り文字 (​`-`​) が使用されるようにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - すべての日付を 1 つのパターンに一致させる ​`replace`​。 - `date`​ 要素を調べる ​`mapObject`​。スクリプトで正規化関数を各 ​`date`​ に適用します。 - 値のデータ型を特定の日付形式の Date (日付) 型に変更する ​`as`​ (2 番目の DataWeave スクリプト)。 ## [](#例-string-文字列-型として日付を返す)例: String (文字列) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- dates: (payload.dates mapObject { normalized_as_string: normalize($) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 26-JUL-16 27-JUL-16 28-JUL-16 ``` ## [](#例-date-日付-型として日付を返す)例: Date (日付) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- // Outputs date values as Date types in the specified format dates: (payload.dates mapObject { normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"}) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 2016-07-26 2016-07-27 2016-07-28 ``` ## [](#関連する例)関連する例 - [日付の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-add-and-subtract-time) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-reference-multiple-inputs) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # DataWeave を使用した日付の解析 これらの DataWeave の例では、DataWeave ヘッダーで関数 (​`fun`​) を定義して、さまざまな日付形式内の日付区切り文字 (​`/`​、​`.`​、​`-`​) を正規化して、すべてで同じ区切り文字 (​`-`​) が使用されるようにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - すべての日付を 1 つのパターンに一致させる ​`replace`​。 - `date`​ 要素を調べる ​`mapObject`​。スクリプトで正規化関数を各 ​`date`​ に適用します。 - 値のデータ型を特定の日付形式の Date (日付) 型に変更する ​`as`​ (2 番目の DataWeave スクリプト)。 ## [](#例-string-文字列-型として日付を返す)例: String (文字列) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- dates: (payload.dates mapObject { normalized_as_string: normalize($) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 26-JUL-16 27-JUL-16 28-JUL-16 ``` ## [](#例-date-日付-型として日付を返す)例: Date (日付) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- // Outputs date values as Date types in the specified format dates: (payload.dates mapObject { normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"}) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 2016-07-26 2016-07-27 2016-07-28 ``` ## [](#関連する例)関連する例 - [日付の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-add-and-subtract-time) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-reference-multiple-inputs) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # DataWeave を使用した日付の解析 これらの DataWeave の例では、DataWeave ヘッダーで関数 (​`fun`​) を定義して、さまざまな日付形式内の日付区切り文字 (​`/`​、​`.`​、​`-`​) を正規化して、すべてで同じ区切り文字 (​`-`​) が使用されるようにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - すべての日付を 1 つのパターンに一致させる ​`replace`​。 - `date`​ 要素を調べる ​`mapObject`​。スクリプトで正規化関数を各 ​`date`​ に適用します。 - 値のデータ型を特定の日付形式の Date (日付) 型に変更する ​`as`​ (2 番目の DataWeave スクリプト)。 ## [](#例-string-文字列-型として日付を返す)例: String (文字列) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- dates: (payload.dates mapObject { normalized_as_string: normalize($) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 26-JUL-16 27-JUL-16 28-JUL-16 ``` ## [](#例-date-日付-型として日付を返す)例: Date (日付) 型として日付を返す DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml fun normalize(date) = (date) replace "/" with "-" replace "." with "-" --- // Outputs date values as Date types in the specified format dates: (payload.dates mapObject { normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"}) }) ``` 入力 XML ペイロード: ```xml 26-JUL-16 27/JUL/16 28.JUL.16 ``` 出力 XML: ```xml 2016-07-26 2016-07-27 2016-07-28 ``` ## [](#関連する例)関連する例 - [日付の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-add-and-subtract-time) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-reference-multiple-inputs) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # DataWeave 変数 DataWeave は変数が関数のように動作する関数型プログラミング言語です。DataWeave では、変数と関数パラメーターに対して先行評価を使用します。さらに、DataWeave 変数は不変です。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 変数には値が割り当てられます。値は定数 (​`var msg = "hello"`​ など) またはラムダ式 (​`() → "hello"`​ など) のいずれかです。

DataWeave 1.0 の変数​については、Mule 3 の DataWeave 1.2 のドキュメントを参照してください。

## [](#dataweave-の変数割り当て)DataWeave の変数割り当て DataWeave バージョン 2 の変数割り当てのいくつかの例を以下に示します。 例: DataWeave スクリプトでの変数割り当て ```dataweave %dw 2.0 output application/json var msg = "Hello" var msg2 = (x = "ignore") -> "hello" var toUpper = (aString) -> upper(aString) var combined = (function, msg="universe") -> function(msg ++ " WORLD") --- [ msg: msg, msg2: msg2(), toUpper: toUpper(msg), combined: combined(toUpper, "hello"), combined2: combined(((x) -> lower(x) ++ " Today"), msg) ] ``` 前のスクリプトでは次の出力が生成されます。 例: 出力 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "HELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world Today" } ] ``` この例の内容を次に示します。 - `msg`​ var は定数に割り当てられています。 - `msg2`​ は、定数にマップする式に割り当てられているため、​`msg2()`​ は ​`()`​ のない ​`msg`​ と同様に動作します。 - `toUpper`​ 変数は入力パラメーターを DataWeave ​`upper`​ 関数にマップします。そのため、これは、別の言語の従来の関数のように ​`toUpper(aString)`​ として使用されます。 - `combined`​ 変数は関数を入力パラメーターとして受け入れて、その関数名を 2 番目の ​`msg`​ 引数に適用します。デフォルト値 ​`universe`​ が指定されているため、2 番目の ​`msg`​ 引数は省略可能です。 式 ​`combined(toUpper, " world")`​ の結果では、ヘッダーの前半で定義された ​`toUpper`​ 関数が ​`msg`​ パラメーター値 ​`world`​ に割り当てられます。指定された 2 番目の引数 ​`world`​ が ​`msg="universe"`​ デフォルト値を上書きするため、結果は ​`HELLO WORLD`​ になります。2 番目の引数を省略している式 ​`combined(toUpper)`​ は、デフォルトの ​`msg`​ 値を使用して ​`"combined": "UNIVERSE WORLD"`​ を返します。 `combined2: combined(x) → lower(x) ++ " Today", msg)`​ は、別のコンテキストで再利用できるラムダ式を定義します。例では、​`combined2`​ キーは、関数のコール時に式を「インプレース (その場)」で定義します。 このような「インプレース」式の種別は、JavaScript などの言語ではクロージャーと呼ばれます。 DataWeave にはシンタックスシュガーが含まれており、関数として変数に割り当てられるラムダ式に容易にアクセスできます。これを行うには、​`var`​ ディレクティブを ​`fun`​ ディレクティブに置き換えて、ラムダ式の矢印 ​`→`​ を等号 (​`=`​) に置き換えます。また、ラムダ式の引数を関数名の横に移動して、構文を、他の手続き型プログラミング言語の関数宣言のようにします。これにより、変数を関数のように使用できます。前述の例に相当するものは、次のように記述できます。 ```dataweave %dw 2.0 output application/json var msg = "Hello" var toUpper = (aString) -> upper(aString) var toLower = (aString) -> lower(aString) fun msg2(optParm = "ignore") = "hello" fun toTitle(text: String) = toLower(text[0]) ++ toUpper(text[1 to -1]) fun combined(function, msg="universe") = function(msg ++ " world") --- [ msg: msg, msg2: msg2(), toUpper: toTitle(msg), combined: combined(toUpper, msg), combined2: combined((x) -> lower(x) ++ " today", msg) ] ``` この例は同じ結果を生成します。 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "hELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world today" } ] ``` DataWeave における重要な相違点は、関数が変数であることと、各関数が、元の ​`var`​ 構文を単に構文的に名前変更したものであることです。これにより、関数名またはラムダ式を引数として他の関数に渡すことができます。​`fun`​ 構文を使用すると、DataWeave の強力な関数型プログラミングの側面にアクセスできるほか、より簡単な式を、使い慣れた関数コールとして記述することもできます。 また、DataWeave 変数 (および関数) では、すべての省略可能な引数が引数リストの最後にある限り、デフォルト値を指定することで任意の数の省略可能な引数を指定できます。 ## [](#例-配列変数の宣言およびその要素の変換)例: 配列変数の宣言およびその要素の変換 変数は DataWeave では不変ですが、配列変数を反復処理し、その要素に変換を適用した後、変換した要素を新しい変数に割り当てることができます。次の例では、2 つの配列変数を宣言し、反復処理してその要素を変換した後、変換された要素を含む 2 つの新しい配列が含まれるオブジェクトを宣言します。 DataWeave ソース: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json var numberArray = [1,2,3,4,5,6] var stringArray = ["max", "astro", "einstein"] --- { "numberArrayUpdated" : numberArray map ((value, index) -> value * value), "stringArrayUpdated" : stringArray map ((value, index) -> index ++ " - " ++ capitalize(value)) } ``` 出力: ```json { "numberArrayUpdated": [ 1, 4, 9, 16, 25, 36 ], "stringArrayUpdated": [ "0 - Max", "1 - Astro", "2 - Einstein" ] } ``` ## [](#変数の命名規則)変数の命名規則 有効な識別子である変数名を宣言できます。詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction#valid-identifiers)​を参照してください。 ## [](#変数のスコープ)変数のスコープ DataWeave スクリプトでは、グローバル変数とローカル変数の両方を初期化して使用できます。 - グローバル変数は、DataWeave スクリプトのヘッダーで初期化され、DataWeave スクリプトの本文の任意の場所から名前で参照できます。 DataWeave スクリプトのヘッダーは、変数を初期化する ​`var`​ ディレクティブを受け入れます (例: `var language='Español'`​)。複数のグローバル変数をヘッダーの別々の行で宣言できます。 - ローカル変数は、DataWeave スクリプトの本文で初期化され、その変数を初期化した式のスコープ内からのみ、名前で参照できます。 ローカル変数を初期化する構文は、次のようになります。 ```dataweave do { [type = ]* [var = ]* [fun (*) = ]* [ns ]* --- } ``` DataWeave 変数を再割り当てすることはできません。また、Mule メッセージの一部である変数 (対象変数など) とも異なります。DataWeave 変数は、それを初期化したスクリプトのスコープを超えて存続しません。 ## [](#example_global_variable)例: グローバル DataWeave 変数 この例では、定数値 ​`Español`​ を使用して ​`language`​ 変数を初期化し、その定数値を返す ​`do`​ 操作を定義します。DataWeave スクリプトの本文では、変数 ​`myVar`​ を使用して ​`do`​ 操作をコールします。それによって XML 出力の ​``​ 要素に値 ​`Español`​ が入力されます。 変換 ```dataweave %dw 2.0 output application/xml var myVar = do { var language = "Español" --- language } --- { document: { language: myVar, text: "Hola mundo" } } ``` 出力 ```xml Español Hola mundo ``` ## [](#example_local_variable)例: ローカル DataWeave 変数 ローカル変数を初期化するには、リテラル式、変数参照式、または関数式のいずれかを使用できます。これらの式では、そのスコープ内の他のローカル変数や、入力変数またはグローバル変数を参照できます。 ベストプラクティスとして、​`do`​ スコープ内でローカル変数を宣言することをお勧めします (​[「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flow-control#control_flow_do)​参照)。​`using`​ キーワードを使用してスコープを宣言する代替方法は非推奨になり、互換性を提供するためにのみ使用できます。 ローカル変数は、それを初期化した式のスコープ内からのみ名前で参照できます。宣言は任意のリテラル式の先頭に追加できます。リテラルにより変数のスコープが区切られるため、そのスコープの外部にある変数を参照することはできません。 次の例は、ローカル変数の初期化を示しています。 例: 簡単な値へのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定します。そして、​`do`​ を DataWeave スクリプトの本文でコールします。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- 3 + myVar } ``` 結果は ​`5`​ になります。 例: 配列リテラルへのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定し、それを使用して配列の 2 番目の要素の値を ​`2`​ に設定します。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- [1, myVar, 3] } ``` 結果は ​`[ 1, 2, 3]`​ になります。 例: オブジェクトリテラルへのスコープ設定 次の例では、すべての変数への参照が有効です。 ​`fn`​ と ​`ln`​ は ​`do`​ スコープ内で定義されてコールされます。グローバル変数 ​`myVar`​ にもそのスコープからアクセスできます。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo } ``` ```xml 1234 Annie Point ``` 例: スコープの外部の​**無効な参照** 次の例では、​`do`​ のスコープの外部から ​`fromDoScope`​ が参照されているため、エラーが生成されます。 その結果、連結操作 (​`++`​) によって名前-値のペアをコレクションに追加できません。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" var fromDoScope = "Platform" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo ++ { "outsideDoScope" : fromDoScope } } ``` この無効な例では、​`Unable to resolve reference of fromDoScope.`​ のエラーが返されます。 例: 関数内部の参照 次の例では、文字列 ​`HELLO`​ をヘッダーで定義された関数 ​`test`​ に渡します。​`do`​ スコープは文字列を受け取って小文字に変換し、その文字列を ​`suffix`​ 変数と連結します。この変数もスコープのヘッダー内で定義されています。 ```dataweave %dw 2.0 fun test(param1: String) = do { var suffix = "123" fun innerTest(str: String) = lower(str) --- innerTest(param1 ++ suffix) } output application/json --- test("HELLO") ``` 結果は ​`"hello123"`​ になります。 ## [](#ラムダ式として割り当てられた変数)ラムダ式として割り当てられた変数 変数にラムダ式を割り当てると、変数は関数のように動作します。関数と同様に、変数割り当てのラムダ式には、右側の式で使用できるパラメーターを含めることができます (例: `(string) → upper(string)`​。これは、任意の文字列を大文字に変換します)。 他の変数を引数として別の変数のラムダ式に渡すこともできます。次の例は、​`toUpper`​ 変数のラムダ式を名前によって ​`addSuffix`​ 変数のラムダ式に渡す方法を示しています。 ```dataweave %dw 2.0 output application/json var toUpper = (aString) -> upper(aString) var addSuffix = (msg, aFunction, suffix) -> aFunction(msg ++ suffix) --- addSuffix("hello", toUpper, " world") //result is "HELLO WORLD" ``` ## [](#lazy-アノテーション)@Lazy() アノテーション Studio で DataWeave スクリプトを記述しているときに、オートコンプリートの候補に内部アノテーション ​`@Lazy()`​ が表示されることがあります。このアノテーションは一般的な使用を目的としたものではなく、スクリプトのパフォーマンスが向上することはありません。 # DataWeave 変数 DataWeave は変数が関数のように動作する関数型プログラミング言語です。DataWeave では、変数と関数パラメーターに対して先行評価を使用します。さらに、DataWeave 変数は不変です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 変数には値が割り当てられます。値は定数 (​`var msg = "hello"`​ など) またはラムダ式 (​`() → "hello"`​ など) のいずれかです。

DataWeave 1.0 の変数​については、Mule 3 の DataWeave 1.2 のドキュメントを参照してください。

## [](#dataweave-の変数割り当て)DataWeave の変数割り当て DataWeave 2.0 の変数割り当てのいくつかの例を以下に示します。 例: DataWeave スクリプトでの変数割り当て ```dataweave %dw 2.0 output application/json var msg = "Hello" var msg2 = (x = "ignore") -> "hello" var toUpper = (aString) -> upper(aString) var combined = (function, msg="universe") -> function(msg ++ " WORLD") --- [ msg: msg, msg2: msg2(), toUpper: toUpper(msg), combined: combined(toUpper, "hello"), combined2: combined(((x) -> lower(x) ++ " Today"), msg) ] ``` 前のスクリプトでは次の出力が生成されます。 例: 出力 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "HELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world Today" } ] ``` この例の内容を次に示します。 - `msg`​ var は定数に割り当てられています。 - `msg2`​ は、定数にマップする式に割り当てられているため、​`msg2()`​ は ​`()`​ のない ​`msg`​ と同様に動作します。 - `toUpper`​ 変数は入力パラメーターを DataWeave ​`upper`​ 関数にマップします。そのため、これは、別の言語の従来の関数のように ​`toUpper(aString)`​ として使用されます。 - `combined`​ 変数は関数を入力パラメーターとして受け入れて、その関数名を 2 番目の ​`msg`​ 引数に適用します。デフォルト値 ​`universe`​ が指定されているため、2 番目の ​`msg`​ 引数は省略可能です。 式 ​`combined(toUpper, " world")`​ の結果では、ヘッダーの前半で定義された ​`toUpper`​ 関数が ​`msg`​ パラメーター値 ​`world`​ に割り当てられます。指定された 2 番目の引数 ​`world`​ が ​`msg="universe"`​ デフォルト値を上書きするため、結果は ​`HELLO WORLD`​ になります。2 番目の引数を省略している式 ​`combined(toUpper)`​ は、デフォルトの ​`msg`​ 値を使用して ​`"combined": "UNIVERSE WORLD"`​ を返します。 `combined2: combined(x) → lower(x) ++ " Today", msg)`​ は、別のコンテキストで再利用できるラムダ式を定義します。例では、​`combined2`​ キーは、関数のコール時に式を「インプレース (その場)」で定義します。 このような「インプレース」式の種別は、JavaScript などの言語ではクロージャーと呼ばれます。 DataWeave にはシンタックスシュガーが含まれており、関数として変数に割り当てられるラムダ式に容易にアクセスできます。これを行うには、​`var`​ ディレクティブを ​`fun`​ ディレクティブに置き換えて、ラムダ式の矢印 ​`→`​ を等号 (​`=`​) に置き換えます。また、ラムダ式の引数を関数名の横に移動して、構文を、他の手続き型プログラミング言語の関数宣言のようにします。これにより、変数を関数のように使用できます。前述の例に相当するものは、次のように記述できます。 ```dataweave %dw 2.0 output application/json var msg = "Hello" var toUpper = (aString) -> upper(aString) var toLower = (aString) -> lower(aString) fun msg2(optParm = "ignore") = "hello" fun toTitle(text: String) = toLower(text[0]) ++ toUpper(text[1 to -1]) fun combined(function, msg="universe") = function(msg ++ " world") --- [ msg: msg, msg2: msg2(), toUpper: toTitle(msg), combined: combined(toUpper, msg), combined2: combined((x) -> lower(x) ++ " today", msg) ] ``` この例は同じ結果を生成します。 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "hELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world today" } ] ``` DataWeave における重要な相違点は、関数が変数であることと、各関数が、元の ​`var`​ 構文を単に構文的に名前変更したものであることです。これにより、関数名またはラムダ式を引数として他の関数に渡すことができます。​`fun`​ 構文を使用すると、DataWeave の強力な関数型プログラミングの側面にアクセスできるほか、より簡単な式を、使い慣れた関数コールとして記述することもできます。 また、DataWeave 変数 (および関数) では、すべての省略可能な引数が引数リストの最後にある限り、デフォルト値を指定することで任意の数の省略可能な引数を指定できます。 ## [](#例-配列変数の宣言およびその要素の変換)例: 配列変数の宣言およびその要素の変換 変数は DataWeave では不変ですが、配列変数を反復処理し、その要素に変換を適用した後、変換した要素を新しい変数に割り当てることができます。次の例では、2 つの配列変数を宣言し、反復処理してその要素を変換した後、変換された要素を含む 2 つの新しい配列が含まれるオブジェクトを宣言します。 DataWeave ソース: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json var numberArray = [1,2,3,4,5,6] var stringArray = ["max", "astro", "einstein"] --- { "numberArrayUpdated" : numberArray map ((value, index) -> value * value), "stringArrayUpdated" : stringArray map ((value, index) -> index ++ " - " ++ capitalize(value)) } ``` 出力: ```json { "numberArrayUpdated": [ 1, 4, 9, 16, 25, 36 ], "stringArrayUpdated": [ "0 - Max", "1 - Astro", "2 - Einstein" ] } ``` ## [](#変数の命名規則)変数の命名規則 有効な識別子である変数名を宣言できます。詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction#valid-identifiers)​を参照してください。 ## [](#変数のスコープ)変数のスコープ DataWeave スクリプトでは、グローバル変数とローカル変数の両方を初期化して使用できます。 - グローバル変数は、DataWeave スクリプトのヘッダーで初期化され、DataWeave スクリプトの本文の任意の場所から名前で参照できます。 DataWeave スクリプトのヘッダーは、変数を初期化する ​`var`​ ディレクティブを受け入れます (例: `var language='Español'`​)。複数のグローバル変数をヘッダーの別々の行で宣言できます。 - ローカル変数は、DataWeave スクリプトの本文で初期化され、その変数を初期化した式のスコープ内からのみ、名前で参照できます。 ローカル変数を初期化する構文は、次のようになります。 ```dataweave do { [type = ]* [var = ]* [fun (*) = ]* [ns ]* --- } ``` DataWeave 変数を再割り当てすることはできません。また、Mule メッセージの一部である変数 (対象変数など) とも異なります。DataWeave 変数は、それを初期化したスクリプトのスコープを超えて存続しません。 ## [](#example_global_variable)例: グローバル DataWeave 変数 この例では、定数値 ​`Español`​ を使用して ​`language`​ 変数を初期化し、その定数値を返す ​`do`​ 操作を定義します。DataWeave スクリプトの本文では、変数 ​`myVar`​ を使用して ​`do`​ 操作をコールします。それによって XML 出力の ​``​ 要素に値 ​`Español`​ が入力されます。 変換 ```dataweave %dw 2.0 output application/xml var myVar = do { var language = "Español" --- language } --- { document: { language: myVar, text: "Hola mundo" } } ``` 出力 ```xml Español Hola mundo ``` ## [](#example_local_variable)例: ローカル DataWeave 変数 ローカル変数を初期化するには、リテラル式、変数参照式、または関数式のいずれかを使用できます。これらの式では、そのスコープ内の他のローカル変数や、入力変数またはグローバル変数を参照できます。 ベストプラクティスとして、​`do`​ スコープ内でローカル変数を宣言することをお勧めします (​[「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flow-control#control_flow_do)​参照)。​`using`​ キーワードを使用してスコープを宣言する代替方法は非推奨になり、互換性を提供するためにのみ使用できます。 ローカル変数は、それを初期化した式のスコープ内からのみ名前で参照できます。宣言は任意のリテラル式の先頭に追加できます。リテラルにより変数のスコープが区切られるため、そのスコープの外部にある変数を参照することはできません。 次の例は、ローカル変数の初期化を示しています。 例: 簡単な値へのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定します。そして、​`do`​ を DataWeave スクリプトの本文でコールします。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- 3 + myVar } ``` 結果は ​`5`​ になります。 例: 配列リテラルへのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定し、それを使用して配列の 2 番目の要素の値を ​`2`​ に設定します。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- [1, myVar, 3] } ``` 結果は ​`[ 1, 2, 3]`​ になります。 例: オブジェクトリテラルへのスコープ設定 次の例では、すべての変数への参照が有効です。 ​`fn`​ と ​`ln`​ は ​`do`​ スコープ内で定義されてコールされます。グローバル変数 ​`myVar`​ にもそのスコープからアクセスできます。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo } ``` ```xml 1234 Annie Point ``` 例: スコープの外部の​**無効な参照** 次の例では、​`do`​ のスコープの外部から ​`fromDoScope`​ が参照されているため、エラーが生成されます。 その結果、連結操作 (​`++`​) によって名前-値のペアをコレクションに追加できません。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" var fromDoScope = "Platform" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo ++ { "outsideDoScope" : fromDoScope } } ``` この無効な例では、​`Unable to resolve reference of fromDoScope.`​ のエラーが返されます。 例: 関数内部の参照 次の例では、文字列 ​`HELLO`​ をヘッダーで定義された関数 ​`test`​ に渡します。​`do`​ スコープは文字列を受け取って小文字に変換し、その文字列を ​`suffix`​ 変数と連結します。この変数もスコープのヘッダー内で定義されています。 ```dataweave %dw 2.0 fun test(param1: String) = do { var suffix = "123" fun innerTest(str: String) = lower(str) --- innerTest(param1 ++ suffix) } output application/json --- test("HELLO") ``` 結果は ​`"hello123"`​ になります。 ## [](#ラムダ式として割り当てられた変数)ラムダ式として割り当てられた変数 変数にラムダ式を割り当てると、変数は関数のように動作します。関数と同様に、変数割り当てのラムダ式には、右側の式で使用できるパラメーターを含めることができます (例: `(string) → upper(string)`​。これは、任意の文字列を大文字に変換します)。 他の変数を引数として別の変数のラムダ式に渡すこともできます。次の例は、​`toUpper`​ 変数のラムダ式を名前によって ​`addSuffix`​ 変数のラムダ式に渡す方法を示しています。 ```dataweave %dw 2.0 output application/json var toUpper = (aString) -> upper(aString) var addSuffix = (msg, aFunction, suffix) -> aFunction(msg ++ suffix) --- addSuffix("hello", toUpper, " world") //result is "HELLO WORLD" ``` ## [](#lazy-アノテーション)@Lazy() アノテーション Studio で DataWeave スクリプトを記述しているときに、オートコンプリートの候補に内部アノテーション ​`@Lazy()`​ が表示されることがあります。このアノテーションは一般的な使用を目的としたものではなく、スクリプトのパフォーマンスが向上することはありません。 # DataWeave 変数 DataWeave は変数が関数のように動作する関数型プログラミング言語です。DataWeave では、変数と関数パラメーターに対して先行評価を使用します。さらに、DataWeave 変数は不変です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 変数には値が割り当てられます。値は定数 (​`var msg = "hello"`​ など) またはラムダ式 (​`() → "hello"`​ など) のいずれかです。

DataWeave 1.0 の変数​については、Mule 3 の DataWeave 1.2 のドキュメントを参照してください。

## [](#dataweave-の変数割り当て)DataWeave の変数割り当て DataWeave 2.0 の変数割り当てのいくつかの例を以下に示します。 例: DataWeave スクリプトでの変数割り当て ```dataweave %dw 2.0 output application/json var msg = "Hello" var msg2 = (x = "ignore") -> "hello" var toUpper = (aString) -> upper(aString) var combined = (function, msg="universe") -> function(msg ++ " WORLD") --- [ msg: msg, msg2: msg2(), toUpper: toUpper(msg), combined: combined(toUpper, "hello"), combined2: combined(((x) -> lower(x) ++ " Today"), msg) ] ``` 前のスクリプトでは次の出力が生成されます。 例: 出力 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "HELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world Today" } ] ``` この例の内容を次に示します。 - `msg`​ var は定数に割り当てられています。 - `msg2`​ は、定数にマップする式に割り当てられているため、​`msg2()`​ は ​`()`​ のない ​`msg`​ と同様に動作します。 - `toUpper`​ 変数は入力パラメーターを DataWeave ​`upper`​ 関数にマップします。そのため、これは、別の言語の従来の関数のように ​`toUpper(aString)`​ として使用されます。 - `combined`​ 変数は関数を入力パラメーターとして受け入れて、その関数名を 2 番目の ​`msg`​ 引数に適用します。デフォルト値 ​`universe`​ が指定されているため、2 番目の ​`msg`​ 引数は省略可能です。 式 ​`combined(toUpper, " world")`​ の結果では、ヘッダーの前半で定義された ​`toUpper`​ 関数が ​`msg`​ パラメーター値 ​`world`​ に割り当てられます。指定された 2 番目の引数 ​`world`​ が ​`msg="universe"`​ デフォルト値を上書きするため、結果は ​`HELLO WORLD`​ になります。2 番目の引数を省略している式 ​`combined(toUpper)`​ は、デフォルトの ​`msg`​ 値を使用して ​`"combined": "UNIVERSE WORLD"`​ を返します。 `combined2: combined(x) → lower(x) ++ " Today", msg)`​ は、別のコンテキストで再利用できるラムダ式を定義します。例では、​`combined2`​ キーは、関数のコール時に式を「インプレース (その場)」で定義します。 このような「インプレース」式の種別は、JavaScript などの言語ではクロージャーと呼ばれます。 DataWeave にはシンタックスシュガーが含まれており、関数として変数に割り当てられるラムダ式に容易にアクセスできます。これを行うには、​`var`​ ディレクティブを ​`fun`​ ディレクティブに置き換えて、ラムダ式の矢印 ​`→`​ を等号 (​`=`​) に置き換えます。また、ラムダ式の引数を関数名の横に移動して、構文を、他の手続き型プログラミング言語の関数宣言のようにします。これにより、変数を関数のように使用できます。前述の例に相当するものは、次のように記述できます。 ```dataweave %dw 2.0 output application/json var msg = "Hello" var toUpper = (aString) -> upper(aString) var toLower = (aString) -> lower(aString) fun msg2(optParm = "ignore") = "hello" fun toTitle(text: String) = toLower(text[0]) ++ toUpper(text[1 to -1]) fun combined(function, msg="universe") = function(msg ++ " world") --- [ msg: msg, msg2: msg2(), toUpper: toTitle(msg), combined: combined(toUpper, msg), combined2: combined((x) -> lower(x) ++ " today", msg) ] ``` この例は同じ結果を生成します。 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "hELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world today" } ] ``` DataWeave における重要な相違点は、関数が変数であることと、各関数が、元の ​`var`​ 構文を単に構文的に名前変更したものであることです。これにより、関数名またはラムダ式を引数として他の関数に渡すことができます。​`fun`​ 構文を使用すると、DataWeave の強力な関数型プログラミングの側面にアクセスできるほか、より簡単な式を、使い慣れた関数コールとして記述することもできます。 また、DataWeave 変数 (および関数) では、すべての省略可能な引数が引数リストの最後にある限り、デフォルト値を指定することで任意の数の省略可能な引数を指定できます。 ## [](#例-配列変数の宣言およびその要素の変換)例: 配列変数の宣言およびその要素の変換 変数は DataWeave では不変ですが、配列変数を反復処理し、その要素に変換を適用した後、変換した要素を新しい変数に割り当てることができます。次の例では、2 つの配列変数を宣言し、反復処理してその要素を変換した後、変換された要素を含む 2 つの新しい配列が含まれるオブジェクトを宣言します。 DataWeave ソース: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json var numberArray = [1,2,3,4,5,6] var stringArray = ["max", "astro", "einstein"] --- { "numberArrayUpdated" : numberArray map ((value, index) -> value * value), "stringArrayUpdated" : stringArray map ((value, index) -> index ++ " - " ++ capitalize(value)) } ``` 出力: ```json { "numberArrayUpdated": [ 1, 4, 9, 16, 25, 36 ], "stringArrayUpdated": [ "0 - Max", "1 - Astro", "2 - Einstein" ] } ``` ## [](#変数の命名規則)変数の命名規則 有効な識別子である変数名を宣言できます。詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction#valid-identifiers)​を参照してください。 ## [](#変数のスコープ)変数のスコープ DataWeave スクリプトでは、グローバル変数とローカル変数の両方を初期化して使用できます。 - グローバル変数は、DataWeave スクリプトのヘッダーで初期化され、DataWeave スクリプトの本文の任意の場所から名前で参照できます。 DataWeave スクリプトのヘッダーは、変数を初期化する ​`var`​ ディレクティブを受け入れます (例: `var language='Español'`​)。複数のグローバル変数をヘッダーの別々の行で宣言できます。 - ローカル変数は、DataWeave スクリプトの本文で初期化され、その変数を初期化した式のスコープ内からのみ、名前で参照できます。 ローカル変数を初期化する構文は、次のようになります。 ```dataweave do { [type = ]* [var = ]* [fun (*) = ]* [ns ]* --- } ``` DataWeave 変数を再割り当てすることはできません。また、Mule メッセージの一部である変数 (対象変数など) とも異なります。DataWeave 変数は、それを初期化したスクリプトのスコープを超えて存続しません。 ## [](#example_global_variable)例: グローバル DataWeave 変数 この例では、定数値 ​`Español`​ を使用して ​`language`​ 変数を初期化し、その定数値を返す ​`do`​ 操作を定義します。DataWeave スクリプトの本文では、変数 ​`myVar`​ を使用して ​`do`​ 操作をコールします。それによって XML 出力の ​``​ 要素に値 ​`Español`​ が入力されます。 変換 ```dataweave %dw 2.0 output application/xml var myVar = do { var language = "Español" --- language } --- { document: { language: myVar, text: "Hola mundo" } } ``` 出力 ```xml Español Hola mundo ``` ## [](#example_local_variable)例: ローカル DataWeave 変数 ローカル変数を初期化するには、リテラル式、変数参照式、または関数式のいずれかを使用できます。これらの式では、そのスコープ内の他のローカル変数や、入力変数またはグローバル変数を参照できます。 ベストプラクティスとして、​`do`​ スコープ内でローカル変数を宣言することをお勧めします (​[「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flow-control#control_flow_do)​参照)。​`using`​ キーワードを使用してスコープを宣言する代替方法は非推奨になり、互換性を提供するためにのみ使用できます。 ローカル変数は、それを初期化した式のスコープ内からのみ名前で参照できます。宣言は任意のリテラル式の先頭に追加できます。リテラルにより変数のスコープが区切られるため、そのスコープの外部にある変数を参照することはできません。 次の例は、ローカル変数の初期化を示しています。 例: 簡単な値へのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定します。そして、​`do`​ を DataWeave スクリプトの本文でコールします。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- 3 + myVar } ``` 結果は ​`5`​ になります。 例: 配列リテラルへのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定し、それを使用して配列の 2 番目の要素の値を ​`2`​ に設定します。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- [1, myVar, 3] } ``` 結果は ​`[ 1, 2, 3]`​ になります。 例: オブジェクトリテラルへのスコープ設定 次の例では、すべての変数への参照が有効です。 `fn`​ と ​`ln`​ は ​`do`​ スコープ内で定義されてコールされます。グローバル変数 ​`myVar`​ にもそのスコープからアクセスできます。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo } ``` ```xml 1234 Annie Point ``` 例: スコープの外部の​**無効な参照**​ 次の例では、​`do`​ のスコープの外部から ​`fromDoScope`​ が参照されているため、エラーが生成されます。 その結果、連結操作 (​`++`​) によって名前-値のペアをコレクションに追加できません。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" var fromDoScope = "Platform" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo ++ { "outsideDoScope" : fromDoScope } } ``` この無効な例では、​`Unable to resolve reference of fromDoScope.`​ のエラーが返されます。 例: 関数内部の参照 次の例では、文字列 ​`HELLO`​ をヘッダーで定義された関数 ​`test`​ に渡します。​`do`​ スコープは文字列を受け取って小文字に変換し、その文字列を ​`suffix`​ 変数と連結します。この変数もスコープのヘッダー内で定義されています。 ```dataweave %dw 2.0 fun test(param1: String) = do { var suffix = "123" fun innerTest(str: String) = lower(str) --- innerTest(param1 ++ suffix) } output application/json --- test("HELLO") ``` 結果は ​`"hello123"`​ になります。 ## [](#ラムダ式として割り当てられた変数)ラムダ式として割り当てられた変数 変数にラムダ式を割り当てると、変数は関数のように動作します。関数と同様に、変数割り当てのラムダ式には、右側の式で使用できるパラメーターを含めることができます (例: `(string) → upper(string)`​。これは、任意の文字列を大文字に変換します)。 他の変数を引数として別の変数のラムダ式に渡すこともできます。次の例は、​`toUpper`​ 変数のラムダ式を名前によって ​`addSuffix`​ 変数のラムダ式に渡す方法を示しています。 ```dataweave %dw 2.0 output application/json var toUpper = (aString) -> upper(aString) var addSuffix = (msg, aFunction, suffix) -> aFunction(msg ++ suffix) --- addSuffix("hello", toUpper, " world") //result is "HELLO WORLD" ``` ## [](#lazy-アノテーション)@Lazy() アノテーション Studio で DataWeave スクリプトを記述しているときに、オートコンプリートの候補に内部アノテーション ​`@Lazy()`​ が表示されることがあります。このアノテーションは一般的な使用を目的としたものではなく、スクリプトのパフォーマンスが向上することはありません。 # DataWeave 変数 DataWeave は変数が関数のように動作する関数型プログラミング言語です。DataWeave では、変数と関数パラメーターに対して先行評価を使用します。さらに、DataWeave 変数は不変です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 変数には値が割り当てられます。値は定数 (​`var msg = "hello"`​ など) またはラムダ式 (​`() → "hello"`​ など) のいずれかです。

DataWeave 1.0 の変数​については、Mule 3 の DataWeave 1.2 のドキュメントを参照してください。

## [](#dataweave-の変数割り当て)DataWeave の変数割り当て DataWeave 2.0 の変数割り当てのいくつかの例を以下に示します。 例: DataWeave スクリプトでの変数割り当て ```dataweave %dw 2.0 output application/json var msg = "Hello" var msg2 = (x = "ignore") -> "hello" var toUpper = (aString) -> upper(aString) var combined = (function, msg="universe") -> function(msg ++ " WORLD") --- [ msg: msg, msg2: msg2(), toUpper: toUpper(msg), combined: combined(toUpper, "hello"), combined2: combined(((x) -> lower(x) ++ " Today"), msg) ] ``` 前のスクリプトでは次の出力が生成されます。 例: 出力 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "HELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world Today" } ] ``` この例の内容を次に示します。 - `msg`​ var は定数に割り当てられています。 - `msg2`​ は、定数にマップする式に割り当てられているため、​`msg2()`​ は ​`()`​ のない ​`msg`​ と同様に動作します。 - `toUpper`​ 変数は入力パラメーターを DataWeave ​`upper`​ 関数にマップします。そのため、これは、別の言語の従来の関数のように ​`toUpper(aString)`​ として使用されます。 - `combined`​ 変数は関数を入力パラメーターとして受け入れて、その関数名を 2 番目の ​`msg`​ 引数に適用します。デフォルト値 ​`universe`​ が指定されているため、2 番目の ​`msg`​ 引数は省略可能です。 式 ​`combined(toUpper, " world")`​ の結果では、ヘッダーの前半で定義された ​`toUpper`​ 関数が ​`msg`​ パラメーター値 ​`world`​ に割り当てられます。指定された 2 番目の引数 ​`world`​ が ​`msg="universe"`​ デフォルト値を上書きするため、結果は ​`HELLO WORLD`​ になります。2 番目の引数を省略している式 ​`combined(toUpper)`​ は、デフォルトの ​`msg`​ 値を使用して ​`"combined": "UNIVERSE WORLD"`​ を返します。 `combined2: combined(x) → lower(x) ++ " Today", msg)`​ は、別のコンテキストで再利用できるラムダ式を定義します。例では、​`combined2`​ キーは、関数のコール時に式を「インプレース (その場)」で定義します。 このような「インプレース」式の種別は、JavaScript などの言語ではクロージャーと呼ばれます。 DataWeave にはシンタックスシュガーが含まれており、関数として変数に割り当てられるラムダ式に容易にアクセスできます。これを行うには、​`var`​ ディレクティブを ​`fun`​ ディレクティブに置き換えて、ラムダ式の矢印 ​`→`​ を等号 (​`=`​) に置き換えます。また、ラムダ式の引数を関数名の横に移動して、構文を、他の手続き型プログラミング言語の関数宣言のようにします。これにより、変数を関数のように使用できます。前述の例に相当するものは、次のように記述できます。 ```dataweave %dw 2.0 output application/json var msg = "Hello" var toUpper = (aString) -> upper(aString) var toLower = (aString) -> lower(aString) fun msg2(optParm = "ignore") = "hello" fun toTitle(text: String) = toLower(text[0]) ++ toUpper(text[1 to -1]) fun combined(function, msg="universe") = function(msg ++ " world") --- [ msg: msg, msg2: msg2(), toUpper: toTitle(msg), combined: combined(toUpper, msg), combined2: combined((x) -> lower(x) ++ " today", msg) ] ``` この例は同じ結果を生成します。 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "hELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world today" } ] ``` DataWeave における重要な相違点は、関数が変数であることと、各関数が、元の ​`var`​ 構文を単に構文的に名前変更したものであることです。これにより、関数名またはラムダ式を引数として他の関数に渡すことができます。​`fun`​ 構文を使用すると、DataWeave の強力な関数型プログラミングの側面にアクセスできるほか、より簡単な式を、使い慣れた関数コールとして記述することもできます。 また、DataWeave 変数 (および関数) では、すべての省略可能な引数が引数リストの最後にある限り、デフォルト値を指定することで任意の数の省略可能な引数を指定できます。 ## [](#例-配列変数の宣言およびその要素の変換)例: 配列変数の宣言およびその要素の変換 変数は DataWeave では不変ですが、配列変数を反復処理し、その要素に変換を適用した後、変換した要素を新しい変数に割り当てることができます。次の例では、2 つの配列変数を宣言し、反復処理してその要素を変換した後、変換された要素を含む 2 つの新しい配列が含まれるオブジェクトを宣言します。 DataWeave ソース: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json var numberArray = [1,2,3,4,5,6] var stringArray = ["max", "astro", "einstein"] --- { "numberArrayUpdated" : numberArray map ((value, index) -> value * value), "stringArrayUpdated" : stringArray map ((value, index) -> index ++ " - " ++ capitalize(value)) } ``` 出力: ```json { "numberArrayUpdated": [ 1, 4, 9, 16, 25, 36 ], "stringArrayUpdated": [ "0 - Max", "1 - Astro", "2 - Einstein" ] } ``` ## [](#変数の命名規則)変数の命名規則 有効な識別子である変数名を宣言できます。詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction#valid-identifiers)​を参照してください。 ## [](#変数のスコープ)変数のスコープ DataWeave スクリプトでは、グローバル変数とローカル変数の両方を初期化して使用できます。 - グローバル変数は、DataWeave スクリプトのヘッダーで初期化され、DataWeave スクリプトの本文の任意の場所から名前で参照できます。 DataWeave スクリプトのヘッダーは、変数を初期化する ​`var`​ ディレクティブを受け入れます (例: `var language='Español'`​)。複数のグローバル変数をヘッダーの別々の行で宣言できます。 - ローカル変数は、DataWeave スクリプトの本文で初期化され、その変数を初期化した式のスコープ内からのみ、名前で参照できます。 ローカル変数を初期化する構文は、次のようになります。 ```dataweave do { [type = ]* [var = ]* [fun (*) = ]* [ns ]* --- } ``` DataWeave 変数を再割り当てすることはできません。また、Mule メッセージの一部である変数 (対象変数など) とも異なります。DataWeave 変数は、それを初期化したスクリプトのスコープを超えて存続しません。 ## [](#example_global_variable)例: グローバル DataWeave 変数 この例では、定数値 ​`Español`​ を使用して ​`language`​ 変数を初期化し、その定数値を返す ​`do`​ 操作を定義します。DataWeave スクリプトの本文では、変数 ​`myVar`​ を使用して ​`do`​ 操作をコールします。それによって XML 出力の ​``​ 要素に値 ​`Español`​ が入力されます。 変換 ```dataweave %dw 2.0 output application/xml var myVar = do { var language = "Español" --- language } --- { document: { language: myVar, text: "Hola mundo" } } ``` 出力 ```xml Español Hola mundo ``` ## [](#example_local_variable)例: ローカル DataWeave 変数 ローカル変数を初期化するには、リテラル式、変数参照式、または関数式のいずれかを使用できます。これらの式では、そのスコープ内の他のローカル変数や、入力変数またはグローバル変数を参照できます。 ベストプラクティスとして、​`do`​ スコープ内でローカル変数を宣言することをお勧めします (​[「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flow-control#control_flow_do)​参照)。​`using`​ キーワードを使用してスコープを宣言する代替方法は非推奨になり、互換性を提供するためにのみ使用できます。 ローカル変数は、それを初期化した式のスコープ内からのみ名前で参照できます。宣言は任意のリテラル式の先頭に追加できます。リテラルにより変数のスコープが区切られるため、そのスコープの外部にある変数を参照することはできません。 次の例は、ローカル変数の初期化を示しています。 例: 簡単な値へのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定します。そして、​`do`​ を DataWeave スクリプトの本文でコールします。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- 3 + myVar } ``` 結果は ​`5`​ になります。 例: 配列リテラルへのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定し、それを使用して配列の 2 番目の要素の値を ​`2`​ に設定します。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- [1, myVar, 3] } ``` 結果は ​`[ 1, 2, 3]`​ になります。 例: オブジェクトリテラルへのスコープ設定 次の例では、すべての変数への参照が有効です。 `fn`​ と ​`ln`​ は ​`do`​ スコープ内で定義されてコールされます。グローバル変数 ​`myVar`​ にもそのスコープからアクセスできます。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo } ``` ```xml 1234 Annie Point ``` 例: スコープの外部の​**無効な参照**​ 次の例では、​`do`​ のスコープの外部から ​`fromDoScope`​ が参照されているため、エラーが生成されます。 その結果、連結操作 (​`++`​) によって名前-値のペアをコレクションに追加できません。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" var fromDoScope = "Platform" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo ++ { "outsideDoScope" : fromDoScope } } ``` この無効な例では、​`Unable to resolve reference of fromDoScope.`​ のエラーが返されます。 例: 関数内部の参照 次の例では、文字列 ​`HELLO`​ をヘッダーで定義された関数 ​`test`​ に渡します。​`do`​ スコープは文字列を受け取って小文字に変換し、その文字列を ​`suffix`​ 変数と連結します。この変数もスコープのヘッダー内で定義されています。 ```dataweave %dw 2.0 fun test(param1: String) = do { var suffix = "123" fun innerTest(str: String) = lower(str) --- innerTest(param1 ++ suffix) } output application/json --- test("HELLO") ``` 結果は ​`"hello123"`​ になります。 ## [](#ラムダ式として割り当てられた変数)ラムダ式として割り当てられた変数 変数にラムダ式を割り当てると、変数は関数のように動作します。関数と同様に、変数割り当てのラムダ式には、右側の式で使用できるパラメーターを含めることができます (例: `(string) → upper(string)`​。これは、任意の文字列を大文字に変換します)。 他の変数を引数として別の変数のラムダ式に渡すこともできます。次の例は、​`toUpper`​ 変数のラムダ式を名前によって ​`addSuffix`​ 変数のラムダ式に渡す方法を示しています。 ```dataweave %dw 2.0 output application/json var toUpper = (aString) -> upper(aString) var addSuffix = (msg, aFunction, suffix) -> aFunction(msg ++ suffix) --- addSuffix("hello", toUpper, " world") //result is "HELLO WORLD" ``` ## [](#lazy-アノテーション)@Lazy() アノテーション Studio で DataWeave スクリプトを記述しているときに、オートコンプリートの候補に内部アノテーション ​`@Lazy()`​ が表示されることがあります。このアノテーションは一般的な使用を目的としたものではなく、スクリプトのパフォーマンスが向上することはありません。 # DataWeave 変数 DataWeave は変数が関数のように動作する関数型プログラミング言語です。DataWeave では、変数と関数パラメーターに対して先行評価を使用します。さらに、DataWeave 変数は不変です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 変数には値が割り当てられます。値は定数 (​`var msg = "hello"`​ など) またはラムダ式 (​`() → "hello"`​ など) のいずれかです。

DataWeave 1.0 の変数​については、Mule 3 の DataWeave 1.2 のドキュメントを参照してください。

## [](#dataweave-の変数割り当て)DataWeave の変数割り当て DataWeave 2.0 の変数割り当てのいくつかの例を以下に示します。 例: DataWeave スクリプトでの変数割り当て ```dataweave %dw 2.0 output application/json var msg = "Hello" var msg2 = (x = "ignore") -> "hello" var toUpper = (aString) -> upper(aString) var combined = (function, msg="universe") -> function(msg ++ " WORLD") --- [ msg: msg, msg2: msg2(), toUpper: toUpper(msg), combined: combined(toUpper, "hello"), combined2: combined(((x) -> lower(x) ++ " Today"), msg) ] ``` 前のスクリプトでは次の出力が生成されます。 例: 出力 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "HELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world Today" } ] ``` この例の内容を次に示します。 - `msg`​ var は定数に割り当てられています。 - `msg2`​ は、定数にマップする式に割り当てられているため、​`msg2()`​ は ​`()`​ のない ​`msg`​ と同様に動作します。 - `toUpper`​ 変数は入力パラメーターを DataWeave ​`upper`​ 関数にマップします。そのため、これは、別の言語の従来の関数のように ​`toUpper(aString)`​ として使用されます。 - `combined`​ 変数は関数を入力パラメーターとして受け入れて、その関数名を 2 番目の ​`msg`​ 引数に適用します。デフォルト値 ​`universe`​ が指定されているため、2 番目の ​`msg`​ 引数は省略可能です。 式 ​`combined(toUpper, " world")`​ の結果では、ヘッダーの前半で定義された ​`toUpper`​ 関数が ​`msg`​ パラメーター値 ​`world`​ に割り当てられます。指定された 2 番目の引数 ​`world`​ が ​`msg="universe"`​ デフォルト値を上書きするため、結果は ​`HELLO WORLD`​ になります。2 番目の引数を省略している式 ​`combined(toUpper)`​ は、デフォルトの ​`msg`​ 値を使用して ​`"combined": "UNIVERSE WORLD"`​ を返します。 `combined2: combined(x) → lower(x) ++ " Today", msg)`​ は、別のコンテキストで再利用できるラムダ式を定義します。例では、​`combined2`​ キーは、関数のコール時に式を「インプレース (その場)」で定義します。 このような「インプレース」式の種別は、JavaScript などの言語ではクロージャーと呼ばれます。 DataWeave にはシンタックスシュガーが含まれており、関数として変数に割り当てられるラムダ式に容易にアクセスできます。これを行うには、​`var`​ ディレクティブを ​`fun`​ ディレクティブに置き換えて、ラムダ式の矢印 ​`→`​ を等号 (​`=`​) に置き換えます。また、ラムダ式の引数を関数名の横に移動して、構文を、他の手続き型プログラミング言語の関数宣言のようにします。これにより、変数を関数のように使用できます。前述の例に相当するものは、次のように記述できます。 ```dataweave %dw 2.0 output application/json var msg = "Hello" var toUpper = (aString) -> upper(aString) var toLower = (aString) -> lower(aString) fun msg2(optParm = "ignore") = "hello" fun toTitle(text: String) = toLower(text[0]) ++ toUpper(text[1 to -1]) fun combined(function, msg="universe") = function(msg ++ " world") --- [ msg: msg, msg2: msg2(), toUpper: toTitle(msg), combined: combined(toUpper, msg), combined2: combined((x) -> lower(x) ++ " today", msg) ] ``` この例は同じ結果を生成します。 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "hELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world today" } ] ``` DataWeave における重要な相違点は、関数が変数であることと、各関数が、元の ​`var`​ 構文を単に構文的に名前変更したものであることです。これにより、関数名またはラムダ式を引数として他の関数に渡すことができます。​`fun`​ 構文を使用すると、DataWeave の強力な関数型プログラミングの側面にアクセスできるほか、より簡単な式を、使い慣れた関数コールとして記述することもできます。 また、DataWeave 変数 (および関数) では、すべての省略可能な引数が引数リストの最後にある限り、デフォルト値を指定することで任意の数の省略可能な引数を指定できます。 ## [](#例-配列変数の宣言およびその要素の変換)例: 配列変数の宣言およびその要素の変換 変数は DataWeave では不変ですが、配列変数を反復処理し、その要素に変換を適用した後、変換した要素を新しい変数に割り当てることができます。次の例では、2 つの配列変数を宣言し、反復処理してその要素を変換した後、変換された要素を含む 2 つの新しい配列が含まれるオブジェクトを宣言します。 DataWeave ソース: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json var numberArray = [1,2,3,4,5,6] var stringArray = ["max", "astro", "einstein"] --- { "numberArrayUpdated" : numberArray map ((value, index) -> value * value), "stringArrayUpdated" : stringArray map ((value, index) -> index ++ " - " ++ capitalize(value)) } ``` 出力: ```json { "numberArrayUpdated": [ 1, 4, 9, 16, 25, 36 ], "stringArrayUpdated": [ "0 - Max", "1 - Astro", "2 - Einstein" ] } ``` ## [](#変数の命名規則)変数の命名規則 有効な識別子である変数名を宣言できます。詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction#valid-identifiers)​を参照してください。 ## [](#変数のスコープ)変数のスコープ DataWeave スクリプトでは、グローバル変数とローカル変数の両方を初期化して使用できます。 - グローバル変数は、DataWeave スクリプトのヘッダーで初期化され、DataWeave スクリプトの本文の任意の場所から名前で参照できます。 DataWeave スクリプトのヘッダーは、変数を初期化する ​`var`​ ディレクティブを受け入れます (例: `var language='Español'`​)。複数のグローバル変数をヘッダーの別々の行で宣言できます。 - ローカル変数は、DataWeave スクリプトの本文で初期化され、その変数を初期化した式のスコープ内からのみ、名前で参照できます。 ローカル変数を初期化する構文は、次のようになります。 ```dataweave do { [type = ]* [var = ]* [fun (*) = ]* [ns ]* --- } ``` DataWeave 変数を再割り当てすることはできません。また、Mule メッセージの一部である変数 (対象変数など) とも異なります。DataWeave 変数は、それを初期化したスクリプトのスコープを超えて存続しません。 ## [](#example_global_variable)例: グローバル DataWeave 変数 この例では、定数値 ​`Español`​ を使用して ​`language`​ 変数を初期化し、その定数値を返す ​`do`​ 操作を定義します。DataWeave スクリプトの本文では、変数 ​`myVar`​ を使用して ​`do`​ 操作をコールします。それによって XML 出力の ​``​ 要素に値 ​`Español`​ が入力されます。 変換 ```dataweave %dw 2.0 output application/xml var myVar = do { var language = "Español" --- language } --- { document: { language: myVar, text: "Hola mundo" } } ``` 出力 ```xml Español Hola mundo ``` ## [](#example_local_variable)例: ローカル DataWeave 変数 ローカル変数を初期化するには、リテラル式、変数参照式、または関数式のいずれかを使用できます。これらの式では、そのスコープ内の他のローカル変数や、入力変数またはグローバル変数を参照できます。 ベストプラクティスとして、​`do`​ スコープ内でローカル変数を宣言することをお勧めします (​[「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flow-control#control_flow_do)​参照)。​`using`​ キーワードを使用してスコープを宣言する代替方法は非推奨になり、互換性を提供するためにのみ使用できます。 ローカル変数は、それを初期化した式のスコープ内からのみ名前で参照できます。宣言は任意のリテラル式の先頭に追加できます。リテラルにより変数のスコープが区切られるため、そのスコープの外部にある変数を参照することはできません。 次の例は、ローカル変数の初期化を示しています。 例: 簡単な値へのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定します。そして、​`do`​ を DataWeave スクリプトの本文でコールします。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- 3 + myVar } ``` 結果は ​`5`​ になります。 例: 配列リテラルへのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定し、それを使用して配列の 2 番目の要素の値を ​`2`​ に設定します。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- [1, myVar, 3] } ``` 結果は ​`[ 1, 2, 3]`​ になります。 例: オブジェクトリテラルへのスコープ設定 次の例では、すべての変数への参照が有効です。 `fn`​ と ​`ln`​ は ​`do`​ スコープ内で定義されてコールされます。グローバル変数 ​`myVar`​ にもそのスコープからアクセスできます。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo } ``` ```xml 1234 Annie Point ``` 例: スコープの外部の​**無効な参照**​ 次の例では、​`do`​ のスコープの外部から ​`fromDoScope`​ が参照されているため、エラーが生成されます。 その結果、連結操作 (​`++`​) によって名前-値のペアをコレクションに追加できません。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" var fromDoScope = "Platform" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo ++ { "outsideDoScope" : fromDoScope } } ``` この無効な例では、​`Unable to resolve reference of fromDoScope.`​ のエラーが返されます。 例: 関数内部の参照 次の例では、文字列 ​`HELLO`​ をヘッダーで定義された関数 ​`test`​ に渡します。​`do`​ スコープは文字列を受け取って小文字に変換し、その文字列を ​`suffix`​ 変数と連結します。この変数もスコープのヘッダー内で定義されています。 ```dataweave %dw 2.0 fun test(param1: String) = do { var suffix = "123" fun innerTest(str: String) = lower(str) --- innerTest(param1 ++ suffix) } output application/json --- test("HELLO") ``` 結果は ​`"hello123"`​ になります。 ## [](#ラムダ式として割り当てられた変数)ラムダ式として割り当てられた変数 変数にラムダ式を割り当てると、変数は関数のように動作します。関数と同様に、変数割り当てのラムダ式には、右側の式で使用できるパラメーターを含めることができます (例: `(string) → upper(string)`​。これは、任意の文字列を大文字に変換します)。 他の変数を引数として別の変数のラムダ式に渡すこともできます。次の例は、​`toUpper`​ 変数のラムダ式を名前によって ​`addSuffix`​ 変数のラムダ式に渡す方法を示しています。 ```dataweave %dw 2.0 output application/json var toUpper = (aString) -> upper(aString) var addSuffix = (msg, aFunction, suffix) -> aFunction(msg ++ suffix) --- addSuffix("hello", toUpper, " world") //result is "HELLO WORLD" ``` ## [](#lazy-アノテーション)@Lazy() アノテーション Studio で DataWeave スクリプトを記述しているときに、オートコンプリートの候補に内部アノテーション ​`@Lazy()`​ が表示されることがあります。このアノテーションは一般的な使用を目的としたものではなく、スクリプトのパフォーマンスが向上することはありません。 # DataWeave 変数 DataWeave は変数が関数のように動作する関数型プログラミング言語です。DataWeave では、変数と関数パラメーターに対して先行評価を使用します。さらに、DataWeave 変数は不変です。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 変数には値が割り当てられます。値は定数 (​`var msg = "hello"`​ など) またはラムダ式 (​`() → "hello"`​ など) のいずれかです。

DataWeave 1.0 の変数​については、Mule 3 の DataWeave 1.2 のドキュメントを参照してください。

## [](#dataweave-の変数割り当て)DataWeave の変数割り当て DataWeave 2.0 の変数割り当てのいくつかの例を以下に示します。 例: DataWeave スクリプトでの変数割り当て ```dataweave %dw 2.0 output application/json var msg = "Hello" var msg2 = (x = "ignore") -> "hello" var toUpper = (aString) -> upper(aString) var combined = (function, msg="universe") -> function(msg ++ " WORLD") --- [ msg: msg, msg2: msg2(), toUpper: toUpper(msg), combined: combined(toUpper, "hello"), combined2: combined(((x) -> lower(x) ++ " Today"), msg) ] ``` 前のスクリプトでは次の出力が生成されます。 例: 出力 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "HELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world Today" } ] ``` この例の内容を次に示します。 - `msg`​ var は定数に割り当てられています。 - `msg2`​ は、定数にマップする式に割り当てられているため、​`msg2()`​ は ​`()`​ のない ​`msg`​ と同様に動作します。 - `toUpper`​ 変数は入力パラメーターを DataWeave ​`upper`​ 関数にマップします。そのため、これは、別の言語の従来の関数のように ​`toUpper(aString)`​ として使用されます。 - `combined`​ 変数は関数を入力パラメーターとして受け入れて、その関数名を 2 番目の ​`msg`​ 引数に適用します。デフォルト値 ​`universe`​ が指定されているため、2 番目の ​`msg`​ 引数は省略可能です。 式 ​`combined(toUpper, " world")`​ の結果では、ヘッダーの前半で定義された ​`toUpper`​ 関数が ​`msg`​ パラメーター値 ​`world`​ に割り当てられます。指定された 2 番目の引数 ​`world`​ が ​`msg="universe"`​ デフォルト値を上書きするため、結果は ​`HELLO WORLD`​ になります。2 番目の引数を省略している式 ​`combined(toUpper)`​ は、デフォルトの ​`msg`​ 値を使用して ​`"combined": "UNIVERSE WORLD"`​ を返します。 `combined2: combined(x) → lower(x) ++ " Today", msg)`​ は、別のコンテキストで再利用できるラムダ式を定義します。例では、​`combined2`​ キーは、関数のコール時に式を「インプレース (その場)」で定義します。 このような「インプレース」式の種別は、JavaScript などの言語ではクロージャーと呼ばれます。 DataWeave にはシンタックスシュガーが含まれており、関数として変数に割り当てられるラムダ式に容易にアクセスできます。これを行うには、​`var`​ ディレクティブを ​`fun`​ ディレクティブに置き換えて、ラムダ式の矢印 ​`→`​ を等号 (​`=`​) に置き換えます。また、ラムダ式の引数を関数名の横に移動して、構文を、他の手続き型プログラミング言語の関数宣言のようにします。これにより、変数を関数のように使用できます。前述の例に相当するものは、次のように記述できます。 ```dataweave %dw 2.0 output application/json var msg = "Hello" var toUpper = (aString) -> upper(aString) var toLower = (aString) -> lower(aString) fun msg2(optParm = "ignore") = "hello" fun toTitle(text: String) = toLower(text[0]) ++ toUpper(text[1 to -1]) fun combined(function, msg="universe") = function(msg ++ " world") --- [ msg: msg, msg2: msg2(), toUpper: toTitle(msg), combined: combined(toUpper, msg), combined2: combined((x) -> lower(x) ++ " today", msg) ] ``` この例は同じ結果を生成します。 ```json [ { "msg": "Hello" }, { "msg2": "hello" }, { "toUpper": "hELLO" }, { "combined": "HELLO WORLD" }, { "combined2": "hello world today" } ] ``` DataWeave における重要な相違点は、関数が変数であることと、各関数が、元の ​`var`​ 構文を単に構文的に名前変更したものであることです。これにより、関数名またはラムダ式を引数として他の関数に渡すことができます。​`fun`​ 構文を使用すると、DataWeave の強力な関数型プログラミングの側面にアクセスできるほか、より簡単な式を、使い慣れた関数コールとして記述することもできます。 また、DataWeave 変数 (および関数) では、すべての省略可能な引数が引数リストの最後にある限り、デフォルト値を指定することで任意の数の省略可能な引数を指定できます。 ## [](#例-配列変数の宣言およびその要素の変換)例: 配列変数の宣言およびその要素の変換 変数は DataWeave では不変ですが、配列変数を反復処理し、その要素に変換を適用した後、変換した要素を新しい変数に割り当てることができます。次の例では、2 つの配列変数を宣言し、反復処理してその要素を変換した後、変換された要素を含む 2 つの新しい配列が含まれるオブジェクトを宣言します。 DataWeave ソース: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json var numberArray = [1,2,3,4,5,6] var stringArray = ["max", "astro", "einstein"] --- { "numberArrayUpdated" : numberArray map ((value, index) -> value * value), "stringArrayUpdated" : stringArray map ((value, index) -> index ++ " - " ++ capitalize(value)) } ``` 出力: ```json { "numberArrayUpdated": [ 1, 4, 9, 16, 25, 36 ], "stringArrayUpdated": [ "0 - Max", "1 - Astro", "2 - Einstein" ] } ``` ## [](#変数の命名規則)変数の命名規則 有効な識別子である変数名を宣言できます。詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction#valid-identifiers)​を参照してください。 ## [](#変数のスコープ)変数のスコープ DataWeave スクリプトでは、グローバル変数とローカル変数の両方を初期化して使用できます。 - グローバル変数は、DataWeave スクリプトのヘッダーで初期化され、DataWeave スクリプトの本文の任意の場所から名前で参照できます。 DataWeave スクリプトのヘッダーは、変数を初期化する ​`var`​ ディレクティブを受け入れます (例: `var language='Español'`​)。複数のグローバル変数をヘッダーの別々の行で宣言できます。 - ローカル変数は、DataWeave スクリプトの本文で初期化され、その変数を初期化した式のスコープ内からのみ、名前で参照できます。 ローカル変数を初期化する構文は、次のようになります。 ```dataweave do { [type = ]* [var = ]* [fun (*) = ]* [ns ]* --- } ``` DataWeave 変数を再割り当てすることはできません。また、Mule メッセージの一部である変数 (対象変数など) とも異なります。DataWeave 変数は、それを初期化したスクリプトのスコープを超えて存続しません。 ## [](#example_global_variable)例: グローバル DataWeave 変数 この例では、定数値 ​`Español`​ を使用して ​`language`​ 変数を初期化し、その定数値を返す ​`do`​ 操作を定義します。DataWeave スクリプトの本文では、変数 ​`myVar`​ を使用して ​`do`​ 操作をコールします。それによって XML 出力の ​``​ 要素に値 ​`Español`​ が入力されます。 変換 ```dataweave %dw 2.0 output application/xml var myVar = do { var language = "Español" --- language } --- { document: { language: myVar, text: "Hola mundo" } } ``` 出力 ```xml Español Hola mundo ``` ## [](#example_local_variable)例: ローカル DataWeave 変数 ローカル変数を初期化するには、リテラル式、変数参照式、または関数式のいずれかを使用できます。これらの式では、そのスコープ内の他のローカル変数や、入力変数またはグローバル変数を参照できます。 ベストプラクティスとして、​`do`​ スコープ内でローカル変数を宣言することをお勧めします (​[「DataWeave のフローコントロール」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flow-control#control_flow_do)​参照)。​`using`​ キーワードを使用してスコープを宣言する代替方法は非推奨になり、互換性を提供するためにのみ使用できます。 ローカル変数は、それを初期化した式のスコープ内からのみ名前で参照できます。宣言は任意のリテラル式の先頭に追加できます。リテラルにより変数のスコープが区切られるため、そのスコープの外部にある変数を参照することはできません。 次の例は、ローカル変数の初期化を示しています。 例: 簡単な値へのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定します。そして、​`do`​ を DataWeave スクリプトの本文でコールします。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- 3 + myVar } ``` 結果は ​`5`​ になります。 例: 配列リテラルへのスコープ設定 次の例では、ローカル変数 ​`myVar`​ を ​`do`​ スコープ内で設定し、それを使用して配列の 2 番目の要素の値を ​`2`​ に設定します。 ```dataweave %dw 2.0 output application/json --- do { var myVar = 2 --- [1, myVar, 3] } ``` 結果は ​`[ 1, 2, 3]`​ になります。 例: オブジェクトリテラルへのスコープ設定 次の例では、すべての変数への参照が有効です。 `fn`​ と ​`ln`​ は ​`do`​ スコープ内で定義されてコールされます。グローバル変数 ​`myVar`​ にもそのスコープからアクセスできます。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo } ``` ```xml 1234 Annie Point ``` 例: スコープの外部の​**無効な参照**​ 次の例では、​`do`​ のスコープの外部から ​`fromDoScope`​ が参照されているため、エラーが生成されます。 その結果、連結操作 (​`++`​) によって名前-値のペアをコレクションに追加できません。 ```dataweave %dw 2.0 var myVar = 1234 var myDo = do { var fn = "Annie" var ln = "Point" var fromDoScope = "Platform" --- { id : myVar, firstname : fn, lastname : ln } } output application/xml --- { person : myDo ++ { "outsideDoScope" : fromDoScope } } ``` この無効な例では、​`Unable to resolve reference of fromDoScope.`​ のエラーが返されます。 例: 関数内部の参照 次の例では、文字列 ​`HELLO`​ をヘッダーで定義された関数 ​`test`​ に渡します。​`do`​ スコープは文字列を受け取って小文字に変換し、その文字列を ​`suffix`​ 変数と連結します。この変数もスコープのヘッダー内で定義されています。 ```dataweave %dw 2.0 fun test(param1: String) = do { var suffix = "123" fun innerTest(str: String) = lower(str) --- innerTest(param1 ++ suffix) } output application/json --- test("HELLO") ``` 結果は ​`"hello123"`​ になります。 ## [](#ラムダ式として割り当てられた変数)ラムダ式として割り当てられた変数 変数にラムダ式を割り当てると、変数は関数のように動作します。関数と同様に、変数割り当てのラムダ式には、右側の式で使用できるパラメーターを含めることができます (例: `(string) → upper(string)`​。これは、任意の文字列を大文字に変換します)。 他の変数を引数として別の変数のラムダ式に渡すこともできます。次の例は、​`toUpper`​ 変数のラムダ式を名前によって ​`addSuffix`​ 変数のラムダ式に渡す方法を示しています。 ```dataweave %dw 2.0 output application/json var toUpper = (aString) -> upper(aString) var addSuffix = (msg, aFunction, suffix) -> aFunction(msg ++ suffix) --- addSuffix("hello", toUpper, " world") //result is "HELLO WORLD" ``` ## [](#lazy-アノテーション)@Lazy() アノテーション Studio で DataWeave スクリプトを記述しているときに、オートコンプリートの候補に内部アノテーション ​`@Lazy()`​ が表示されることがあります。このアノテーションは一般的な使用を目的としたものではなく、スクリプトのパフォーマンスが向上することはありません。 # DataWeave 形式 (dw) MIME タイプ: `application/dw`​ ID: `dw`​ DataWeave (dw) 形式はすべての変換の正規形式です。 この形式を使用すると、入力データが新しい形式に変換される前に入力データがどのように解釈されるかを容易に理解できます。

この形式の目的は、DataWeave 変換の結果を容易にデバッグできるようにすることです。動作は他の形式よりも大幅に遅くなります。パフォーマンスに影響する可能性があるため、これを本番アプリケーションで使用することはお勧めしません。

## [](#examples)例: XML を DataWeave (dw) 形式で表す 次の例は、XML 入力を DataWeave (dw) 形式に変換する方法を示しています。 ### [](#入力)入力 この例では、次の XML スニペットを入力として使用します。 ```xml Mariano DeAchaval Leandro Shokida ``` #### [](#出力)出力 DataWeave 形式の出力 ```dataweave { employees: { employee: { firstname: "Mariano", lastname: "DeAchaval" }, employee: { firstname: "Leandro", lastname: "Shokida" } } } as Object {encoding: "UTF-8", mimeType: "text/xml"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、DataWeave (dw) 形式の次の設定プロパティがサポートされています。 ### [](#リーダープロパティ-dw)リーダープロパティ (dw) DataWeave (dw) 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​externalResources

​Boolean

​false

​readUrl​ の外部エンティティを読み取ることができるようにします。有効なオプションは、​true​ または ​false​ です。

​javaModule

Boolean

false

Java Module 機能を読み込むことができるようにします。有効なオプションは、​true​ または ​false​ です。

​onlyData

​Boolean

​true

データのみを処理する (関数などの他のコンテンツタイプは処理しない) かどうかを示します。有効なオプションは、​true​ または ​false​ です。​onlyData​ モードでは、パーサーの実行時間を短縮できます。

### [](#ライタープロパティ-dw)ライタープロパティ (dw) DataWeave (dw) 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​ignoreSchema

​Boolean

​false

DataWeave ライターでスキーマを無視するかどうかを示すフラグ。有効な値は、​true​ または ​false​ です。

​indent

​String

​' '

インデントで使用する文字列。

​maxCollectionSize

​Number

​-1

配列またはオブジェクトで許容される最大要素数。​-1​ は、制限が設定されないことを示します。

onlyData

​Boolean

​true

データのみを処理する (関数などの他のコンテンツタイプは処理しない) かどうかを示します。有効なオプションは、​true​ または ​false​ です。​onlyData​ モードでは、パーサーの実行時間を短縮できます。

## [](#mime_type)サポートされる MIME タイプ (dw) DataWeave (dw) 形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/dw​

# DataWeave 言語 Unresolved include directive in modules/ROOT/pages/index.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] - DataWeave についての詳細は、​[言語ガイド](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-guide)​を参照してください。 - DataWeave 2.3.0 の操作および関数についてのリファレンス情報は、​[リファレンスガイド](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​を参照してください。 - 一般的な変換シナリオを解決するサンプルのスクリプトを確認するには、​[「DataWeave examples (DataWeave の例)」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook)​にアクセスしてください。 - DataWeave 2.3.0 for Mule Runtime Engine (Mule) バージョン 4.3 以降の使用を開始するには、​[クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-quickstart)​を参照してください。 ## [](#互換性)互換性 Unresolved include directive in modules/ROOT/pages/index.adoc - include::2.4@dataweave::partial$dataweave/dw-mule-compatibility.adoc\[\] # DataWeave 言語 Unresolved include directive in modules/ROOT/pages/index.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] - DataWeave についての詳細は、​[言語ガイド](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-guide)​を参照してください。 - DataWeave 2.4.0 の操作および関数についてのリファレンス情報は、​[リファレンスガイド](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions)​を参照してください。 - 一般的な変換シナリオを解決するサンプルのスクリプトを確認するには、​[「DataWeave examples (DataWeave の例)」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook)​にアクセスしてください。 - DataWeave スクリプトを対話的に試すには、 [DataWeave プレイグラウンド](https://developer.mulesoft.com/learn/dataweave/)​にアクセスしてください。 - DataWeave 2.4.0 for Mule Runtime Engine (Mule) バージョン 4.4 以降の使用を開始するには、​[クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-quickstart)​を参照してください。 ## [](#互換性)互換性 Unresolved include directive in modules/ROOT/pages/index.adoc - include::2.4@dataweave::partial$dataweave/dw-mule-compatibility.adoc\[\] # DataWeave 言語 Unresolved include directive in modules/ROOT/pages/index.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] - DataWeave についての詳細は、​[言語ガイド](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-guide)​を参照してください。 - DataWeave 2.4.0 の操作および関数についてのリファレンス情報は、​[リファレンスガイド](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions)​を参照してください。 - 一般的な変換シナリオを解決するサンプルのスクリプトを確認するには、​[「DataWeave examples (DataWeave の例)」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook)​にアクセスしてください。 - DataWeave スクリプトを対話的に試すには、 [DataWeave プレイグラウンド](https://developer.mulesoft.com/learn/dataweave/)​にアクセスしてください。 - DataWeave 2.4.0 for Mule Runtime Engine (Mule) バージョン 4.4 以降の使用を開始するには、​[クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-quickstart)​を参照してください。 ## [](#互換性)互換性 This table specifies which version of DataWeave is bundled with each Mule runtime engine release:
Mule Version DataWeave Version

4.13

2.13

4.12

2.12

4.11

2.11

4.10

2.10

4.9

2.9

4.8

2.8

4.7

2.7

4.6

2.6

4.5

2.5

4.4

2.4

4.3

2.3

4.2

2.2

4.1

2.1

3.9

1.2

3.8

1.1

3.7

1.0

# DataWeave 言語 Unresolved include directive in modules/ROOT/pages/index.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] - DataWeave についての詳細は、​[言語ガイド](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-guide)​を参照してください。 - DataWeave 2.4.0 の操作および関数についてのリファレンス情報は、​[リファレンスガイド](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions)​を参照してください。 - 一般的な変換シナリオを解決するサンプルのスクリプトを確認するには、​[「DataWeave examples (DataWeave の例)」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook)​にアクセスしてください。 - DataWeave スクリプトを対話的に試すには、 [DataWeave プレイグラウンド](https://developer.mulesoft.com/learn/dataweave/)​にアクセスしてください。 - DataWeave 2.4.0 for Mule Runtime Engine (Mule) バージョン 4.4 以降の使用を開始するには、​[クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-quickstart)​を参照してください。 ## [](#互換性)互換性 This table specifies which version of DataWeave is bundled with each Mule runtime engine release:
Mule Version DataWeave Version

4.13

2.13

4.12

2.12

4.11

2.11

4.10

2.10

4.9

2.9

4.8

2.8

4.7

2.7

4.6

2.6

4.5

2.5

4.4

2.4

4.3

2.3

4.2

2.2

4.1

2.1

3.9

1.2

3.8

1.1

3.7

1.0

# DataWeave 言語 Unresolved include directive in modules/ROOT/pages/index.adoc - include::dataweave::partial$dataweave-intro.adoc\[\] - DataWeave についての詳細は、​[言語ガイド](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-guide)​を参照してください。 - DataWeave 2.4.0 の操作および関数についてのリファレンス情報は、​[リファレンスガイド](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions)​を参照してください。 - 一般的な変換シナリオを解決するサンプルのスクリプトを確認するには、​[「DataWeave examples (DataWeave の例)」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook)​にアクセスしてください。 - DataWeave スクリプトを対話的に試すには、 [DataWeave プレイグラウンド](https://developer.mulesoft.com/learn/dataweave/)​にアクセスしてください。 - DataWeave 2.4.0 for Mule Runtime Engine (Mule) バージョン 4.4 以降の使用を開始するには、​[クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-quickstart)​を参照してください。 ## [](#互換性)互換性 This table specifies which version of DataWeave is bundled with each Mule runtime engine release:
Mule Version DataWeave Version

4.13

2.13

4.12

2.12

4.11

2.11

4.10

2.10

4.9

2.9

4.8

2.8

4.7

2.7

4.6

2.6

4.5

2.5

4.4

2.4

4.3

2.3

4.2

2.2

4.1

2.1

3.9

1.2

3.8

1.1

3.7

1.0

# DataWeave 言語ガイド DataWeave は、データ変換を実行するために Mule アプリケーションで使用される関数型言語です。 DataWeave を使用して独自の強力で複雑なデータ変換をコーディングする前に、プログラミングの基本概念と関数型プログラミング言語のコア機能を理解する必要があります。 DataWeave を使用すると、次のような関数型プログラミングの利点を活用できます。 - 同じ入力に対して常に同じ出力を生成する純粋関数により、デバッグが容易になる。 - 実行中に値が変更されない不変変数により、コードの安定性が増す。 - 純粋関数では結果の生成に入力パラメーターのみが使用されるため、関数シグネチャーによって関数の実行に影響する要素に関するその他の透明性を示す。 - 関数型言語はコードが簡潔明瞭であるため、保守が容易なコードが生成される。 - 式は必要な場合にのみ評価され、入力パラメーターが同じ場合に式が複数回評価されないように結果が保存されるため、必要呼び戦略 (​_遅延評価_​とも呼ばれる) によりパフォーマンスが向上する。 ## [](#dataweave-言語の基本概念)DataWeave 言語の基本概念 DataWeave には、ほとんどのプログラミング言語に共通する概念が組み込まれています。すべての DataWeave スクリプトは、変換の出力形式などの重要なディレクティブを含む​_ヘッダー_​、および結果を生成する式を含む​_本文_​で構成されます。 DataWeave では、​_単純型_​、​_複雑型_​、​_複合型_​など、さまざまな​_データ構造_​がサポートされます。ほとんどの DataWeave 変換では、​_データセレクター_​、​_データ演算子_​、および​_関数_​を​_配列_​や​_オブジェクト_​と一緒に使用して、データのマッピングまたは変換を実行します。 事前作成済み DataWeave ​_モジュール_​をインポートして、スクリプトで使用できる関数のセットを拡張することもできます。 ### [](#dataweave-スクリプトのアーキテクチャ)DataWeave スクリプトのアーキテクチャ DataWeave スクリプトは、3 つのダッシュ (​`---`​) で区切られた​_ヘッダー_​と​_本文_​で構成されます。 ヘッダーには、言語ディレクティブ (​`import`​ など) が含まれ、変換の出力形式を定義し、変数および関数の宣言を含めることもできます。 本文には、結果の出力を生成する式 (通常はデータマッピングまたは変換) が含まれます。 次に、基本的な DataWeave 変換の例を示します。 ```dataweave %dw 2.0 output application/json --- payload ``` ### [](#データ型)データ型 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。 型システムを使用すると、変数と関数パラメーターに制約を適用できます。サポートされるデータ型には、​`String`​、​`Boolean`​、​`Number`​、​`Date`​ などの単純型、および ​`Array`​、​`Object`​、​`Any`​ などの複合型と複雑型が含まれます。 サポートされるすべてのデータ型の完全なリストについては、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-type-system)​を参照してください。 ### [](#データセレクター)データセレクター データセレクターを使用すると、データ構造内の項目にアクセスできるため、DataWeave スクリプトの実行中に作成されたペイロードまたはその他の変数からデータを取得できます。 異なる種別のセレクターには、構造からデータを抽出するために使用できるさまざまなオプションがあります。 たとえば、​_単一値_​セレクター ​`payload.userName`​ を使用して単一値 ​`userName`​ を取得できます。​`userName`​ は、入力メッセージの実際のキーを表します。 データセレクターとその使用法の完全なリストについては、​[「セレクター」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors)​を参照してください。 ### [](#関数)関数 関数は、アプリケーションで関数がコールされたときに実行される操作のグループを含むコードブロックです。関数は、さまざまなパラメーターを入力として受け入れ、関数で定義された操作でそれらを使用できます。さらに、すべての関数は処理の終了後に値を返し、この値を別の関数の入力として使用できます。 コンポーネント (Transform Message コンポーネントや Set Payload コンポーネント) で記述する各 DataWeave スクリプトは、独立したプログラムとして機能します。つまり、すべての関数の定義とコールは、コンポーネントで定義されたスクリプトに固有です。 関数定義についての詳細は、​[「DataWeave 関数の定義」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-functions)​を参照してください。 #### [](#関数定義と関数コール)関数定義と関数コール DataWeave では、スクリプトのヘッダーで関数を​_定義_​し、関数コール時に実行される操作を定義するプロセスのブループリントを作成します。 DataWeave 式から関数を​_コール_​する場合、スクリプトの実行の正確な時点で、その関数で定義されたすべての操作を実行するように DataWeave に指示することになります。 たとえば、​`upper`​ は String モジュールで定義された組み込み関数です。この関数をコールして、テキスト値を大文字に変換できます。また、セレクターを使用してペイロードから値を取得し、この値を入力パラメーター ​`upper(payload.someKey)`​ として ​`upper()`​ 関数コールを実行することもできます。 DataWeave では、関数コールの​_前置_​表記 (​`function (param1, param2)`​) と​_中置_​表記 (​`param1 function param2`​) の両方がサポートされます。中置表記は、2 つのパラメーターのみを受け入れる関数でのみ使用できます。 [「関数シグネチャー」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions#function_signatures)​も参照してください。 ### [](#データ演算子)データ演算子 データ演算子は、データの操作を実行して結果を生成できるようにする記号です。DataWeave では、数学演算子 (​`` `​、​`-`​、​`/`​、​`*`​)、比較演算子 (​`<`​、​`>`​、​`⇐+ ``​、​`>=`​、​`==`​、​`~=`​)、論理演算子 (​`not`​、​`!`​、​`and`​、​`or`​) など、ほとんどのプログラミング言語で一般的な演算子がサポートされています。 DataWeave では次の演算子もサポートされています。 - 追加 (​`<<`​、​`+`​)、先頭に追加 (​`>>`​)、および削除 (​`-`​)。配列内のデータを管理できます。 - スコープおよびフローコントロール演算子 (​`do`​、​`using`​、​`if`​、​`else`​)。新しい変数および関数を宣言可能なスコープを作成したり、条件に基づいて式を実行したりできます。 - 更新 (​`update`​)。データ構造の特定の項目を更新できます。 サポートされる演算子、その使用法、および例の完全なリストについては、​[「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-operators)​を参照してください。 #### [](#関数モジュールのインポート)関数モジュールのインポート デフォルトでは、DataWeave スクリプトは ​`dw::Core`​ 関数モジュールをインポートします。異なるモジュールの関数を使用するには、​`import`​ ディレクティブを追加してモジュールをスクリプトにインポートします。 `import`​ ディレクティブの使用については、​[「DataWeave リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​を参照してください。 ### [](#配列)配列 配列は、サポートされる DataWeave 型の要素をいくつでも含めることができるデータ構造です。配列を宣言するには、括弧 (​`[`​ および ​`]`​) を使用して要素のカンマ区切りのリストを囲みます (​`[1,2,3]`​ など)。 配列では、条件付き要素 (​`[(value1) if condition]`​など) を定義する条件付きロジックの適用もサポートされます。たとえば、式 ​`[(1) if true, (2) if false, (3) if payload != null]`​ は配列 ​`[1,3]`​ を定義します (​`payload`​ が ​`null`​ でない場合)。 ### [](#オブジェクト)オブジェクト オブジェクトは、0 個以上の ​`Key`​ と ​`value`​ のペアのコレクションです。 - `Key`​: 次の要素で形成されます。 - `Name`​: ローカル名としての ​`String`​ 値と省略可能な ​`Namespace`​ で構成されます。 - `Attributes`​: 0 個以上の ​`Name:value`​ ペアのコレクション。​`value`​ には使用可能な任意の値を指定できます。 - `Value`​: 別のオブジェクト、関数コール、または配列を含む、サポートされる任意の種別で構成されます。 オブジェクトを宣言するには、括弧 (​`{`​ および ​`}`​) を使用して ​`Key:value`​ ペアのカンマ区切りのリストを囲みます。 ```dataweave { keyName @(keyAttributeName :"keyAttributeValue"): "value", User @(role:"admin"): upper("max the mule"), myArray: [1,2,3] } ``` オブジェクトでは、条件付き要素の定義もサポートされています。 ```dataweave { (userName: name) if !isBlank(name), (userRole: role) if !isBlank(role) } ``` ## [](#関数型プログラミングの原則)関数型プログラミングの原則 関数型プログラミングのパラダイムにより、開発者は純粋関数合成と不変データを使用してアプリケーションを構築できます。関数型プログラミングは宣言型であるため、DataWeave の関数はプログラムの状態を変更する命令ステートメントではなく、値を返す単なる式です。 DataWeave は、純粋関数、第一級関数、高階関数、関数合成、ラムダ式、不変データなど、関数型プログラミングの基本原則に従います。 ### [](#純粋関数)純粋関数 プログラミングの純粋関数は、特定の入力に対して常に同じ出力を返す点で、数学の純粋関数に似ています。また、関数の実行は、結果を生成すること以外はプログラムの他の部分に影響しません。 DataWeave のすべての関数は純粋です。実行の結果を変更する可能性がある外部値には影響されません。 ### [](#第一級関数)第一級関数 DataWeave の純粋関数は、変数に保存され、パラメーターとして渡され、結果として返されるなど、他のデータ型で使用できる操作がサポートされているという点で「第一級関数」でもあります。 ### [](#高階関数)高階関数 プログラミングの高階関数も、数学での概念と同じです。これらの関数は、1 つ以上の関数をパラメーターとして取り、結果として関数を返します。高階関数の結果は、別の関数の入力パラメーターとして使用でき、​_関数合成_​の概念を可能にします。 ### [](#関数合成)関数合成 関数合成は、関数を組み合わせて複雑な操作を作成するプロセスです。この場合、1 つの関数を実行した結果は、次の関数の入力パラメーターとして機能します。DataWeave では、すべてのデータ変換は式のチェーンであり、必要に応じてデータを出力する最終結果を取得するために構成された関数です。 #### [](#関数合成の例)関数合成の例 次の例では、関数 ​`pluck`​ を使用してオブジェクトを配列にマップします。次に、結果の配列が関数 ​`filter`​ の入力として機能し、​`Role`​ が ​`ADMIN`​ の配列内の要素を選択します。マッピングプロセス中に、関数 ​`upper`​ は ​`role`​ 値を変換します。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- collaborators pluck ((value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }) filter ((item, index) -> item.Role == "ADMIN") ``` 次の例は同じ式を示していますが、前置表記を使用しています。 この構文は、​`filter`​ が ​`pluck`​ の結果を最初のパラメーターとして取る方法を視覚化するのに役立ちます。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- filter( pluck( collaborators, (value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }), (item, index) -> item.Role == "ADMIN") ``` 両方の式の出力は次のようになります。 ```dataweave [ { "Name": "Max", "Role": "ADMIN", "ID": "01" }, { "Name": "Astro", "Role": "ADMIN", "ID": "03" } ] ``` ### [](#ラムダ式)ラムダ式 ラムダ式は​_匿名関数_​または​_関数リテラル_​とも呼ばれ、識別子名を持たない関数定義であり、パラメーターとして高階関数に渡すことができます。ラムダ構文は、「特定の入力 (​`a`​ および ​`b`​) に基づいて次 (​`c`​) を実行する」ことを示す、​`(a,b) → c`​ 形式で表されます。 たとえば、DataWeave の ​`map`​ 関数は、パラメーターの 1 つとしてラムダ式 ​`map(Array, (item: T, index: Number) → R): Array`​ を受け入れます。 `map`​ は配列内の項目を反復処理し、パラメーターとして渡されるラムダ式を実行します。このラムダ式は、実行中の各配列要素の値 (​`item`​) とインデックス (​`index`​) を表す 2 つのパラメーター、および反復 ​`R`​ 中に実行する関数定義で構成されます。 次のコード例は、ラムダ式を受け取り、反復処理する配列内の各要素のインデックスと値を連結し、それらの値を新しい配列として返す、​`map`​ 関数を示しています。 ソース ```dataweave %dw 2.0 output application/json --- ["Max", "the", "Mule"] map (item, index) -> index ++ " - " ++ item ``` 出力 ```dataweave [ "0 - Max", "1 - the", "2 - Mule" ] ``` ラムダ式についての詳細は、​[「DataWeave での関数とラムダの操作」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-functions-lambdas)​を参照してください。 ### [](#不変データ)不変データ DataWeave では、変数は定義後に割り当てられた値を変更できません。これにより、関数の実行で予期しない結果が発生しなくなります。操作の結果の新しい値を保存する場合は、新しいデータ構造を宣言する必要があります。 ## [](#命令型プログラミングとの違い)命令型プログラミングとの違い オブジェクト指向プログラミング言語を使用した開発の経験がある場合、関数型プログラミングではデータと関数が分離され、ループ制御ステートメントは使用されないことを理解することが重要です。 ### [](#データと関数の分離)データと関数の分離 DataWeave は代入ステートメントを使用しないため、データは不変のままです。getter メソッドと setter メソッドはなく、データ構造と動作を含むクラスもないため、各関数は入力として指定したデータでのみ機能します。既存のデータ構造を変更する必要がある場合は、新しいコピーを作成し、関数を適用してその値を変更します。 ### [](#フローの制御ステートメント)フローの制御ステートメント DataWeave には ​`for`​ や ​`while`​ のようなループ制御ステートメントはありません。DataWeave では、反復を使用して手順を実行する方法を定義する代わりに、式を記述するときに現在の要件に焦点を絞ります。 たとえば、リストに変更を加えるには、​`map`​ 関数を使用してコレクション内の要素に変更を適用します。さらに、​`filter`​ 関数を使用してリストから特定の要素を削除したり、​`reduce`​ 関数を使用して配列のすべての値を 1 つの単一値にまとめたりすることができます。 ただし、​`if-else`​ ステートメントを使用して、式の実行時に条件を適用できます。 ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` #### [](#dataweave-の例)DataWeave の例 `map`​、​`reduce`​、および ​`filter`​ の使用例については、以下を参照してください。 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-conditional-list-reduction-via-function) - [個別のオブジェクトの項目のマージ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-merge-multiple-payloads) ## [](#関連情報)関連情報 - [Mule メッセージ構造](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-message) - [Mule イベント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-event) - [コアコンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-components) - [コネクタおよびモジュール](https://docs.mulesoft.com/connectors/) - [Transform Message コンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.3/transform-component-about) # DataWeave 言語ガイド DataWeave は、データ変換を実行するために Mule アプリケーションで使用される関数型言語です。 DataWeave を使用して独自の強力で複雑なデータ変換をコーディングする前に、プログラミングの基本概念と関数型プログラミング言語のコア機能を理解する必要があります。 DataWeave を使用すると、次のような関数型プログラミングの利点を活用できます。 - 同じ入力に対して常に同じ出力を生成する純粋関数により、デバッグが容易になる。 - 実行中に値が変更されない不変変数により、コードの安定性が増す。 - 純粋関数では結果の生成に入力パラメーターのみが使用されるため、関数シグネチャーによって関数の実行に影響する要素に関するその他の透明性を示す。 - 関数型言語はコードが簡潔明瞭であるため、保守が容易なコードが生成される。 - 式は必要な場合にのみ評価され、入力パラメーターが同じ場合に式が複数回評価されないように結果が保存されるため、必要呼び戦略 (​_遅延評価_​とも呼ばれる) によりパフォーマンスが向上する。 ## [](#dataweave-言語の基本概念)DataWeave 言語の基本概念 DataWeave には、ほとんどのプログラミング言語に共通する概念が組み込まれています。すべての DataWeave スクリプトは、変換の出力形式などの重要なディレクティブを含む​_ヘッダー_​、および結果を生成する式を含む​_本文_​で構成されます。 DataWeave では、​_単純型_​、​_複雑型_​、​_複合型_​など、さまざまな​_データ構造_​がサポートされます。ほとんどの DataWeave 変換では、​_データセレクター_​、​_データ演算子_​、および​_関数_​を​_配列_​や​_オブジェクト_​と一緒に使用して、データのマッピングまたは変換を実行します。 事前作成済み DataWeave ​_モジュール_​をインポートして、スクリプトで使用できる関数のセットを拡張することもできます。 ### [](#dataweave-スクリプトのアーキテクチャ)DataWeave スクリプトのアーキテクチャ DataWeave スクリプトは、3 つのダッシュ (​`---`​) で区切られた​_ヘッダー_​と​_本文_​で構成されます。 ヘッダーには、言語ディレクティブ (​`import`​ など) が含まれ、変換の出力形式を定義し、変数および関数の宣言を含めることもできます。 本文には、結果の出力を生成する式 (通常はデータマッピングまたは変換) が含まれます。 次に、基本的な DataWeave 変換の例を示します。 ```dataweave %dw 2.0 output application/json --- payload ``` ### [](#データ型)データ型 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。 型システムを使用すると、変数と関数パラメーターに制約を適用できます。サポートされるデータ型には、​`String`​、​`Boolean`​、​`Number`​、​`Date`​ などの単純型、および ​`Array`​、​`Object`​、​`Any`​ などの複合型と複雑型が含まれます。 サポートされるすべてのデータ型の完全なリストについては、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-type-system)​を参照してください。 ### [](#データセレクター)データセレクター データセレクターを使用すると、データ構造内の項目にアクセスできるため、DataWeave スクリプトの実行中に作成されたペイロードまたはその他の変数からデータを取得できます。 異なる種別のセレクターには、構造からデータを抽出するために使用できるさまざまなオプションがあります。 たとえば、​_単一値_​セレクター ​`payload.userName`​ を使用して単一値 ​`userName`​ を取得できます。​`userName`​ は、入力メッセージの実際のキーを表します。 データセレクターとその使用法の完全なリストについては、​[「セレクター」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors)​を参照してください。 ### [](#関数)関数 関数は、アプリケーションで関数がコールされたときに実行される操作のグループを含むコードブロックです。関数は、さまざまなパラメーターを入力として受け入れ、関数で定義された操作でそれらを使用できます。さらに、すべての関数は処理の終了後に値を返し、この値を別の関数の入力として使用できます。 コンポーネント (Transform Message コンポーネントや Set Payload コンポーネント) で記述する各 DataWeave スクリプトは、独立したプログラムとして機能します。つまり、すべての関数の定義とコールは、コンポーネントで定義されたスクリプトに固有です。 関数定義についての詳細は、​[「DataWeave 関数の定義」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-functions)​を参照してください。 #### [](#関数定義と関数コール)関数定義と関数コール DataWeave を使用して、スクリプトのヘッダーで​[独自の関数を定義](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-functions)​し、関数コール時に実行される操作を定義するプロセスのブループリントを作成できます。​[DataWeave のマッピングおよびモジュールファイル](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-create-module)​で定義することもできます。 DataWeave 式から関数を​_コール_​する場合、スクリプトの実行の正確な時点で、その関数で定義されたすべての操作を実行するように DataWeave に指示することになります。 たとえば、​`upper`​ は String モジュールで定義された組み込み関数です。この関数をコールして、テキスト値を大文字に変換できます。また、セレクターを使用してペイロードから値を取得し、この値を入力パラメーター ​`upper(payload.someKey)`​ として ​`upper()`​ 関数コールを実行することもできます。 DataWeave では、関数コールの​_前置_​表記 (​`function (param1, param2)`​) と​_中置_​表記 (​`param1 function param2`​) の両方がサポートされます。中置表記は、2 つのパラメーターのみを受け入れる関数でのみ使用できます。 [「関数シグネチャー」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions#function_signatures)​も参照してください。 ### [](#データ演算子)データ演算子 データ演算子は、データの操作を実行して結果を生成できるようにする記号です。DataWeave では、数学演算子 (​`` `​、​`-`​、​`/`​、​`*`​)、比較演算子 (​`<`​、​`>`​、​`⇐+ ``​、​`>=`​、​`==`​、​`~=`​)、論理演算子 (​`not`​、​`!`​、​`and`​、​`or`​) など、ほとんどのプログラミング言語で一般的な演算子がサポートされています。 DataWeave では次の演算子もサポートされています。 - 追加 (​`<<`​、​`+`​)、先頭に追加 (​`>>`​)、および削除 (​`-`​)。配列内のデータを管理できます。 - スコープおよびフローコントロール演算子 (​`do`​、​`using`​、​`if`​、​`else`​)。新しい変数および関数を宣言可能なスコープを作成したり、条件に基づいて式を実行したりできます。 - 更新 (​`update`​)。データ構造の特定の項目を更新できます。 サポートされる演算子、その使用法、および例の完全なリストについては、​[「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-operators)​を参照してください。 #### [](#関数モジュールのインポート)関数モジュールのインポート デフォルトでは、DataWeave スクリプトは ​`dw::Core`​ 関数モジュールをインポートします。異なるモジュールの関数を使用するには、​`import`​ ディレクティブを追加してモジュールをスクリプトにインポートします。 `import`​ ディレクティブの使用については、​[「DataWeave リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions)​を参照してください。 ### [](#配列)配列 配列は、サポートされる DataWeave 型の要素をいくつでも含めることができるデータ構造です。配列を宣言するには、括弧 (​`[`​ および ​`]`​) を使用して要素のカンマ区切りのリストを囲みます (​`[1,2,3]`​ など)。 配列では、条件付き要素 (​`[(value1) if condition]`​など) を定義する条件付きロジックの適用もサポートされます。たとえば、式 ​`[(1) if true, (2) if false, (3) if payload != null]`​ は配列 ​`[1,3]`​ を定義します (​`payload`​ が ​`null`​ でない場合)。 ### [](#オブジェクト)オブジェクト オブジェクトは、0 個以上の ​`Key`​ と ​`value`​ のペアのコレクションです。 - `Key`​: 次の要素で形成されます。 - `Name`​: ローカル名としての ​`String`​ 値と省略可能な ​`Namespace`​ で構成されます。 - `Attributes`​: 0 個以上の ​`Name:value`​ ペアのコレクション。​`value`​ には使用可能な任意の値を指定できます。 - `Value`​: 別のオブジェクト、関数コール、または配列を含む、サポートされる任意の種別で構成されます。 オブジェクトを宣言するには、括弧 (​`{`​ および ​`}`​) を使用して ​`Key:value`​ ペアのカンマ区切りのリストを囲みます。 ```dataweave { keyName @(keyAttributeName :"keyAttributeValue"): "value", User @(role:"admin"): upper("max the mule"), myArray: [1,2,3] } ``` オブジェクトでは、条件付き要素の定義もサポートされています。 ```dataweave { (userName: name) if !isBlank(name), (userRole: role) if !isBlank(role) } ``` ## [](#関数型プログラミングの原則)関数型プログラミングの原則 関数型プログラミングのパラダイムにより、開発者は純粋関数合成と不変データを使用してアプリケーションを構築できます。関数型プログラミングは宣言型であるため、DataWeave の関数はプログラムの状態を変更する命令ステートメントではなく、値を返す単なる式です。 DataWeave は、純粋関数、第一級関数、高階関数、関数合成、ラムダ式、不変データなど、関数型プログラミングの基本原則に従います。 ### [](#純粋関数)純粋関数 プログラミングの純粋関数は、特定の入力に対して常に同じ出力を返す点で、数学の純粋関数に似ています。また、関数の実行は、結果を生成すること以外はプログラムの他の部分に影響しません。 DataWeave のすべての関数は純粋です。実行の結果を変更する可能性がある外部値には影響されません。 ### [](#第一級関数)第一級関数 DataWeave の純粋関数は、変数に保存され、パラメーターとして渡され、結果として返されるなど、他のデータ型で使用できる操作がサポートされているという点で「第一級関数」でもあります。 ### [](#高階関数)高階関数 プログラミングの高階関数も、数学での概念と同じです。これらの関数は、1 つ以上の関数をパラメーターとして取り、結果として関数を返します。高階関数の結果は、別の関数の入力パラメーターとして使用でき、​_関数合成_​の概念を可能にします。 ### [](#関数合成)関数合成 関数合成は、関数を組み合わせて複雑な操作を作成するプロセスです。この場合、1 つの関数を実行した結果は、次の関数の入力パラメーターとして機能します。DataWeave では、すべてのデータ変換は式のチェーンであり、必要に応じてデータを出力する最終結果を取得するために構成された関数です。 #### [](#関数合成の例)関数合成の例 次の例では、関数 ​`pluck`​ を使用してオブジェクトを配列にマップします。次に、結果の配列が関数 ​`filter`​ の入力として機能し、​`Role`​ が ​`ADMIN`​ の配列内の要素を選択します。マッピングプロセス中に、関数 ​`upper`​ は ​`role`​ 値を変換します。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- collaborators pluck ((value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }) filter ((item, index) -> item.Role == "ADMIN") ``` 次の例は同じ式を示していますが、前置表記を使用しています。 この構文は、​`filter`​ が ​`pluck`​ の結果を最初のパラメーターとして取る方法を視覚化するのに役立ちます。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- filter( pluck( collaborators, (value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }), (item, index) -> item.Role == "ADMIN") ``` 両方の式の出力は次のようになります。 ```dataweave [ { "Name": "Max", "Role": "ADMIN", "ID": "01" }, { "Name": "Astro", "Role": "ADMIN", "ID": "03" } ] ``` ### [](#ラムダ式)ラムダ式 ラムダ式は​_匿名関数_​または​_関数リテラル_​とも呼ばれ、識別子名を持たない関数定義であり、パラメーターとして高階関数に渡すことができます。ラムダ構文は、「特定の入力 (​`a`​ および ​`b`​) に基づいて次 (​`c`​) を実行する」ことを示す、​`(a,b) → c`​ 形式で表されます。 たとえば、DataWeave の ​`map`​ 関数は、パラメーターの 1 つとしてラムダ式 ​`map(Array, (item: T, index: Number) → R): Array`​ を受け入れます。 `map`​ は配列内の項目を反復処理し、パラメーターとして渡されるラムダ式を実行します。このラムダ式は、実行中の各配列要素の値 (​`item`​) とインデックス (​`index`​) を表す 2 つのパラメーター、および反復 ​`R`​ 中に実行する関数定義で構成されます。 次のコード例は、ラムダ式を受け取り、反復処理する配列内の各要素のインデックスと値を連結し、それらの値を新しい配列として返す、​`map`​ 関数を示しています。 ソース ```dataweave %dw 2.0 output application/json --- ["Max", "the", "Mule"] map (item, index) -> index ++ " - " ++ item ``` 出力 ```dataweave [ "0 - Max", "1 - the", "2 - Mule" ] ``` ラムダ式についての詳細は、​[「DataWeave での関数とラムダの操作」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-functions-lambdas)​を参照してください。 ### [](#不変データ)不変データ DataWeave では、変数は定義後に割り当てられた値を変更できません。これにより、関数の実行で予期しない結果が発生しなくなります。操作の結果の新しい値を保存する場合は、新しいデータ構造を宣言する必要があります。 ## [](#命令型プログラミングとの違い)命令型プログラミングとの違い オブジェクト指向プログラミング言語を使用した開発の経験がある場合、関数型プログラミングではデータと関数が分離され、ループ制御ステートメントは使用されないことを理解することが重要です。 ### [](#データと関数の分離)データと関数の分離 DataWeave は代入ステートメントを使用しないため、データは不変のままです。getter メソッドと setter メソッドはなく、データ構造と動作を含むクラスもないため、各関数は入力として指定したデータでのみ機能します。既存のデータ構造を変更する必要がある場合は、新しいコピーを作成し、関数を適用してその値を変更します。 ### [](#フローの制御ステートメント)フローの制御ステートメント DataWeave には ​`for`​ や ​`while`​ のようなループ制御ステートメントはありません。DataWeave では、反復を使用して手順を実行する方法を定義する代わりに、式を記述するときに現在の要件に焦点を絞ります。 たとえば、リストに変更を加えるには、​`map`​ 関数を使用してコレクション内の要素に変更を適用します。さらに、​`filter`​ 関数を使用してリストから特定の要素を削除したり、​`reduce`​ 関数を使用して配列のすべての値を 1 つの単一値にまとめたりすることができます。 ただし、​`if-else`​ ステートメントを使用して、式の実行時に条件を適用できます。 ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` #### [](#dataweave-の例)DataWeave の例 `map`​、​`reduce`​、および ​`filter`​ の使用例については、以下を参照してください。 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-conditional-list-reduction-via-function) - [個別のオブジェクトの項目のマージ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-merge-multiple-payloads) ## [](#関連情報)関連情報 - [Mule メッセージ構造](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message) - [Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [コネクタおよびモジュール](https://docs.mulesoft.com/connectors/) - [Transform Message コンポーネント](https://docs.mulesoft.com/mule-runtime/latest/transform-component-about) # DataWeave 言語ガイド DataWeave は、データ変換を実行するために Mule アプリケーションで使用される関数型言語です。 DataWeave を使用して独自の強力で複雑なデータ変換をコーディングする前に、プログラミングの基本概念と関数型プログラミング言語のコア機能を理解する必要があります。 DataWeave を使用すると、次のような関数型プログラミングの利点を活用できます。 - 同じ入力に対して常に同じ出力を生成する純粋関数により、デバッグが容易になる。 - 実行中に値が変更されない不変変数により、コードの安定性が増す。 - 純粋関数では結果の生成に入力パラメーターのみが使用されるため、関数シグネチャーによって関数の実行に影響する要素に関するその他の透明性を示す。 - 関数型言語はコードが簡潔明瞭であるため、保守が容易なコードが生成される。 - 式は必要な場合にのみ評価され、入力パラメーターが同じ場合に式が複数回評価されないように結果が保存されるため、必要呼び戦略 (​_遅延評価_​とも呼ばれる) によりパフォーマンスが向上する。 ## [](#dataweave-言語の基本概念)DataWeave 言語の基本概念 DataWeave には、ほとんどのプログラミング言語に共通する概念が組み込まれています。すべての DataWeave スクリプトは、変換の出力形式などの重要なディレクティブを含む​_ヘッダー_​、および結果を生成する式を含む​_本文_​で構成されます。 DataWeave では、​_単純型_​、​_複雑型_​、​_複合型_​など、さまざまな​_データ構造_​がサポートされます。ほとんどの DataWeave 変換では、​_データセレクター_​、​_データ演算子_​、および​_関数_​を​_配列_​や​_オブジェクト_​と一緒に使用して、データのマッピングまたは変換を実行します。 事前作成済み DataWeave ​_モジュール_​をインポートして、スクリプトで使用できる関数のセットを拡張することもできます。 ### [](#dataweave-スクリプトのアーキテクチャ)DataWeave スクリプトのアーキテクチャ DataWeave スクリプトは、3 つのダッシュ (​`---`​) で区切られた​_ヘッダー_​と​_本文_​で構成されます。 ヘッダーには、言語ディレクティブ (​`import`​ など) が含まれ、変換の出力形式を定義し、変数および関数の宣言を含めることもできます。 本文には、結果の出力を生成する式 (通常はデータマッピングまたは変換) が含まれます。 次に、基本的な DataWeave 変換の例を示します。 ```dataweave %dw 2.0 output application/json --- payload ``` ### [](#データ型)データ型 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。 型システムを使用すると、変数と関数パラメーターに制約を適用できます。サポートされるデータ型には、​`String`​、​`Boolean`​、​`Number`​、​`Date`​ などの単純型、および ​`Array`​、​`Object`​、​`Any`​ などの複合型と複雑型が含まれます。 サポートされるすべてのデータ型の完全なリストについては、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-system)​を参照してください。 ### [](#データセレクター)データセレクター データセレクターを使用すると、データ構造内の項目にアクセスできるため、DataWeave スクリプトの実行中に作成されたペイロードまたはその他の変数からデータを取得できます。 異なる種別のセレクターには、構造からデータを抽出するために使用できるさまざまなオプションがあります。 たとえば、​_単一値_​セレクター ​`payload.userName`​ を使用して単一値 ​`userName`​ を取得できます。​`userName`​ は、入力メッセージの実際のキーを表します。 データセレクターとその使用法の完全なリストについては、​[「セレクター」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors)​を参照してください。 ### [](#関数)関数 関数は、アプリケーションで関数がコールされたときに実行される操作のグループを含むコードブロックです。関数は、さまざまなパラメーターを入力として受け入れ、関数で定義された操作でそれらを使用できます。さらに、すべての関数は処理の終了後に値を返し、この値を別の関数の入力として使用できます。 コンポーネント (Transform Message コンポーネントや Set Payload コンポーネント) で記述する各 DataWeave スクリプトは、独立したプログラムとして機能します。つまり、すべての関数の定義とコールは、コンポーネントで定義されたスクリプトに固有です。 関数定義についての詳細は、​[「DataWeave 関数の定義」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-functions)​を参照してください。 #### [](#関数定義と関数コール)関数定義と関数コール DataWeave を使用して、スクリプトのヘッダーで​[独自の関数を定義](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-functions)​し、関数コール時に実行される操作を定義するプロセスのブループリントを作成できます。​[DataWeave のマッピングおよびモジュールファイル](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-create-module)​で定義することもできます。 DataWeave 式から関数を​_コール_​する場合、スクリプトの実行の正確な時点で、その関数で定義されたすべての操作を実行するように DataWeave に指示することになります。 たとえば、​`upper`​ は String モジュールで定義された組み込み関数です。この関数をコールして、テキスト値を大文字に変換できます。また、セレクターを使用してペイロードから値を取得し、この値を入力パラメーター ​`upper(payload.someKey)`​ として ​`upper()`​ 関数コールを実行することもできます。 DataWeave では、関数コールの​_前置_​表記 (​`function (param1, param2)`​) と​_中置_​表記 (​`param1 function param2`​) の両方がサポートされます。中置表記は、2 つのパラメーターのみを受け入れる関数でのみ使用できます。 [「関数シグネチャー」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions#function_signatures)​も参照してください。 ### [](#データ演算子)データ演算子 データ演算子は、データの操作を実行して結果を生成できるようにする記号です。DataWeave では、数学演算子 (​`` `​、​`-`​、​`/`​、​`*`​)、比較演算子 (​`<`​、​`>`​、​`⇐+ ``​、​`>=`​、​`==`​、​`~=`​)、論理演算子 (​`not`​、​`!`​、​`and`​、​`or`​) など、ほとんどのプログラミング言語で一般的な演算子がサポートされています。 DataWeave では次の演算子もサポートされています。 - 追加 (​`<<`​<<\`, ​`+`​)、先頭に追加 (`>>​`\>>\`​、削除 (​`-`​)。配列内のデータを管理できます。 - スコープおよびフローコントロール演算子 (​`do`​、​`using`​、​`if`​、​`else`​)。新しい変数および関数を宣言可能なスコープを作成したり、条件に基づいて式を実行したりできます。 - 更新 (​`update`​)。データ構造の特定の項目を更新できます。 サポートされる演算子、その使用法、および例の完全なリストについては、​[「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-operators)​を参照してください。 #### [](#関数モジュールのインポート)関数モジュールのインポート デフォルトでは、DataWeave スクリプトは ​`dw::Core`​ 関数モジュールをインポートします。異なるモジュールの関数を使用するには、​`import`​ ディレクティブを追加してモジュールをスクリプトにインポートします。 `import`​ ディレクティブの使用については、​[「DataWeave リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions)​を参照してください。 ### [](#配列)配列 配列は、サポートされる DataWeave 型の要素をいくつでも含めることができるデータ構造です。配列を宣言するには、括弧 (​`[`​ および ​`]`​) を使用して要素のカンマ区切りのリストを囲みます (​`[1,2,3]`​ など)。 配列では、条件付き要素 (​`[(value1) if condition]`​など) を定義する条件付きロジックの適用もサポートされます。たとえば、式 ​`[(1) if true, (2) if false, (3) if payload != null]`​ は配列 ​`[1,3]`​ を定義します (​`payload`​ が ​`null`​ でない場合)。 ### [](#オブジェクト)オブジェクト オブジェクトは、0 個以上の ​`Key`​ と ​`value`​ のペアのコレクションです。 - `Key`​: 次の要素で形成されます。 - `Name`​: ローカル名としての ​`String`​ 値と省略可能な ​`Namespace`​ で構成されます。 - `Attributes`​: 0 個以上の ​`Name:value`​ ペアのコレクション。​`value`​ には使用可能な任意の値を指定できます。 - `Value`​: 別のオブジェクト、関数コール、または配列を含む、サポートされる任意の種別で構成されます。 オブジェクトを宣言するには、括弧 (​`{`​ および ​`}`​) を使用して ​`Key:value`​ ペアのカンマ区切りのリストを囲みます。 ```dataweave { keyName @(keyAttributeName :"keyAttributeValue"): "value", User @(role:"admin"): upper("max the mule"), myArray: [1,2,3] } ``` オブジェクトでは、条件付き要素の定義もサポートされています。 ```dataweave { (userName: name) if !isBlank(name), (userRole: role) if !isBlank(role) } ``` ## [](#関数型プログラミングの原則)関数型プログラミングの原則 関数型プログラミングのパラダイムにより、開発者は純粋関数合成と不変データを使用してアプリケーションを構築できます。関数型プログラミングは宣言型であるため、DataWeave の関数はプログラムの状態を変更する命令ステートメントではなく、値を返す単なる式です。 DataWeave は、純粋関数、第一級関数、高階関数、関数合成、ラムダ式、不変データなど、関数型プログラミングの基本原則に従います。 ### [](#純粋関数)純粋関数 プログラミングの純粋関数は、特定の入力に対して常に同じ出力を返す点で、数学の純粋関数に似ています。また、関数の実行は、結果を生成すること以外はプログラムの他の部分に影響しません。 DataWeave のすべての関数は純粋です。実行の結果を変更する可能性がある外部値には影響されません。 ### [](#第一級関数)第一級関数 DataWeave の純粋関数は、変数に保存され、パラメーターとして渡され、結果として返されるなど、他のデータ型で使用できる操作がサポートされているという点で「第一級関数」でもあります。 ### [](#高階関数)高階関数 プログラミングの高階関数も、数学での概念と同じです。これらの関数は、1 つ以上の関数をパラメーターとして取り、結果として関数を返します。高階関数の結果は、別の関数の入力パラメーターとして使用でき、​_関数合成_​の概念を可能にします。 ### [](#関数合成)関数合成 関数合成は、関数を組み合わせて複雑な操作を作成するプロセスです。この場合、1 つの関数を実行した結果は、次の関数の入力パラメーターとして機能します。DataWeave では、すべてのデータ変換は式のチェーンであり、必要に応じてデータを出力する最終結果を取得するために構成された関数です。 #### [](#関数合成の例)関数合成の例 次の例では、関数 ​`pluck`​ を使用してオブジェクトを配列にマップします。次に、結果の配列が関数 ​`filter`​ の入力として機能し、​`Role`​ が ​`ADMIN`​ の配列内の要素を選択します。マッピングプロセス中に、関数 ​`upper`​ は ​`role`​ 値を変換します。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- collaborators pluck ((value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }) filter ((item, index) -> item.Role == "ADMIN") ``` 次の例は同じ式を示していますが、前置表記を使用しています。 この構文は、​`filter`​ が ​`pluck`​ の結果を最初のパラメーターとして取る方法を視覚化するのに役立ちます。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- filter( pluck( collaborators, (value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }), (item, index) -> item.Role == "ADMIN") ``` 両方の式の出力は次のようになります。 ```dataweave [ { "Name": "Max", "Role": "ADMIN", "ID": "01" }, { "Name": "Astro", "Role": "ADMIN", "ID": "03" } ] ``` ### [](#ラムダ式)ラムダ式 ラムダ式は​_匿名関数_​または​_関数リテラル_​とも呼ばれ、識別子名を持たない関数定義であり、パラメーターとして高階関数に渡すことができます。ラムダ構文は、「特定の入力 (​`a`​ および ​`b`​) に基づいて次 (​`c`​) を実行する」ことを示す、​`(a,b) → c`​ 形式で表されます。 たとえば、DataWeave の ​`map`​ 関数は、パラメーターの 1 つとしてラムダ式 ​`map(Array, (item: T, index: Number) → R): Array`​ を受け入れます。 `map`​ は配列内の項目を反復処理し、パラメーターとして渡されるラムダ式を実行します。このラムダ式は、実行中の各配列要素の値 (​`item`​) とインデックス (​`index`​) を表す 2 つのパラメーター、および反復 ​`R`​ 中に実行する関数定義で構成されます。 次のコード例は、ラムダ式を受け取り、反復処理する配列内の各要素のインデックスと値を連結し、それらの値を新しい配列として返す、​`map`​ 関数を示しています。 ソース ```dataweave %dw 2.0 output application/json --- ["Max", "the", "Mule"] map (item, index) -> index ++ " - " ++ item ``` 出力 ```dataweave [ "0 - Max", "1 - the", "2 - Mule" ] ``` ラムダ式についての詳細は、​[「DataWeave での関数とラムダの操作」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-functions-lambdas)​を参照してください。 ### [](#不変データ)不変データ DataWeave では、変数は定義後に割り当てられた値を変更できません。これにより、関数の実行で予期しない結果が発生しなくなります。操作の結果の新しい値を保存する場合は、新しいデータ構造を宣言する必要があります。 ## [](#命令型プログラミングとの違い)命令型プログラミングとの違い オブジェクト指向プログラミング言語を使用した開発の経験がある場合、関数型プログラミングではデータと関数が分離され、ループ制御ステートメントは使用されないことを理解することが重要です。 ### [](#データと関数の分離)データと関数の分離 DataWeave は代入ステートメントを使用しないため、データは不変のままです。getter メソッドと setter メソッドはなく、データ構造と動作を含むクラスもないため、各関数は入力として指定したデータでのみ機能します。既存のデータ構造を変更する必要がある場合は、新しいコピーを作成し、関数を適用してその値を変更します。 ### [](#フローの制御ステートメント)フローの制御ステートメント DataWeave には ​`for`​ や ​`while`​ のようなループ制御ステートメントはありません。DataWeave では、反復を使用して手順を実行する方法を定義する代わりに、式を記述するときに現在の要件に焦点を絞ります。 たとえば、リストに変更を加えるには、​`map`​ 関数を使用してコレクション内の要素に変更を適用します。さらに、​`filter`​ 関数を使用してリストから特定の要素を削除したり、​`reduce`​ 関数を使用して配列のすべての値を 1 つの単一値にまとめたりすることができます。 ただし、​`if-else`​ ステートメントを使用して、式の実行時に条件を適用できます。 ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` #### [](#dataweave-の例)DataWeave の例 `map`​、​`reduce`​、および ​`filter`​ の使用例については、以下を参照してください。 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-conditional-list-reduction-via-function) - [個別のオブジェクトの項目のマージ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-merge-multiple-payloads) ## [](#関連情報)関連情報 - [Mule メッセージ構造](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message) - [Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [コネクタおよびモジュール](https://docs.mulesoft.com/connectors/) - [Transform Message コンポーネント](https://docs.mulesoft.com/mule-runtime/latest/transform-component-about) # DataWeave 言語ガイド DataWeave は、データ変換を実行するために Mule アプリケーションで使用される関数型言語です。 DataWeave を使用して独自の強力で複雑なデータ変換をコーディングする前に、プログラミングの基本概念と関数型プログラミング言語のコア機能を理解する必要があります。 DataWeave を使用すると、次のような関数型プログラミングの利点を活用できます。 - 同じ入力に対して常に同じ出力を生成する純粋関数により、デバッグが容易になる。 - 実行中に値が変更されない不変変数により、コードの安定性が増す。 - 純粋関数では結果の生成に入力パラメーターのみが使用されるため、関数シグネチャーによって関数の実行に影響する要素に関するその他の透明性を示す。 - 関数型言語はコードが簡潔明瞭であるため、保守が容易なコードが生成される。 - 式は必要な場合にのみ評価され、入力パラメーターが同じ場合に式が複数回評価されないように結果が保存されるため、必要呼び戦略 (​_遅延評価_​とも呼ばれる) によりパフォーマンスが向上する。 ## [](#dataweave-言語の基本概念)DataWeave 言語の基本概念 DataWeave には、ほとんどのプログラミング言語に共通する概念が組み込まれています。すべての DataWeave スクリプトは、変換の出力形式などの重要なディレクティブを含む​_ヘッダー_​、および結果を生成する式を含む​_本文_​で構成されます。 DataWeave では、​_単純型_​、​_複雑型_​、​_複合型_​など、さまざまな​_データ構造_​がサポートされます。ほとんどの DataWeave 変換では、​_データセレクター_​、​_データ演算子_​、および​_関数_​を​_配列_​や​_オブジェクト_​と一緒に使用して、データのマッピングまたは変換を実行します。 事前作成済み DataWeave ​_モジュール_​をインポートして、スクリプトで使用できる関数のセットを拡張することもできます。 ### [](#dataweave-スクリプトのアーキテクチャ)DataWeave スクリプトのアーキテクチャ DataWeave スクリプトは、3 つのダッシュ (​`---`​) で区切られた​_ヘッダー_​と​_本文_​で構成されます。 ヘッダーには、言語ディレクティブ (​`import`​ など) が含まれ、変換の出力形式を定義し、変数および関数の宣言を含めることもできます。 本文には、結果の出力を生成する式 (通常はデータマッピングまたは変換) が含まれます。 次に、基本的な DataWeave 変換の例を示します。 ```dataweave %dw 2.0 output application/json --- payload ``` ### [](#データ型)データ型 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。 型システムを使用すると、変数と関数パラメーターに制約を適用できます。サポートされるデータ型には、​`String`​、​`Boolean`​、​`Number`​、​`Date`​ などの単純型、および ​`Array`​、​`Object`​、​`Any`​ などの複合型と複雑型が含まれます。 サポートされるすべてのデータ型の完全なリストについては、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-system)​を参照してください。 ### [](#データセレクター)データセレクター データセレクターを使用すると、データ構造内の項目にアクセスできるため、DataWeave スクリプトの実行中に作成されたペイロードまたはその他の変数からデータを取得できます。 異なる種別のセレクターには、構造からデータを抽出するために使用できるさまざまなオプションがあります。 たとえば、​_単一値_​セレクター ​`payload.userName`​ を使用して単一値 ​`userName`​ を取得できます。​`userName`​ は、入力メッセージの実際のキーを表します。 データセレクターとその使用法の完全なリストについては、​[「セレクター」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors)​を参照してください。 ### [](#関数)関数 関数は、アプリケーションで関数がコールされたときに実行される操作のグループを含むコードブロックです。関数は、さまざまなパラメーターを入力として受け入れ、関数で定義された操作でそれらを使用できます。さらに、すべての関数は処理の終了後に値を返し、この値を別の関数の入力として使用できます。 コンポーネント (Transform Message コンポーネントや Set Payload コンポーネント) で記述する各 DataWeave スクリプトは、独立したプログラムとして機能します。つまり、すべての関数の定義とコールは、コンポーネントで定義されたスクリプトに固有です。 関数定義についての詳細は、​[「DataWeave 関数の定義」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-functions)​を参照してください。 #### [](#関数定義と関数コール)関数定義と関数コール DataWeave を使用して、スクリプトのヘッダーで​[独自の関数を定義](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-functions)​し、関数コール時に実行される操作を定義するプロセスのブループリントを作成できます。​[DataWeave のマッピングおよびモジュールファイル](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-create-module)​で定義することもできます。 DataWeave 式から関数を​_コール_​する場合、スクリプトの実行の正確な時点で、その関数で定義されたすべての操作を実行するように DataWeave に指示することになります。 たとえば、​`upper`​ は String モジュールで定義された組み込み関数です。この関数をコールして、テキスト値を大文字に変換できます。また、セレクターを使用してペイロードから値を取得し、この値を入力パラメーター ​`upper(payload.someKey)`​ として ​`upper()`​ 関数コールを実行することもできます。 DataWeave では、関数コールの​_前置_​表記 (​`function (param1, param2)`​) と​_中置_​表記 (​`param1 function param2`​) の両方がサポートされます。中置表記は、2 つのパラメーターのみを受け入れる関数でのみ使用できます。 [「関数シグネチャー」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions#function_signatures)​も参照してください。 ### [](#データ演算子)データ演算子 データ演算子は、データの操作を実行して結果を生成できるようにする記号です。DataWeave では、数学演算子 (​`` `​、​`-`​、​`/`​、​`*`​)、比較演算子 (​`<`​、​`>`​、​`⇐+ ``​、​`>=`​、​`==`​、​`~=`​)、論理演算子 (​`not`​、​`!`​、​`and`​、​`or`​) など、ほとんどのプログラミング言語で一般的な演算子がサポートされています。 DataWeave では次の演算子もサポートされています。 - 追加 (​`<<`​<<\`, ​`+`​)、先頭に追加 (`>>​`\>>\`​、削除 (​`-`​)。配列内のデータを管理できます。 - スコープおよびフローコントロール演算子 (​`do`​、​`using`​、​`if`​、​`else`​)。新しい変数および関数を宣言可能なスコープを作成したり、条件に基づいて式を実行したりできます。 - 更新 (​`update`​)。データ構造の特定の項目を更新できます。 サポートされる演算子、その使用法、および例の完全なリストについては、​[「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-operators)​を参照してください。 #### [](#関数モジュールのインポート)関数モジュールのインポート デフォルトでは、DataWeave スクリプトは ​`dw::Core`​ 関数モジュールをインポートします。異なるモジュールの関数を使用するには、​`import`​ ディレクティブを追加してモジュールをスクリプトにインポートします。 `import`​ ディレクティブの使用については、​[「DataWeave リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions)​を参照してください。 ### [](#配列)配列 配列は、サポートされる DataWeave 型の要素をいくつでも含めることができるデータ構造です。配列を宣言するには、括弧 (​`[`​ および ​`]`​) を使用して要素のカンマ区切りのリストを囲みます (​`[1,2,3]`​ など)。 配列では、条件付き要素 (​`[(value1) if condition]`​など) を定義する条件付きロジックの適用もサポートされます。たとえば、式 ​`[(1) if true, (2) if false, (3) if payload != null]`​ は配列 ​`[1,3]`​ を定義します (​`payload`​ が ​`null`​ でない場合)。 ### [](#オブジェクト)オブジェクト オブジェクトは、0 個以上の ​`Key`​ と ​`value`​ のペアのコレクションです。 - `Key`​: 次の要素で形成されます。 - `Name`​: ローカル名としての ​`String`​ 値と省略可能な ​`Namespace`​ で構成されます。 - `Attributes`​: 0 個以上の ​`Name:value`​ ペアのコレクション。​`value`​ には使用可能な任意の値を指定できます。 - `Value`​: 別のオブジェクト、関数コール、または配列を含む、サポートされる任意の種別で構成されます。 オブジェクトを宣言するには、括弧 (​`{`​ および ​`}`​) を使用して ​`Key:value`​ ペアのカンマ区切りのリストを囲みます。 ```dataweave { keyName @(keyAttributeName :"keyAttributeValue"): "value", User @(role:"admin"): upper("max the mule"), myArray: [1,2,3] } ``` オブジェクトでは、条件付き要素の定義もサポートされています。 ```dataweave { (userName: name) if !isBlank(name), (userRole: role) if !isBlank(role) } ``` ## [](#関数型プログラミングの原則)関数型プログラミングの原則 関数型プログラミングのパラダイムにより、開発者は純粋関数合成と不変データを使用してアプリケーションを構築できます。関数型プログラミングは宣言型であるため、DataWeave の関数はプログラムの状態を変更する命令ステートメントではなく、値を返す単なる式です。 DataWeave は、純粋関数、第一級関数、高階関数、関数合成、ラムダ式、不変データなど、関数型プログラミングの基本原則に従います。 ### [](#純粋関数)純粋関数 プログラミングの純粋関数は、特定の入力に対して常に同じ出力を返す点で、数学の純粋関数に似ています。また、関数の実行は、結果を生成すること以外はプログラムの他の部分に影響しません。 DataWeave のすべての関数は純粋です。実行の結果を変更する可能性がある外部値には影響されません。 ### [](#第一級関数)第一級関数 DataWeave の純粋関数は、変数に保存され、パラメーターとして渡され、結果として返されるなど、他のデータ型で使用できる操作がサポートされているという点で「第一級関数」でもあります。 ### [](#高階関数)高階関数 プログラミングの高階関数も、数学での概念と同じです。これらの関数は、1 つ以上の関数をパラメーターとして取り、結果として関数を返します。高階関数の結果は、別の関数の入力パラメーターとして使用でき、​_関数合成_​の概念を可能にします。 ### [](#関数合成)関数合成 関数合成は、関数を組み合わせて複雑な操作を作成するプロセスです。この場合、1 つの関数を実行した結果は、次の関数の入力パラメーターとして機能します。DataWeave では、すべてのデータ変換は式のチェーンであり、必要に応じてデータを出力する最終結果を取得するために構成された関数です。 #### [](#関数合成の例)関数合成の例 次の例では、関数 ​`pluck`​ を使用してオブジェクトを配列にマップします。次に、結果の配列が関数 ​`filter`​ の入力として機能し、​`Role`​ が ​`ADMIN`​ の配列内の要素を選択します。マッピングプロセス中に、関数 ​`upper`​ は ​`role`​ 値を変換します。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- collaborators pluck ((value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }) filter ((item, index) -> item.Role == "ADMIN") ``` 次の例は同じ式を示していますが、前置表記を使用しています。 この構文は、​`filter`​ が ​`pluck`​ の結果を最初のパラメーターとして取る方法を視覚化するのに役立ちます。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- filter( pluck( collaborators, (value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }), (item, index) -> item.Role == "ADMIN") ``` 両方の式の出力は次のようになります。 ```dataweave [ { "Name": "Max", "Role": "ADMIN", "ID": "01" }, { "Name": "Astro", "Role": "ADMIN", "ID": "03" } ] ``` ### [](#ラムダ式)ラムダ式 ラムダ式は​_匿名関数_​または​_関数リテラル_​とも呼ばれ、識別子名を持たない関数定義であり、パラメーターとして高階関数に渡すことができます。ラムダ構文は、「特定の入力 (​`a`​ および ​`b`​) に基づいて次 (​`c`​) を実行する」ことを示す、​`(a,b) → c`​ 形式で表されます。 たとえば、DataWeave の ​`map`​ 関数は、パラメーターの 1 つとしてラムダ式 ​`map(Array, (item: T, index: Number) → R): Array`​ を受け入れます。 `map`​ は配列内の項目を反復処理し、パラメーターとして渡されるラムダ式を実行します。このラムダ式は、実行中の各配列要素の値 (​`item`​) とインデックス (​`index`​) を表す 2 つのパラメーター、および反復 ​`R`​ 中に実行する関数定義で構成されます。 次のコード例は、ラムダ式を受け取り、反復処理する配列内の各要素のインデックスと値を連結し、それらの値を新しい配列として返す、​`map`​ 関数を示しています。 ソース ```dataweave %dw 2.0 output application/json --- ["Max", "the", "Mule"] map (item, index) -> index ++ " - " ++ item ``` 出力 ```dataweave [ "0 - Max", "1 - the", "2 - Mule" ] ``` ラムダ式についての詳細は、​[「DataWeave での関数とラムダの操作」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-functions-lambdas)​を参照してください。 ### [](#不変データ)不変データ DataWeave では、変数は定義後に割り当てられた値を変更できません。これにより、関数の実行で予期しない結果が発生しなくなります。操作の結果の新しい値を保存する場合は、新しいデータ構造を宣言する必要があります。 ## [](#命令型プログラミングとの違い)命令型プログラミングとの違い オブジェクト指向プログラミング言語を使用した開発の経験がある場合、関数型プログラミングではデータと関数が分離され、ループ制御ステートメントは使用されないことを理解することが重要です。 ### [](#データと関数の分離)データと関数の分離 DataWeave は代入ステートメントを使用しないため、データは不変のままです。getter メソッドと setter メソッドはなく、データ構造と動作を含むクラスもないため、各関数は入力として指定したデータでのみ機能します。既存のデータ構造を変更する必要がある場合は、新しいコピーを作成し、関数を適用してその値を変更します。 ### [](#フローの制御ステートメント)フローの制御ステートメント DataWeave には ​`for`​ や ​`while`​ のようなループ制御ステートメントはありません。DataWeave では、反復を使用して手順を実行する方法を定義する代わりに、式を記述するときに現在の要件に焦点を絞ります。 たとえば、リストに変更を加えるには、​`map`​ 関数を使用してコレクション内の要素に変更を適用します。さらに、​`filter`​ 関数を使用してリストから特定の要素を削除したり、​`reduce`​ 関数を使用して配列のすべての値を 1 つの単一値にまとめたりすることができます。 ただし、​`if-else`​ ステートメントを使用して、式の実行時に条件を適用できます。 ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` #### [](#dataweave-の例)DataWeave の例 `map`​、​`reduce`​、および ​`filter`​ の使用例については、以下を参照してください。 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-conditional-list-reduction-via-function) - [個別のオブジェクトの項目のマージ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-merge-multiple-payloads) ## [](#関連情報)関連情報 - [Mule メッセージ構造](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message) - [Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [コネクタおよびモジュール](https://docs.mulesoft.com/connectors/) - [Transform Message コンポーネント](https://docs.mulesoft.com/mule-runtime/latest/transform-component-about) # DataWeave 言語ガイド DataWeave は、データ変換を実行するために Mule アプリケーションで使用される関数型言語です。 DataWeave を使用して独自の強力で複雑なデータ変換をコーディングする前に、プログラミングの基本概念と関数型プログラミング言語のコア機能を理解する必要があります。 DataWeave を使用すると、次のような関数型プログラミングの利点を活用できます。 - 同じ入力に対して常に同じ出力を生成する純粋関数により、デバッグが容易になる。 - 実行中に値が変更されない不変変数により、コードの安定性が増す。 - 純粋関数では結果の生成に入力パラメーターのみが使用されるため、関数シグネチャーによって関数の実行に影響する要素に関するその他の透明性を示す。 - 関数型言語はコードが簡潔明瞭であるため、保守が容易なコードが生成される。 - 式は必要な場合にのみ評価され、入力パラメーターが同じ場合に式が複数回評価されないように結果が保存されるため、必要呼び戦略 (​_遅延評価_​とも呼ばれる) によりパフォーマンスが向上する。 ## [](#dataweave-言語の基本概念)DataWeave 言語の基本概念 DataWeave には、ほとんどのプログラミング言語に共通する概念が組み込まれています。すべての DataWeave スクリプトは、変換の出力形式などの重要なディレクティブを含む​_ヘッダー_​、および結果を生成する式を含む​_本文_​で構成されます。 DataWeave では、​_単純型_​、​_複雑型_​、​_複合型_​など、さまざまな​_データ構造_​がサポートされます。ほとんどの DataWeave 変換では、​_データセレクター_​、​_データ演算子_​、および​_関数_​を​_配列_​や​_オブジェクト_​と一緒に使用して、データのマッピングまたは変換を実行します。 事前作成済み DataWeave ​_モジュール_​をインポートして、スクリプトで使用できる関数のセットを拡張することもできます。 ### [](#dataweave-スクリプトのアーキテクチャ)DataWeave スクリプトのアーキテクチャ DataWeave スクリプトは、3 つのダッシュ (​`---`​) で区切られた​_ヘッダー_​と​_本文_​で構成されます。 ヘッダーには、言語ディレクティブ (​`import`​ など) が含まれ、変換の出力形式を定義し、変数および関数の宣言を含めることもできます。 本文には、結果の出力を生成する式 (通常はデータマッピングまたは変換) が含まれます。 次に、基本的な DataWeave 変換の例を示します。 ```dataweave %dw 2.0 output application/json --- payload ``` ### [](#データ型)データ型 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。 型システムを使用すると、変数と関数パラメーターに制約を適用できます。サポートされるデータ型には、​`String`​、​`Boolean`​、​`Number`​、​`Date`​ などの単純型、および ​`Array`​、​`Object`​、​`Any`​ などの複合型と複雑型が含まれます。 サポートされるすべてのデータ型の完全なリストについては、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-system)​を参照してください。 ### [](#データセレクター)データセレクター データセレクターを使用すると、データ構造内の項目にアクセスできるため、DataWeave スクリプトの実行中に作成されたペイロードまたはその他の変数からデータを取得できます。 異なる種別のセレクターには、構造からデータを抽出するために使用できるさまざまなオプションがあります。 たとえば、​_単一値_​セレクター ​`payload.userName`​ を使用して単一値 ​`userName`​ を取得できます。​`userName`​ は、入力メッセージの実際のキーを表します。 データセレクターとその使用法の完全なリストについては、​[「セレクター」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors)​を参照してください。 ### [](#関数)関数 関数は、アプリケーションで関数がコールされたときに実行される操作のグループを含むコードブロックです。関数は、さまざまなパラメーターを入力として受け入れ、関数で定義された操作でそれらを使用できます。さらに、すべての関数は処理の終了後に値を返し、この値を別の関数の入力として使用できます。 コンポーネント (Transform Message コンポーネントや Set Payload コンポーネント) で記述する各 DataWeave スクリプトは、独立したプログラムとして機能します。つまり、すべての関数の定義とコールは、コンポーネントで定義されたスクリプトに固有です。 関数定義についての詳細は、​[「DataWeave 関数の定義」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-functions)​を参照してください。 #### [](#関数定義と関数コール)関数定義と関数コール DataWeave を使用して、スクリプトのヘッダーで​[独自の関数を定義](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-functions)​し、関数コール時に実行される操作を定義するプロセスのブループリントを作成できます。​[DataWeave のマッピングおよびモジュールファイル](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-create-module)​で定義することもできます。 DataWeave 式から関数を​_コール_​する場合、スクリプトの実行の正確な時点で、その関数で定義されたすべての操作を実行するように DataWeave に指示することになります。 たとえば、​`upper`​ は String モジュールで定義された組み込み関数です。この関数をコールして、テキスト値を大文字に変換できます。また、セレクターを使用してペイロードから値を取得し、この値を入力パラメーター ​`upper(payload.someKey)`​ として ​`upper()`​ 関数コールを実行することもできます。 DataWeave では、関数コールの​_前置_​表記 (​`function (param1, param2)`​) と​_中置_​表記 (​`param1 function param2`​) の両方がサポートされます。中置表記は、2 つのパラメーターのみを受け入れる関数でのみ使用できます。 [「関数シグネチャー」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions#function_signatures)​も参照してください。 ### [](#データ演算子)データ演算子 データ演算子は、データの操作を実行して結果を生成できるようにする記号です。DataWeave では、数学演算子 (​`` `​、​`-`​、​`/`​、​`*`​)、比較演算子 (​`<`​、​`>`​、​`⇐+ ``​、​`>=`​、​`==`​、​`~=`​)、論理演算子 (​`not`​、​`!`​、​`and`​、​`or`​) など、ほとんどのプログラミング言語で一般的な演算子がサポートされています。 DataWeave では次の演算子もサポートされています。 - 追加 (​`<<`​<<\`, ​`+`​)、先頭に追加 (`>>​`\>>\`​、削除 (​`-`​)。配列内のデータを管理できます。 - スコープおよびフローコントロール演算子 (​`do`​、​`using`​、​`if`​、​`else`​)。新しい変数および関数を宣言可能なスコープを作成したり、条件に基づいて式を実行したりできます。 - 更新 (​`update`​)。データ構造の特定の項目を更新できます。 サポートされる演算子、その使用法、および例の完全なリストについては、​[「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-operators)​を参照してください。 #### [](#関数モジュールのインポート)関数モジュールのインポート デフォルトでは、DataWeave スクリプトは ​`dw::Core`​ 関数モジュールをインポートします。異なるモジュールの関数を使用するには、​`import`​ ディレクティブを追加してモジュールをスクリプトにインポートします。 `import`​ ディレクティブの使用については、​[「DataWeave リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions)​を参照してください。 ### [](#配列)配列 配列は、サポートされる DataWeave 型の要素をいくつでも含めることができるデータ構造です。配列を宣言するには、括弧 (​`[`​ および ​`]`​) を使用して要素のカンマ区切りのリストを囲みます (​`[1,2,3]`​ など)。 配列では、条件付き要素 (​`[(value1) if condition]`​など) を定義する条件付きロジックの適用もサポートされます。たとえば、式 ​`[(1) if true, (2) if false, (3) if payload != null]`​ は配列 ​`[1,3]`​ を定義します (​`payload`​ が ​`null`​ でない場合)。 ### [](#オブジェクト)オブジェクト オブジェクトは、0 個以上の ​`Key`​ と ​`value`​ のペアのコレクションです。 - `Key`​: 次の要素で形成されます。 - `Name`​: ローカル名としての ​`String`​ 値と省略可能な ​`Namespace`​ で構成されます。 - `Attributes`​: 0 個以上の ​`Name:value`​ ペアのコレクション。​`value`​ には使用可能な任意の値を指定できます。 - `Value`​: 別のオブジェクト、関数コール、または配列を含む、サポートされる任意の種別で構成されます。 オブジェクトを宣言するには、括弧 (​`{`​ および ​`}`​) を使用して ​`Key:value`​ ペアのカンマ区切りのリストを囲みます。 ```dataweave { keyName @(keyAttributeName :"keyAttributeValue"): "value", User @(role:"admin"): upper("max the mule"), myArray: [1,2,3] } ``` オブジェクトでは、条件付き要素の定義もサポートされています。 ```dataweave { (userName: name) if !isBlank(name), (userRole: role) if !isBlank(role) } ``` ## [](#関数型プログラミングの原則)関数型プログラミングの原則 関数型プログラミングのパラダイムにより、開発者は純粋関数合成と不変データを使用してアプリケーションを構築できます。関数型プログラミングは宣言型であるため、DataWeave の関数はプログラムの状態を変更する命令ステートメントではなく、値を返す単なる式です。 DataWeave は、純粋関数、第一級関数、高階関数、関数合成、ラムダ式、不変データなど、関数型プログラミングの基本原則に従います。 ### [](#純粋関数)純粋関数 プログラミングの純粋関数は、特定の入力に対して常に同じ出力を返す点で、数学の純粋関数に似ています。また、関数の実行は、結果を生成すること以外はプログラムの他の部分に影響しません。 DataWeave のすべての関数は純粋です。実行の結果を変更する可能性がある外部値には影響されません。 ### [](#第一級関数)第一級関数 DataWeave の純粋関数は、変数に保存され、パラメーターとして渡され、結果として返されるなど、他のデータ型で使用できる操作がサポートされているという点で「第一級関数」でもあります。 ### [](#高階関数)高階関数 プログラミングの高階関数も、数学での概念と同じです。これらの関数は、1 つ以上の関数をパラメーターとして取り、結果として関数を返します。高階関数の結果は、別の関数の入力パラメーターとして使用でき、​_関数合成_​の概念を可能にします。 ### [](#関数合成)関数合成 関数合成は、関数を組み合わせて複雑な操作を作成するプロセスです。この場合、1 つの関数を実行した結果は、次の関数の入力パラメーターとして機能します。DataWeave では、すべてのデータ変換は式のチェーンであり、必要に応じてデータを出力する最終結果を取得するために構成された関数です。 #### [](#関数合成の例)関数合成の例 次の例では、関数 ​`pluck`​ を使用してオブジェクトを配列にマップします。次に、結果の配列が関数 ​`filter`​ の入力として機能し、​`Role`​ が ​`ADMIN`​ の配列内の要素を選択します。マッピングプロセス中に、関数 ​`upper`​ は ​`role`​ 値を変換します。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- collaborators pluck ((value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }) filter ((item, index) -> item.Role == "ADMIN") ``` 次の例は同じ式を示していますが、前置表記を使用しています。 この構文は、​`filter`​ が ​`pluck`​ の結果を最初のパラメーターとして取る方法を視覚化するのに役立ちます。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- filter( pluck( collaborators, (value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }), (item, index) -> item.Role == "ADMIN") ``` 両方の式の出力は次のようになります。 ```dataweave [ { "Name": "Max", "Role": "ADMIN", "ID": "01" }, { "Name": "Astro", "Role": "ADMIN", "ID": "03" } ] ``` ### [](#ラムダ式)ラムダ式 ラムダ式は​_匿名関数_​または​_関数リテラル_​とも呼ばれ、識別子名を持たない関数定義であり、パラメーターとして高階関数に渡すことができます。ラムダ構文は、「特定の入力 (​`a`​ および ​`b`​) に基づいて次 (​`c`​) を実行する」ことを示す、​`(a,b) → c`​ 形式で表されます。 たとえば、DataWeave の ​`map`​ 関数は、パラメーターの 1 つとしてラムダ式 ​`map(Array, (item: T, index: Number) → R): Array`​ を受け入れます。 `map`​ は配列内の項目を反復処理し、パラメーターとして渡されるラムダ式を実行します。このラムダ式は、実行中の各配列要素の値 (​`item`​) とインデックス (​`index`​) を表す 2 つのパラメーター、および反復 ​`R`​ 中に実行する関数定義で構成されます。 次のコード例は、ラムダ式を受け取り、反復処理する配列内の各要素のインデックスと値を連結し、それらの値を新しい配列として返す、​`map`​ 関数を示しています。 ソース ```dataweave %dw 2.0 output application/json --- ["Max", "the", "Mule"] map (item, index) -> index ++ " - " ++ item ``` 出力 ```dataweave [ "0 - Max", "1 - the", "2 - Mule" ] ``` ラムダ式についての詳細は、​[「DataWeave での関数とラムダの操作」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-functions-lambdas)​を参照してください。 ### [](#不変データ)不変データ DataWeave では、変数は定義後に割り当てられた値を変更できません。これにより、関数の実行で予期しない結果が発生しなくなります。操作の結果の新しい値を保存する場合は、新しいデータ構造を宣言する必要があります。 ## [](#命令型プログラミングとの違い)命令型プログラミングとの違い オブジェクト指向プログラミング言語を使用した開発の経験がある場合、関数型プログラミングではデータと関数が分離され、ループ制御ステートメントは使用されないことを理解することが重要です。 ### [](#データと関数の分離)データと関数の分離 DataWeave は代入ステートメントを使用しないため、データは不変のままです。getter メソッドと setter メソッドはなく、データ構造と動作を含むクラスもないため、各関数は入力として指定したデータでのみ機能します。既存のデータ構造を変更する必要がある場合は、新しいコピーを作成し、関数を適用してその値を変更します。 ### [](#フローの制御ステートメント)フローの制御ステートメント DataWeave には ​`for`​ や ​`while`​ のようなループ制御ステートメントはありません。DataWeave では、反復を使用して手順を実行する方法を定義する代わりに、式を記述するときに現在の要件に焦点を絞ります。 たとえば、リストに変更を加えるには、​`map`​ 関数を使用してコレクション内の要素に変更を適用します。さらに、​`filter`​ 関数を使用してリストから特定の要素を削除したり、​`reduce`​ 関数を使用して配列のすべての値を 1 つの単一値にまとめたりすることができます。 ただし、​`if-else`​ ステートメントを使用して、式の実行時に条件を適用できます。 ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` #### [](#dataweave-の例)DataWeave の例 `map`​、​`reduce`​、および ​`filter`​ の使用例については、以下を参照してください。 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-conditional-list-reduction-via-function) - [個別のオブジェクトの項目のマージ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-merge-multiple-payloads) ## [](#関連情報)関連情報 - [Mule メッセージ構造](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message) - [Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [コネクタおよびモジュール](https://docs.mulesoft.com/connectors/) - [Transform Message コンポーネント](https://docs.mulesoft.com/mule-runtime/latest/transform-component-about) # DataWeave 言語ガイド DataWeave は、データ変換を実行するために Mule アプリケーションで使用される関数型言語です。 DataWeave を使用して独自の強力で複雑なデータ変換をコーディングする前に、プログラミングの基本概念と関数型プログラミング言語のコア機能を理解する必要があります。 DataWeave を使用すると、次のような関数型プログラミングの利点を活用できます。 - 同じ入力に対して常に同じ出力を生成する純粋関数により、デバッグが容易になる。 - 実行中に値が変更されない不変変数により、コードの安定性が増す。 - 純粋関数では結果の生成に入力パラメーターのみが使用されるため、関数シグネチャーによって関数の実行に影響する要素に関するその他の透明性を示す。 - 関数型言語はコードが簡潔明瞭であるため、保守が容易なコードが生成される。 - 式は必要な場合にのみ評価され、入力パラメーターが同じ場合に式が複数回評価されないように結果が保存されるため、必要呼び戦略 (​_遅延評価_​とも呼ばれる) によりパフォーマンスが向上する。 ## [](#dataweave-言語の基本概念)DataWeave 言語の基本概念 DataWeave には、ほとんどのプログラミング言語に共通する概念が組み込まれています。すべての DataWeave スクリプトは、変換の出力形式などの重要なディレクティブを含む​_ヘッダー_​、および結果を生成する式を含む​_本文_​で構成されます。 DataWeave では、​_単純型_​、​_複雑型_​、​_複合型_​など、さまざまな​_データ構造_​がサポートされます。ほとんどの DataWeave 変換では、​_データセレクター_​、​_データ演算子_​、および​_関数_​を​_配列_​や​_オブジェクト_​と一緒に使用して、データのマッピングまたは変換を実行します。 事前作成済み DataWeave ​_モジュール_​をインポートして、スクリプトで使用できる関数のセットを拡張することもできます。 ### [](#dataweave-スクリプトのアーキテクチャ)DataWeave スクリプトのアーキテクチャ DataWeave スクリプトは、3 つのダッシュ (​`---`​) で区切られた​_ヘッダー_​と​_本文_​で構成されます。 ヘッダーには、言語ディレクティブ (​`import`​ など) が含まれ、変換の出力形式を定義し、変数および関数の宣言を含めることもできます。 本文には、結果の出力を生成する式 (通常はデータマッピングまたは変換) が含まれます。 次に、基本的な DataWeave 変換の例を示します。 ```dataweave %dw 2.0 output application/json --- payload ``` ### [](#データ型)データ型 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。 型システムを使用すると、変数と関数パラメーターに制約を適用できます。サポートされるデータ型には、​`String`​、​`Boolean`​、​`Number`​、​`Date`​ などの単純型、および ​`Array`​、​`Object`​、​`Any`​ などの複合型と複雑型が含まれます。 サポートされるすべてのデータ型の完全なリストについては、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-system)​を参照してください。 ### [](#データセレクター)データセレクター データセレクターを使用すると、データ構造内の項目にアクセスできるため、DataWeave スクリプトの実行中に作成されたペイロードまたはその他の変数からデータを取得できます。 異なる種別のセレクターには、構造からデータを抽出するために使用できるさまざまなオプションがあります。 たとえば、​_単一値_​セレクター ​`payload.userName`​ を使用して単一値 ​`userName`​ を取得できます。​`userName`​ は、入力メッセージの実際のキーを表します。 データセレクターとその使用法の完全なリストについては、​[「セレクター」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors)​を参照してください。 ### [](#関数)関数 関数は、アプリケーションで関数がコールされたときに実行される操作のグループを含むコードブロックです。関数は、さまざまなパラメーターを入力として受け入れ、関数で定義された操作でそれらを使用できます。さらに、すべての関数は処理の終了後に値を返し、この値を別の関数の入力として使用できます。 コンポーネント (Transform Message コンポーネントや Set Payload コンポーネント) で記述する各 DataWeave スクリプトは、独立したプログラムとして機能します。つまり、すべての関数の定義とコールは、コンポーネントで定義されたスクリプトに固有です。 関数定義についての詳細は、​[「DataWeave 関数の定義」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-functions)​を参照してください。 #### [](#関数定義と関数コール)関数定義と関数コール DataWeave を使用して、スクリプトのヘッダーで​[独自の関数を定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-functions)​し、関数コール時に実行される操作を定義するプロセスのブループリントを作成できます。​[DataWeave のマッピングおよびモジュールファイル](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-create-module)​で定義することもできます。 DataWeave 式から関数を​_コール_​する場合、スクリプトの実行の正確な時点で、その関数で定義されたすべての操作を実行するように DataWeave に指示することになります。 たとえば、​`upper`​ は String モジュールで定義された組み込み関数です。この関数をコールして、テキスト値を大文字に変換できます。また、セレクターを使用してペイロードから値を取得し、この値を入力パラメーター ​`upper(payload.someKey)`​ として ​`upper()`​ 関数コールを実行することもできます。 DataWeave では、関数コールの​_前置_​表記 (​`function (param1, param2)`​) と​_中置_​表記 (​`param1 function param2`​) の両方がサポートされます。中置表記は、2 つのパラメーターのみを受け入れる関数でのみ使用できます。 [「関数シグネチャー」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions#function_signatures)​も参照してください。 ### [](#データ演算子)データ演算子 データ演算子は、データの操作を実行して結果を生成できるようにする記号です。DataWeave では、数学演算子 (​`` `​、​`-`​、​`/`​、​`*`​)、比較演算子 (​`<`​、​`>`​、​`⇐+ ``​、​`>=`​、​`==`​、​`~=`​)、論理演算子 (​`not`​、​`!`​、​`and`​、​`or`​) など、ほとんどのプログラミング言語で一般的な演算子がサポートされています。 DataWeave では次の演算子もサポートされています。 - 追加 (​`<<`​<<\`, ​`+`​)、先頭に追加 (`>>​`\>>\`​、削除 (​`-`​)。配列内のデータを管理できます。 - スコープおよびフローコントロール演算子 (​`do`​、​`using`​、​`if`​、​`else`​)。新しい変数および関数を宣言可能なスコープを作成したり、条件に基づいて式を実行したりできます。 - 更新 (​`update`​)。データ構造の特定の項目を更新できます。 サポートされる演算子、その使用法、および例の完全なリストについては、​[「DataWeave の演算子」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-operators)​を参照してください。 #### [](#関数モジュールのインポート)関数モジュールのインポート デフォルトでは、DataWeave スクリプトは ​`dw::Core`​ 関数モジュールをインポートします。異なるモジュールの関数を使用するには、​`import`​ ディレクティブを追加してモジュールをスクリプトにインポートします。 `import`​ ディレクティブの使用については、​[「DataWeave リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions)​を参照してください。 ### [](#配列)配列 配列は、サポートされる DataWeave 型の要素をいくつでも含めることができるデータ構造です。配列を宣言するには、括弧 (​`[`​ および ​`]`​) を使用して要素のカンマ区切りのリストを囲みます (​`[1,2,3]`​ など)。 配列では、条件付き要素 (​`[(value1) if condition]`​ など) を定義する条件付きロジックの適用もサポートされます。たとえば、式 ​`[(1) if true, (2) if false, (3) if payload != null]`​ は配列 ​`[1,3]`​ を定義します (​`payload`​ が ​`null`​ でない場合)。 ### [](#オブジェクト)オブジェクト オブジェクトは、0 個以上の ​`Key`​ と ​`value`​ のペアのコレクションです。 - `Key`​: 次の要素で形成されます。 - `Name`​: ローカル名としての ​`String`​ 値と省略可能な ​`Namespace`​ で構成されます。 - `Attributes`​: 0 個以上の ​`Name:value`​ ペアのコレクション。​`value`​ には使用可能な任意の値を指定できます。 - `Value`​: 別のオブジェクト、関数コール、または配列を含む、サポートされる任意の種別で構成されます。 オブジェクトを宣言するには、括弧 (​`{`​ および ​`}`​) を使用して ​`Key:value`​ ペアのカンマ区切りのリストを囲みます。 ```dataweave { keyName @(keyAttributeName :"keyAttributeValue"): "value", User @(role:"admin"): upper("max the mule"), myArray: [1,2,3] } ``` オブジェクトでは、条件付き要素の定義もサポートされています。 ```dataweave { (userName: name) if !isBlank(name), (userRole: role) if !isBlank(role) } ``` ## [](#関数型プログラミングの原則)関数型プログラミングの原則 関数型プログラミングのパラダイムにより、開発者は純粋関数合成と不変データを使用してアプリケーションを構築できます。関数型プログラミングは宣言型であるため、DataWeave の関数はプログラムの状態を変更する命令ステートメントではなく、値を返す単なる式です。 DataWeave は、純粋関数、第一級関数、高階関数、関数合成、ラムダ式、不変データなど、関数型プログラミングの基本原則に従います。 ### [](#純粋関数)純粋関数 プログラミングの純粋関数は、特定の入力に対して常に同じ出力を返す点で、数学の純粋関数に似ています。また、関数の実行は、結果を生成すること以外はプログラムの他の部分に影響しません。 DataWeave のすべての関数は純粋です。実行の結果を変更する可能性がある外部値には影響されません。 ### [](#第一級関数)第一級関数 DataWeave の純粋関数は、変数に保存され、パラメーターとして渡され、結果として返されるなど、他のデータ型で使用できる操作がサポートされているという点で「第一級関数」でもあります。 ### [](#高階関数)高階関数 プログラミングの高階関数も、数学での概念と同じです。これらの関数は、1 つ以上の関数をパラメーターとして取り、結果として関数を返します。高階関数の結果は、別の関数の入力パラメーターとして使用でき、​_関数合成_​の概念を可能にします。 ### [](#関数合成)関数合成 関数合成は、関数を組み合わせて複雑な操作を作成するプロセスです。この場合、1 つの関数を実行した結果は、次の関数の入力パラメーターとして機能します。DataWeave では、すべてのデータ変換は式のチェーンであり、必要に応じてデータを出力する最終結果を取得するために構成された関数です。 #### [](#関数合成の例)関数合成の例 次の例では、関数 ​`pluck`​ を使用してオブジェクトを配列にマップします。次に、結果の配列が関数 ​`filter`​ の入力として機能し、​`Role`​ が ​`ADMIN`​ の配列内の要素を選択します。マッピングプロセス中に、関数 ​`upper`​ は ​`role`​ 値を変換します。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- collaborators pluck ((value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }) filter ((item, index) -> item.Role == "ADMIN") ``` 次の例は同じ式を示していますが、前置表記を使用しています。 この構文は、​`filter`​ が ​`pluck`​ の結果を最初のパラメーターとして取る方法を視覚化するのに役立ちます。 ```dataweave %dw 2.0 output application/json var collaborators = { Max: {role: "admin", id: "01"}, Einstein: {role: "dev", id: "02"}, Astro: {role: "admin", id: "03"}, Blaze: {role: "user", id: "04"} } --- filter( pluck( collaborators, (value,key,index)-> { "Name": key, "Role": upper(value.role), "ID": value.id }), (item, index) -> item.Role == "ADMIN") ``` 両方の式の出力は次のようになります。 ```dataweave [ { "Name": "Max", "Role": "ADMIN", "ID": "01" }, { "Name": "Astro", "Role": "ADMIN", "ID": "03" } ] ``` ### [](#ラムダ式)ラムダ式 ラムダ式は​_匿名関数_​または​_関数リテラル_​とも呼ばれ、識別子名を持たない関数定義であり、パラメーターとして高階関数に渡すことができます。ラムダ構文は、「特定の入力 (​`a`​ および ​`b`​) に基づいて次 (​`c`​) を実行する」ことを示す、​`(a,b) → c`​ 形式で表されます。 たとえば、DataWeave の ​`map`​ 関数は、パラメーターの 1 つとしてラムダ式 ​`map(Array, (item: T, index: Number) → R): Array`​ を受け入れます。 `map`​ は配列内の項目を反復処理し、パラメーターとして渡されるラムダ式を実行します。このラムダ式は、実行中の各配列要素の値 (​`item`​) とインデックス (​`index`​) を表す 2 つのパラメーター、および反復 ​`R`​ 中に実行する関数定義で構成されます。 次のコード例は、ラムダ式を受け取り、反復処理する配列内の各要素のインデックスと値を連結し、それらの値を新しい配列として返す、​`map`​ 関数を示しています。 ソース ```dataweave %dw 2.0 output application/json --- ["Max", "the", "Mule"] map (item, index) -> index ++ " - " ++ item ``` 出力 ```dataweave [ "0 - Max", "1 - the", "2 - Mule" ] ``` ラムダ式についての詳細は、​[「DataWeave での関数とラムダの操作」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-functions-lambdas)​を参照してください。 ### [](#不変データ)不変データ DataWeave では、変数は定義後に割り当てられた値を変更できません。これにより、関数の実行で予期しない結果が発生しなくなります。操作の結果の新しい値を保存する場合は、新しいデータ構造を宣言する必要があります。 ## [](#命令型プログラミングとの違い)命令型プログラミングとの違い オブジェクト指向プログラミング言語を使用した開発の経験がある場合、関数型プログラミングではデータと関数が分離され、ループ制御ステートメントは使用されないことを理解することが重要です。 ### [](#データと関数の分離)データと関数の分離 DataWeave は代入ステートメントを使用しないため、データは不変のままです。getter メソッドと setter メソッドはなく、データ構造と動作を含むクラスもないため、各関数は入力として指定したデータでのみ機能します。既存のデータ構造を変更する必要がある場合は、新しいコピーを作成し、関数を適用してその値を変更します。 ### [](#フローの制御ステートメント)フローの制御ステートメント DataWeave には ​`for`​ や ​`while`​ のようなループ制御ステートメントはありません。DataWeave では、反復を使用して手順を実行する方法を定義する代わりに、式を記述するときに現在の要件に焦点を絞ります。 たとえば、リストに変更を加えるには、​`map`​ 関数を使用してコレクション内の要素に変更を適用します。さらに、​`filter`​ 関数を使用してリストから特定の要素を削除したり、​`reduce`​ 関数を使用して配列のすべての値を 1 つの単一値にまとめたりすることができます。 ただし、​`if-else`​ ステートメントを使用して、式の実行時に条件を適用できます。 ```dataweave %dw 2.0 var myVar = { country : "FRANCE" } output application/json --- if (myVar.country == "USA") { currency: "USD" } else { currency: "EUR" } ``` #### [](#dataweave-の例)DataWeave の例 `map`​、​`reduce`​、および ​`filter`​ の使用例については、以下を参照してください。 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-conditional-list-reduction-via-function) - [個別のオブジェクトの項目のマージ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-merge-multiple-payloads) ## [](#関連情報)関連情報 - [Mule メッセージ構造](https://docs.mulesoft.com/mule-runtime/latest/about-mule-message) - [Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [コネクタおよびモジュール](https://docs.mulesoft.com/connectors/) - [Transform Message コンポーネント](https://docs.mulesoft.com/mule-runtime/latest/transform-component-about) # DataWeave 関数の定義 DataWeave スクリプトのヘッダー内で ​`fun`​ 宣言を使用して、独自の DataWeave 関数を定義できます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 ## [](#dataweave-関数定義の構文)DataWeave 関数定義の構文 DataWeave で関数を定義するには、次の構文を使用します。 fun myFunction(param1, param2, ...) = - `fun`​ キーワードは関数の定義を開始します。 - `myFunction`​ は、関数に対して定義する名前です。 関数名は有効な識別子である必要があります。有効な識別子についての詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction#valid-identifiers)​を参照してください。 - `(param1, param2, …​ , paramn)`​ は、関数で受け入れるパラメーターを表します。 ゼロ個から任意の数までのパラメーターをカンマ (​`,`​) で区切り、括弧で囲んで指定できます。 - `=`​ 記号は、関数がコールされたときに実行するコードブロックの先頭をマークします。 - ``​ は、関数で定義する実際のコードを表します。 ## [](#関数定義の例)関数定義の例 次の例では、1 つの文字列引数を受け入れて、受け取った文字列引数を使用して ​`upper`​ 関数をコールし、結果を出力する DataWeave 関数を定義します。 例: 簡単な関数定義 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("hello") ``` 出力 "HELLO" 次の例は、DataWeave 関数の引数で任意の DataWeave 式を使用する方法を示しています。 例: 引数としての式の使用 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、組み込みの ​`match`​ 操作を使用して​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-pattern-matching)​を実行し、関数に渡された引数の型をテストします。 例: パターン一致を使用する例 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = aString match { case is String -> upper(aString) else -> null } --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、数値文字列を共通の電話番号形式に再度書式設定する関数を作成します。 例: toPhoneFormat() 関数 ```dataweave %dw 2.0 output application/json fun toPhoneFormat(str: String) = "(" ++ str[0 to 2] ++ ") " ++ str[3 to 5] ++ "-" ++ str[6 to 9] --- toPhoneFormat("1234567890") ``` 出力 "(123) 456-7890" ## [](#型制約の定義)型制約の定義 関数を宣言するときに型制約の式を定義すると、関数コールの引数に、定義した型制約を確実に適用できます。 関数の型制約を定義するには、次の構文を使用します。 fun myFunction(param1: Type, param2: Type): ResultType = 例: 型制約を使用する関数 %dw 2.0 output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" この例の型制約では、関数 ​`toUser`​ が 1 番目の引数で ​`Number`​ 型のみを受け入れ、2 番目の引数で ​`String`​ 型のみを受け入れることを定義します。 また、この関数では、結果を ​`String`​ 型にする制約も指定されています。この戻り値の型制約は関数コールには影響しません。この制約を関数コードに適用して、関数で定義済みの型が生成されたことを検証します。 DataWeave 型システムについての詳細は、 [https://docs.mulesoft.com/mule-runtime/4.3/dataweave-type-system](https://docs.mulesoft.com/mule-runtime/4.3/dataweave-type-system) を参照してください。 ## [](#省略可能なパラメーターの定義)省略可能なパラメーターの定義 デフォルト値をパラメーターに割り当てることで、省略可能なパラメーターを定義できます。次の例は、必須の 1 つのパラメーター (​`name`​) と、デフォルト値を持つ省略可能な 2 番目のパラメーター (​`countryCode`​) を定義している関数を示しています。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun createUserData(name, countryCode = "US") = { "User name" : name, "Location": countryCode} --- [createUserData("Cristian", "AR"), createUserData("Max The Mule")] ``` 出力 \[ { "User name": "Cristian", "Location": "AR" }, { "User name": "Max The Mule", "Location": "US" } \] ### [](#省略可能なパラメーターの順序)省略可能なパラメーターの順序 DataWeave では、パラメーター定義の先頭または末尾で省略可能なパラメーターを定義できます。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun optionalParamsLast(a, b = 2, c = 3) fun optionalParamsFirst(a = 1, b = 2, c) ``` 関数をコールすると、引数は左から右へ割り当てられます。ただし、省略可能なパラメーターを最初に定義した場合、引数は右から左へ割り当てられます。また、関数のすべてのパラメーターが省略可能な場合も、割り当ては右から左です。 例: 省略可能なパラメーターの割り当て ```dataweave %dw 2.0 output application/json fun optionalParamsLast(param1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} fun optionalParamsFirst(param1 = 1, param2 = 2, param3) = { "param1": param1, "param2": param2, "param3": param3} fun allParametersOptional(param1 = 1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} --- { "optionalParamsLast(A)":optionalParamsLast('A'), "optionalParamsLast(A, B)":optionalParamsLast('A', 'B'), "optionalParamsLast(A, B, C)":optionalParamsLast('A', 'B', 'C'), "optionalParamsFirst(A)":optionalParamsFirst('A'), "optionalParamsFirst(A, B)":optionalParamsFirst('A', 'B'), "optionalParamsFirst(A, B, C)":optionalParamsFirst('A', 'B', 'C'), "allParametersOptional(A)":allParametersOptional('A'), "allParametersOptional(A, B)":allParametersOptional('A', 'B'), "allParametersOptional(A, B, C)":allParametersOptional('A', 'B', 'C') } ``` 出力 { "optionalParamsLast(A)": { "param1": "A", "param2": 2, "param3": 3 }, "optionalParamsLast(A, B)": { "param1": "A", "param2": "B", "param3": 3 }, "optionalParamsLast(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "optionalParamsFirst(A)": { "param1": 1, "param2": 2, "param3": "A" }, "optionalParamsFirst(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "optionalParamsFirst(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "allParametersOptional(A)": { "param1": 1, "param2": 2, "param3": "A" }, "allParametersOptional(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "allParametersOptional(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" } } ## [](#関数オーバーロード)関数オーバーロード DataWeave では、同じ名前でパラメーターの異なる複数の関数を作成できます。これは、関数コールの引数に基づいて異なる動作を定義するのに便利です。 オーバーロードされた関数のパラメーターは、数や型が異なります。関数パラメーターの型を定義する際の制約については、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-type-system)​を参照してください。 DataWeave は、スクリプトで関数が宣言されている順序に従って、関数コールの引数を受け入れる最初の関数を使用します。 例: 関数オーバーロードを使用する関数 ```dataweave %dw 2.0 output application/json fun toUpper(a: String) = upper(a) fun toUpper(a: Any) = null fun toUpper(a: String, b: Number) = upper(a) ++ b as String --- toUpper("hi!") ``` 関数コール ​`toUpper("hi!")`​ の引数は、String (文字列) 型と Any (任意) 型に一致するため、最初の 2 つの定義で関数を呼び出すことができます。ただし、Any (任意) 型を使用する関数より先に ​`fun toUpper(a: String) = upper(a)`​ 関数が定義されているため、DataWeave はこの関数を実行します。 Output of toUpper("hi!") "HI!" Output of toUpper(true) null Output of toUpper("age: ", 26) "AGE: 26" ## [](#関連情報)関連情報 [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-create-module)​ [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions) # DataWeave 関数の定義 DataWeave スクリプトのヘッダー内で ​`fun`​ 宣言を使用して、独自の DataWeave 関数を定義できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-関数定義の構文)DataWeave 関数定義の構文 DataWeave で関数を定義するには、次の構文を使用します。 fun myFunction(param1, param2, ...) = - `fun`​ キーワードは関数の定義を開始します。 - `myFunction`​ は、関数に対して定義する名前です。 関数名は有効な識別子である必要があります。有効な識別子についての詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction#valid-identifiers)​を参照してください。 - `(param1, param2, …​ , paramn)`​ は、関数で受け入れるパラメーターを表します。 ゼロ個から任意の数までのパラメーターをカンマ (​`,`​) で区切り、括弧で囲んで指定できます。 - `=`​ 記号は、関数がコールされたときに実行するコードブロックの先頭をマークします。 - ``​ は、関数で定義する実際のコードを表します。 ## [](#関数定義の例)関数定義の例 次の例では、1 つの文字列引数を受け入れて、受け取った文字列引数を使用して ​`upper`​ 関数をコールし、結果を出力する DataWeave 関数を定義します。 例: 簡単な関数定義 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("hello") ``` 出力 "HELLO" 次の例は、DataWeave 関数の引数で任意の DataWeave 式を使用する方法を示しています。 例: 引数としての式の使用 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、組み込みの ​`match`​ 操作を使用して​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-pattern-matching)​を実行し、関数に渡された引数の型をテストします。 例: パターン一致を使用する例 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = aString match { case is String -> upper(aString) else -> null } --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、数値文字列を共通の電話番号形式に再度書式設定する関数を作成します。 例: toPhoneFormat() 関数 ```dataweave %dw 2.0 output application/json fun toPhoneFormat(str: String) = "(" ++ str[0 to 2] ++ ") " ++ str[3 to 5] ++ "-" ++ str[6 to 9] --- toPhoneFormat("1234567890") ``` 出力 "(123) 456-7890" ## [](#型制約の定義)型制約の定義 関数を宣言するときに型制約の式を定義すると、関数コールの引数に、定義した型制約を確実に適用できます。 関数の型制約を定義するには、次の構文を使用します。 fun myFunction(param1: Type, param2: Type): ResultType = 例: 型制約を使用する関数 %dw 2.0 output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" この例の型制約では、関数 ​`toUser`​ が 1 番目の引数で ​`Number`​ 型のみを受け入れ、2 番目の引数で ​`String`​ 型のみを受け入れることを定義します。 また、この関数では、結果を ​`String`​ 型にする制約も指定されています。この戻り値の型制約は関数コールには影響しません。この制約を関数コードに適用して、関数で定義済みの型が生成されたことを検証します。 DataWeave 型システムについての詳細は、​[https://docs.mulesoft.com/dataweave/latest/dataweave-type-system](https://docs.mulesoft.com/dataweave/latest/dataweave-type-system) を参照してください。 ## [](#省略可能なパラメーターの定義)省略可能なパラメーターの定義 デフォルト値をパラメーターに割り当てることで、省略可能なパラメーターを定義できます。次の例は、必須の 1 つのパラメーター (​`name`​) と、デフォルト値を持つ省略可能な 2 番目のパラメーター (​`countryCode`​) を定義している関数を示しています。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun createUserData(name, countryCode = "US") = { "User name" : name, "Location": countryCode} --- [createUserData("Cristian", "AR"), createUserData("Max The Mule")] ``` 出力 \[ { "User name": "Cristian", "Location": "AR" }, { "User name": "Max The Mule", "Location": "US" } \] ### [](#省略可能なパラメーターの順序)省略可能なパラメーターの順序 DataWeave では、パラメーター定義の先頭または末尾で省略可能なパラメーターを定義できます。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun optionalParamsLast(a, b = 2, c = 3) fun optionalParamsFirst(a = 1, b = 2, c) ``` 関数をコールすると、引数は左から右へ割り当てられます。ただし、省略可能なパラメーターを最初に定義した場合、引数は右から左へ割り当てられます。また、関数のすべてのパラメーターが省略可能な場合も、割り当ては右から左です。 例: 省略可能なパラメーターの割り当て ```dataweave %dw 2.0 output application/json fun optionalParamsLast(param1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} fun optionalParamsFirst(param1 = 1, param2 = 2, param3) = { "param1": param1, "param2": param2, "param3": param3} fun allParametersOptional(param1 = 1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} --- { "optionalParamsLast(A)":optionalParamsLast('A'), "optionalParamsLast(A, B)":optionalParamsLast('A', 'B'), "optionalParamsLast(A, B, C)":optionalParamsLast('A', 'B', 'C'), "optionalParamsFirst(A)":optionalParamsFirst('A'), "optionalParamsFirst(A, B)":optionalParamsFirst('A', 'B'), "optionalParamsFirst(A, B, C)":optionalParamsFirst('A', 'B', 'C'), "allParametersOptional(A)":allParametersOptional('A'), "allParametersOptional(A, B)":allParametersOptional('A', 'B'), "allParametersOptional(A, B, C)":allParametersOptional('A', 'B', 'C') } ``` 出力 { "optionalParamsLast(A)": { "param1": "A", "param2": 2, "param3": 3 }, "optionalParamsLast(A, B)": { "param1": "A", "param2": "B", "param3": 3 }, "optionalParamsLast(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "optionalParamsFirst(A)": { "param1": 1, "param2": 2, "param3": "A" }, "optionalParamsFirst(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "optionalParamsFirst(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "allParametersOptional(A)": { "param1": 1, "param2": 2, "param3": "A" }, "allParametersOptional(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "allParametersOptional(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" } } ## [](#関数オーバーロード)関数オーバーロード DataWeave では、同じ名前でパラメーターの異なる複数の関数を作成できます。これは、関数コールの引数に基づいて異なる動作を定義するのに便利です。 オーバーロードされた関数のパラメーターは、数や型が異なります。関数パラメーターの型を定義する際の制約については、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-type-system)​を参照してください。 DataWeave は、スクリプトで関数が宣言されている順序に従って、関数コールの引数を受け入れる最初の関数を使用します。 例: 関数オーバーロードを使用する関数 ```dataweave %dw 2.0 output application/json fun toUpper(a: String) = upper(a) fun toUpper(a: Any) = null fun toUpper(a: String, b: Number) = upper(a) ++ b as String --- toUpper("hi!") ``` 関数コール ​`toUpper("hi!")`​ の引数は、String (文字列) 型と Any (任意) 型に一致するため、最初の 2 つの定義で関数を呼び出すことができます。ただし、Any (任意) 型を使用する関数より先に ​`fun toUpper(a: String) = upper(a)`​ 関数が定義されているため、DataWeave はこの関数を実行します。 Output of toUpper("hi!") "HI!" Output of toUpper(true) null Output of toUpper("age: ", 26) "AGE: 26" ## [](#関連情報)関連情報 [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-create-module)​ [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions) # DataWeave 関数の定義 DataWeave スクリプトのヘッダー内で ​`fun`​ 宣言を使用して、独自の DataWeave 関数を定義できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-関数定義の構文)DataWeave 関数定義の構文 DataWeave で関数を定義するには、次の構文を使用します。 fun myFunction(param1, param2, ...) = - `fun`​ キーワードは関数の定義を開始します。 - `myFunction`​ は、関数に対して定義する名前です。 関数名は有効な識別子である必要があります。有効な識別子についての詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction#valid-identifiers)​を参照してください。 - `(param1, param2, …​ , paramn)`​ は、関数で受け入れるパラメーターを表します。 ゼロ個から任意の数までのパラメーターをカンマ (​`,`​) で区切り、括弧で囲んで指定できます。 - `=`​ 記号は、関数がコールされたときに実行するコードブロックの先頭をマークします。 - ``​ は、関数で定義する実際のコードを表します。 ## [](#関数定義の例)関数定義の例 次の例では、1 つの文字列引数を受け入れて、受け取った文字列引数を使用して ​`upper`​ 関数をコールし、結果を出力する DataWeave 関数を定義します。 例: 簡単な関数定義 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("hello") ``` 出力 "HELLO" 次の例は、DataWeave 関数の引数で任意の DataWeave 式を使用する方法を示しています。 例: 引数としての式の使用 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、組み込みの ​`match`​ 操作を使用して​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-pattern-matching)​を実行し、関数に渡された引数の型をテストします。 例: パターン一致を使用する例 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = aString match { case is String -> upper(aString) else -> null } --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、数値文字列を共通の電話番号形式に再度書式設定する関数を作成します。 例: toPhoneFormat() 関数 ```dataweave %dw 2.0 output application/json fun toPhoneFormat(str: String) = "(" ++ str[0 to 2] ++ ") " ++ str[3 to 5] ++ "-" ++ str[6 to 9] --- toPhoneFormat("1234567890") ``` 出力 "(123) 456-7890" ## [](#型制約の定義)型制約の定義 関数を宣言するときに型制約の式を定義すると、関数コールの引数に、定義した型制約を確実に適用できます。 関数の型制約を定義するには、次の構文を使用します。 fun myFunction(param1: Type, param2: Type): ResultType = 例: 型制約を使用する関数 %dw 2.0 output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" この例の型制約では、関数 ​`toUser`​ が 1 番目の引数で ​`Number`​ 型のみを受け入れ、2 番目の引数で ​`String`​ 型のみを受け入れることを定義します。 また、この関数では、結果を ​`String`​ 型にする制約も指定されています。この戻り値の型制約は関数コールには影響しません。この制約を関数コードに適用して、関数で定義済みの型が生成されたことを検証します。 DataWeave 型システムについての詳細は、​[https://docs.mulesoft.com/dataweave/latest/dataweave-type-system](https://docs.mulesoft.com/dataweave/latest/dataweave-type-system) を参照してください。 ## [](#省略可能なパラメーターの定義)省略可能なパラメーターの定義 デフォルト値をパラメーターに割り当てることで、省略可能なパラメーターを定義できます。次の例は、必須の 1 つのパラメーター (​`name`​) と、デフォルト値を持つ省略可能な 2 番目のパラメーター (​`countryCode`​) を定義している関数を示しています。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun createUserData(name, countryCode = "US") = { "User name" : name, "Location": countryCode} --- [createUserData("Cristian", "AR"), createUserData("Max The Mule")] ``` 出力 \[ { "User name": "Cristian", "Location": "AR" }, { "User name": "Max The Mule", "Location": "US" } \] ### [](#省略可能なパラメーターの順序)省略可能なパラメーターの順序 DataWeave では、パラメーター定義の先頭または末尾で省略可能なパラメーターを定義できます。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun optionalParamsLast(a, b = 2, c = 3) fun optionalParamsFirst(a = 1, b = 2, c) ``` 関数をコールすると、引数は左から右へ割り当てられます。ただし、省略可能なパラメーターを最初に定義した場合、引数は右から左へ割り当てられます。また、関数のすべてのパラメーターが省略可能な場合も、割り当ては右から左です。 例: 省略可能なパラメーターの割り当て ```dataweave %dw 2.0 output application/json fun optionalParamsLast(param1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} fun optionalParamsFirst(param1 = 1, param2 = 2, param3) = { "param1": param1, "param2": param2, "param3": param3} fun allParametersOptional(param1 = 1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} --- { "optionalParamsLast(A)":optionalParamsLast('A'), "optionalParamsLast(A, B)":optionalParamsLast('A', 'B'), "optionalParamsLast(A, B, C)":optionalParamsLast('A', 'B', 'C'), "optionalParamsFirst(A)":optionalParamsFirst('A'), "optionalParamsFirst(A, B)":optionalParamsFirst('A', 'B'), "optionalParamsFirst(A, B, C)":optionalParamsFirst('A', 'B', 'C'), "allParametersOptional(A)":allParametersOptional('A'), "allParametersOptional(A, B)":allParametersOptional('A', 'B'), "allParametersOptional(A, B, C)":allParametersOptional('A', 'B', 'C') } ``` 出力 { "optionalParamsLast(A)": { "param1": "A", "param2": 2, "param3": 3 }, "optionalParamsLast(A, B)": { "param1": "A", "param2": "B", "param3": 3 }, "optionalParamsLast(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "optionalParamsFirst(A)": { "param1": 1, "param2": 2, "param3": "A" }, "optionalParamsFirst(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "optionalParamsFirst(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "allParametersOptional(A)": { "param1": 1, "param2": 2, "param3": "A" }, "allParametersOptional(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "allParametersOptional(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" } } ## [](#型パラメーターの定義)型パラメーターの定義 DataWeave 関数定義では、一部のプログラミング言語の汎用型に似ている型パラメーターの使用がサポートされています。 例: 型パラメーターを使用する関数 ```dataweace %dw 2.0 output application/json fun toArray(x: T): Array = [x] --- toArray(2) ``` DataWeave では、関数で受け入れられる入力を制限する型パラメーター制約の追加もサポートされています。 例: 型パラメーターと制約を使用する関数 ```dataweace %dw 2.0 output application/json fun getName(x: T): String = x.name --- { name: getName({ name: "Andrés" }) //name: getName({ age: 20 }) invalid call as the parameter does not fullfill the constraint } ``` ## [](#関数オーバーロード)関数オーバーロード DataWeave では、同じ名前でパラメーターの異なる複数の関数を作成できます。これは、関数コールの引数に基づいて異なる動作を定義するのに便利です。 オーバーロードされた関数のパラメーターは、数や型が異なります。関数パラメーターの型を定義する際の制約については、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-system)​を参照してください。 DataWeave は、スクリプトで関数が宣言されている順序に従って、関数コールの引数を受け入れる最初の関数を使用します。 例: 関数オーバーロードを使用する関数 ```dataweave %dw 2.0 output application/json fun toUpper(a: String) = upper(a) fun toUpper(a: Any) = null fun toUpper(a: String, b: Number) = upper(a) ++ b as String --- toUpper("hi!") ``` 関数コール ​`toUpper("hi!")`​ の引数は、String (文字列) 型と Any (任意) 型に一致するため、最初の 2 つの定義で関数を呼び出すことができます。ただし、Any (任意) 型を使用する関数より先に ​`fun toUpper(a: String) = upper(a)`​ 関数が定義されているため、DataWeave はこの関数を実行します。 Output of toUpper("hi!") "HI!" Output of toUpper(true) null Output of toUpper("age: ", 26) "AGE: 26" ## [](#関連情報)関連情報 [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-create-module) [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions) # DataWeave 関数の定義 DataWeave スクリプトのヘッダー内で ​`fun`​ 宣言を使用して、独自の DataWeave 関数を定義できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-関数定義の構文)DataWeave 関数定義の構文 DataWeave で関数を定義するには、次の構文を使用します。 fun myFunction(param1, param2, ...) = - `fun`​ キーワードは関数の定義を開始します。 - `myFunction`​ は、関数に対して定義する名前です。 関数名は有効な識別子である必要があります。有効な識別子についての詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction#valid-identifiers)​を参照してください。 - `(param1, param2, …​ , paramn)`​ は、関数で受け入れるパラメーターを表します。 ゼロ個から任意の数までのパラメーターをカンマ (​`,`​) で区切り、括弧で囲んで指定できます。 - `=`​ 記号は、関数がコールされたときに実行するコードブロックの先頭をマークします。 - ``​ は、関数で定義する実際のコードを表します。 ## [](#関数定義の例)関数定義の例 次の例では、1 つの文字列引数を受け入れて、受け取った文字列引数を使用して ​`upper`​ 関数をコールし、結果を出力する DataWeave 関数を定義します。 例: 簡単な関数定義 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("hello") ``` 出力 "HELLO" 次の例は、DataWeave 関数の引数で任意の DataWeave 式を使用する方法を示しています。 例: 引数としての式の使用 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、組み込みの ​`match`​ 操作を使用して​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-pattern-matching)​を実行し、関数に渡された引数の型をテストします。 例: パターン一致を使用する例 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = aString match { case is String -> upper(aString) else -> null } --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、数値文字列を共通の電話番号形式に再度書式設定する関数を作成します。 例: toPhoneFormat() 関数 ```dataweave %dw 2.0 output application/json fun toPhoneFormat(str: String) = "(" ++ str[0 to 2] ++ ") " ++ str[3 to 5] ++ "-" ++ str[6 to 9] --- toPhoneFormat("1234567890") ``` 出力 "(123) 456-7890" ## [](#型制約の定義)型制約の定義 関数を宣言するときに型制約の式を定義すると、関数コールの引数に、定義した型制約を確実に適用できます。 関数の型制約を定義するには、次の構文を使用します。 fun myFunction(param1: Type, param2: Type): ResultType = 例: 型制約を使用する関数 %dw 2.0 output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" この例の型制約では、関数 ​`toUser`​ が 1 番目の引数で ​`Number`​ 型のみを受け入れ、2 番目の引数で ​`String`​ 型のみを受け入れることを定義します。 また、この関数では、結果を ​`String`​ 型にする制約も指定されています。この戻り値の型制約は関数コールには影響しません。この制約を関数コードに適用して、関数で定義済みの型が生成されたことを検証します。 DataWeave 型システムについての詳細は、​[https://docs.mulesoft.com/dataweave/latest/dataweave-type-system](https://docs.mulesoft.com/dataweave/latest/dataweave-type-system) を参照してください。 ## [](#省略可能なパラメーターの定義)省略可能なパラメーターの定義 デフォルト値をパラメーターに割り当てることで、省略可能なパラメーターを定義できます。次の例は、必須の 1 つのパラメーター (​`name`​) と、デフォルト値を持つ省略可能な 2 番目のパラメーター (​`countryCode`​) を定義している関数を示しています。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun createUserData(name, countryCode = "US") = { "User name" : name, "Location": countryCode} --- [createUserData("Cristian", "AR"), createUserData("Max The Mule")] ``` 出力 \[ { "User name": "Cristian", "Location": "AR" }, { "User name": "Max The Mule", "Location": "US" } \] ### [](#省略可能なパラメーターの順序)省略可能なパラメーターの順序 DataWeave では、パラメーター定義の先頭または末尾で省略可能なパラメーターを定義できます。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun optionalParamsLast(a, b = 2, c = 3) fun optionalParamsFirst(a = 1, b = 2, c) ``` 関数をコールすると、引数は左から右へ割り当てられます。ただし、省略可能なパラメーターを最初に定義した場合、引数は右から左へ割り当てられます。また、関数のすべてのパラメーターが省略可能な場合も、割り当ては右から左です。 例: 省略可能なパラメーターの割り当て ```dataweave %dw 2.0 output application/json fun optionalParamsLast(param1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} fun optionalParamsFirst(param1 = 1, param2 = 2, param3) = { "param1": param1, "param2": param2, "param3": param3} fun allParametersOptional(param1 = 1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} --- { "optionalParamsLast(A)":optionalParamsLast('A'), "optionalParamsLast(A, B)":optionalParamsLast('A', 'B'), "optionalParamsLast(A, B, C)":optionalParamsLast('A', 'B', 'C'), "optionalParamsFirst(A)":optionalParamsFirst('A'), "optionalParamsFirst(A, B)":optionalParamsFirst('A', 'B'), "optionalParamsFirst(A, B, C)":optionalParamsFirst('A', 'B', 'C'), "allParametersOptional(A)":allParametersOptional('A'), "allParametersOptional(A, B)":allParametersOptional('A', 'B'), "allParametersOptional(A, B, C)":allParametersOptional('A', 'B', 'C') } ``` 出力 { "optionalParamsLast(A)": { "param1": "A", "param2": 2, "param3": 3 }, "optionalParamsLast(A, B)": { "param1": "A", "param2": "B", "param3": 3 }, "optionalParamsLast(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "optionalParamsFirst(A)": { "param1": 1, "param2": 2, "param3": "A" }, "optionalParamsFirst(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "optionalParamsFirst(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "allParametersOptional(A)": { "param1": 1, "param2": 2, "param3": "A" }, "allParametersOptional(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "allParametersOptional(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" } } ## [](#型パラメーターの定義)型パラメーターの定義 DataWeave 関数定義では、一部のプログラミング言語の汎用型に似ている型パラメーターの使用がサポートされています。 例: 型パラメーターを使用する関数 ```dataweace %dw 2.0 output application/json fun toArray(x: T): Array = [x] --- toArray(2) ``` DataWeave では、関数で受け入れられる入力を制限する型パラメーター制約の追加もサポートされています。 例: 型パラメーターと制約を使用する関数 ```dataweace %dw 2.0 output application/json fun getName(x: T): String = x.name --- { name: getName({ name: "Andrés" }) //name: getName({ age: 20 }) invalid call as the parameter does not fullfill the constraint } ``` ## [](#関数オーバーロード)関数オーバーロード DataWeave では、同じ名前でパラメーターの異なる複数の関数を作成できます。これは、関数コールの引数に基づいて異なる動作を定義するのに便利です。 オーバーロードされた関数のパラメーターは、数や型が異なります。関数パラメーターの型を定義する際の制約については、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-system)​を参照してください。 DataWeave は、スクリプトで関数が宣言されている順序に従って、関数コールの引数を受け入れる最初の関数を使用します。 例: 関数オーバーロードを使用する関数 ```dataweave %dw 2.0 output application/json fun toUpper(a: String) = upper(a) fun toUpper(a: Any) = null fun toUpper(a: String, b: Number) = upper(a) ++ b as String --- toUpper("hi!") ``` 関数コール ​`toUpper("hi!")`​ の引数は、String (文字列) 型と Any (任意) 型に一致するため、最初の 2 つの定義で関数を呼び出すことができます。ただし、Any (任意) 型を使用する関数より先に ​`fun toUpper(a: String) = upper(a)`​ 関数が定義されているため、DataWeave はこの関数を実行します。 Output of toUpper("hi!") "HI!" Output of toUpper(true) null Output of toUpper("age: ", 26) "AGE: 26" ## [](#関連情報)関連情報 [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-create-module) [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions) # DataWeave 関数の定義 DataWeave スクリプトのヘッダー内で ​`fun`​ 宣言を使用して、独自の DataWeave 関数を定義できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-関数定義の構文)DataWeave 関数定義の構文 DataWeave で関数を定義するには、次の構文を使用します。 fun myFunction(param1, param2, ...) = - `fun`​ キーワードは関数の定義を開始します。 - `myFunction`​ は、関数に対して定義する名前です。 関数名は有効な識別子である必要があります。有効な識別子についての詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction#valid-identifiers)​を参照してください。 - `(param1, param2, …​ , paramn)`​ は、関数で受け入れるパラメーターを表します。 ゼロ個から任意の数までのパラメーターをカンマ (​`,`​) で区切り、括弧で囲んで指定できます。 - `=`​ 記号は、関数がコールされたときに実行するコードブロックの先頭をマークします。 - ``​ は、関数で定義する実際のコードを表します。 ## [](#関数定義の例)関数定義の例 次の例では、1 つの文字列引数を受け入れて、受け取った文字列引数を使用して ​`upper`​ 関数をコールし、結果を出力する DataWeave 関数を定義します。 例: 簡単な関数定義 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("hello") ``` 出力 "HELLO" 次の例は、DataWeave 関数の引数で任意の DataWeave 式を使用する方法を示しています。 例: 引数としての式の使用 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、組み込みの ​`match`​ 操作を使用して​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-pattern-matching)​を実行し、関数に渡された引数の型をテストします。 例: パターン一致を使用する例 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = aString match { case is String -> upper(aString) else -> null } --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、数値文字列を共通の電話番号形式に再度書式設定する関数を作成します。 例: toPhoneFormat() 関数 ```dataweave %dw 2.0 output application/json fun toPhoneFormat(str: String) = "(" ++ str[0 to 2] ++ ") " ++ str[3 to 5] ++ "-" ++ str[6 to 9] --- toPhoneFormat("1234567890") ``` 出力 "(123) 456-7890" ## [](#型制約の定義)型制約の定義 関数を宣言するときに型制約の式を定義すると、関数コールの引数に、定義した型制約を確実に適用できます。 関数の型制約を定義するには、次の構文を使用します。 fun myFunction(param1: Type, param2: Type): ResultType = 例: 型制約を使用する関数 %dw 2.0 output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" この例の型制約では、関数 ​`toUser`​ が 1 番目の引数で ​`Number`​ 型のみを受け入れ、2 番目の引数で ​`String`​ 型のみを受け入れることを定義します。 また、この関数では、結果を ​`String`​ 型にする制約も指定されています。この戻り値の型制約は関数コールには影響しません。この制約を関数コードに適用して、関数で定義済みの型が生成されたことを検証します。 DataWeave 型システムについての詳細は、​[https://docs.mulesoft.com/dataweave/latest/dataweave-type-system](https://docs.mulesoft.com/dataweave/latest/dataweave-type-system) を参照してください。 ## [](#省略可能なパラメーターの定義)省略可能なパラメーターの定義 デフォルト値をパラメーターに割り当てることで、省略可能なパラメーターを定義できます。次の例は、必須の 1 つのパラメーター (​`name`​) と、デフォルト値を持つ省略可能な 2 番目のパラメーター (​`countryCode`​) を定義している関数を示しています。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun createUserData(name, countryCode = "US") = { "User name" : name, "Location": countryCode} --- [createUserData("Cristian", "AR"), createUserData("Max The Mule")] ``` 出力 \[ { "User name": "Cristian", "Location": "AR" }, { "User name": "Max The Mule", "Location": "US" } \] ### [](#省略可能なパラメーターの順序)省略可能なパラメーターの順序 DataWeave では、パラメーター定義の先頭または末尾で省略可能なパラメーターを定義できます。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun optionalParamsLast(a, b = 2, c = 3) fun optionalParamsFirst(a = 1, b = 2, c) ``` 関数をコールすると、引数は左から右へ割り当てられます。ただし、省略可能なパラメーターを最初に定義した場合、引数は右から左へ割り当てられます。また、関数のすべてのパラメーターが省略可能な場合も、割り当ては右から左です。 例: 省略可能なパラメーターの割り当て ```dataweave %dw 2.0 output application/json fun optionalParamsLast(param1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} fun optionalParamsFirst(param1 = 1, param2 = 2, param3) = { "param1": param1, "param2": param2, "param3": param3} fun allParametersOptional(param1 = 1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} --- { "optionalParamsLast(A)":optionalParamsLast('A'), "optionalParamsLast(A, B)":optionalParamsLast('A', 'B'), "optionalParamsLast(A, B, C)":optionalParamsLast('A', 'B', 'C'), "optionalParamsFirst(A)":optionalParamsFirst('A'), "optionalParamsFirst(A, B)":optionalParamsFirst('A', 'B'), "optionalParamsFirst(A, B, C)":optionalParamsFirst('A', 'B', 'C'), "allParametersOptional(A)":allParametersOptional('A'), "allParametersOptional(A, B)":allParametersOptional('A', 'B'), "allParametersOptional(A, B, C)":allParametersOptional('A', 'B', 'C') } ``` 出力 { "optionalParamsLast(A)": { "param1": "A", "param2": 2, "param3": 3 }, "optionalParamsLast(A, B)": { "param1": "A", "param2": "B", "param3": 3 }, "optionalParamsLast(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "optionalParamsFirst(A)": { "param1": 1, "param2": 2, "param3": "A" }, "optionalParamsFirst(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "optionalParamsFirst(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "allParametersOptional(A)": { "param1": 1, "param2": 2, "param3": "A" }, "allParametersOptional(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "allParametersOptional(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" } } ## [](#型パラメーターの定義)型パラメーターの定義 DataWeave 関数定義では、一部のプログラミング言語の汎用型に似ている型パラメーターの使用がサポートされています。 例: 型パラメーターを使用する関数 ```dataweace %dw 2.0 output application/json fun toArray(x: T): Array = [x] --- toArray(2) ``` DataWeave では、関数で受け入れられる入力を制限する型パラメーター制約の追加もサポートされています。 例: 型パラメーターと制約を使用する関数 ```dataweace %dw 2.0 output application/json fun getName(x: T): String = x.name --- { name: getName({ name: "Andrés" }) //name: getName({ age: 20 }) invalid call as the parameter does not fullfill the constraint } ``` ## [](#関数オーバーロード)関数オーバーロード DataWeave では、同じ名前でパラメーターの異なる複数の関数を作成できます。これは、関数コールの引数に基づいて異なる動作を定義するのに便利です。 オーバーロードされた関数のパラメーターは、数や型が異なります。関数パラメーターの型を定義する際の制約については、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-system)​を参照してください。 DataWeave は、スクリプトで関数が宣言されている順序に従って、関数コールの引数を受け入れる最初の関数を使用します。 例: 関数オーバーロードを使用する関数 ```dataweave %dw 2.0 output application/json fun toUpper(a: String) = upper(a) fun toUpper(a: Any) = null fun toUpper(a: String, b: Number) = upper(a) ++ b as String --- toUpper("hi!") ``` 関数コール ​`toUpper("hi!")`​ の引数は、String (文字列) 型と Any (任意) 型に一致するため、最初の 2 つの定義で関数を呼び出すことができます。ただし、Any (任意) 型を使用する関数より先に ​`fun toUpper(a: String) = upper(a)`​ 関数が定義されているため、DataWeave はこの関数を実行します。 Output of toUpper("hi!") "HI!" Output of toUpper(true) null Output of toUpper("age: ", 26) "AGE: 26" ## [](#関連情報)関連情報 [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-create-module) [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions) # DataWeave 関数の定義 DataWeave スクリプトのヘッダー内で ​`fun`​ 宣言を使用して、独自の DataWeave 関数を定義できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#dataweave-関数定義の構文)DataWeave 関数定義の構文 DataWeave で関数を定義するには、次の構文を使用します。 fun myFunction(param1, param2, ...) = - `fun`​ キーワードは関数の定義を開始します。 - `myFunction`​ は、関数に対して定義する名前です。 関数名は有効な識別子である必要があります。有効な識別子についての詳細は、​[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction#valid-identifiers)​を参照してください。 - `(param1, param2, …​ , paramn)`​ は、関数で受け入れるパラメーターを表します。 ゼロ個から任意の数までのパラメーターをカンマ (​`,`​) で区切り、括弧で囲んで指定できます。 - `=`​ 記号は、関数がコールされたときに実行するコードブロックの先頭をマークします。 - ``​ は、関数で定義する実際のコードを表します。 ## [](#関数定義の例)関数定義の例 次の例では、1 つの文字列引数を受け入れて、受け取った文字列引数を使用して ​`upper`​ 関数をコールし、結果を出力する DataWeave 関数を定義します。 例: 簡単な関数定義 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("hello") ``` 出力 "HELLO" 次の例は、DataWeave 関数の引数で任意の DataWeave 式を使用する方法を示しています。 例: 引数としての式の使用 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = upper(aString) --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、組み込みの ​`match`​ 操作を使用して​[パターン一致](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-pattern-matching)​を実行し、関数に渡された引数の型をテストします。 例: パターン一致を使用する例 ```dataweave %dw 2.0 output application/json fun toUpper(aString) = aString match { case is String -> upper(aString) else -> null } --- toUpper("h" ++ "el" ++ lower("LO") ) ``` 出力 "HELLO" 次の例では、数値文字列を共通の電話番号形式に再度書式設定する関数を作成します。 例: toPhoneFormat() 関数 ```dataweave %dw 2.0 output application/json fun toPhoneFormat(str: String) = "(" ++ str[0 to 2] ++ ") " ++ str[3 to 5] ++ "-" ++ str[6 to 9] --- toPhoneFormat("1234567890") ``` 出力 "(123) 456-7890" ## [](#型制約の定義)型制約の定義 関数を宣言するときに型制約の式を定義すると、関数コールの引数に、定義した型制約を確実に適用できます。 関数の型制約を定義するには、次の構文を使用します。 fun myFunction(param1: Type, param2: Type): ResultType = 例: 型制約を使用する関数 %dw 2.0 output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" この例の型制約では、関数 ​`toUser`​ が 1 番目の引数で ​`Number`​ 型のみを受け入れ、2 番目の引数で ​`String`​ 型のみを受け入れることを定義します。 また、この関数では、結果を ​`String`​ 型にする制約も指定されています。この戻り値の型制約は関数コールには影響しません。この制約を関数コードに適用して、関数で定義済みの型が生成されたことを検証します。 DataWeave 型システムについての詳細は、​[https://docs.mulesoft.com/dataweave/latest/dataweave-type-system](https://docs.mulesoft.com/dataweave/latest/dataweave-type-system) を参照してください。 ## [](#省略可能なパラメーターの定義)省略可能なパラメーターの定義 デフォルト値をパラメーターに割り当てることで、省略可能なパラメーターを定義できます。次の例は、必須の 1 つのパラメーター (​`name`​) と、デフォルト値を持つ省略可能な 2 番目のパラメーター (​`countryCode`​) を定義している関数を示しています。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun createUserData(name, countryCode = "US") = { "User name" : name, "Location": countryCode} --- [createUserData("Cristian", "AR"), createUserData("Max The Mule")] ``` 出力 \[ { "User name": "Cristian", "Location": "AR" }, { "User name": "Max The Mule", "Location": "US" } \] ### [](#省略可能なパラメーターの順序)省略可能なパラメーターの順序 DataWeave では、パラメーター定義の先頭または末尾で省略可能なパラメーターを定義できます。 例: 省略可能なパラメーターを使用する関数 ```dataweave %dw 2.0 output application/json fun optionalParamsLast(a, b = 2, c = 3) fun optionalParamsFirst(a = 1, b = 2, c) ``` 関数をコールすると、引数は左から右へ割り当てられます。ただし、省略可能なパラメーターを最初に定義した場合、引数は右から左へ割り当てられます。また、関数のすべてのパラメーターが省略可能な場合も、割り当ては右から左です。 例: 省略可能なパラメーターの割り当て ```dataweave %dw 2.0 output application/json fun optionalParamsLast(param1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} fun optionalParamsFirst(param1 = 1, param2 = 2, param3) = { "param1": param1, "param2": param2, "param3": param3} fun allParametersOptional(param1 = 1, param2 = 2, param3 = 3) = { "param1": param1, "param2": param2, "param3": param3} --- { "optionalParamsLast(A)":optionalParamsLast('A'), "optionalParamsLast(A, B)":optionalParamsLast('A', 'B'), "optionalParamsLast(A, B, C)":optionalParamsLast('A', 'B', 'C'), "optionalParamsFirst(A)":optionalParamsFirst('A'), "optionalParamsFirst(A, B)":optionalParamsFirst('A', 'B'), "optionalParamsFirst(A, B, C)":optionalParamsFirst('A', 'B', 'C'), "allParametersOptional(A)":allParametersOptional('A'), "allParametersOptional(A, B)":allParametersOptional('A', 'B'), "allParametersOptional(A, B, C)":allParametersOptional('A', 'B', 'C') } ``` 出力 { "optionalParamsLast(A)": { "param1": "A", "param2": 2, "param3": 3 }, "optionalParamsLast(A, B)": { "param1": "A", "param2": "B", "param3": 3 }, "optionalParamsLast(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "optionalParamsFirst(A)": { "param1": 1, "param2": 2, "param3": "A" }, "optionalParamsFirst(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "optionalParamsFirst(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" }, "allParametersOptional(A)": { "param1": 1, "param2": 2, "param3": "A" }, "allParametersOptional(A, B)": { "param1": 1, "param2": "A", "param3": "B" }, "allParametersOptional(A, B, C)": { "param1": "A", "param2": "B", "param3": "C" } } ## [](#型パラメーターの定義)型パラメーターの定義 DataWeave 関数定義では、一部のプログラミング言語の汎用型に似ている型パラメーターの使用がサポートされています。 例: 型パラメーターを使用する関数 ```dataweace %dw 2.0 output application/json fun toArray(x: T): Array = [x] --- toArray(2) ``` DataWeave では、関数で受け入れられる入力を制限する型パラメーター制約の追加もサポートされています。 例: 型パラメーターと制約を使用する関数 ```dataweace %dw 2.0 output application/json fun getName(x: T): String = x.name --- { name: getName({ name: "Andrés" }) //name: getName({ age: 20 }) invalid call as the parameter does not fullfill the constraint } ``` ## [](#関数オーバーロード)関数オーバーロード DataWeave では、同じ名前でパラメーターの異なる複数の関数を作成できます。これは、関数コールの引数に基づいて異なる動作を定義するのに便利です。 オーバーロードされた関数のパラメーターは、数や型が異なります。関数パラメーターの型を定義する際の制約については、​[「型システム」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-system)​を参照してください。 DataWeave は、スクリプトで関数が宣言されている順序に従って、関数コールの引数を受け入れる最初の関数を使用します。 例: 関数オーバーロードを使用する関数 ```dataweave %dw 2.0 output application/json fun toUpper(a: String) = upper(a) fun toUpper(a: Any) = null fun toUpper(a: String, b: Number) = upper(a) ++ b as String --- toUpper("hi!") ``` 関数コール ​`toUpper("hi!")`​ の引数は、String (文字列) 型と Any (任意) 型に一致するため、最初の 2 つの定義で関数を呼び出すことができます。ただし、Any (任意) 型を使用する関数より先に ​`fun toUpper(a: String) = upper(a)`​ 関数が定義されているため、DataWeave はこの関数を実行します。 Output of toUpper("hi!") "HI!" Output of toUpper(true) null Output of toUpper("age: ", 26) "AGE: 26" ## [](#関連情報)関連情報 [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-create-module) [DataWeave リファレンス](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions) # Dates (dw::core::Dates) このモジュールには、日付を作成して操作するための関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Dates`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ## [](#関数)関数
名前 説明

​atBeginningOfDay

入力内の ​Time​ 値を指定された​日​の開始に変更する新しい ​DateTime​ 値を返します。

​atBeginningOfHour

入力内の ​Time​ 値を指定された​時間​の開始に変更する新しい ​DateTime​ 値を返します。

​atBeginningOfMonth

入力の ​Day​ 値を指定された​月​の初日に変更する新しい ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

​atBeginningOfWeek

入力の ​Day​ 値と ​Time​ 値を指定された​週​の初日の開始に変更する新しい ​DateTime​ 値を返します。

​atBeginningOfYear

​DateTime​ 値を入力として取得し、入力内で指定された​年​の初日の ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

​date

​year​ 項目、​month​ 項目、​day​ 項目について指定された値から ​Date​ 値を作成します。

​dateTime

​year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​DateTime​ 値を作成します。

​localDateTime

​year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalDateTime​ 値を作成します。

​localTime

​hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalTime​ 値を作成します。

​time

​hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​Time​ 値を作成します。

​today

今日の日付を ​Date​ 型として返します。

​tomorrow

明日の日付を ​Date​ 型として返します。

​yesterday

昨日の日付を ​Date​ 型として返します。

## [](#型)型 - [Dates 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-dates-types) # Dates (dw::core::Dates) このモジュールには、日付を作成して操作するための関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Dates`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

atBeginningOfDay

入力内の ​Time​ 値を指定された​日​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfHour

入力内の ​Time​ 値を指定された​時間​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfMonth

入力の ​Day​ 値を指定された​月​の初日に変更する新しい ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

atBeginningOfWeek

入力の ​Day​ 値と ​Time​ 値を指定された​週​の初日の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfYear

DateTime​ 値を入力として取得し、入力内で指定された​年​の初日の ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

date

year​ 項目、​month​ 項目、​day​ 項目について指定された値から ​Date​ 値を作成します。

dateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​DateTime​ 値を作成します。

localDateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalDateTime​ 値を作成します。

localTime

hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalTime​ 値を作成します。

time

hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​Time​ 値を作成します。

today

今日の日付を ​Date​ 型として返します。

tomorrow

明日の日付を ​Date​ 型として返します。

yesterday

昨日の日付を ​Date​ 型として返します。

## [](#型)型 - [Dates 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dates-types) # Dates (dw::core::Dates) このモジュールには、日付を作成して操作するための関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Dates`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

atBeginningOfDay

入力内の ​Time​ 値を指定された​日​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfHour

入力内の ​Time​ 値を指定された​時間​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfMonth

入力の ​Day​ 値を指定された​月​の初日に変更する新しい ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

atBeginningOfWeek

入力の ​Day​ 値と ​Time​ 値を指定された​週​の初日の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfYear

DateTime​ 値を入力として取得し、入力内で指定された​年​の初日の ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

date

year​ 項目、​month​ 項目、​day​ 項目について指定された値から ​Date​ 値を作成します。

dateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​DateTime​ 値を作成します。

localDateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalDateTime​ 値を作成します。

localTime

hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalTime​ 値を作成します。

time

hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​Time​ 値を作成します。

today

今日の日付を ​Date​ 型として返します。

tomorrow

明日の日付を ​Date​ 型として返します。

yesterday

昨日の日付を ​Date​ 型として返します。

## [](#型)型 - [Dates 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dates-types) # Dates (dw::core::Dates) このモジュールには、日付を作成して操作するための関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Dates`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

atBeginningOfDay

入力内の ​Time​ 値を指定された​日​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfHour

入力内の ​Time​ 値を指定された​時間​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfMonth

入力の ​Day​ 値を指定された​月​の初日に変更する新しい ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

atBeginningOfWeek

入力の ​Day​ 値と ​Time​ 値を指定された​週​の初日の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfYear

DateTime​ 値を入力として取得し、入力内で指定された​年​の初日の ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

date

year​ 項目、​month​ 項目、​day​ 項目について指定された値から ​Date​ 値を作成します。

dateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​DateTime​ 値を作成します。

localDateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalDateTime​ 値を作成します。

localTime

hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalTime​ 値を作成します。

time

hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​Time​ 値を作成します。

today

今日の日付を ​Date​ 型として返します。

tomorrow

明日の日付を ​Date​ 型として返します。

yesterday

昨日の日付を ​Date​ 型として返します。

## [](#型)型 - [Dates 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dates-types) # Dates (dw::core::Dates) このモジュールには、日付を作成して操作するための関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Dates`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

atBeginningOfDay

入力内の ​Time​ 値を指定された​日​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfHour

入力内の ​Time​ 値を指定された​時間​の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfMonth

入力の ​Day​ 値を指定された​月​の初日に変更する新しい ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

atBeginningOfWeek

入力の ​Day​ 値と ​Time​ 値を指定された​週​の初日の開始に変更する新しい ​DateTime​ 値を返します。

atBeginningOfYear

DateTime​ 値を入力として取得し、入力内で指定された​年​の初日の ​DateTime​ 値を返します。​Time​ 値も ​00:00:00​ に設定します。

date

year​ 項目、​month​ 項目、​day​ 項目について指定された値から ​Date​ 値を作成します。

dateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​DateTime​ 値を作成します。

localDateTime

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalDateTime​ 値を作成します。

localTime

hour​ 項目、​minutes​ 項目、​seconds​ 項目について指定された値から ​LocalTime​ 値を作成します。

time

hour​ 項目、​minutes​ 項目、​seconds​ 項目、​timezone​ 項目について指定された値から ​Time​ 値を作成します。

today

今日の日付を ​Date​ 型として返します。

tomorrow

明日の日付を ​Date​ 型として返します。

yesterday

昨日の日付を ​Date​ 型として返します。

## [](#型)型 - [Dates 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dates-types) # Dates 型 (dw::core::Dates)
型 定義 説明

DateFactory

​type DateFactory = { day: Number, month: Number, year: Number }

選択可能な ​day​ キー、​month​ キー、​year​ キー、および対応する ​Number​ 値が含まれる型 (​{day: 21, month: 1, year: 2021}​ など)。 項目は ​Number​ 値を受け入れます。 ​0​ が前に付加された数値 (​01​ など) は無効です。

DateTimeFactory

​type DateTimeFactory = DateFactory & LocalTimeFactory & Zoned

​DateFactory​ 型、​LocalTimeFactory​ 型、​Zoned​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as DateTimeFactory​ は有効な ​DateTimeFactory​ 値です。

LocalDateTimeFactory

​type LocalDateTimeFactory = DateFactory & LocalTimeFactory

​DateFactory​ 型と ​LocalTimeFactory​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as LocalDateTimeFactory​ は有効な ​LocalDateTimeFactory​ 値です。​timeZone​ 項目は省略可能です。

LocalTimeFactory

​type LocalTimeFactory = { hour: Number, minutes: Number, seconds: Number }

選択可能な ​hour​ キー、​minutes​ キー、​seconds​ キー、および対応する ​Number​ 値が含まれる型 (​{hour: 8, minutes: 31, seconds: 55}​ など)。 項目は任意の ​Number​ 値を受け入れます。

TimeFactory

​type TimeFactory = LocalTimeFactory & Zoned

​LocalTimeFactory​ 型と ​Zoned​ 型を組み合わせた型。たとえば、​{hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as TimeFactory​ は有効な ​TimeFactory​ 値です。

Zoned (ゾーン)

​type Zoned = { timeZone: TimeZone }

選択可能な ​timeZone​ キーと ​TimeZone​ 値が含まれる型 (​{ timezone : |-03:00|}​ など)。

# Dates 型 (dw::core::Dates)
型 定義 説明

DateFactory

type DateFactory = { day: Number, month: Number, year: Number }

選択可能な ​day​ キー、​month​ キー、​year​ キー、および対応する ​Number​ 値が含まれる型 (​{day: 21, month: 1, year: 2021}​ など)。 項目は ​Number​ 値を受け入れます。 ​0​ が前に付加された数値 (​01​ など) は無効です。

DateTimeFactory

type DateTimeFactory = DateFactory & LocalTimeFactory & Zoned

DateFactory​ 型、​LocalTimeFactory​ 型、​Zoned​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as DateTimeFactory​ は有効な ​DateTimeFactory​ 値です。

LocalDateTimeFactory

type LocalDateTimeFactory = DateFactory & LocalTimeFactory

DateFactory​ 型と ​LocalTimeFactory​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as LocalDateTimeFactory​ は有効な ​LocalDateTimeFactory​ 値です。​timeZone​ 項目は省略可能です。

LocalTimeFactory

type LocalTimeFactory = { hour: Number, minutes: Number, seconds: Number }

選択可能な ​hour​ キー、​minutes​ キー、​seconds​ キー、および対応する ​Number​ 値が含まれる型 (​{hour: 8, minutes: 31, seconds: 55}​ など)。 項目は任意の ​Number​ 値を受け入れます。

TimeFactory

type TimeFactory = LocalTimeFactory & Zoned

LocalTimeFactory​ 型と ​Zoned​ 型を組み合わせた型。たとえば、​{hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as TimeFactory​ は有効な ​TimeFactory​ 値です。

Zoned (ゾーン)

type Zoned = { timeZone: TimeZone }

選択可能な ​timeZone​ キーと ​TimeZone​ 値が含まれる型 (​{ timezone : |-03:00|}​ など)。

# Dates 型 (dw::core::Dates)
型 定義 説明

DateFactory

type DateFactory = { day: Number, month: Number, year: Number }

選択可能な ​day​ キー、​month​ キー、​year​ キー、および対応する ​Number​ 値が含まれる型 (​{day: 21, month: 1, year: 2021}​ など)。 項目は ​Number​ 値を受け入れます。 ​0​ が前に付加された数値 (​01​ など) は無効です。

DateTimeFactory

type DateTimeFactory = DateFactory & LocalTimeFactory & Zoned

DateFactory​ 型、​LocalTimeFactory​ 型、​Zoned​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as DateTimeFactory​ は有効な ​DateTimeFactory​ 値です。

LocalDateTimeFactory

type LocalDateTimeFactory = DateFactory & LocalTimeFactory

DateFactory​ 型と ​LocalTimeFactory​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as LocalDateTimeFactory​ は有効な ​LocalDateTimeFactory​ 値です。​timeZone​ 項目は省略可能です。

LocalTimeFactory

type LocalTimeFactory = { hour: Number, minutes: Number, seconds: Number }

選択可能な ​hour​ キー、​minutes​ キー、​seconds​ キー、および対応する ​Number​ 値が含まれる型 (​{hour: 8, minutes: 31, seconds: 55}​ など)。 項目は任意の ​Number​ 値を受け入れます。

TimeFactory

type TimeFactory = LocalTimeFactory & Zoned

LocalTimeFactory​ 型と ​Zoned​ 型を組み合わせた型。たとえば、​{hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as TimeFactory​ は有効な ​TimeFactory​ 値です。

Zoned (ゾーン)

type Zoned = { timeZone: TimeZone }

選択可能な ​timeZone​ キーと ​TimeZone​ 値が含まれる型 (​{ timezone : |-03:00|}​ など)。

# Dates 型 (dw::core::Dates)
型 定義 説明

DateFactory

type DateFactory = { day: Number, month: Number, year: Number }

選択可能な ​day​ キー、​month​ キー、​year​ キー、および対応する ​Number​ 値が含まれる型 (​{day: 21, month: 1, year: 2021}​ など)。 項目は ​Number​ 値を受け入れます。 ​0​ が前に付加された数値 (​01​ など) は無効です。

DateTimeFactory

type DateTimeFactory = DateFactory & LocalTimeFactory & Zoned

DateFactory​ 型、​LocalTimeFactory​ 型、​Zoned​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as DateTimeFactory​ は有効な ​DateTimeFactory​ 値です。

LocalDateTimeFactory

type LocalDateTimeFactory = DateFactory & LocalTimeFactory

DateFactory​ 型と ​LocalTimeFactory​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as LocalDateTimeFactory​ は有効な ​LocalDateTimeFactory​ 値です。​timeZone​ 項目は省略可能です。

LocalTimeFactory

type LocalTimeFactory = { hour: Number, minutes: Number, seconds: Number }

選択可能な ​hour​ キー、​minutes​ キー、​seconds​ キー、および対応する ​Number​ 値が含まれる型 (​{hour: 8, minutes: 31, seconds: 55}​ など)。 項目は任意の ​Number​ 値を受け入れます。

TimeFactory

type TimeFactory = LocalTimeFactory & Zoned

LocalTimeFactory​ 型と ​Zoned​ 型を組み合わせた型。たとえば、​{hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as TimeFactory​ は有効な ​TimeFactory​ 値です。

Zoned (ゾーン)

type Zoned = { timeZone: TimeZone }

選択可能な ​timeZone​ キーと ​TimeZone​ 値が含まれる型 (​{ timezone : |-03:00|}​ など)。

# Dates 型 (dw::core::Dates)
型 定義 説明

DateFactory

type DateFactory = { day: Number, month: Number, year: Number }

選択可能な ​day​ キー、​month​ キー、​year​ キー、および対応する ​Number​ 値が含まれる型 (​{day: 21, month: 1, year: 2021}​ など)。 項目は ​Number​ 値を受け入れます。 ​0​ が前に付加された数値 (​01​ など) は無効です。

DateTimeFactory

type DateTimeFactory = DateFactory & LocalTimeFactory & Zoned

DateFactory​ 型、​LocalTimeFactory​ 型、​Zoned​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as DateTimeFactory​ は有効な ​DateTimeFactory​ 値です。

LocalDateTimeFactory

type LocalDateTimeFactory = DateFactory & LocalTimeFactory

DateFactory​ 型と ​LocalTimeFactory​ 型を組み合わせた型。たとえば、​{day: 21, month: 1, year: 2021, hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as LocalDateTimeFactory​ は有効な ​LocalDateTimeFactory​ 値です。​timeZone​ 項目は省略可能です。

LocalTimeFactory

type LocalTimeFactory = { hour: Number, minutes: Number, seconds: Number }

選択可能な ​hour​ キー、​minutes​ キー、​seconds​ キー、および対応する ​Number​ 値が含まれる型 (​{hour: 8, minutes: 31, seconds: 55}​ など)。 項目は任意の ​Number​ 値を受け入れます。

TimeFactory

type TimeFactory = LocalTimeFactory & Zoned

LocalTimeFactory​ 型と ​Zoned​ 型を組み合わせた型。たとえば、​{hour: 8, minutes: 31, seconds: 55, timeZone : |-03:00|} as TimeFactory​ は有効な ​TimeFactory​ 値です。

Zoned (ゾーン)

type Zoned = { timeZone: TimeZone }

選択可能な ​timeZone​ キーと ​TimeZone​ 値が含まれる型 (​{ timezone : |-03:00|}​ など)。

# dateTime ## [](#datetime1)dateTime(parts: DateTimeFactory): DateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`DateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​parts

​year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値で、その後に ​timezone​ 項目の ​TimeZone​ 値が続きます。有効な値は、​month​ では 1 ~ 12、​day​ では 1 ~ 31、​hour​ では 0 ~ 23、​minutes​ では 0 ~ 59、seconds では 0 ~ 59 (59.99 などの小数を含む) です。名前-値のペアは任意の順序で指定できますが、出力はデフォルトで ​DateTime​ 値として並び替えられます (​2012-10-11T10:10:10-03:00​ など)。入力項目は ​DateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`DateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newDateTime: dateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00|}) } ``` #### [](#出力)出力 ```Json { "newDateTime": "2012-10-11T12:30:40-03:00" } ``` # dateTime ## [](#datetime1)dateTime(parts: DateTimeFactory): DateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`DateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値で、その後に ​timezone​ 項目の ​TimeZone​ 値が続きます。有効な値は、​month​ では 1 ~ 12、​day​ では 1 ~ 31、​hour​ では 0 ~ 23、​minutes​ では 0 ~ 59、seconds では 0 ~ 59 (59.99 などの小数を含む) です。名前-値のペアは任意の順序で指定できますが、出力はデフォルトで ​DateTime​ 値として並び替えられます (​2012-10-11T10:10:10-03:00​ など)。入力項目は ​DateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`DateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newDateTime: dateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00|}) } ``` #### [](#出力)出力 ```Json { "newDateTime": "2012-10-11T12:30:40-03:00" } ``` # dateTime ## [](#datetime1)dateTime(parts: DateTimeFactory): DateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`DateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値で、その後に ​timezone​ 項目の ​TimeZone​ 値が続きます。有効な値は、​month​ では 1 ~ 12、​day​ では 1 ~ 31、​hour​ では 0 ~ 23、​minutes​ では 0 ~ 59、seconds では 0 ~ 59 (59.99 などの小数を含む) です。名前-値のペアは任意の順序で指定できますが、出力はデフォルトで ​DateTime​ 値として並び替えられます (​2012-10-11T10:10:10-03:00​ など)。入力項目は ​DateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`DateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newDateTime: dateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00|}) } ``` #### [](#出力)出力 ```Json { "newDateTime": "2012-10-11T12:30:40-03:00" } ``` # dateTime ## [](#datetime1)dateTime(parts: DateTimeFactory): DateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`DateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値で、その後に ​timezone​ 項目の ​TimeZone​ 値が続きます。有効な値は、​month​ では 1 ~ 12、​day​ では 1 ~ 31、​hour​ では 0 ~ 23、​minutes​ では 0 ~ 59、seconds では 0 ~ 59 (59.99 などの小数を含む) です。名前-値のペアは任意の順序で指定できますが、出力はデフォルトで ​DateTime​ 値として並び替えられます (​2012-10-11T10:10:10-03:00​ など)。入力項目は ​DateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`DateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newDateTime: dateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00|}) } ``` #### [](#出力)出力 ```Json { "newDateTime": "2012-10-11T12:30:40-03:00" } ``` # dateTime ## [](#datetime1)dateTime(parts: DateTimeFactory): DateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`DateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値で、その後に ​timezone​ 項目の ​TimeZone​ 値が続きます。有効な値は、​month​ では 1 ~ 12、​day​ では 1 ~ 31、​hour​ では 0 ~ 23、​minutes​ では 0 ~ 59、seconds では 0 ~ 59 (59.99 などの小数を含む) です。名前-値のペアは任意の順序で指定できますが、出力はデフォルトで ​DateTime​ 値として並び替えられます (​2012-10-11T10:10:10-03:00​ など)。入力項目は ​DateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`DateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newDateTime: dateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00|}) } ``` #### [](#出力)出力 ```Json { "newDateTime": "2012-10-11T12:30:40-03:00" } ``` # days ## [](#days1)days(nDays: Number): Period 指定された日数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を整数の入力に、​`duration`​ 関数を小数の入力に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​nDays

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`days`​ の動作を示します。DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式の時間数、分数、秒数 (​`PT109H19M12S`​) に、整数 ​`4`​ を Period (期間) 形式の日数 (​`P4D`​) にも変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { tomorrow: |2020-10-05T20:22:34.385Z| + days(1), yesterday: |2020-10-05T20:22:34.385Z| - days(1), decimalDaysPlusQuarter: |2020-10-05T00:00:00.000Z| + days(0.25), decimalDaysPlusHalf: |2020-10-05T00:00:00.000Z| + days(0.5), decimalDaysPlusThreeQuarters: |2020-10-05T00:00:00.000Z| + days(0.75), decimalInputAsPeriod : days(4.555), fourDayPeriod: days(4), negativeValue: days(-1) } ``` #### [](#出力)出力 ```Json { "tomorrow": "2020-10-06T20:22:34.385Z", "yesterday": "2020-10-04T20:22:34.385Z", "decimalDaysPlusQuarter": "2020-10-05T06:00:00Z", "decimalDaysPlusHalf": "2020-10-05T12:00:00Z", "decimalDaysPlusThreeQuarters": "2020-10-05T18:00:00Z", "decimalInputAsPeriod": "PT109H19M12S", "fourDayPeriod": "P4D", "negativeValue": "P-1D" } ``` # days ## [](#days1)days(nDays: Number): Period 指定された日数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を整数の入力に、​`duration`​ 関数を小数の入力に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nDays

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`days`​ の動作を示します。DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式の時間数、分数、秒数 (​`PT109H19M12S`​) に、整数 ​`4`​ を Period (期間) 形式の日数 (​`P4D`​) にも変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { tomorrow: |2020-10-05T20:22:34.385Z| + days(1), yesterday: |2020-10-05T20:22:34.385Z| - days(1), decimalDaysPlusQuarter: |2020-10-05T00:00:00.000Z| + days(0.25), decimalDaysPlusHalf: |2020-10-05T00:00:00.000Z| + days(0.5), decimalDaysPlusThreeQuarters: |2020-10-05T00:00:00.000Z| + days(0.75), decimalInputAsPeriod : days(4.555), fourDayPeriod: days(4), negativeValue: days(-1) } ``` #### [](#出力)出力 ```Json { "tomorrow": "2020-10-06T20:22:34.385Z", "yesterday": "2020-10-04T20:22:34.385Z", "decimalDaysPlusQuarter": "2020-10-05T06:00:00Z", "decimalDaysPlusHalf": "2020-10-05T12:00:00Z", "decimalDaysPlusThreeQuarters": "2020-10-05T18:00:00Z", "decimalInputAsPeriod": "PT109H19M12S", "fourDayPeriod": "P4D", "negativeValue": "P-1D" } ``` # days ## [](#days1)days(nDays: Number): Period 指定された日数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を整数の入力に、​`duration`​ 関数を小数の入力に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nDays

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`days`​ の動作を示します。DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式の時間数、分数、秒数 (​`PT109H19M12S`​) に、整数 ​`4`​ を Period (期間) 形式の日数 (​`P4D`​) にも変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { tomorrow: |2020-10-05T20:22:34.385Z| + days(1), yesterday: |2020-10-05T20:22:34.385Z| - days(1), decimalDaysPlusQuarter: |2020-10-05T00:00:00.000Z| + days(0.25), decimalDaysPlusHalf: |2020-10-05T00:00:00.000Z| + days(0.5), decimalDaysPlusThreeQuarters: |2020-10-05T00:00:00.000Z| + days(0.75), decimalInputAsPeriod : days(4.555), fourDayPeriod: days(4), negativeValue: days(-1) } ``` #### [](#出力)出力 ```Json { "tomorrow": "2020-10-06T20:22:34.385Z", "yesterday": "2020-10-04T20:22:34.385Z", "decimalDaysPlusQuarter": "2020-10-05T06:00:00Z", "decimalDaysPlusHalf": "2020-10-05T12:00:00Z", "decimalDaysPlusThreeQuarters": "2020-10-05T18:00:00Z", "decimalInputAsPeriod": "PT109H19M12S", "fourDayPeriod": "P4D", "negativeValue": "P-1D" } ``` # days ## [](#days1)days(nDays: Number): Period 指定された日数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を整数の入力に、​`duration`​ 関数を小数の入力に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nDays

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`days`​ の動作を示します。DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式の時間数、分数、秒数 (​`PT109H19M12S`​) に、整数 ​`4`​ を Period (期間) 形式の日数 (​`P4D`​) にも変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { tomorrow: |2020-10-05T20:22:34.385Z| + days(1), yesterday: |2020-10-05T20:22:34.385Z| - days(1), decimalDaysPlusQuarter: |2020-10-05T00:00:00.000Z| + days(0.25), decimalDaysPlusHalf: |2020-10-05T00:00:00.000Z| + days(0.5), decimalDaysPlusThreeQuarters: |2020-10-05T00:00:00.000Z| + days(0.75), decimalInputAsPeriod : days(4.555), fourDayPeriod: days(4), negativeValue: days(-1) } ``` #### [](#出力)出力 ```Json { "tomorrow": "2020-10-06T20:22:34.385Z", "yesterday": "2020-10-04T20:22:34.385Z", "decimalDaysPlusQuarter": "2020-10-05T06:00:00Z", "decimalDaysPlusHalf": "2020-10-05T12:00:00Z", "decimalDaysPlusThreeQuarters": "2020-10-05T18:00:00Z", "decimalInputAsPeriod": "PT109H19M12S", "fourDayPeriod": "P4D", "negativeValue": "P-1D" } ``` # days ## [](#days1)days(nDays: Number): Period 指定された日数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を整数の入力に、​`duration`​ 関数を小数の入力に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nDays

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`days`​ の動作を示します。DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式の時間数、分数、秒数 (​`PT109H19M12S`​) に、整数 ​`4`​ を Period (期間) 形式の日数 (​`P4D`​) にも変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { tomorrow: |2020-10-05T20:22:34.385Z| + days(1), yesterday: |2020-10-05T20:22:34.385Z| - days(1), decimalDaysPlusQuarter: |2020-10-05T00:00:00.000Z| + days(0.25), decimalDaysPlusHalf: |2020-10-05T00:00:00.000Z| + days(0.5), decimalDaysPlusThreeQuarters: |2020-10-05T00:00:00.000Z| + days(0.75), decimalInputAsPeriod : days(4.555), fourDayPeriod: days(4), negativeValue: days(-1) } ``` #### [](#出力)出力 ```Json { "tomorrow": "2020-10-06T20:22:34.385Z", "yesterday": "2020-10-04T20:22:34.385Z", "decimalDaysPlusQuarter": "2020-10-05T06:00:00Z", "decimalDaysPlusHalf": "2020-10-05T12:00:00Z", "decimalDaysPlusThreeQuarters": "2020-10-05T18:00:00Z", "decimalInputAsPeriod": "PT109H19M12S", "fourDayPeriod": "P4D", "negativeValue": "P-1D" } ``` # daysBetween ## [](#daysbetween1)daysBetween(Date, Date): Number 2 つの日付間の日数を返します。 ### [](#パラメーター)パラメーター
名前 説明

​from

開始日 (​Date​ (日付) 型)。

​to

終了日 (​Date​ (日付) 型)。​to​ の日付が ​from​ の日付よりも​前​の場合、この 2 つの日付間の日数に等しい負数が返されます。

### [](#例)例 次の例では、指定された日付間の日数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { days : daysBetween('2016-10-01T23:57:59-03:00', '2017-10-01T23:57:59-03:00') } ``` #### [](#出力)出力 ```JSON { "days" : 365 } ``` # daysBetween ## [](#daysbetween1)daysBetween(from: Date, to: Date): Number 2 つの日付間の日数を返します。 ### [](#パラメーター)パラメーター
名前 説明

​from

開始日 (​Date​ (日付) 型)。

​to

終了日 (​Date​ (日付) 型)。​to​ の日付が ​from​ の日付よりも​前​の場合、この 2 つの日付間の日数に等しい負数が返されます。

### [](#例)例 次の例では、指定された日付間の日数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { days : daysBetween('2016-10-01T23:57:59-03:00', '2017-10-01T23:57:59-03:00') } ``` #### [](#出力)出力 ```JSON { "days" : 365 } ``` # daysBetween ## [](#daysbetween1)daysBetween(from: Date, to: Date): Number 2 つの日付間の日数を返します。 ### [](#パラメーター)パラメーター
名前 説明

from

開始日 (​Date​ (日付) 型)。

to

終了日 (​Date​ (日付) 型)。​to​ の日付が ​from​ の日付よりも​前​の場合、この 2 つの日付間の日数に等しい負数が返されます。

### [](#例)例 次の例では、指定された日付間の日数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { days : daysBetween('2016-10-01T23:57:59-03:00', '2017-10-01T23:57:59-03:00') } ``` #### [](#出力)出力 ```JSON { "days" : 365 } ``` # daysBetween ## [](#daysbetween1)daysBetween(from: Date, to: Date): Number 2 つの日付間の日数を返します。 ### [](#パラメーター)パラメーター
名前 説明

from

開始日 (​Date​ (日付) 型)。

to

終了日 (​Date​ (日付) 型)。​to​ の日付が ​from​ の日付よりも​前​の場合、この 2 つの日付間の日数に等しい負数が返されます。

### [](#例)例 次の例では、指定された日付間の日数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { days : daysBetween('2016-10-01T23:57:59-03:00', '2017-10-01T23:57:59-03:00') } ``` #### [](#出力)出力 ```JSON { "days" : 365 } ``` # daysBetween ## [](#daysbetween1)daysBetween(from: Date, to: Date): Number 2 つの日付間の日数を返します。 ### [](#パラメーター)パラメーター
名前 説明

from

開始日 (​Date​ (日付) 型)。

to

終了日 (​Date​ (日付) 型)。​to​ の日付が ​from​ の日付よりも​前​の場合、この 2 つの日付間の日数に等しい負数が返されます。

### [](#例)例 次の例では、指定された日付間の日数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { days : daysBetween('2016-10-01T23:57:59-03:00', '2017-10-01T23:57:59-03:00') } ``` #### [](#出力)出力 ```JSON { "days" : 365 } ``` # daysBetween ## [](#daysbetween1)daysBetween(from: Date, to: Date): Number 2 つの日付間の日数を返します。 ### [](#パラメーター)パラメーター
名前 説明

from

開始日 (​Date​ (日付) 型)。

to

終了日 (​Date​ (日付) 型)。​to​ の日付が ​from​ の日付よりも​前​の場合、この 2 つの日付間の日数に等しい負数が返されます。

### [](#例)例 次の例では、指定された日付間の日数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { days : daysBetween('2016-10-01T23:57:59-03:00', '2017-10-01T23:57:59-03:00') } ``` #### [](#出力)出力 ```JSON { "days" : 365 } ``` # decodeURI ## [](#decodeuri1)decodeURI(String): String URI 内のエスケープシーケンス (​`%20`​ など) をデコードします。 この関数は、エンコードされた URI 内の各エスケープシーケンスをそれが表す文字に置き換えますが、​`encodeURI`​ によって挿入された可能性のないエスケープシーケンスはデコードしません。文字 ​`#`​ はエスケープシーケンスからデコードされません。 ### [](#パラメーター)パラメーター
名前 説明

​text

デコードする URI。

### [](#例)例 次の例では、スペースに使用される URL パーセントエンコード ​`%20`​ を含む URI をデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURI" : decodeURI('http://asd/%20text%20to%20decode%20/text') } ``` #### [](#出力)出力 ```JSON { "decodeURI": "http://asd/ text to decode /text" } ``` # decodeURI ## [](#decodeuri1)decodeURI(text: String): String URI 内のエスケープシーケンス (​`%20`​ など) をデコードします。 この関数は、エンコードされた URI 内の各エスケープシーケンスをそれが表す文字に置き換えますが、​`encodeURI`​ によって挿入された可能性のないエスケープシーケンスはデコードしません。文字 ​`#`​ はエスケープシーケンスからデコードされません。 ### [](#パラメーター)パラメーター
名前 説明

​text

デコードする URI。

### [](#例)例 次の例では、スペースに使用される URL パーセントエンコード ​`%20`​ を含む URI をデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURI" : decodeURI('http://asd/%20text%20to%20decode%20/text') } ``` #### [](#出力)出力 ```JSON { "decodeURI": "http://asd/ text to decode /text" } ``` # decodeURI ## [](#decodeuri1)decodeURI(text: String): String URI 内のエスケープシーケンス (​`%20`​ など) をデコードします。 この関数は、エンコードされた URI 内の各エスケープシーケンスをそれが表す文字に置き換えますが、​`encodeURI`​ によって挿入された可能性のないエスケープシーケンスはデコードしません。文字 ​`#`​ はエスケープシーケンスからデコードされません。 ### [](#パラメーター)パラメーター
名前 説明

text

デコードする URI。

### [](#例)例 次の例では、スペースに使用される URL パーセントエンコード ​`%20`​ を含む URI をデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURI" : decodeURI('http://asd/%20text%20to%20decode%20/text') } ``` #### [](#出力)出力 ```JSON { "decodeURI": "http://asd/ text to decode /text" } ``` # decodeURI ## [](#decodeuri1)decodeURI(text: String): String URI 内のエスケープシーケンス (​`%20`​ など) をデコードします。 この関数は、エンコードされた URI 内の各エスケープシーケンスをそれが表す文字に置き換えますが、​`encodeURI`​ によって挿入された可能性のないエスケープシーケンスはデコードしません。文字 ​`#`​ はエスケープシーケンスからデコードされません。 ### [](#パラメーター)パラメーター
名前 説明

text

デコードする URI。

### [](#例)例 次の例では、スペースに使用される URL パーセントエンコード ​`%20`​ を含む URI をデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURI" : decodeURI('http://asd/%20text%20to%20decode%20/text') } ``` #### [](#出力)出力 ```JSON { "decodeURI": "http://asd/ text to decode /text" } ``` # decodeURI ## [](#decodeuri1)decodeURI(text: String): String URI 内のエスケープシーケンス (​`%20`​ など) をデコードします。 この関数は、エンコードされた URI 内の各エスケープシーケンスをそれが表す文字に置き換えますが、​`encodeURI`​ によって挿入された可能性のないエスケープシーケンスはデコードしません。文字 ​`#`​ はエスケープシーケンスからデコードされません。 ### [](#パラメーター)パラメーター
名前 説明

text

デコードする URI。

### [](#例)例 次の例では、スペースに使用される URL パーセントエンコード ​`%20`​ を含む URI をデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURI" : decodeURI('http://asd/%20text%20to%20decode%20/text') } ``` #### [](#出力)出力 ```JSON { "decodeURI": "http://asd/ text to decode /text" } ``` # decodeURI ## [](#decodeuri1)decodeURI(text: String): String URI 内のエスケープシーケンス (​`%20`​ など) をデコードします。 この関数は、エンコードされた URI 内の各エスケープシーケンスをそれが表す文字に置き換えますが、​`encodeURI`​ によって挿入された可能性のないエスケープシーケンスはデコードしません。文字 ​`#`​ はエスケープシーケンスからデコードされません。 ### [](#パラメーター)パラメーター
名前 説明

text

デコードする URI。

### [](#例)例 次の例では、スペースに使用される URL パーセントエンコード ​`%20`​ を含む URI をデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURI" : decodeURI('http://asd/%20text%20to%20decode%20/text') } ``` #### [](#出力)出力 ```JSON { "decodeURI": "http://asd/ text to decode /text" } ``` # decodeURIComponent ## [](#decodeuricomponent1)decodeURIComponent(String): String `encodeURIComponent`​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。 例については、「​`encodeURIComponent`​」を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURIComponent": { "decodeURIComponent" : decodeURIComponent("%20PATH/%20TO%20/DECODE%20"), "decodeURIComponent" : decodeURIComponent("%3B%2C%2F%3F%3A%40%26%3D"), "decodeURIComponent" : decodeURIComponent("%2D%5F%2E%21%7E%2A%27%28%29%24"), } } ``` #### [](#出力)出力 ```JSON { decodeURIComponent: { decodeURIComponent: " PATH/ TO /DECODE ", decodeURIComponent: ";,/?:@&=", decodeURIComponent: "-_.!~*'()\$" } } ``` # decodeURIComponent ## [](#decodeuricomponent1)decodeURIComponent(text: String): String `encodeURIComponent`​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。 例については、「​`encodeURIComponent`​」を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURIComponent": { "decodeURIComponent" : decodeURIComponent("%20PATH/%20TO%20/DECODE%20"), "decodeURIComponent" : decodeURIComponent("%3B%2C%2F%3F%3A%40%26%3D"), "decodeURIComponent" : decodeURIComponent("%2D%5F%2E%21%7E%2A%27%28%29%24"), } } ``` #### [](#出力)出力 ```JSON { decodeURIComponent: { decodeURIComponent: " PATH/ TO /DECODE ", decodeURIComponent: ";,/?:@&=", decodeURIComponent: "-_.!~*'()\$" } } ``` # decodeURIComponent ## [](#decodeuricomponent1)decodeURIComponent(text: String): String `encodeURIComponent`​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。 例については、「​`encodeURIComponent`​」を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURIComponent": { "decodeURIComponent" : decodeURIComponent("%20PATH/%20TO%20/DECODE%20"), "decodeURIComponent" : decodeURIComponent("%3B%2C%2F%3F%3A%40%26%3D"), "decodeURIComponent" : decodeURIComponent("%2D%5F%2E%21%7E%2A%27%28%29%24"), } } ``` #### [](#出力)出力 ```JSON { decodeURIComponent: { decodeURIComponent: " PATH/ TO /DECODE ", decodeURIComponent: ";,/?:@&=", decodeURIComponent: "-_.!~*'()\$" } } ``` # decodeURIComponent ## [](#decodeuricomponent1)decodeURIComponent(text: String): String `encodeURIComponent`​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。 例については、「​`encodeURIComponent`​」を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURIComponent": { "decodeURIComponent" : decodeURIComponent("%20PATH/%20TO%20/DECODE%20"), "decodeURIComponent" : decodeURIComponent("%3B%2C%2F%3F%3A%40%26%3D"), "decodeURIComponent" : decodeURIComponent("%2D%5F%2E%21%7E%2A%27%28%29%24"), } } ``` #### [](#出力)出力 ```JSON { decodeURIComponent: { decodeURIComponent: " PATH/ TO /DECODE ", decodeURIComponent: ";,/?:@&=", decodeURIComponent: "-_.!~*'()\$" } } ``` # decodeURIComponent ## [](#decodeuricomponent1)decodeURIComponent(text: String): String `encodeURIComponent`​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。 例については、「​`encodeURIComponent`​」を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURIComponent": { "decodeURIComponent" : decodeURIComponent("%20PATH/%20TO%20/DECODE%20"), "decodeURIComponent" : decodeURIComponent("%3B%2C%2F%3F%3A%40%26%3D"), "decodeURIComponent" : decodeURIComponent("%2D%5F%2E%21%7E%2A%27%28%29%24"), } } ``` #### [](#出力)出力 ```JSON { decodeURIComponent: { decodeURIComponent: " PATH/ TO /DECODE ", decodeURIComponent: ";,/?:@&=", decodeURIComponent: "-_.!~*'()\$" } } ``` # decodeURIComponent ## [](#decodeuricomponent1)decodeURIComponent(text: String): String `encodeURIComponent`​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。 例については、「​`encodeURIComponent`​」を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをデコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "decodeURIComponent": { "decodeURIComponent" : decodeURIComponent("%20PATH/%20TO%20/DECODE%20"), "decodeURIComponent" : decodeURIComponent("%3B%2C%2F%3F%3A%40%26%3D"), "decodeURIComponent" : decodeURIComponent("%2D%5F%2E%21%7E%2A%27%28%29%24"), } } ``` #### [](#出力)出力 ```JSON { decodeURIComponent: { decodeURIComponent: " PATH/ TO /DECODE ", decodeURIComponent: ";,/?:@&=", decodeURIComponent: "-_.!~*'()\$" } } ``` # diff ## [](#diff1)diff(Any, Any, ​{ unordered?: Boolean }, String): Diff 2 つの値の構造的な違いを返します。 オブジェクト間の違いは、順序あり (デフォルト) または順序なしにできます。順序ありにすると、2 つのオブジェクトはキー - 値ペアが同じ順序である場合に、異なっていないと見なされます。違いは ​`Difference`​ 型として表現されます。 ### [](#パラメーター)パラメーター
名前 説明

​actual

実際の値。任意のデータ型を使用できます。

​expected

実際の値と比較する期待値。任意のデータ型を使用できます。

​diffConfig

​{ "unordered" : true}​ を使用して、デフォルトから順序なしに変更するための設定 (前述)。

### [](#例)例 この例は、​`diff`​ のさまざまな使用方法を示しています。 #### [](#ソース)ソース ```Dataweave import diff from dw::util::Diff ns ns0 http://locahost.com ns ns1 http://acme.com output application/dw --- { "a": diff({a: 1}, {b:1}), "b": diff({ns0#a: 1}, {ns1#a:1}), "c": diff([1,2,3], []), "d": diff([], [1,2,3]), "e": diff([1,2,3], [1,2,3, 4]), "f": diff([{a: 1}], [{a: 2}]), "g": diff({a @(c: 2): 1}, {a @(c: 3): 1}), "h": diff(true, false), "i": diff(1, 2), "j": diff("test", "other test"), "k": diff({a: 1}, {a:1}), "l": diff({ns0#a: 1}, {ns0#a:1}), "m": diff([1,2,3], [1,2,3]), "n": diff([], []), "o": diff([{a: 1}], [{a: 1}]), "p": diff({a @(c: 2): 1}, {a @(c:2): 1}), "q": diff(true, true), "r": diff(1, 1), "s": diff("other test", "other test"), "t": diff({a:1 ,b: 2},{b: 2, a:1}, {unordered: true}), "u": [{format: "ssn",data: "ABC"}] diff [{ format: "ssn",data: "ABC"}] } ``` #### [](#出力)出力 ```XML ns ns0 http://locahost.com ns ns1 http://acme.com --- { a: { matches: false, diffs: [ { expected: "Entry (root).a with type Number", actual: "was not present in object.", path: "(root).a" } ] }, b: { matches: false, diffs: [ { expected: "Entry (root).ns0#a with type Number", actual: "was not present in object.", path: "(root).ns0#a" } ] }, c: { matches: false, diffs: [ { expected: "Array size is 0", actual: "was 3", path: "(root)" } ] }, d: { matches: false, diffs: [ { expected: "Array size is 3", actual: "was 0", path: "(root)" } ] }, e: { matches: false, diffs: [ { expected: "Array size is 4", actual: "was 3", path: "(root)" } ] }, f: { matches: false, diffs: [ { expected: "1" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root)[0].a" } ] }, g: { matches: false, diffs: [ { expected: "3" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root).a.@.c" } ] }, h: { matches: false, diffs: [ { expected: "false", actual: "true", path: "(root)" } ] }, i: { matches: false, diffs: [ { expected: "2", actual: "1", path: "(root)" } ] }, j: { matches: false, diffs: [ { expected: "\"other test\"", actual: "\"test\"", path: "(root)" } ] }, k: { matches: true, diffs: [] }, l: { matches: true, diffs: [] }, m: { matches: true, diffs: [] }, n: { matches: true, diffs: [] }, o: { matches: true, diffs: [] }, p: { matches: true, diffs: [] }, q: { matches: true, diffs: [] }, r: { matches: true, diffs: [] }, s: { matches: true, diffs: [] }, t: { matches: true, diffs: [] }, u: { matches: true, diffs: [] } } ``` # diff ## [](#diff1)diff(actual: Any, expected: Any, diffConfig: { unordered?: Boolean }​ = ​{}, path: String = "(root)"): Diff 2 つの値の構造的な違いを返します。 オブジェクト間の違いは、順序あり (デフォルト) または順序なしにできます。順序ありにすると、2 つのオブジェクトはキー - 値ペアが同じ順序である場合に、異なっていないと見なされます。違いは ​`Difference`​ 型として表現されます。 ### [](#パラメーター)パラメーター
名前 説明

​actual

実際の値。任意のデータ型を使用できます。

​expected

実際の値と比較する期待値。任意のデータ型を使用できます。

​diffConfig

​{ "unordered" : true}​ を使用して、デフォルトから順序なしに変更するための設定 (前述)。

### [](#例)例 この例は、​`diff`​ のさまざまな使用方法を示しています。 #### [](#ソース)ソース ```Dataweave import diff from dw::util::Diff ns ns0 http://locahost.com ns ns1 http://acme.com output application/dw --- { "a": diff({a: 1}, {b:1}), "b": diff({ns0#a: 1}, {ns1#a:1}), "c": diff([1,2,3], []), "d": diff([], [1,2,3]), "e": diff([1,2,3], [1,2,3, 4]), "f": diff([{a: 1}], [{a: 2}]), "g": diff({a @(c: 2): 1}, {a @(c: 3): 1}), "h": diff(true, false), "i": diff(1, 2), "j": diff("test", "other test"), "k": diff({a: 1}, {a:1}), "l": diff({ns0#a: 1}, {ns0#a:1}), "m": diff([1,2,3], [1,2,3]), "n": diff([], []), "o": diff([{a: 1}], [{a: 1}]), "p": diff({a @(c: 2): 1}, {a @(c:2): 1}), "q": diff(true, true), "r": diff(1, 1), "s": diff("other test", "other test"), "t": diff({a:1 ,b: 2},{b: 2, a:1}, {unordered: true}), "u": [{format: "ssn",data: "ABC"}] diff [{ format: "ssn",data: "ABC"}] } ``` #### [](#出力)出力 ```XML ns ns0 http://locahost.com ns ns1 http://acme.com --- { a: { matches: false, diffs: [ { expected: "Entry (root).a with type Number", actual: "was not present in object.", path: "(root).a" } ] }, b: { matches: false, diffs: [ { expected: "Entry (root).ns0#a with type Number", actual: "was not present in object.", path: "(root).ns0#a" } ] }, c: { matches: false, diffs: [ { expected: "Array size is 0", actual: "was 3", path: "(root)" } ] }, d: { matches: false, diffs: [ { expected: "Array size is 3", actual: "was 0", path: "(root)" } ] }, e: { matches: false, diffs: [ { expected: "Array size is 4", actual: "was 3", path: "(root)" } ] }, f: { matches: false, diffs: [ { expected: "1" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root)[0].a" } ] }, g: { matches: false, diffs: [ { expected: "3" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root).a.@.c" } ] }, h: { matches: false, diffs: [ { expected: "false", actual: "true", path: "(root)" } ] }, i: { matches: false, diffs: [ { expected: "2", actual: "1", path: "(root)" } ] }, j: { matches: false, diffs: [ { expected: "\"other test\"", actual: "\"test\"", path: "(root)" } ] }, k: { matches: true, diffs: [] }, l: { matches: true, diffs: [] }, m: { matches: true, diffs: [] }, n: { matches: true, diffs: [] }, o: { matches: true, diffs: [] }, p: { matches: true, diffs: [] }, q: { matches: true, diffs: [] }, r: { matches: true, diffs: [] }, s: { matches: true, diffs: [] }, t: { matches: true, diffs: [] }, u: { matches: true, diffs: [] } } ``` # diff ## [](#diff1)diff(actual: Any, expected: Any, diffConfig: { unordered?: Boolean } = {}, path: String = "(root)"): Diff 2 つの値の構造的な違いを返します。 オブジェクト間の違いは、順序あり (デフォルト) または順序なしにできます。順序ありにすると、2 つのオブジェクトはキー - 値ペアが同じ順序である場合に、異なっていないと見なされます。違いは ​`Difference`​ 型として表現されます。 ### [](#パラメーター)パラメーター
名前 説明

actual

実際の値。任意のデータ型を使用できます。

expected

実際の値と比較する期待値。任意のデータ型を使用できます。

diffConfig

`{ "unordered" : true} を使用して、デフォルトから順序なしに変更するための設定 (前述)。

### [](#例)例 この例は、​`diff`​ のさまざまな使用方法を示しています。 #### [](#ソース)ソース ```Dataweave import diff from dw::util::Diff ns ns0 http://locahost.com ns ns1 http://acme.com output application/dw --- { "a": diff({a: 1}, {b:1}), "b": diff({ns0#a: 1}, {ns1#a:1}), "c": diff([1,2,3], []), "d": diff([], [1,2,3]), "e": diff([1,2,3], [1,2,3, 4]), "f": diff([{a: 1}], [{a: 2}]), "g": diff({a @(c: 2): 1}, {a @(c: 3): 1}), "h": diff(true, false), "i": diff(1, 2), "j": diff("test", "other test"), "k": diff({a: 1}, {a:1}), "l": diff({ns0#a: 1}, {ns0#a:1}), "m": diff([1,2,3], [1,2,3]), "n": diff([], []), "o": diff([{a: 1}], [{a: 1}]), "p": diff({a @(c: 2): 1}, {a @(c:2): 1}), "q": diff(true, true), "r": diff(1, 1), "s": diff("other test", "other test"), "t": diff({a:1 ,b: 2},{b: 2, a:1}, {unordered: true}), "u": [{format: "ssn",data: "ABC"}] diff [{ format: "ssn",data: "ABC"}] } ``` #### [](#出力)出力 ```XML ns ns0 http://locahost.com ns ns1 http://acme.com --- { a: { matches: false, diffs: [ { expected: "Entry (root).a with type Number", actual: "was not present in object.", path: "(root).a" } ] }, b: { matches: false, diffs: [ { expected: "Entry (root).ns0#a with type Number", actual: "was not present in object.", path: "(root).ns0#a" } ] }, c: { matches: false, diffs: [ { expected: "Array size is 0", actual: "was 3", path: "(root)" } ] }, d: { matches: false, diffs: [ { expected: "Array size is 3", actual: "was 0", path: "(root)" } ] }, e: { matches: false, diffs: [ { expected: "Array size is 4", actual: "was 3", path: "(root)" } ] }, f: { matches: false, diffs: [ { expected: "1" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root)[0].a" } ] }, g: { matches: false, diffs: [ { expected: "3" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root).a.@.c" } ] }, h: { matches: false, diffs: [ { expected: "false", actual: "true", path: "(root)" } ] }, i: { matches: false, diffs: [ { expected: "2", actual: "1", path: "(root)" } ] }, j: { matches: false, diffs: [ { expected: "\"other test\"", actual: "\"test\"", path: "(root)" } ] }, k: { matches: true, diffs: [] }, l: { matches: true, diffs: [] }, m: { matches: true, diffs: [] }, n: { matches: true, diffs: [] }, o: { matches: true, diffs: [] }, p: { matches: true, diffs: [] }, q: { matches: true, diffs: [] }, r: { matches: true, diffs: [] }, s: { matches: true, diffs: [] }, t: { matches: true, diffs: [] }, u: { matches: true, diffs: [] } } ``` # diff ## [](#diff1)diff(actual: Any, expected: Any, diffConfig: { unordered?: Boolean } = {}, path: String = "(root)"): Diff 2 つの値の構造的な違いを返します。 オブジェクト間の違いは、順序あり (デフォルト) または順序なしにできます。順序ありにすると、2 つのオブジェクトはキー - 値ペアが同じ順序である場合に、異なっていないと見なされます。違いは ​`Difference`​ 型として表現されます。 ### [](#パラメーター)パラメーター
名前 説明

actual

実際の値。任意のデータ型を使用できます。

expected

実際の値と比較する期待値。任意のデータ型を使用できます。

diffConfig

`{ "unordered" : true} を使用して、デフォルトから順序なしに変更するための設定 (前述)。

### [](#例)例 この例は、​`diff`​ のさまざまな使用方法を示しています。 #### [](#ソース)ソース ```Dataweave import diff from dw::util::Diff ns ns0 http://locahost.com ns ns1 http://acme.com output application/dw --- { "a": diff({a: 1}, {b:1}), "b": diff({ns0#a: 1}, {ns1#a:1}), "c": diff([1,2,3], []), "d": diff([], [1,2,3]), "e": diff([1,2,3], [1,2,3, 4]), "f": diff([{a: 1}], [{a: 2}]), "g": diff({a @(c: 2): 1}, {a @(c: 3): 1}), "h": diff(true, false), "i": diff(1, 2), "j": diff("test", "other test"), "k": diff({a: 1}, {a:1}), "l": diff({ns0#a: 1}, {ns0#a:1}), "m": diff([1,2,3], [1,2,3]), "n": diff([], []), "o": diff([{a: 1}], [{a: 1}]), "p": diff({a @(c: 2): 1}, {a @(c:2): 1}), "q": diff(true, true), "r": diff(1, 1), "s": diff("other test", "other test"), "t": diff({a:1 ,b: 2},{b: 2, a:1}, {unordered: true}), "u": [{format: "ssn",data: "ABC"}] diff [{ format: "ssn",data: "ABC"}] } ``` #### [](#出力)出力 ```XML ns ns0 http://locahost.com ns ns1 http://acme.com --- { a: { matches: false, diffs: [ { expected: "Entry (root).a with type Number", actual: "was not present in object.", path: "(root).a" } ] }, b: { matches: false, diffs: [ { expected: "Entry (root).ns0#a with type Number", actual: "was not present in object.", path: "(root).ns0#a" } ] }, c: { matches: false, diffs: [ { expected: "Array size is 0", actual: "was 3", path: "(root)" } ] }, d: { matches: false, diffs: [ { expected: "Array size is 3", actual: "was 0", path: "(root)" } ] }, e: { matches: false, diffs: [ { expected: "Array size is 4", actual: "was 3", path: "(root)" } ] }, f: { matches: false, diffs: [ { expected: "1" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root)[0].a" } ] }, g: { matches: false, diffs: [ { expected: "3" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root).a.@.c" } ] }, h: { matches: false, diffs: [ { expected: "false", actual: "true", path: "(root)" } ] }, i: { matches: false, diffs: [ { expected: "2", actual: "1", path: "(root)" } ] }, j: { matches: false, diffs: [ { expected: "\"other test\"", actual: "\"test\"", path: "(root)" } ] }, k: { matches: true, diffs: [] }, l: { matches: true, diffs: [] }, m: { matches: true, diffs: [] }, n: { matches: true, diffs: [] }, o: { matches: true, diffs: [] }, p: { matches: true, diffs: [] }, q: { matches: true, diffs: [] }, r: { matches: true, diffs: [] }, s: { matches: true, diffs: [] }, t: { matches: true, diffs: [] }, u: { matches: true, diffs: [] } } ``` # diff ## [](#diff1)diff(actual: Any, expected: Any, diffConfig: { unordered?: Boolean } = {}, path: String = "(root)"): Diff 2 つの値の構造的な違いを返します。 オブジェクト間の違いは、順序あり (デフォルト) または順序なしにできます。順序ありにすると、2 つのオブジェクトはキー - 値ペアが同じ順序である場合に、異なっていないと見なされます。違いは ​`Difference`​ 型として表現されます。 ### [](#パラメーター)パラメーター
名前 説明

actual

実際の値。任意のデータ型を使用できます。

expected

実際の値と比較する期待値。任意のデータ型を使用できます。

diffConfig

`{ "unordered" : true} を使用して、デフォルトから順序なしに変更するための設定 (前述)。

### [](#例)例 この例は、​`diff`​ のさまざまな使用方法を示しています。 #### [](#ソース)ソース ```Dataweave import diff from dw::util::Diff ns ns0 http://locahost.com ns ns1 http://acme.com output application/dw --- { "a": diff({a: 1}, {b:1}), "b": diff({ns0#a: 1}, {ns1#a:1}), "c": diff([1,2,3], []), "d": diff([], [1,2,3]), "e": diff([1,2,3], [1,2,3, 4]), "f": diff([{a: 1}], [{a: 2}]), "g": diff({a @(c: 2): 1}, {a @(c: 3): 1}), "h": diff(true, false), "i": diff(1, 2), "j": diff("test", "other test"), "k": diff({a: 1}, {a:1}), "l": diff({ns0#a: 1}, {ns0#a:1}), "m": diff([1,2,3], [1,2,3]), "n": diff([], []), "o": diff([{a: 1}], [{a: 1}]), "p": diff({a @(c: 2): 1}, {a @(c:2): 1}), "q": diff(true, true), "r": diff(1, 1), "s": diff("other test", "other test"), "t": diff({a:1 ,b: 2},{b: 2, a:1}, {unordered: true}), "u": [{format: "ssn",data: "ABC"}] diff [{ format: "ssn",data: "ABC"}] } ``` #### [](#出力)出力 ```XML ns ns0 http://locahost.com ns ns1 http://acme.com --- { a: { matches: false, diffs: [ { expected: "Entry (root).a with type Number", actual: "was not present in object.", path: "(root).a" } ] }, b: { matches: false, diffs: [ { expected: "Entry (root).ns0#a with type Number", actual: "was not present in object.", path: "(root).ns0#a" } ] }, c: { matches: false, diffs: [ { expected: "Array size is 0", actual: "was 3", path: "(root)" } ] }, d: { matches: false, diffs: [ { expected: "Array size is 3", actual: "was 0", path: "(root)" } ] }, e: { matches: false, diffs: [ { expected: "Array size is 4", actual: "was 3", path: "(root)" } ] }, f: { matches: false, diffs: [ { expected: "1" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root)[0].a" } ] }, g: { matches: false, diffs: [ { expected: "3" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root).a.@.c" } ] }, h: { matches: false, diffs: [ { expected: "false", actual: "true", path: "(root)" } ] }, i: { matches: false, diffs: [ { expected: "2", actual: "1", path: "(root)" } ] }, j: { matches: false, diffs: [ { expected: "\"other test\"", actual: "\"test\"", path: "(root)" } ] }, k: { matches: true, diffs: [] }, l: { matches: true, diffs: [] }, m: { matches: true, diffs: [] }, n: { matches: true, diffs: [] }, o: { matches: true, diffs: [] }, p: { matches: true, diffs: [] }, q: { matches: true, diffs: [] }, r: { matches: true, diffs: [] }, s: { matches: true, diffs: [] }, t: { matches: true, diffs: [] }, u: { matches: true, diffs: [] } } ``` # diff ## [](#diff1)diff(actual: Any, expected: Any, diffConfig: { unordered?: Boolean } = {}, path: String = "(root)"): Diff 2 つの値の構造的な違いを返します。 オブジェクト間の違いは、順序あり (デフォルト) または順序なしにできます。順序ありにすると、2 つのオブジェクトはキー - 値ペアが同じ順序である場合に、異なっていないと見なされます。違いは ​`Difference`​ 型として表現されます。 ### [](#パラメーター)パラメーター
名前 説明

actual

実際の値。任意のデータ型を使用できます。

expected

実際の値と比較する期待値。任意のデータ型を使用できます。

diffConfig

`{ "unordered" : true} を使用して、デフォルトから順序なしに変更するための設定 (前述)。

### [](#例)例 この例は、​`diff`​ のさまざまな使用方法を示しています。 #### [](#ソース)ソース ```Dataweave import diff from dw::util::Diff ns ns0 http://locahost.com ns ns1 http://acme.com output application/dw --- { "a": diff({a: 1}, {b:1}), "b": diff({ns0#a: 1}, {ns1#a:1}), "c": diff([1,2,3], []), "d": diff([], [1,2,3]), "e": diff([1,2,3], [1,2,3, 4]), "f": diff([{a: 1}], [{a: 2}]), "g": diff({a @(c: 2): 1}, {a @(c: 3): 1}), "h": diff(true, false), "i": diff(1, 2), "j": diff("test", "other test"), "k": diff({a: 1}, {a:1}), "l": diff({ns0#a: 1}, {ns0#a:1}), "m": diff([1,2,3], [1,2,3]), "n": diff([], []), "o": diff([{a: 1}], [{a: 1}]), "p": diff({a @(c: 2): 1}, {a @(c:2): 1}), "q": diff(true, true), "r": diff(1, 1), "s": diff("other test", "other test"), "t": diff({a:1 ,b: 2},{b: 2, a:1}, {unordered: true}), "u": [{format: "ssn",data: "ABC"}] diff [{ format: "ssn",data: "ABC"}] } ``` #### [](#出力)出力 ```XML ns ns0 http://locahost.com ns ns1 http://acme.com --- { a: { matches: false, diffs: [ { expected: "Entry (root).a with type Number", actual: "was not present in object.", path: "(root).a" } ] }, b: { matches: false, diffs: [ { expected: "Entry (root).ns0#a with type Number", actual: "was not present in object.", path: "(root).ns0#a" } ] }, c: { matches: false, diffs: [ { expected: "Array size is 0", actual: "was 3", path: "(root)" } ] }, d: { matches: false, diffs: [ { expected: "Array size is 3", actual: "was 0", path: "(root)" } ] }, e: { matches: false, diffs: [ { expected: "Array size is 4", actual: "was 3", path: "(root)" } ] }, f: { matches: false, diffs: [ { expected: "1" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root)[0].a" } ] }, g: { matches: false, diffs: [ { expected: "3" as String {mimeType: "application/dw"}, actual: "2" as String {mimeType: "application/dw"}, path: "(root).a.@.c" } ] }, h: { matches: false, diffs: [ { expected: "false", actual: "true", path: "(root)" } ] }, i: { matches: false, diffs: [ { expected: "2", actual: "1", path: "(root)" } ] }, j: { matches: false, diffs: [ { expected: "\"other test\"", actual: "\"test\"", path: "(root)" } ] }, k: { matches: true, diffs: [] }, l: { matches: true, diffs: [] }, m: { matches: true, diffs: [] }, n: { matches: true, diffs: [] }, o: { matches: true, diffs: [] }, p: { matches: true, diffs: [] }, q: { matches: true, diffs: [] }, r: { matches: true, diffs: [] }, s: { matches: true, diffs: [] }, t: { matches: true, diffs: [] }, u: { matches: true, diffs: [] } } ``` # Diff (dw::util::Diff) このユーティリティモジュールは、2 つの値の差を計算し、差のリストを返します。 このモジュールは Mule Runtime に含まれています。使用するには、DataWeave コードにインポートする必要があります。たとえば、ヘッダーに行 ​`import dw::util::Diff`​ または ​`import * from dw::util::Diff`​ を追加するなどします。 ## [](#関数)関数
名前 説明

​diff

2 つの値の構造的な違いを返します。

## [](#型)型 - [Diff の型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-diff-types) # Diff (dw::util::Diff) このユーティリティモジュールは、2 つの値の差を計算し、差のリストを返します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Diff`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​diff

2 つの値の構造的な違いを返します。

## [](#型)型 - [Diff の型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-diff-types) # Diff (dw::util::Diff) このユーティリティモジュールは、2 つの値の差を計算し、差のリストを返します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Diff`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

diff

2 つの値の構造的な違いを返します。

## [](#型)型 - [Diff の型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-diff-types) # Diff (dw::util::Diff) このユーティリティモジュールは、2 つの値の差を計算し、差のリストを返します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Diff`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

diff

2 つの値の構造的な違いを返します。

## [](#型)型 - [Diff の型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-diff-types) # Diff (dw::util::Diff) このユーティリティモジュールは、2 つの値の差を計算し、差のリストを返します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Diff`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

diff

2 つの値の構造的な違いを返します。

## [](#型)型 - [Diff の型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-diff-types) # Diff (dw::util::Diff) このユーティリティモジュールは、2 つの値の差を計算し、差のリストを返します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Diff`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

diff

2 つの値の構造的な違いを返します。

## [](#型)型 - [Diff の型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-diff-types) # Diff 型 (dw::util::Diff)
型 定義 説明

Diff (差分)

​type Diff = { matches: Boolean, diffs: Array<Difference> }

2 つの値の間の違い全体を表します。

違いがない場合の例​:

{ "matches": true, "diffs": [ ] }​

違いがある場合の例​:

{ "matches": true, "diffs": [ "expected": "4", "actual": "2", "path": "(root).a.@.d" ] }​

別の例については、​diff​ 関数を参照してください。

Difference (差)

​type Difference = { expected: String, actual: String, path: String }

指定された構造の 2 つの値の間の 1 つの違いを表します。

# Diff 型 (dw::util::Diff)
型 定義 説明

Diff (差分)

​type Diff = { matches: Boolean, diffs: Array<Difference> }

2 つの値の間の違い全体を表します。

  • 違いがない場合の例​: { "matches": true, "diffs": [ ] }​

  • 違いがある場合の例​: { "matches": true, "diffs": [ "expected": "4", "actual": "2", "path": "(root).a.@.d" ] }​

別の例については、​diff​ 関数を参照してください。

Difference (差)

​type Difference = { expected: String, actual: String, path: String }

指定された構造の 2 つの値の間の 1 つの違いを表します。

# Diff 型 (dw::util::Diff)
型 定義 説明

Diff (差分)

type Diff = { matches: Boolean, diffs: Array<Difference> }

2 つの値の間の違い全体を表します。

  • 違いがない場合の例​: { "matches": true, "diffs": [ ] }​

  • 違いがある場合の例​: { "matches": true, "diffs": [ "expected": "4", "actual": "2", "path": "(root).a.@.d" ] }​

別の例については、​diff​ 関数を参照してください。

Difference (差)

type Difference = { expected: String, actual: String, path: String }

指定された構造の 2 つの値の間の 1 つの違いを表します。

# Diff 型 (dw::util::Diff)
型 定義 説明

Diff (差分)

type Diff = { matches: Boolean, diffs: Array<Difference> }

2 つの値の間の違い全体を表します。

  • 違いがない場合の例​: { "matches": true, "diffs": [ ] }​

  • 違いがある場合の例​: { "matches": true, "diffs": [ "expected": "4", "actual": "2", "path": "(root).a.@.d" ] }​

別の例については、​diff​ 関数を参照してください。

Difference (差)

type Difference = { expected: String, actual: String, path: String }

指定された構造の 2 つの値の間の 1 つの違いを表します。

# Diff 型 (dw::util::Diff)
型 定義 説明

Diff (差分)

type Diff = { matches: Boolean, diffs: Array<Difference> }

2 つの値の間の違い全体を表します。

  • 違いがない場合の例​: { "matches": true, "diffs": [ ] }​

  • 違いがある場合の例​: { "matches": true, "diffs": [ "expected": "4", "actual": "2", "path": "(root).a.@.d" ] }​

別の例については、​diff​ 関数を参照してください。

Difference (差)

type Difference = { expected: String, actual: String, path: String }

指定された構造の 2 つの値の間の 1 つの違いを表します。

# Diff 型 (dw::util::Diff)
型 定義 説明

Diff (差分)

type Diff = { matches: Boolean, diffs: Array<Difference> }

2 つの値の間の違い全体を表します。

  • 違いがない場合の例​: { "matches": true, "diffs": [ ] }​

  • 違いがある場合の例​: { "matches": true, "diffs": [ "expected": "4", "actual": "2", "path": "(root).a.@.d" ] }​

別の例については、​diff​ 関数を参照してください。

Difference (差)

type Difference = { expected: String, actual: String, path: String }

指定された構造の 2 つの値の間の 1 つの違いを表します。

# distinctBy ## [](#distinctby1)distinctBy(Array, (item: T, index: Number) -> Any): Array 配列を反復処理し、一意の要素を配列に返します。 このバージョンの ​`distinctBy`​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。DataWeave では、指定したラムダを一意性の条件として適用した結果が使用されます。 ### [](#パラメーター)パラメーター
名前 説明

​items

評価する配列。

​criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

### [](#例)例 次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $`​)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value } ``` #### [](#出力)出力 ```JSON [ 0, 1, 2, 3, 4] ``` ### [](#例-2)例 次の例では、配列から ​`"Kurt Cagle"`​ の重複を削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var record = { "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Kurt Cagle", "Kurt Cagle", "Kurt Cagle", "Vaidyanathan Nagarajan" ], "year":"2000" } --- { "book" : { "title" : record.title, "year" : record.year, "authors" : record.author distinctBy $ } } ``` #### [](#出力-2)出力 ```JSON { "book": { "title": "XQuery Kick Start", "year": "2000", "authors": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ] } } ``` ## [](#distinctby2)distinctBy(Null, (item: Nothing, index: Nothing) -> Any): Null `distinctBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#distinctby3)distinctBy(​{ (K)?: V }, (value: V, key: K) -> Any): Object オブジェクトから重複するキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

​object

キー-値ペアを削除する元のオブジェクト。

​criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

### [](#例-3)例 次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​`a`​ と ​`A`​) は大文字と小文字を区別して処理されませんが、値 (​`b`​ と ​`B`​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`{a : "b", a : "b", A : "b", a : "B"} distinctBy $`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- {a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value } ``` #### [](#出力-3)出力 ```JSON { "a": "b", "a": "B" } ``` ### [](#例-4)例 次の例では、​``​ から重複 (​`James McGovern`​) を削除します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { book : { title : payload.book.title, authors: payload.book.&author distinctBy $ } } ``` #### [](#入力)入力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern James McGovern James McGovern ``` #### [](#出力-4)出力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern ``` # distinctBy ## [](#distinctby1)distinctBy(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Any): Array 配列を反復処理し、一意の要素を配列に返します。 DataWeave では、指定したラムダを一意性の条件として適用した結果が使用されます。 このバージョンの ​`distinctBy`​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

​items

評価する配列。

​criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

### [](#例)例 次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $`​)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value } ``` #### [](#出力)出力 ```JSON [ 0, 1, 2, 3, 4] ``` ### [](#例-2)例 次の例では、配列から ​`"Kurt Cagle"`​ の重複を削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var record = { "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Kurt Cagle", "Kurt Cagle", "Kurt Cagle", "Vaidyanathan Nagarajan" ], "year":"2000" } --- { "book" : { "title" : record.title, "year" : record.year, "authors" : record.author distinctBy $ } } ``` #### [](#出力-2)出力 ```JSON { "book": { "title": "XQuery Kick Start", "year": "2000", "authors": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ] } } ``` ## [](#distinctby2)distinctBy(object: { (K)?: V }, criteria: (value: V, key: K) -> Any): Object オブジェクトから重複するキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

​object

キー-値ペアを削除する元のオブジェクト。

​criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

### [](#例-3)例 次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​`a`​ と ​`A`​) は大文字と小文字を区別して処理されませんが、値 (​`b`​ と ​`B`​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`{a : "b", a : "b", A : "b", a : "B"} distinctBy $`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- {a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value } ``` #### [](#出力-3)出力 ```JSON { "a": "b", "a": "B" } ``` ### [](#例-4)例 次の例では、​``​ から重複 (​`James McGovern`​) を削除します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { book : { title : payload.book.title, authors: payload.book.&author distinctBy $ } } ``` #### [](#入力)入力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern James McGovern James McGovern ``` #### [](#出力-4)出力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern ``` ## [](#distinctby3)distinctBy(@StreamCapable items: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `distinctBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # distinctBy ## [](#distinctby1)distinctBy(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Any): Array 入力を反復処理し、一意の要素を配列に返します。 DataWeave では、一意性の条件として指定したラムダの結果が使用されます。 このバージョンの ​`distinctBy`​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

評価する配列。

criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

### [](#例)例 次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $`​)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value } ``` #### [](#出力)出力 ```JSON [ 0, 1, 2, 3, 4] ``` ### [](#例-2)例 次の例では、配列から ​`"Kurt Cagle"`​ の重複を削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var record = { "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Kurt Cagle", "Kurt Cagle", "Kurt Cagle", "Vaidyanathan Nagarajan" ], "year":"2000" } --- { "book" : { "title" : record.title, "year" : record.year, "authors" : record.author distinctBy $ } } ``` #### [](#出力-2)出力 ```JSON { "book": { "title": "XQuery Kick Start", "year": "2000", "authors": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ] } } ``` ## [](#distinctby2)distinctBy(object: { (K)?: V }, criteria: (value: V, key: K) -> Any): Object オブジェクトから重複するキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

キー-値ペアを削除する元のオブジェクト。

criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

### [](#例-3)例 次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​`a`​ と ​`A`​) は大文字と小文字を区別して処理されませんが、値 (​`b`​ と ​`B`​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`{a : "b", a : "b", A : "b", a : "B"} distinctBy $`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- {a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value } ``` #### [](#出力-3)出力 ```JSON { "a": "b", "a": "B" } ``` ### [](#例-4)例 次の例では、​``​ から重複 (​`James McGovern`​) を削除します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { book : { title : payload.book.title, authors: payload.book.&author distinctBy $ } } ``` #### [](#入力)入力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern James McGovern James McGovern ``` #### [](#出力-4)出力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern ``` ## [](#distinctby3)distinctBy(@StreamCapable items: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `distinctBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # distinctBy ## [](#distinctby1)distinctBy(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Any): Array 入力を反復処理し、一意の要素を配列に返します。 DataWeave では、一意性の条件として指定したラムダの結果が使用されます。 このバージョンの ​`distinctBy`​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

評価する配列。

criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

### [](#例)例 次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $`​)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value } ``` #### [](#出力)出力 ```JSON [ 0, 1, 2, 3, 4] ``` ### [](#例-2)例 次の例では、配列から ​`"Kurt Cagle"`​ の重複を削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var record = { "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Kurt Cagle", "Kurt Cagle", "Kurt Cagle", "Vaidyanathan Nagarajan" ], "year":"2000" } --- { "book" : { "title" : record.title, "year" : record.year, "authors" : record.author distinctBy $ } } ``` #### [](#出力-2)出力 ```JSON { "book": { "title": "XQuery Kick Start", "year": "2000", "authors": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ] } } ``` ## [](#distinctby2)distinctBy(object: { (K)?: V }, criteria: (value: V, key: K) -> Any): Object オブジェクトから重複するキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

キー-値ペアを削除する元のオブジェクト。

criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

### [](#例-3)例 次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​`a`​ と ​`A`​) は大文字と小文字を区別して処理されませんが、値 (​`b`​ と ​`B`​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`{a : "b", a : "b", A : "b", a : "B"} distinctBy $`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- {a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value } ``` #### [](#出力-3)出力 ```JSON { "a": "b", "a": "B" } ``` ### [](#例-4)例 次の例では、​``​ から重複 (​`James McGovern`​) を削除します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { book : { title : payload.book.title, authors: payload.book.&author distinctBy $ } } ``` #### [](#入力)入力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern James McGovern James McGovern ``` #### [](#出力-4)出力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern ``` ## [](#distinctby3)distinctBy(@StreamCapable items: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `distinctBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # distinctBy ## [](#distinctby1)distinctBy(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Any): Array 入力を反復処理し、一意の要素を配列に返します。 DataWeave では、一意性の条件として指定したラムダの結果が使用されます。 このバージョンの ​`distinctBy`​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

評価する配列。

criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

### [](#例)例 次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $`​)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value } ``` #### [](#出力)出力 ```JSON [ 0, 1, 2, 3, 4] ``` ### [](#例-2)例 次の例では、配列から ​`"Kurt Cagle"`​ の重複を削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var record = { "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Kurt Cagle", "Kurt Cagle", "Kurt Cagle", "Vaidyanathan Nagarajan" ], "year":"2000" } --- { "book" : { "title" : record.title, "year" : record.year, "authors" : record.author distinctBy $ } } ``` #### [](#出力-2)出力 ```JSON { "book": { "title": "XQuery Kick Start", "year": "2000", "authors": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ] } } ``` ## [](#distinctby2)distinctBy(object: { (K)?: V }, criteria: (value: V, key: K) -> Any): Object オブジェクトから重複するキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

キー-値ペアを削除する元のオブジェクト。

criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

### [](#例-3)例 次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​`a`​ と ​`A`​) は大文字と小文字を区別して処理されませんが、値 (​`b`​ と ​`B`​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`{a : "b", a : "b", A : "b", a : "B"} distinctBy $`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- {a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value } ``` #### [](#出力-3)出力 ```JSON { "a": "b", "a": "B" } ``` ### [](#例-4)例 次の例では、​``​ から重複 (​`James McGovern`​) を削除します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { book : { title : payload.book.title, authors: payload.book.&author distinctBy $ } } ``` #### [](#入力)入力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern James McGovern James McGovern ``` #### [](#出力-4)出力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern ``` ## [](#distinctby3)distinctBy(@StreamCapable items: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `distinctBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # distinctBy ## [](#distinctby1)distinctBy(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Any): Array 入力を反復処理し、一意の要素を配列に返します。 DataWeave では、一意性の条件として指定したラムダの結果が使用されます。 このバージョンの ​`distinctBy`​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

評価する配列。

criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

### [](#例)例 次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $`​)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value } ``` #### [](#出力)出力 ```JSON [ 0, 1, 2, 3, 4] ``` ### [](#例-2)例 次の例では、配列から ​`"Kurt Cagle"`​ の重複を削除します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var record = { "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Kurt Cagle", "Kurt Cagle", "Kurt Cagle", "Vaidyanathan Nagarajan" ], "year":"2000" } --- { "book" : { "title" : record.title, "year" : record.year, "authors" : record.author distinctBy $ } } ``` #### [](#出力-2)出力 ```JSON { "book": { "title": "XQuery Kick Start", "year": "2000", "authors": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ] } } ``` ## [](#distinctby2)distinctBy(object: { (K)?: V }, criteria: (value: V, key: K) -> Any): Object オブジェクトから重複するキー-値ペアを削除します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

キー-値ペアを削除する元のオブジェクト。

criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

### [](#例-3)例 次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​`a`​ と ​`A`​) は大文字と小文字を区別して処理されませんが、値 (​`b`​ と ​`B`​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​`{a : "b", a : "b", A : "b", a : "B"} distinctBy $`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- {a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value } ``` #### [](#出力-3)出力 ```JSON { "a": "b", "a": "B" } ``` ### [](#例-4)例 次の例では、​``​ から重複 (​`James McGovern`​) を削除します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/xml --- { book : { title : payload.book.title, authors: payload.book.&author distinctBy $ } } ``` #### [](#入力)入力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern James McGovern James McGovern ``` #### [](#出力-4)出力 ```XML "XQuery Kick Start" James Linn Per Bothner James McGovern ``` ## [](#distinctby3)distinctBy(@StreamCapable items: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `distinctBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # divideBy ## [](#divideby1)divideBy(Array, Number): Array> 配列を、指定数の要素が含まれるサブ配列に分割します。 入力配列内の要素数が指定数より少ない場合、 この関数は 1 つのサブ配列にそれらの要素を入力します。指定数より多い場合、 この関数は、必要な数のサブ配列に追加の 要素を入力します。 ### [](#パラメーター)パラメーター
名前 説明

​items

入力配列の項目。

​amount

サブ配列あたりの許容される要素数。

### [](#例)例 次の例では、指定された ​`amount`​ (数量) に基づいて配列をサブ配列に分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "divideBy" : [ { "divideBy2" : [1, 2, 3, 4, 5] divideBy 2 }, { "divideBy2" : [1, 2, 3, 4, 5, 6] divideBy 2 }, { "divideBy3" : [1, 2, 3, 4, 5] divideBy 3 } ] } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] }, { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] }, { "divideBy3": [ [ 1, 2, 3 ], [ 4, 5 ] ] } ] } ``` # divideBy ## [](#divideby1)divideBy(Object, Number): Array オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。 指定された数よりもオブジェクトに含まれるキー - 値ペアが少ない場合は、この関数はそれらのペアをオブジェクトに入れます。ペアが多すぎる場合は、余ったペアを別のオブジェクトに入れます。 ### [](#パラメーター)パラメーター
名前 説明

​items

取得元オブジェクト内のキー - 値ペア。

​amount

1 つのオブジェクトに使用できるキー - 値ペアの数。

### [](#例)例 次の例では、指定された ​`amount`​ に基づいてオブジェクトをサブオブジェクトに分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import divideBy from dw::core::Objects output application/json --- { "divideBy" : {"a": 1, "b" : true, "a" : 2, "b" : false, "c" : 3} divideBy 2 } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "a": 1, "b": true }, { "a": 2, "b": false }, { "c": 3 } ] } ``` # divideBy ## [](#divideby1)divideBy(items: Array, amount: Number): Array> 配列を、指定数の要素が含まれるサブ配列に分割します。 入力配列内の要素数が指定数より少ない場合、 この関数は 1 つのサブ配列にそれらの要素を入力します。指定数より多い場合、 この関数は、必要な数のサブ配列に追加の 要素を入力します。 ### [](#パラメーター)パラメーター
名前 説明

​items

入力配列の項目。

​amount

サブ配列あたりの許容される要素数。

### [](#例)例 次の例では、指定された ​`amount`​ (数量) に基づいて配列をサブ配列に分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "divideBy" : [ { "divideBy2" : [1, 2, 3, 4, 5] divideBy 2 }, { "divideBy2" : [1, 2, 3, 4, 5, 6] divideBy 2 }, { "divideBy3" : [1, 2, 3, 4, 5] divideBy 3 } ] } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] }, { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] }, { "divideBy3": [ [ 1, 2, 3 ], [ 4, 5 ] ] } ] } ``` ## [](#divideby2)divideBy(items: Null, amount: Any): Null `divideBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # divideBy ## [](#divideby1)divideBy(items: Object, amount: Number): Array オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。 指定された数よりもオブジェクトに含まれるキー - 値ペアが少ない場合は、この関数はそれらのペアをオブジェクトに入れます。ペアが多すぎる場合は、余ったペアを別のオブジェクトに入れます。 ### [](#パラメーター)パラメーター
名前 説明

​items

取得元オブジェクト内のキー - 値ペア。

​amount

1 つのオブジェクトに使用できるキー - 値ペアの数。

### [](#例)例 次の例では、指定された ​`amount`​ に基づいてオブジェクトをサブオブジェクトに分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import divideBy from dw::core::Objects output application/json --- { "divideBy" : {"a": 1, "b" : true, "a" : 2, "b" : false, "c" : 3} divideBy 2 } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "a": 1, "b": true }, { "a": 2, "b": false }, { "c": 3 } ] } ``` # divideBy ## [](#divideby1)divideBy(items: Array, amount: Number): Array> 配列を、指定数の要素が含まれるサブ配列に分割します。 入力配列内の要素数が指定数より少ない場合、 この関数は 1 つのサブ配列にそれらの要素を入力します。指定数より多い場合、 この関数は、必要な数のサブ配列に追加の 要素を入力します。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列の項目。

amount

サブ配列あたりの許容される要素数。

### [](#例)例 次の例では、指定された ​`amount`​ (数量) に基づいて配列をサブ配列に分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "divideBy" : [ { "divideBy2" : [1, 2, 3, 4, 5] divideBy 2 }, { "divideBy2" : [1, 2, 3, 4, 5, 6] divideBy 2 }, { "divideBy3" : [1, 2, 3, 4, 5] divideBy 3 } ] } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] }, { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] }, { "divideBy3": [ [ 1, 2, 3 ], [ 4, 5 ] ] } ] } ``` ## [](#divideby2)divideBy(items: Null, amount: Any): Null `divideBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # divideBy ## [](#divideby1)divideBy(items: Object, amount: Number): Array オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。 指定された数よりもオブジェクトに含まれるキー - 値ペアが少ない場合は、この関数はそれらのペアをオブジェクトに入れます。ペアが多すぎる場合は、余ったペアを別のオブジェクトに入れます。 ### [](#パラメーター)パラメーター
名前 説明

items

取得元オブジェクト内のキー - 値ペア。

amount

1 つのオブジェクトに使用できるキー - 値ペアの数。

### [](#例)例 次の例では、指定された ​`amount`​ に基づいてオブジェクトをサブオブジェクトに分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import divideBy from dw::core::Objects output application/json --- { "divideBy" : {"a": 1, "b" : true, "a" : 2, "b" : false, "c" : 3} divideBy 2 } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "a": 1, "b": true }, { "a": 2, "b": false }, { "c": 3 } ] } ``` # divideBy ## [](#divideby1)divideBy(items: Array, amount: Number): Array> 配列を、指定数の要素が含まれるサブ配列に分割します。 入力配列内の要素数が指定数より少ない場合、 この関数は 1 つのサブ配列にそれらの要素を入力します。指定数より多い場合、 この関数は、必要な数のサブ配列に追加の 要素を入力します。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列の項目。

amount

サブ配列あたりの許容される要素数。

### [](#例)例 次の例では、指定された ​`amount`​ (数量) に基づいて配列をサブ配列に分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "divideBy" : [ { "divideBy2" : [1, 2, 3, 4, 5] divideBy 2 }, { "divideBy2" : [1, 2, 3, 4, 5, 6] divideBy 2 }, { "divideBy3" : [1, 2, 3, 4, 5] divideBy 3 } ] } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] }, { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] }, { "divideBy3": [ [ 1, 2, 3 ], [ 4, 5 ] ] } ] } ``` ## [](#divideby2)divideBy(items: Null, amount: Any): Null `divideBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # divideBy ## [](#divideby1)divideBy(items: Object, amount: Number): Array オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。 指定された数よりもオブジェクトに含まれるキー - 値ペアが少ない場合は、この関数はそれらのペアをオブジェクトに入れます。ペアが多すぎる場合は、余ったペアを別のオブジェクトに入れます。 ### [](#パラメーター)パラメーター
名前 説明

items

取得元オブジェクト内のキー - 値ペア。

amount

1 つのオブジェクトに使用できるキー - 値ペアの数。

### [](#例)例 次の例では、指定された ​`amount`​ に基づいてオブジェクトをサブオブジェクトに分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import divideBy from dw::core::Objects output application/json --- { "divideBy" : {"a": 1, "b" : true, "a" : 2, "b" : false, "c" : 3} divideBy 2 } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "a": 1, "b": true }, { "a": 2, "b": false }, { "c": 3 } ] } ``` # divideBy ## [](#divideby1)divideBy(items: Array, amount: Number): Array> 配列を、指定数の要素が含まれるサブ配列に分割します。 入力配列内の要素数が指定数より少ない場合、 この関数は 1 つのサブ配列にそれらの要素を入力します。指定数より多い場合、 この関数は、必要な数のサブ配列に追加の 要素を入力します。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列の項目。

amount

サブ配列あたりの許容される要素数。

### [](#例)例 次の例では、指定された ​`amount`​ (数量) に基づいて配列をサブ配列に分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "divideBy" : [ { "divideBy2" : [1, 2, 3, 4, 5] divideBy 2 }, { "divideBy2" : [1, 2, 3, 4, 5, 6] divideBy 2 }, { "divideBy3" : [1, 2, 3, 4, 5] divideBy 3 } ] } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] }, { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] }, { "divideBy3": [ [ 1, 2, 3 ], [ 4, 5 ] ] } ] } ``` ## [](#divideby2)divideBy(items: Null, amount: Any): Null `divideBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # divideBy ## [](#divideby1)divideBy(items: Object, amount: Number): Array オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。 指定された数よりもオブジェクトに含まれるキー - 値ペアが少ない場合は、この関数はそれらのペアをオブジェクトに入れます。ペアが多すぎる場合は、余ったペアを別のオブジェクトに入れます。 ### [](#パラメーター)パラメーター
名前 説明

items

取得元オブジェクト内のキー - 値ペア。

amount

1 つのオブジェクトに使用できるキー - 値ペアの数。

### [](#例)例 次の例では、指定された ​`amount`​ に基づいてオブジェクトをサブオブジェクトに分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import divideBy from dw::core::Objects output application/json --- { "divideBy" : {"a": 1, "b" : true, "a" : 2, "b" : false, "c" : 3} divideBy 2 } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "a": 1, "b": true }, { "a": 2, "b": false }, { "c": 3 } ] } ``` # divideBy ## [](#divideby1)divideBy(items: Array, amount: Number): Array> 配列を、指定数の要素が含まれるサブ配列に分割します。 入力配列内の要素数が指定数より少ない場合、 この関数は 1 つのサブ配列にそれらの要素を入力します。指定数より多い場合、 この関数は、必要な数のサブ配列に追加の 要素を入力します。 ### [](#パラメーター)パラメーター
名前 説明

items

入力配列の項目。

amount

サブ配列あたりの許容される要素数。

### [](#例)例 次の例では、指定された ​`amount`​ (数量) に基づいて配列をサブ配列に分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "divideBy" : [ { "divideBy2" : [1, 2, 3, 4, 5] divideBy 2 }, { "divideBy2" : [1, 2, 3, 4, 5, 6] divideBy 2 }, { "divideBy3" : [1, 2, 3, 4, 5] divideBy 3 } ] } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] }, { "divideBy2": [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] }, { "divideBy3": [ [ 1, 2, 3 ], [ 4, 5 ] ] } ] } ``` ## [](#divideby2)divideBy(items: Null, amount: Any): Null `divideBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # divideBy ## [](#divideby1)divideBy(items: Object, amount: Number): Array オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。 指定された数よりもオブジェクトに含まれるキー - 値ペアが少ない場合は、この関数はそれらのペアをオブジェクトに入れます。ペアが多すぎる場合は、余ったペアを別のオブジェクトに入れます。 ### [](#パラメーター)パラメーター
名前 説明

items

取得元オブジェクト内のキー - 値ペア。

amount

1 つのオブジェクトに使用できるキー - 値ペアの数。

### [](#例)例 次の例では、指定された ​`amount`​ に基づいてオブジェクトをサブオブジェクトに分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import divideBy from dw::core::Objects output application/json --- { "divideBy" : {"a": 1, "b" : true, "a" : 2, "b" : false, "c" : 3} divideBy 2 } ``` #### [](#出力)出力 ```JSON { "divideBy": [ { "a": 1, "b": true }, { "a": 2, "b": false }, { "c": 3 } ] } ``` # docTypeAsString ## [](#doctypeasstring1)docTypeAsString(docType: DocType): String `DocType`​ 値を文字列表現に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

docType

DocType

文字列に変換する ​DocType​ 値。

### [](#例)例 次の例では、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "cXML", systemId: "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"}) ``` #### [](#出力)出力 ```Json "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ### [](#例-2)例 次の例では、​`publicId`​ と ​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "html", publicId: "-//W3C//DTD XHTML 1.0 Transitional//EN", systemId: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"}) ``` #### [](#出力-2)出力 ```Json "html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ``` # docTypeAsString ## [](#doctypeasstring1)docTypeAsString(docType: DocType): String `DocType`​ 値を文字列表現に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

docType

DocType

文字列に変換する ​DocType​ 値。

### [](#例)例 次の例では、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "cXML", systemId: "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"}) ``` #### [](#出力)出力 ```Json "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ### [](#例-2)例 次の例では、​`publicId`​ と ​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "html", publicId: "-//W3C//DTD XHTML 1.0 Transitional//EN", systemId: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"}) ``` #### [](#出力-2)出力 ```Json "html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ``` # docTypeAsString ## [](#doctypeasstring1)docTypeAsString(docType: DocType): String `DocType`​ 値を文字列表現に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

docType

DocType

文字列に変換する ​DocType​ 値。

### [](#例)例 次の例では、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "cXML", systemId: "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"}) ``` #### [](#出力)出力 ```Json "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ### [](#例-2)例 次の例では、​`publicId`​ と ​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "html", publicId: "-//W3C//DTD XHTML 1.0 Transitional//EN", systemId: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"}) ``` #### [](#出力-2)出力 ```Json "html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ``` # docTypeAsString ## [](#doctypeasstring1)docTypeAsString(docType: DocType): String `DocType`​ 値を文字列表現に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

docType

DocType

文字列に変換する ​DocType​ 値。

### [](#例)例 次の例では、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "cXML", systemId: "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"}) ``` #### [](#出力)出力 ```Json "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ### [](#例-2)例 次の例では、​`publicId`​ と ​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::xml::Dtd output application/json --- docTypeAsString({rootName: "html", publicId: "-//W3C//DTD XHTML 1.0 Transitional//EN", systemId: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"}) ``` #### [](#出力-2)出力 ```Json "html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ``` # drop ## [](#drop1)drop(Array, Number): Array 最初の ​`n`​ 個の要素をドロップします。​`n <= 0`​ の場合は元の配列を返し、​`n > sizeOf(array)`​ の場合は空の配列を返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の左配列。

​n

取り除く要素の数。

### [](#例)例 次の例では、入力配列の 3 番目の要素のみを含む配列を返します。最初の 2 個の要素は出力からドロップされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- drop(users, 2) ``` #### [](#出力)出力 ```json [ "Julian" ] ``` # drop ## [](#drop1)drop(array: Array, n: Number): Array 最初の ​`n`​ 個の要素をドロップします。​`n <= 0`​ の場合は元の配列を返し、​`n > sizeOf(array)`​ の場合は空の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の左配列。

​n

取り除く要素の数。

### [](#例)例 次の例では、入力配列の 3 番目の要素のみを含む配列を返します。最初の 2 個の要素は出力からドロップされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- drop(users, 2) ``` #### [](#出力)出力 ```json [ "Julian" ] ``` ## [](#drop2)drop(array: Null, n: Any): Null `drop`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # drop ## [](#drop1)drop(array: Array, n: Number): Array 最初の ​`n`​ 個の要素をドロップします。​`n <= 0`​ の場合は元の配列を返し、​`n > sizeOf(array)`​ の場合は空の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の左配列。

n

取り除く要素の数。

### [](#例)例 次の例では、入力配列の 3 番目の要素のみを含む配列を返します。最初の 2 個の要素は出力からドロップされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- drop(users, 2) ``` #### [](#出力)出力 ```json [ "Julian" ] ``` ## [](#drop2)drop(array: Null, n: Any): Null `drop`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # drop ## [](#drop1)drop(array: Array, n: Number): Array 最初の ​`n`​ 個の要素をドロップします。​`n <= 0`​ の場合は元の配列を返し、​`n > sizeOf(array)`​ の場合は空の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の左配列。

n

取り除く要素の数。

### [](#例)例 次の例では、入力配列の 3 番目の要素のみを含む配列を返します。最初の 2 個の要素は出力からドロップされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- drop(users, 2) ``` #### [](#出力)出力 ```json [ "Julian" ] ``` ## [](#drop2)drop(array: Null, n: Any): Null `drop`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # drop ## [](#drop1)drop(array: Array, n: Number): Array 最初の ​`n`​ 個の要素をドロップします。​`n <= 0`​ の場合は元の配列を返し、​`n > sizeOf(array)`​ の場合は空の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の左配列。

n

取り除く要素の数。

### [](#例)例 次の例では、入力配列の 3 番目の要素のみを含む配列を返します。最初の 2 個の要素は出力からドロップされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- drop(users, 2) ``` #### [](#出力)出力 ```json [ "Julian" ] ``` ## [](#drop2)drop(array: Null, n: Any): Null `drop`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # drop ## [](#drop1)drop(array: Array, n: Number): Array 最初の ​`n`​ 個の要素をドロップします。​`n <= 0`​ の場合は元の配列を返し、​`n > sizeOf(array)`​ の場合は空の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の左配列。

n

取り除く要素の数。

### [](#例)例 次の例では、入力配列の 3 番目の要素のみを含む配列を返します。最初の 2 個の要素は出力からドロップされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- drop(users, 2) ``` #### [](#出力)出力 ```json [ "Julian" ] ``` ## [](#drop2)drop(array: Null, n: Any): Null `drop`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # dropWhile ## [](#dropwhile1)dropWhile(Array, (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、​`2`​ 以下の要素を省略する配列を返します。 最後の 2 つの要素 (​`2`​ と ​`1`​) が出力配列に含まれます。これは、​`3`​ (​`2`​ より大きい) に達した時点で関数が要素の削除を停止するためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,3,2,1] --- arr dropWhile $ < 3 ``` #### [](#出力)出力 ```json [ 3, 2, 1 ] ``` # dropWhile ## [](#dropwhile1)dropWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、​`2`​ 以下の要素を省略する配列を返します。 最後の 2 つの要素 (​`2`​ と ​`1`​) が出力配列に含まれます。これは、​`3`​ (​`2`​ より大きい) に達した時点で関数が要素の削除を停止するためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,3,2,1] --- arr dropWhile $ < 3 ``` #### [](#出力)出力 ```json [ 3, 2, 1 ] ``` ## [](#dropwhile2)dropWhile(array: Null, condition: (item: Nothing) -> Any): Null `dropWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # dropWhile ## [](#dropwhile1)dropWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、​`2`​ 以下の要素を省略する配列を返します。 最後の 2 つの要素 (​`2`​ と ​`1`​) が出力配列に含まれます。これは、​`3`​ (​`2`​ より大きい) に達した時点で関数が要素の削除を停止するためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,3,2,1] --- arr dropWhile $ < 3 ``` #### [](#出力)出力 ```json [ 3, 2, 1 ] ``` ## [](#dropwhile2)dropWhile(array: Null, condition: (item: Nothing) -> Any): Null `dropWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # dropWhile ## [](#dropwhile1)dropWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、​`2`​ 以下の要素を省略する配列を返します。 最後の 2 つの要素 (​`2`​ と ​`1`​) が出力配列に含まれます。これは、​`3`​ (​`2`​ より大きい) に達した時点で関数が要素の削除を停止するためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,3,2,1] --- arr dropWhile $ < 3 ``` #### [](#出力)出力 ```json [ 3, 2, 1 ] ``` ## [](#dropwhile2)dropWhile(array: Null, condition: (item: Nothing) -> Any): Null `dropWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # dropWhile ## [](#dropwhile1)dropWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、​`2`​ 以下の要素を省略する配列を返します。 最後の 2 つの要素 (​`2`​ と ​`1`​) が出力配列に含まれます。これは、​`3`​ (​`2`​ より大きい) に達した時点で関数が要素の削除を停止するためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,3,2,1] --- arr dropWhile $ < 3 ``` #### [](#出力)出力 ```json [ 3, 2, 1 ] ``` ## [](#dropwhile2)dropWhile(array: Null, condition: (item: Nothing) -> Any): Null `dropWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # dropWhile ## [](#dropwhile1)dropWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から削除しますが、条件を満たさない要素に達したら選択プロセスを停止します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、​`2`​ 以下の要素を省略する配列を返します。 最後の 2 つの要素 (​`2`​ と ​`1`​) が出力配列に含まれます。これは、​`3`​ (​`2`​ より大きい) に達した時点で関数が要素の削除を停止するためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,3,2,1] --- arr dropWhile $ < 3 ``` #### [](#出力)出力 ```json [ 3, 2, 1 ] ``` ## [](#dropwhile2)dropWhile(array: Null, condition: (item: Nothing) -> Any): Null `dropWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # Dtd (dw::xml::Dtd) このモジュールには XML 文書型宣言を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::xml::Dtd`​ を DataWeave スクリプトのヘッダーに追加します。 _DataWeave バージョン 2.5.0 で導入されました。_ ## [](#関数)関数
名前 説明

docTypeAsString

DocType​ 値を文字列表現に変換します。

## [](#型)型 - [Dtd 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dtd-types) # Dtd (dw::xml::Dtd) このモジュールには XML 文書型宣言を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::xml::Dtd`​ を DataWeave スクリプトのヘッダーに追加します。 _DataWeave バージョン 2.5.0 で導入されました。_ ## [](#関数)関数
名前 説明

docTypeAsString

DocType​ 値を文字列表現に変換します。

## [](#型)型 - [Dtd 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dtd-types) # Dtd (dw::xml::Dtd) このモジュールには XML 文書型宣言を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::xml::Dtd`​ を DataWeave スクリプトのヘッダーに追加します。 _DataWeave バージョン 2.5.0 で導入されました。_ ## [](#関数)関数
名前 説明

docTypeAsString

DocType​ 値を文字列表現に変換します。

## [](#型)型 - [Dtd 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dtd-types) # Dtd (dw::xml::Dtd) このモジュールには XML 文書型宣言を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::xml::Dtd`​ を DataWeave スクリプトのヘッダーに追加します。 _DataWeave バージョン 2.5.0 で導入されました。_ ## [](#関数)関数
名前 説明

docTypeAsString

DocType​ 値を文字列表現に変換します。

## [](#型)型 - [Dtd 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dtd-types) # Dtd 型 (dw::xml::Dtd)
型 定義 説明

DocType

type DocType = { rootName: String, publicId?: String, systemId?: String, internalSubset?: String }

XML ファイルに含まれる文書型宣言を表す DataWeave 型。 次の項目がサポートされています。

  • rootName​: 宣言のルート要素。

  • publicId​: 一般公開されている標準 (省略可能)。

  • systemId​: ローカル URL (省略可能)。

  • internalSubset​: 内部 DTD サブセット (省略可能)。

DataWeave バージョン 2.5.0 で導入されました。​

# Dtd 型 (dw::xml::Dtd)
型 定義 説明

DocType

type DocType = { rootName: String, publicId?: String, systemId?: String, internalSubset?: String }

XML ファイルに含まれる文書型宣言を表す DataWeave 型。 次の項目がサポートされています。

  • rootName​: 宣言のルート要素。

  • publicId​: 一般公開されている標準 (省略可能)。

  • systemId​: ローカル URL (省略可能)。

  • internalSubset​: 内部 DTD サブセット (省略可能)。

DataWeave バージョン 2.5.0 で導入されました。​

# Dtd 型 (dw::xml::Dtd)
型 定義 説明

DocType

type DocType = { rootName: String, publicId?: String, systemId?: String, internalSubset?: String }

XML ファイルに含まれる文書型宣言を表す DataWeave 型。 次の項目がサポートされています。

  • rootName​: 宣言のルート要素。

  • publicId​: 一般公開されている標準 (省略可能)。

  • systemId​: ローカル URL (省略可能)。

  • internalSubset​: 内部 DTD サブセット (省略可能)。

DataWeave バージョン 2.5.0 で導入されました。​

# Dtd 型 (dw::xml::Dtd)
型 定義 説明

DocType

type DocType = { rootName: String, publicId?: String, systemId?: String, internalSubset?: String }

XML ファイルに含まれる文書型宣言を表す DataWeave 型。 次の項目がサポートされています。

  • rootName​: 宣言のルート要素。

  • publicId​: 一般公開されている標準 (省略可能)。

  • systemId​: ローカル URL (省略可能)。

  • internalSubset​: 内部 DTD サブセット (省略可能)。

DataWeave バージョン 2.5.0 で導入されました。​

# duration ## [](#duration1)duration(() -> T): DurationMeasurement 入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

​valueToMeasure

​duration​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数 (ヘッダーで定義) を渡し、その関数の実行時間と結果を ​`DurationMeasurement`​ オブジェクトで返します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) --- dw::util::Timer::duration(() -> myFunction()) ``` #### [](#出力)出力 ```XML { "time": 101, "result": "My result" } ``` # duration ## [](#duration1)duration(period: { days?: Number, hours?: Number, minutes?: Number, seconds?: Number }​): Period 日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​period

​{days:4, hours:11, minutes:45, seconds: 55}​ などのオブジェクト。 キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"PT0S"​ (0 秒) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数または小数で、正でも負でも問題ありません。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`duration`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { dayAfterDateTime: |2020-10-05T20:22:34.385Z| + duration({days: 1}), dayAndHourBeforeDateTime: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1}), pointInTimeBefore: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1, minutes: 20, seconds: 10}), emptyDuration: duration({}), constructDuration: duration({days:4, hours:11, minutes:28}), selectHoursFromDuration: duration({days:4, hours:11, minutes:28}).hours, decimalAsPeriod: duration({seconds: 30.5}), addNegativeValue: duration({ minutes : 1 }) + duration({ seconds : -1 }) } ``` #### [](#出力)出力 ```Json { "dayAfterDateTime": "2020-10-06T20:22:34.385Z", "dayAndHourBeforeDateTime": "2020-10-04T19:22:34.385Z", "pointInTimeBefore": "2020-10-04T19:02:24.385Z", "emptyDuration": "PT0S", "constructDuration": "PT107H28M", "selectHoursFromDuration": 11, "decimalAsPeriod": "PT30.5S", "addNegativeValue": 59 } ``` # duration ## [](#duration1)duration(valueToMeasure: () -> T): DurationMeasurement 入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

​valueToMeasure

​duration​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数 (ヘッダーで定義) を渡し、その関数の実行時間と結果を ​`DurationMeasurement`​ オブジェクトで返します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) --- dw::util::Timer::duration(() -> myFunction()) ``` #### [](#出力)出力 ```XML { "time": 101, "result": "My result" } ``` # duration ## [](#duration1)duration(period: { days?: Number, hours?: Number, minutes?: Number, seconds?: Number }): Period 日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{days:4, hours:11, minutes:45, seconds: 55}​ などのオブジェクト。 キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"PT0S"​ (0 秒) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数または小数で、正でも負でも問題ありません。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`duration`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { dayAfterDateTime: |2020-10-05T20:22:34.385Z| + duration({days: 1}), dayAndHourBeforeDateTime: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1}), pointInTimeBefore: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1, minutes: 20, seconds: 10}), emptyDuration: duration({}), constructDuration: duration({days:4, hours:11, minutes:28}), selectHoursFromDuration: duration({days:4, hours:11, minutes:28}).hours, decimalAsPeriod: duration({seconds: 30.5}), addNegativeValue: duration({ minutes : 1 }) + duration({ seconds : -1 }) } ``` #### [](#出力)出力 ```Json { "dayAfterDateTime": "2020-10-06T20:22:34.385Z", "dayAndHourBeforeDateTime": "2020-10-04T19:22:34.385Z", "pointInTimeBefore": "2020-10-04T19:02:24.385Z", "emptyDuration": "PT0S", "constructDuration": "PT107H28M", "selectHoursFromDuration": 11, "decimalAsPeriod": "PT30.5S", "addNegativeValue": 59 } ``` # duration ## [](#duration1)duration(valueToMeasure: () -> T): DurationMeasurement 入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

duration​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数 (ヘッダーで定義) を渡し、その関数の実行時間と結果を ​`DurationMeasurement`​ オブジェクトで返します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) --- dw::util::Timer::duration(() -> myFunction()) ``` #### [](#出力)出力 ```XML { "time": 101, "result": "My result" } ``` # duration ## [](#duration1)duration(period: { days?: Number, hours?: Number, minutes?: Number, seconds?: Number }): Period 日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{days:4, hours:11, minutes:45, seconds: 55}​ などのオブジェクト。 キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"PT0S"​ (0 秒) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数または小数で、正でも負でも問題ありません。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`duration`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { dayAfterDateTime: |2020-10-05T20:22:34.385Z| + duration({days: 1}), dayAndHourBeforeDateTime: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1}), pointInTimeBefore: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1, minutes: 20, seconds: 10}), emptyDuration: duration({}), constructDuration: duration({days:4, hours:11, minutes:28}), selectHoursFromDuration: duration({days:4, hours:11, minutes:28}).hours, decimalAsPeriod: duration({seconds: 30.5}), addNegativeValue: duration({ minutes : 1 }) + duration({ seconds : -1 }) } ``` #### [](#出力)出力 ```Json { "dayAfterDateTime": "2020-10-06T20:22:34.385Z", "dayAndHourBeforeDateTime": "2020-10-04T19:22:34.385Z", "pointInTimeBefore": "2020-10-04T19:02:24.385Z", "emptyDuration": "PT0S", "constructDuration": "PT107H28M", "selectHoursFromDuration": 11, "decimalAsPeriod": "PT30.5S", "addNegativeValue": 59 } ``` # duration ## [](#duration1)duration(valueToMeasure: () -> T): DurationMeasurement 入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

duration​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数 (ヘッダーで定義) を渡し、その関数の実行時間と結果を ​`DurationMeasurement`​ オブジェクトで返します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) --- dw::util::Timer::duration(() -> myFunction()) ``` #### [](#出力)出力 ```XML { "time": 101, "result": "My result" } ``` # duration ## [](#duration1)duration(period: { days?: Number, hours?: Number, minutes?: Number, seconds?: Number }): Period 日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{days:4, hours:11, minutes:45, seconds: 55}​ などのオブジェクト。 キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"PT0S"​ (0 秒) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数または小数で、正でも負でも問題ありません。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`duration`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { dayAfterDateTime: |2020-10-05T20:22:34.385Z| + duration({days: 1}), dayAndHourBeforeDateTime: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1}), pointInTimeBefore: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1, minutes: 20, seconds: 10}), emptyDuration: duration({}), constructDuration: duration({days:4, hours:11, minutes:28}), selectHoursFromDuration: duration({days:4, hours:11, minutes:28}).hours, decimalAsPeriod: duration({seconds: 30.5}), addNegativeValue: duration({ minutes : 1 }) + duration({ seconds : -1 }) } ``` #### [](#出力)出力 ```Json { "dayAfterDateTime": "2020-10-06T20:22:34.385Z", "dayAndHourBeforeDateTime": "2020-10-04T19:22:34.385Z", "pointInTimeBefore": "2020-10-04T19:02:24.385Z", "emptyDuration": "PT0S", "constructDuration": "PT107H28M", "selectHoursFromDuration": 11, "decimalAsPeriod": "PT30.5S", "addNegativeValue": 59 } ``` # duration ## [](#duration1)duration(valueToMeasure: () -> T): DurationMeasurement 入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

duration​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数 (ヘッダーで定義) を渡し、その関数の実行時間と結果を ​`DurationMeasurement`​ オブジェクトで返します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) --- dw::util::Timer::duration(() -> myFunction()) ``` #### [](#出力)出力 ```XML { "time": 101, "result": "My result" } ``` # duration ## [](#duration1)duration(period: { days?: Number, hours?: Number, minutes?: Number, seconds?: Number }): Period 日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{days:4, hours:11, minutes:45, seconds: 55}​ などのオブジェクト。 キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"PT0S"​ (0 秒) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数または小数で、正でも負でも問題ありません。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`duration`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { dayAfterDateTime: |2020-10-05T20:22:34.385Z| + duration({days: 1}), dayAndHourBeforeDateTime: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1}), pointInTimeBefore: |2020-10-05T20:22:34.385Z| - duration({days: 1, hours: 1, minutes: 20, seconds: 10}), emptyDuration: duration({}), constructDuration: duration({days:4, hours:11, minutes:28}), selectHoursFromDuration: duration({days:4, hours:11, minutes:28}).hours, decimalAsPeriod: duration({seconds: 30.5}), addNegativeValue: duration({ minutes : 1 }) + duration({ seconds : -1 }) } ``` #### [](#出力)出力 ```Json { "dayAfterDateTime": "2020-10-06T20:22:34.385Z", "dayAndHourBeforeDateTime": "2020-10-04T19:22:34.385Z", "pointInTimeBefore": "2020-10-04T19:02:24.385Z", "emptyDuration": "PT0S", "constructDuration": "PT107H28M", "selectHoursFromDuration": 11, "decimalAsPeriod": "PT30.5S", "addNegativeValue": 59 } ``` # duration ## [](#duration1)duration(valueToMeasure: () -> T): DurationMeasurement 入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

duration​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数 (ヘッダーで定義) を渡し、その関数の実行時間と結果を ​`DurationMeasurement`​ オブジェクトで返します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) --- dw::util::Timer::duration(() -> myFunction()) ``` #### [](#出力)出力 ```XML { "time": 101, "result": "My result" } ``` # encodeURI ## [](#encodeuri1)encodeURI(String): String UTF-8 エスケープシーケンスを使用して URI をエンコードします。 2 つのサロゲート文字で構成される文字に最大 4 つのエスケープシーケンスを適用します。この関数は、URI が完全な URI であることを前提にしているため、特別な意味を持つ予約文字はエンコードしません。 この関数では、次の文字は UTF-8 エスケープシーケンスによって​_エンコードされません_​。
種別 (エスケープされない) 例

予約文字

; , / ? : @ & = $

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

#

### [](#パラメーター)パラメーター
名前 説明

​text

エンコードする URI。

### [](#例)例 次の例は、1 つの URL 内のスペースのエンコードと、​`not_encoded`​ 文字列でエンコードされない文字のリストを示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "encodeURI" : encodeURI("http://asd/ text to decode /text"), "not_encoded": encodeURI("http://:;,/?:@&=\$_-_.!~*'()") } ``` #### [](#出力)出力 ```JSON { "encodeURI": "http://asd/%20text%20to%20decode%20/%25/\"\'/text", "not_encoded": "http://:;,/?:@&=$_-_.!~*'()" } ``` # encodeURI ## [](#encodeuri1)encodeURI(text: String): String UTF-8 エスケープシーケンスを使用して URI をエンコードします。 2 つのサロゲート文字で構成される文字に最大 4 つのエスケープシーケンスを適用します。この関数は、URI が完全な URI であることを前提にしているため、特別な意味を持つ予約文字はエンコードしません。 この関数では、次の文字は UTF-8 エスケープシーケンスによって​_エンコードされません_​。
種別 (エスケープされない) 例

予約文字

; , / ? : @ & = $

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

#

### [](#パラメーター)パラメーター
名前 説明

​text

エンコードする URI。

### [](#例)例 次の例は、1 つの URL 内のスペースのエンコードと、​`not_encoded`​ 文字列でエンコードされない文字のリストを示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "encodeURI" : encodeURI("http://asd/ text to decode /text"), "not_encoded": encodeURI("http://:;,/?:@&=\$_-_.!~*'()") } ``` #### [](#出力)出力 ```JSON { "encodeURI": "http://asd/%20text%20to%20decode%20/%25/\"\'/text", "not_encoded": "http://:;,/?:@&=$_-_.!~*'()" } ``` # encodeURI ## [](#encodeuri1)encodeURI(text: String): String UTF-8 エスケープシーケンスを使用して URI をエンコードします。 2 つのサロゲート文字で構成される文字に最大 4 つのエスケープシーケンスを適用します。この関数は、URI が完全な URI であることを前提にしているため、特別な意味を持つ予約文字はエンコードしません。 この関数では、次の文字は UTF-8 エスケープシーケンスによって​_エンコードされません_​。
種別 (エスケープされない) 例

予約文字

; , / ? : @ & = $

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

#

### [](#パラメーター)パラメーター
名前 説明

text

エンコードする URI。

### [](#例)例 次の例は、1 つの URL 内のスペースのエンコードと、​`not_encoded`​ 文字列でエンコードされない文字のリストを示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "encodeURI" : encodeURI("http://asd/ text to decode /text"), "not_encoded": encodeURI("http://:;,/?:@&=\$_-_.!~*'()") } ``` #### [](#出力)出力 ```JSON { "encodeURI": "http://asd/%20text%20to%20decode%20/%25/\"\'/text", "not_encoded": "http://:;,/?:@&=$_-_.!~*'()" } ``` # encodeURI ## [](#encodeuri1)encodeURI(text: String): String UTF-8 エスケープシーケンスを使用して URI をエンコードします。 2 つのサロゲート文字で構成される文字に最大 4 つのエスケープシーケンスを適用します。この関数は、URI が完全な URI であることを前提にしているため、特別な意味を持つ予約文字はエンコードしません。 この関数では、次の文字は UTF-8 エスケープシーケンスによって​_エンコードされません_​。
種別 (エスケープされない) 例

予約文字

; , / ? : @ & = $

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

#

### [](#パラメーター)パラメーター
名前 説明

text

エンコードする URI。

### [](#例)例 次の例は、1 つの URL 内のスペースのエンコードと、​`not_encoded`​ 文字列でエンコードされない文字のリストを示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "encodeURI" : encodeURI("http://asd/ text to decode /text"), "not_encoded": encodeURI("http://:;,/?:@&=\$_-_.!~*'()") } ``` #### [](#出力)出力 ```JSON { "encodeURI": "http://asd/%20text%20to%20decode%20/%25/\"\'/text", "not_encoded": "http://:;,/?:@&=$_-_.!~*'()" } ``` # encodeURI ## [](#encodeuri1)encodeURI(text: String): String UTF-8 エスケープシーケンスを使用して URI をエンコードします。 2 つのサロゲート文字で構成される文字に最大 4 つのエスケープシーケンスを適用します。この関数は、URI が完全な URI であることを前提にしているため、特別な意味を持つ予約文字はエンコードしません。 この関数では、次の文字は UTF-8 エスケープシーケンスによって​_エンコードされません_​。
種別 (エスケープされない) 例

予約文字

; , / ? : @ & = $

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

#

### [](#パラメーター)パラメーター
名前 説明

text

エンコードする URI。

### [](#例)例 次の例は、1 つの URL 内のスペースのエンコードと、​`not_encoded`​ 文字列でエンコードされない文字のリストを示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "encodeURI" : encodeURI("http://asd/ text to decode /text"), "not_encoded": encodeURI("http://:;,/?:@&=\$_-_.!~*'()") } ``` #### [](#出力)出力 ```JSON { "encodeURI": "http://asd/%20text%20to%20decode%20/%25/\"\'/text", "not_encoded": "http://:;,/?:@&=$_-_.!~*'()" } ``` # encodeURI ## [](#encodeuri1)encodeURI(text: String): String UTF-8 エスケープシーケンスを使用して URI をエンコードします。 2 つのサロゲート文字で構成される文字に最大 4 つのエスケープシーケンスを適用します。この関数は、URI が完全な URI であることを前提にしているため、特別な意味を持つ予約文字はエンコードしません。 この関数では、次の文字は UTF-8 エスケープシーケンスによって​_エンコードされません_​。
種別 (エスケープされない) 例

予約文字

; , / ? : @ & = $

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

#

### [](#パラメーター)パラメーター
名前 説明

text

エンコードする URI。

### [](#例)例 次の例は、1 つの URL 内のスペースのエンコードと、​`not_encoded`​ 文字列でエンコードされない文字のリストを示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "encodeURI" : encodeURI("http://asd/ text to decode /text"), "not_encoded": encodeURI("http://:;,/?:@&=\$_-_.!~*'()") } ``` #### [](#出力)出力 ```JSON { "encodeURI": "http://asd/%20text%20to%20decode%20/%25/\"\'/text", "not_encoded": "http://:;,/?:@&=$_-_.!~*'()" } ``` # encodeURIComponent ## [](#encodeuricomponent1)encodeURIComponent(String): String UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。 2 つのサロゲート文字で構成される文字には、4 つのエスケープシーケンスのみを使用できます。​`encodeURIComponent`​ は、アルファベット、10 進数、​`- _ . ! ~ * ' ( )`​ を​_除く_​すべての文字をエスケープします。 `encodeURIComponent`​ は ​`encodeURI`​ とは異なり、​`encodeURI`​ の予約文字と番号記号 ​`#`​ をエンコードします。
型 含まれるもの

予約文字

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

### [](#パラメーター)パラメーター
名前 説明

​text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをエンコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "comparing_encode_functions_output" : { "encodeURIComponent" : encodeURI(" PATH/ TO /ENCODE "), "encodeURI" : encodeURI(" PATH/ TO /ENCODE "), "encodeURIComponent_to_hex" : encodeURIComponent(";,/?:@&="), "encodeURI_not_to_hex" : encodeURI(";,/?:@&="), "encodeURIComponent_not_encoded" : encodeURIComponent("-_.!~*'()"), "encodeURI_not_encoded" : encodeURI("-_.!~*'()") } } ``` #### [](#出力)出力 ```JSON { "comparing_encode_functions_output": { "encodeURIComponent": "%20PATH/%20TO%20/ENCODE%20", "encodeURI": "%20PATH/%20TO%20/ENCODE%20", "encodeURIComponent_to_hex": "%3B%2C%2F%3F%3A%40%26%3D", "encodeURI_not_to_hex": ";,/?:@&=", "encodeURIComponent_not_encoded": "-_.!~*'()", "encodeURI_not_encoded": "-_.!~*'()" } } ``` # encodeURIComponent ## [](#encodeuricomponent1)encodeURIComponent(text: String): String UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。 2 つのサロゲート文字で構成される文字には、4 つのエスケープシーケンスのみを使用できます。​`encodeURIComponent`​ は、アルファベット、10 進数、​`- _ . ! ~ * ' ( )`​ を​_除く_​すべての文字をエスケープします。 `encodeURIComponent`​ は ​`encodeURI`​ とは異なり、​`encodeURI`​ の予約文字と番号記号 ​`#`​ をエンコードします。
型 含まれるもの

予約文字

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

### [](#パラメーター)パラメーター
名前 説明

​text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをエンコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "comparing_encode_functions_output" : { "encodeURIComponent" : encodeURI(" PATH/ TO /ENCODE "), "encodeURI" : encodeURI(" PATH/ TO /ENCODE "), "encodeURIComponent_to_hex" : encodeURIComponent(";,/?:@&="), "encodeURI_not_to_hex" : encodeURI(";,/?:@&="), "encodeURIComponent_not_encoded" : encodeURIComponent("-_.!~*'()"), "encodeURI_not_encoded" : encodeURI("-_.!~*'()") } } ``` #### [](#出力)出力 ```JSON { "comparing_encode_functions_output": { "encodeURIComponent": "%20PATH/%20TO%20/ENCODE%20", "encodeURI": "%20PATH/%20TO%20/ENCODE%20", "encodeURIComponent_to_hex": "%3B%2C%2F%3F%3A%40%26%3D", "encodeURI_not_to_hex": ";,/?:@&=", "encodeURIComponent_not_encoded": "-_.!~*'()", "encodeURI_not_encoded": "-_.!~*'()" } } ``` # encodeURIComponent ## [](#encodeuricomponent1)encodeURIComponent(text: String): String UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。 2 つのサロゲート文字で構成される文字には、4 つのエスケープシーケンスのみを使用できます。 `encodeURIComponent`​ は、アルファベット、10 進数、​`- _ . ! ~ * ' ( )`​ を​_除く_​すべての文字をエスケープします。 `encodeURIComponent`​ は ​`encodeURI`​ とは異なり、​`encodeURI`​ の予約文字と番号記号 ​`#`​ をエンコードします。
型 含まれるもの

予約文字

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをエンコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "comparing_encode_functions_output" : { "encodeURIComponent" : encodeURI(" PATH/ TO /ENCODE "), "encodeURI" : encodeURI(" PATH/ TO /ENCODE "), "encodeURIComponent_to_hex" : encodeURIComponent(";,/?:@&="), "encodeURI_not_to_hex" : encodeURI(";,/?:@&="), "encodeURIComponent_not_encoded" : encodeURIComponent("-_.!~*'()"), "encodeURI_not_encoded" : encodeURI("-_.!~*'()") } } ``` #### [](#出力)出力 ```JSON { "comparing_encode_functions_output": { "encodeURIComponent": "%20PATH/%20TO%20/ENCODE%20", "encodeURI": "%20PATH/%20TO%20/ENCODE%20", "encodeURIComponent_to_hex": "%3B%2C%2F%3F%3A%40%26%3D", "encodeURI_not_to_hex": ";,/?:@&=", "encodeURIComponent_not_encoded": "-_.!~*'()", "encodeURI_not_encoded": "-_.!~*'()" } } ``` # encodeURIComponent ## [](#encodeuricomponent1)encodeURIComponent(text: String): String UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。 2 つのサロゲート文字で構成される文字には、4 つのエスケープシーケンスのみを使用できます。 `encodeURIComponent`​ は、アルファベット、10 進数、​`- _ . ! ~ * ' ( )`​ を​_除く_​すべての文字をエスケープします。 `encodeURIComponent`​ は ​`encodeURI`​ とは異なり、​`encodeURI`​ の予約文字と番号記号 ​`#`​ をエンコードします。
型 含まれるもの

予約文字

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをエンコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "comparing_encode_functions_output" : { "encodeURIComponent" : encodeURI(" PATH/ TO /ENCODE "), "encodeURI" : encodeURI(" PATH/ TO /ENCODE "), "encodeURIComponent_to_hex" : encodeURIComponent(";,/?:@&="), "encodeURI_not_to_hex" : encodeURI(";,/?:@&="), "encodeURIComponent_not_encoded" : encodeURIComponent("-_.!~*'()"), "encodeURI_not_encoded" : encodeURI("-_.!~*'()") } } ``` #### [](#出力)出力 ```JSON { "comparing_encode_functions_output": { "encodeURIComponent": "%20PATH/%20TO%20/ENCODE%20", "encodeURI": "%20PATH/%20TO%20/ENCODE%20", "encodeURIComponent_to_hex": "%3B%2C%2F%3F%3A%40%26%3D", "encodeURI_not_to_hex": ";,/?:@&=", "encodeURIComponent_not_encoded": "-_.!~*'()", "encodeURI_not_encoded": "-_.!~*'()" } } ``` # encodeURIComponent ## [](#encodeuricomponent1)encodeURIComponent(text: String): String UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。 2 つのサロゲート文字で構成される文字には、4 つのエスケープシーケンスのみを使用できます。 `encodeURIComponent`​ は、アルファベット、10 進数、​`- _ . ! ~ * ' ( )`​ を​_除く_​すべての文字をエスケープします。 `encodeURIComponent`​ は ​`encodeURI`​ とは異なり、​`encodeURI`​ の予約文字と番号記号 ​`#`​ をエンコードします。
型 含まれるもの

予約文字

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをエンコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "comparing_encode_functions_output" : { "encodeURIComponent" : encodeURI(" PATH/ TO /ENCODE "), "encodeURI" : encodeURI(" PATH/ TO /ENCODE "), "encodeURIComponent_to_hex" : encodeURIComponent(";,/?:@&="), "encodeURI_not_to_hex" : encodeURI(";,/?:@&="), "encodeURIComponent_not_encoded" : encodeURIComponent("-_.!~*'()"), "encodeURI_not_encoded" : encodeURI("-_.!~*'()") } } ``` #### [](#出力)出力 ```JSON { "comparing_encode_functions_output": { "encodeURIComponent": "%20PATH/%20TO%20/ENCODE%20", "encodeURI": "%20PATH/%20TO%20/ENCODE%20", "encodeURIComponent_to_hex": "%3B%2C%2F%3F%3A%40%26%3D", "encodeURI_not_to_hex": ";,/?:@&=", "encodeURIComponent_not_encoded": "-_.!~*'()", "encodeURI_not_encoded": "-_.!~*'()" } } ``` # encodeURIComponent ## [](#encodeuricomponent1)encodeURIComponent(text: String): String UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。 2 つのサロゲート文字で構成される文字には、4 つのエスケープシーケンスのみを使用できます。 `encodeURIComponent`​ は、​_次の文字を除く_​すべての文字をエスケープします。アルファベット、10 進数、​`- _ . ! ~ * ' ( )`​. `encodeURIComponent`​ は ​`encodeURI`​ とは異なり、​`encodeURI`​ の予約文字と番号記号 ​`#`​ をエンコードします。
型 含まれるもの

予約文字

エスケープされない文字

アルファベット、10 進数、- _ . ! ~ * ' ( )

番号記号

### [](#パラメーター)パラメーター
名前 説明

text

URI コンポーネント文字列。

### [](#例)例 次の例では、さまざまな URI コンポーネントをエンコードします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { "comparing_encode_functions_output" : { "encodeURIComponent" : encodeURI(" PATH/ TO /ENCODE "), "encodeURI" : encodeURI(" PATH/ TO /ENCODE "), "encodeURIComponent_to_hex" : encodeURIComponent(";,/?:@&="), "encodeURI_not_to_hex" : encodeURI(";,/?:@&="), "encodeURIComponent_not_encoded" : encodeURIComponent("-_.!~*'()"), "encodeURI_not_encoded" : encodeURI("-_.!~*'()") } } ``` #### [](#出力)出力 ```JSON { "comparing_encode_functions_output": { "encodeURIComponent": "%20PATH/%20TO%20/ENCODE%20", "encodeURI": "%20PATH/%20TO%20/ENCODE%20", "encodeURIComponent_to_hex": "%3B%2C%2F%3F%3A%40%26%3D", "encodeURI_not_to_hex": ";,/?:@&=", "encodeURIComponent_not_encoded": "-_.!~*'()", "encodeURI_not_encoded": "-_.!~*'()" } } ``` # endsWith ## [](#endswith1)endsWith(String, String): Boolean 文字列が指定されたサブ文字列で終了する場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列 (​String​ (文字列))。

​suffix

入力文字列の末尾で検索するサフィックス文字列。

### [](#例)例 次の例では、「Mariano」の末尾にある「no」 (「to」ではない) を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mariano" endsWith "no", "Mariano" endsWith "to" ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` # endsWith ## [](#endswith1)endsWith(text: String, suffix: String): Boolean 文字列が指定されたサブ文字列で終了する場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列 (​String​ (文字列))。

​suffix

入力文字列の末尾で検索するサフィックス文字列。

### [](#例)例 次の例では、「Mariano」の末尾にある「no」 (「to」ではない) を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mariano" endsWith "no", "Mariano" endsWith "to" ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#endswith2)endsWith(text: Null, suffix: Any): false `endsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # endsWith ## [](#endswith1)endsWith(text: String, suffix: String): Boolean 文字列が指定されたサブ文字列で終了する場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

suffix

入力文字列の末尾で検索するサフィックス文字列。

### [](#例)例 次の例では、「Mariano」の末尾にある「no」 (「to」ではない) を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mariano" endsWith "no", "Mariano" endsWith "to" ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#endswith2)endsWith(text: Null, suffix: Any): false `endsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # endsWith ## [](#endswith1)endsWith(text: String, suffix: String): Boolean 文字列が指定されたサブ文字列で終了する場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

suffix

入力文字列の末尾で検索するサフィックス文字列。

### [](#例)例 次の例では、「Mariano」の末尾にある「no」 (「to」ではない) を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mariano" endsWith "no", "Mariano" endsWith "to" ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#endswith2)endsWith(text: Null, suffix: Any): false `endsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # endsWith ## [](#endswith1)endsWith(text: String, suffix: String): Boolean 文字列が指定されたサブ文字列で終了する場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

suffix

入力文字列の末尾で検索するサフィックス文字列。

### [](#例)例 次の例では、「Mariano」の末尾にある「no」 (「to」ではない) を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mariano" endsWith "no", "Mariano" endsWith "to" ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#endswith2)endsWith(text: Null, suffix: Any): false `endsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # endsWith ## [](#endswith1)endsWith(text: String, suffix: String): Boolean 文字列が指定されたサブ文字列で終了する場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列 (​String​ (文字列))。

suffix

入力文字列の末尾で検索するサフィックス文字列。

### [](#例)例 次の例では、「Mariano」の末尾にある「no」 (「to」ではない) を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mariano" endsWith "no", "Mariano" endsWith "to" ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#endswith2)endsWith(text: Null, suffix: Any): false `endsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # entriesOf ## [](#entriesof1)entriesOf(T): Array<​{| key: Key, value: Any, attributes: Object |}​> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

説明するオブジェクト。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトからキー、値、属性を返します。オブジェクトは ​`read`​ 関数への XML 入力です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 var myVar = read('true1', 'application/xml') output application/json --- { "entriesOf" : entriesOf(myVar) } ``` #### [](#出力)出力 ```JSON { "entriesOf": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # entriesOf ## [](#entriesof1)entriesOf(obj: T): Array<​{| key: Key, value: Any, attributes: Object |}​> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

説明するオブジェクト。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトからキー、値、属性を返します。オブジェクトは ​`read`​ 関数への XML 入力です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 var myVar = read('true1', 'application/xml') output application/json --- { "entriesOf" : entriesOf(myVar) } ``` #### [](#出力)出力 ```JSON { "entriesOf": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` ## [](#entriesof2)entriesOf(obj: Null): Null `entriesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # entriesOf ## [](#entriesof1)entriesOf(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

説明するオブジェクト。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトからキー、値、属性を返します。オブジェクトは ​`read`​ 関数への XML 入力です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 var myVar = read('true1', 'application/xml') output application/json --- { "entriesOf" : entriesOf(myVar) } ``` #### [](#出力)出力 ```JSON { "entriesOf": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` ## [](#entriesof2)entriesOf(obj: Null): Null `entriesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # entriesOf ## [](#entriesof1)entriesOf(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

説明するオブジェクト。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトからキー、値、属性を返します。オブジェクトは ​`read`​ 関数への XML 入力です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 var myVar = read('true1', 'application/xml') output application/json --- { "entriesOf" : entriesOf(myVar) } ``` #### [](#出力)出力 ```JSON { "entriesOf": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` ## [](#entriesof2)entriesOf(obj: Null): Null `entriesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # entriesOf ## [](#entriesof1)entriesOf(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

説明するオブジェクト。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトからキー、値、属性を返します。オブジェクトは ​`read`​ 関数への XML 入力です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 var myVar = read('true1', 'application/xml') output application/json --- { "entriesOf" : entriesOf(myVar) } ``` #### [](#出力)出力 ```JSON { "entriesOf": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` ## [](#entriesof2)entriesOf(obj: Null): Null `entriesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # entriesOf ## [](#entriesof1)entriesOf(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

説明するオブジェクト。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトからキー、値、属性を返します。オブジェクトは ​`read`​ 関数への XML 入力です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 var myVar = read('true1', 'application/xml') output application/json --- { "entriesOf" : entriesOf(myVar) } ``` #### [](#出力)出力 ```JSON { "entriesOf": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` ## [](#entriesof2)entriesOf(obj: Null): Null `entriesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # entrySet ## [](#entryset1)entrySet(T): Array<​{| key: Key, value: Any, attributes: Object |}​> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 このメソッドは​**非推奨**​です。代わりに、Core モジュールの ​`entriesOf`​ を使用してください。 ### [](#パラメーター)パラメーター
名前 説明

​obj

表す対象の ​Object​。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトのキー、値、属性を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read('true1', 'application/xml') output application/json --- { "entrySet" : entrySet(myVar) } ``` #### [](#出力)出力 ```JSON { "entrySet": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # entrySet ## [](#entryset1)entrySet(obj: T): Array<​{| key: Key, value: Any, attributes: Object |}​> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _この関数は​**非推奨**​です。代わりに [dw::Core::entriesOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-entriesof) を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

​obj

表す対象の ​Object​。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトのキー、値、属性を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read('true1', 'application/xml') output application/json --- { "entrySet" : entrySet(myVar) } ``` #### [](#出力)出力 ```JSON { "entrySet": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # entrySet ## [](#entryset1)entrySet(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::entriesOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-entriesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

表す対象の ​Object​。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトのキー、値、属性を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read('true1', 'application/xml') output application/json --- { "entrySet" : entrySet(myVar) } ``` #### [](#出力)出力 ```JSON { "entrySet": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # entrySet ## [](#entryset1)entrySet(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::entriesOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-entriesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

表す対象の ​Object​。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトのキー、値、属性を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read('true1', 'application/xml') output application/json --- { "entrySet" : entrySet(myVar) } ``` #### [](#出力)出力 ```JSON { "entrySet": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # entrySet ## [](#entryset1)entrySet(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::entriesOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-entriesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

表す対象の ​Object​。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトのキー、値、属性を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read('true1', 'application/xml') output application/json --- { "entrySet" : entrySet(myVar) } ``` #### [](#出力)出力 ```JSON { "entrySet": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # entrySet ## [](#entryset1)entrySet(obj: T): Array<{| key: Key, value: Any, attributes: Object |}> 入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::entriesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-entriesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

表す対象の ​Object​。

### [](#例)例 次の例では、変数 ​`myVar`​ で指定されたオブジェクトのキー、値、属性を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read('true1', 'application/xml') output application/json --- { "entrySet" : entrySet(myVar) } ``` #### [](#出力)出力 ```JSON { "entrySet": [ { "key": "xml", "value": { "a": "true", "b": "1" }, "attributes": { "attr": "x" } } ] } ``` # envVar ## [](#envvar1)envVar(String): String | Null 指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​variableName

環境変数の名前を指定します。

### [](#例)例 次の例では、Mac コマンドコンソール (​`SHELL`​) のパスを返し、​`FAKE_ENV_VAR`​ (定義されていない環境変数) に対して ​`null`​ を返します。​`SHELL`​ は、標準 Mac 環境変数の 1 つです。また、​`import`​ コマンドにより、先頭にモジュール名を追加しなくても関数をコールできることにも注目してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::System output application/json --- { "envVars" : [ "real" : envVar("SHELL"), "fake" : envVar("FAKE_ENV_VAR") ] } ``` #### [](#出力)出力 ```JSON "envVars": [ { "real": "/bin/bash" }, { "fake": null } ] ``` # envVar ## [](#envvar1)envVar(variableName: String): String | Null 指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​variableName

環境変数の名前を指定する文字列。

### [](#例)例 次の例では、Mac コマンドコンソール (​`SHELL`​) のパスを返し、​`FAKE_ENV_VAR`​ (定義されていない環境変数) に対して ​`null`​ を返します。​`SHELL`​ は、標準 Mac 環境変数の 1 つです。また、​`import`​ コマンドにより、先頭にモジュール名を追加しなくても関数をコールできることにも注目してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::System output application/json --- { "envVars" : [ "real" : envVar("SHELL"), "fake" : envVar("FAKE_ENV_VAR") ] } ``` #### [](#出力)出力 ```JSON "envVars": [ { "real": "/bin/bash" }, { "fake": null } ] ``` # envVar ## [](#envvar1)envVar(variableName: String): String | Null 指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

variableName

環境変数の名前を指定する文字列。

### [](#例)例 次の例では、Mac コマンドコンソール (​`SHELL`​) のパスを返し、​`FAKE_ENV_VAR`​ (定義されていない環境変数) に対して ​`null`​ を返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。また、​`import`​ コマンドにより、先頭にモジュール名を追加しなくても関数をコールできることにも注目してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::System output application/json --- { "envVars" : [ "real" : envVar("SHELL"), "fake" : envVar("FAKE_ENV_VAR") ] } ``` #### [](#出力)出力 ```JSON "envVars": [ { "real": "/bin/bash" }, { "fake": null } ] ``` # envVar ## [](#envvar1)envVar(variableName: String): String | Null 指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

variableName

環境変数の名前を指定する文字列。

### [](#例)例 次の例では、Mac コマンドコンソール (​`SHELL`​) のパスを返し、​`FAKE_ENV_VAR`​ (定義されていない環境変数) に対して ​`null`​ を返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。また、​`import`​ コマンドにより、先頭にモジュール名を追加しなくても関数をコールできることにも注目してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::System output application/json --- { "envVars" : [ "real" : envVar("SHELL"), "fake" : envVar("FAKE_ENV_VAR") ] } ``` #### [](#出力)出力 ```JSON "envVars": [ { "real": "/bin/bash" }, { "fake": null } ] ``` # envVar ## [](#envvar1)envVar(variableName: String): String | Null 指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

variableName

環境変数の名前を指定する文字列。

### [](#例)例 次の例では、Mac コマンドコンソール (​`SHELL`​) のパスを返し、​`FAKE_ENV_VAR`​ (定義されていない環境変数) に対して ​`null`​ を返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。また、​`import`​ コマンドにより、先頭にモジュール名を追加しなくても関数をコールできることにも注目してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::System output application/json --- { "envVars" : [ "real" : envVar("SHELL"), "fake" : envVar("FAKE_ENV_VAR") ] } ``` #### [](#出力)出力 ```JSON "envVars": [ { "real": "/bin/bash" }, { "fake": null } ] ``` # envVar ## [](#envvar1)envVar(variableName: String): String | Null 指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

variableName

環境変数の名前を指定する文字列。

### [](#例)例 次の例では、Mac コマンドコンソール (​`SHELL`​) のパスを返し、​`FAKE_ENV_VAR`​ (定義されていない環境変数) に対して ​`null`​ を返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。また、​`import`​ コマンドにより、先頭にモジュール名を追加しなくても関数をコールできることにも注目してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::System output application/json --- { "envVars" : [ "real" : envVar("SHELL"), "fake" : envVar("FAKE_ENV_VAR") ] } ``` #### [](#出力)出力 ```JSON "envVars": [ { "real": "/bin/bash" }, { "fake": null } ] ``` # envVars ## [](#envvars1)envVars(): Dictionary ホストシステムで定義されているすべての環境変数を返します。 ### [](#例)例 次の例は、Mac コマンドコンソール (​`SHELL`​) のパスを返します。 ​`SHELL`​ は、標準 Mac 環境変数の 1 つです。すべての環境変数を返すには、​`dw::System::envVars()`​ を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::System output application/json --- { "envVars" : dw::System::envVars().SHELL } ``` #### [](#出力)出力 ```JSON { "envVars": "/bin/bash" } ``` # envVars ## [](#envvars1)envVars(): Dictionary ホストシステムで文字列の配列として定義されているすべての環境変数を返します。 ### [](#例)例 次の例は、Mac コマンドコンソール (​`SHELL`​) のパスを返します。​`SHELL`​ は、標準 Mac 環境変数の 1 つです。すべての環境変数を返すには、​`dw::System::envVars()`​ を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::System output application/json --- { "envVars" : dw::System::envVars().SHELL } ``` #### [](#出力)出力 ```JSON { "envVars": "/bin/bash" } ``` # envVars ## [](#envvars1)envVars(): Dictionary ホストシステムで文字列の配列として定義されているすべての環境変数を返します。 ### [](#例)例 次の例は、Mac コマンドコンソール (​`SHELL`​) のパスを返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。すべての環境変数を返すには、​`dw::System::envVars()`​ を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::System output application/json --- { "envVars" : dw::System::envVars().SHELL } ``` #### [](#出力)出力 ```JSON { "envVars": "/bin/bash" } ``` # envVars ## [](#envvars1)envVars(): Dictionary ホストシステムで文字列の配列として定義されているすべての環境変数を返します。 ### [](#例)例 次の例は、Mac コマンドコンソール (​`SHELL`​) のパスを返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。すべての環境変数を返すには、​`dw::System::envVars()`​ を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::System output application/json --- { "envVars" : dw::System::envVars().SHELL } ``` #### [](#出力)出力 ```JSON { "envVars": "/bin/bash" } ``` # envVars ## [](#envvars1)envVars(): Dictionary ホストシステムで文字列の配列として定義されているすべての環境変数を返します。 ### [](#例)例 次の例は、Mac コマンドコンソール (​`SHELL`​) のパスを返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。すべての環境変数を返すには、​`dw::System::envVars()`​ を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::System output application/json --- { "envVars" : dw::System::envVars().SHELL } ``` #### [](#出力)出力 ```JSON { "envVars": "/bin/bash" } ``` # envVars ## [](#envvars1)envVars(): Dictionary ホストシステムで文字列の配列として定義されているすべての環境変数を返します。 ### [](#例)例 次の例は、Mac コマンドコンソール (​`SHELL`​) のパスを返します。 `SHELL`​ は、標準 Mac 環境変数の 1 つです。すべての環境変数を返すには、​`dw::System::envVars()`​ を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::System output application/json --- { "envVars" : dw::System::envVars().SHELL } ``` #### [](#出力)出力 ```JSON { "envVars": "/bin/bash" } ``` # eval ## [](#eval1)eval(fileToExecute: String, fs: Dictionary, readerInputs: Dictionary = ​{}, inputValues: Dictionary = ​{}, configuration: RuntimeExecutionConfiguration = ​{}​): EvalSuccess | ExecutionFailure 指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

​fileToExecute

実行するファイルの名前。

​fs

評価するファイルが含まれるオブジェクト。

​readerInputs

バインドするリーダー入力。

​inputValues

バインドする追加のリテラル値。

​configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`eval`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var jsonValue2 = { value: '{"name": "Mariano", "lastName": "achaval"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var invalidJsonValue = { value: '{"name": "Mariano' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : run("main.dwl", {"main.dwl": "{a: 1}"}, {"payload": jsonValue }), "logs" : do { var execResult = run("main.dwl", {"main.dwl": "{a: log(1)}"}, {"payload": jsonValue }) --- { m: execResult.logs.message, l: execResult.logs.level } }, "grant" : eval("main.dwl", {"main.dwl": "{a: readUrl(`http://google.com`)}"}, {"payload": jsonValue }, {},{ securityManager: (grant, args) -> false }), "library" : eval("main.dwl", {"main.dwl": "Utils::sum(1,2)", "/Utils.dwl": Utils }, {"payload": jsonValue }), "timeout" : eval("main.dwl", {"main.dwl": "(1 to 1000000000000) map \$ + 1" }, {"payload": jsonValue }, {},{timeOut: 2}).success, "execFail" : eval("main.dwl", {"main.dwl": "dw::Runtime::fail('My Bad')" }, {"payload": jsonValue }), "parseFail" : eval("main.dwl", {"main.dwl": "(1 + " }, {"payload": jsonValue }), "writerFail" : eval("main.dwl", {"main.dwl": "output application/xml --- 2" }, {"payload": jsonValue }), "defaultOutput" : eval("main.dwl", {"main.dwl": "payload" }, {"payload": jsonValue2}, {},{outputMimeType: "application/csv", writerProperties: {"separator": "|"}}), "onExceptionFail": do { dw::Runtime::try( () -> eval("main.dwl", {"main.dwl": "dw::Runtime::fail('Failing Test')" }, {"payload": jsonValue2}, {},{onException: "FAIL"}) ).success }, "customLogger": eval( "main.dwl", {"main.dwl": "log(1234)" }, {"payload": jsonValue2}, {}, { loggerService: { initialize: () -> {token: "123"}, log: (level, msg, context) -> log("$(level) $(msg)", context) } } ) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "{\n a: 1\n}", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] }, "logs": { "m": [ "1" ], "l": [ "INFO" ] }, "grant": { "success": false, "message": "The given required permissions: `Resource` are not being granted for this execution.\nTrace:\n at readUrl (Unknown)\n at main::main (line: 1, column: 5)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "readUrl (anonymous:0:0)", "main (main:1:5)" ], "logs": [ ] }, "library": { "success": true, "value": 3, "logs": [ ] }, "timeout": true, "execFail": { "success": false, "message": "My Bad\nTrace:\n at fail (Unknown)\n at main::main (line: 1, column: 1)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "fail (anonymous:0:0)", "main (main:1:1)" ], "logs": [ ] }, "parseFail": { "success": false, "message": "Invalid input \"1 + \", expected parameter or parenEnd (line 1, column 2):\n\n\n1| (1 + \n ^^^^\nLocation:\nmain (line: 1, column:2)", "location": { "start": { "index": 0, "line": 1, "column": 2 }, "end": { "index": 4, "line": 1, "column": 6 }, "content": "\n1| (1 + \n ^^^^" }, "logs": [ ] }, "writerFail": { "success": true, "value": 2, "logs": [ ] }, "defaultOutput": { "success": true, "value": { "name": "Mariano", "lastName": "achaval" }, "logs": [ ] }, "onExceptionFail": false, "customLogger": { "success": true, "value": 1234, "logs": [ ] } } ``` # eval ## [](#eval1)eval(fileToExecute: String, fs: Dictionary, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalSuccess | ExecutionFailure 指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

fileToExecute

実行するファイルの名前。

fs

評価するファイルが含まれるオブジェクト。

readerInputs

バインドするリーダー入力。

inputValues

バインドする追加のリテラル値。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`eval`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var jsonValue2 = { value: '{"name": "Mariano", "lastName": "achaval"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var invalidJsonValue = { value: '{"name": "Mariano' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : run("main.dwl", {"main.dwl": "{a: 1}"}, {"payload": jsonValue }), "logs" : do { var execResult = run("main.dwl", {"main.dwl": "{a: log(1)}"}, {"payload": jsonValue }) --- { m: execResult.logs.message, l: execResult.logs.level } }, "grant" : eval("main.dwl", {"main.dwl": "{a: readUrl(`http://google.com`)}"}, {"payload": jsonValue }, {},{ securityManager: (grant, args) -> false }), "library" : eval("main.dwl", {"main.dwl": "Utils::sum(1,2)", "/Utils.dwl": Utils }, {"payload": jsonValue }), "timeout" : eval("main.dwl", {"main.dwl": "(1 to 1000000000000) map \$ + 1" }, {"payload": jsonValue }, {},{timeOut: 2}).success, "execFail" : eval("main.dwl", {"main.dwl": "dw::Runtime::fail('My Bad')" }, {"payload": jsonValue }), "parseFail" : eval("main.dwl", {"main.dwl": "(1 + " }, {"payload": jsonValue }), "writerFail" : eval("main.dwl", {"main.dwl": "output application/xml --- 2" }, {"payload": jsonValue }), "defaultOutput" : eval("main.dwl", {"main.dwl": "payload" }, {"payload": jsonValue2}, {},{outputMimeType: "application/csv", writerProperties: {"separator": "|"}}), "onExceptionFail": do { dw::Runtime::try( () -> eval("main.dwl", {"main.dwl": "dw::Runtime::fail('Failing Test')" }, {"payload": jsonValue2}, {},{onException: "FAIL"}) ).success }, "customLogger": eval( "main.dwl", {"main.dwl": "log(1234)" }, {"payload": jsonValue2}, {}, { loggerService: { initialize: () -> {token: "123"}, log: (level, msg, context) -> log("$(level) $(msg)", context) } } ) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "{\n a: 1\n}", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] }, "logs": { "m": [ "1" ], "l": [ "INFO" ] }, "grant": { "success": false, "message": "The given required permissions: `Resource` are not being granted for this execution.\nTrace:\n at readUrl (Unknown)\n at main::main (line: 1, column: 5)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "readUrl (anonymous:0:0)", "main (main:1:5)" ], "logs": [ ] }, "library": { "success": true, "value": 3, "logs": [ ] }, "timeout": true, "execFail": { "success": false, "message": "My Bad\nTrace:\n at fail (Unknown)\n at main::main (line: 1, column: 1)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "fail (anonymous:0:0)", "main (main:1:1)" ], "logs": [ ] }, "parseFail": { "success": false, "message": "Invalid input \"1 + \", expected parameter or parenEnd (line 1, column 2):\n\n\n1| (1 + \n ^^^^\nLocation:\nmain (line: 1, column:2)", "location": { "start": { "index": 0, "line": 1, "column": 2 }, "end": { "index": 4, "line": 1, "column": 6 }, "content": "\n1| (1 + \n ^^^^" }, "logs": [ ] }, "writerFail": { "success": true, "value": 2, "logs": [ ] }, "defaultOutput": { "success": true, "value": { "name": "Mariano", "lastName": "achaval" }, "logs": [ ] }, "onExceptionFail": false, "customLogger": { "success": true, "value": 1234, "logs": [ ] } } ``` # eval ## [](#eval1)eval(fileToExecute: String, fs: Dictionary, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalSuccess | ExecutionFailure 指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

fileToExecute

実行するファイルの名前。

fs

評価するファイルが含まれるオブジェクト。

readerInputs

バインドするリーダー入力。

inputValues

バインドする追加のリテラル値。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`eval`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var jsonValue2 = { value: '{"name": "Mariano", "lastName": "achaval"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var invalidJsonValue = { value: '{"name": "Mariano' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : run("main.dwl", {"main.dwl": "{a: 1}"}, {"payload": jsonValue }), "logs" : do { var execResult = run("main.dwl", {"main.dwl": "{a: log(1)}"}, {"payload": jsonValue }) --- { m: execResult.logs.message, l: execResult.logs.level } }, "grant" : eval("main.dwl", {"main.dwl": "{a: readUrl(`http://google.com`)}"}, {"payload": jsonValue }, {},{ securityManager: (grant, args) -> false }), "library" : eval("main.dwl", {"main.dwl": "Utils::sum(1,2)", "/Utils.dwl": Utils }, {"payload": jsonValue }), "timeout" : eval("main.dwl", {"main.dwl": "(1 to 1000000000000) map \$ + 1" }, {"payload": jsonValue }, {},{timeOut: 2}).success, "execFail" : eval("main.dwl", {"main.dwl": "dw::Runtime::fail('My Bad')" }, {"payload": jsonValue }), "parseFail" : eval("main.dwl", {"main.dwl": "(1 + " }, {"payload": jsonValue }), "writerFail" : eval("main.dwl", {"main.dwl": "output application/xml --- 2" }, {"payload": jsonValue }), "defaultOutput" : eval("main.dwl", {"main.dwl": "payload" }, {"payload": jsonValue2}, {},{outputMimeType: "application/csv", writerProperties: {"separator": "|"}}), "onExceptionFail": do { dw::Runtime::try( () -> eval("main.dwl", {"main.dwl": "dw::Runtime::fail('Failing Test')" }, {"payload": jsonValue2}, {},{onException: "FAIL"}) ).success }, "customLogger": eval( "main.dwl", {"main.dwl": "log(1234)" }, {"payload": jsonValue2}, {}, { loggerService: { initialize: () -> {token: "123"}, log: (level, msg, context) -> log("$(level) $(msg)", context) } } ) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "{\n a: 1\n}", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] }, "logs": { "m": [ "1" ], "l": [ "INFO" ] }, "grant": { "success": false, "message": "The given required permissions: `Resource` are not being granted for this execution.\nTrace:\n at readUrl (Unknown)\n at main::main (line: 1, column: 5)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "readUrl (anonymous:0:0)", "main (main:1:5)" ], "logs": [ ] }, "library": { "success": true, "value": 3, "logs": [ ] }, "timeout": true, "execFail": { "success": false, "message": "My Bad\nTrace:\n at fail (Unknown)\n at main::main (line: 1, column: 1)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "fail (anonymous:0:0)", "main (main:1:1)" ], "logs": [ ] }, "parseFail": { "success": false, "message": "Invalid input \"1 + \", expected parameter or parenEnd (line 1, column 2):\n\n\n1| (1 + \n ^^^^\nLocation:\nmain (line: 1, column:2)", "location": { "start": { "index": 0, "line": 1, "column": 2 }, "end": { "index": 4, "line": 1, "column": 6 }, "content": "\n1| (1 + \n ^^^^" }, "logs": [ ] }, "writerFail": { "success": true, "value": 2, "logs": [ ] }, "defaultOutput": { "success": true, "value": { "name": "Mariano", "lastName": "achaval" }, "logs": [ ] }, "onExceptionFail": false, "customLogger": { "success": true, "value": 1234, "logs": [ ] } } ``` # eval ## [](#eval1)eval(fileToExecute: String, fs: Dictionary, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalSuccess | ExecutionFailure 指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

fileToExecute

実行するファイルの名前。

fs

評価するファイルが含まれるオブジェクト。

readerInputs

バインドするリーダー入力。

inputValues

バインドする追加のリテラル値。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`eval`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var jsonValue2 = { value: '{"name": "Mariano", "lastName": "achaval"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var invalidJsonValue = { value: '{"name": "Mariano' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : run("main.dwl", {"main.dwl": "{a: 1}"}, {"payload": jsonValue }), "logs" : do { var execResult = run("main.dwl", {"main.dwl": "{a: log(1)}"}, {"payload": jsonValue }) --- { m: execResult.logs.message, l: execResult.logs.level } }, "grant" : eval("main.dwl", {"main.dwl": "{a: readUrl(`http://google.com`)}"}, {"payload": jsonValue }, {},{ securityManager: (grant, args) -> false }), "library" : eval("main.dwl", {"main.dwl": "Utils::sum(1,2)", "/Utils.dwl": Utils }, {"payload": jsonValue }), "timeout" : eval("main.dwl", {"main.dwl": "(1 to 1000000000000) map \$ + 1" }, {"payload": jsonValue }, {},{timeOut: 2}).success, "execFail" : eval("main.dwl", {"main.dwl": "dw::Runtime::fail('My Bad')" }, {"payload": jsonValue }), "parseFail" : eval("main.dwl", {"main.dwl": "(1 + " }, {"payload": jsonValue }), "writerFail" : eval("main.dwl", {"main.dwl": "output application/xml --- 2" }, {"payload": jsonValue }), "defaultOutput" : eval("main.dwl", {"main.dwl": "payload" }, {"payload": jsonValue2}, {},{outputMimeType: "application/csv", writerProperties: {"separator": "|"}}), "onExceptionFail": do { dw::Runtime::try( () -> eval("main.dwl", {"main.dwl": "dw::Runtime::fail('Failing Test')" }, {"payload": jsonValue2}, {},{onException: "FAIL"}) ).success }, "customLogger": eval( "main.dwl", {"main.dwl": "log(1234)" }, {"payload": jsonValue2}, {}, { loggerService: { initialize: () -> {token: "123"}, log: (level, msg, context) -> log("$(level) $(msg)", context) } } ) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "{\n a: 1\n}", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] }, "logs": { "m": [ "1" ], "l": [ "INFO" ] }, "grant": { "success": false, "message": "The given required permissions: `Resource` are not being granted for this execution.\nTrace:\n at readUrl (Unknown)\n at main::main (line: 1, column: 5)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "readUrl (anonymous:0:0)", "main (main:1:5)" ], "logs": [ ] }, "library": { "success": true, "value": 3, "logs": [ ] }, "timeout": true, "execFail": { "success": false, "message": "My Bad\nTrace:\n at fail (Unknown)\n at main::main (line: 1, column: 1)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "fail (anonymous:0:0)", "main (main:1:1)" ], "logs": [ ] }, "parseFail": { "success": false, "message": "Invalid input \"1 + \", expected parameter or parenEnd (line 1, column 2):\n\n\n1| (1 + \n ^^^^\nLocation:\nmain (line: 1, column:2)", "location": { "start": { "index": 0, "line": 1, "column": 2 }, "end": { "index": 4, "line": 1, "column": 6 }, "content": "\n1| (1 + \n ^^^^" }, "logs": [ ] }, "writerFail": { "success": true, "value": 2, "logs": [ ] }, "defaultOutput": { "success": true, "value": { "name": "Mariano", "lastName": "achaval" }, "logs": [ ] }, "onExceptionFail": false, "customLogger": { "success": true, "value": 1234, "logs": [ ] } } ``` # eval ## [](#eval1)eval(fileToExecute: String, fs: Dictionary, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalResult 指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

fileToExecute

実行するファイルの名前。

fs

評価するファイルが含まれるオブジェクト。

readerInputs

バインドするリーダー入力。

inputValues

バインドする追加のリテラル値。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`eval`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var jsonValue2 = { value: '{"name": "Mariano", "lastName": "achaval"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var invalidJsonValue = { value: '{"name": "Mariano' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : run("main.dwl", {"main.dwl": "{a: 1}"}, {"payload": jsonValue }), "logs" : do { var execResult = run("main.dwl", {"main.dwl": "{a: log(1)}"}, {"payload": jsonValue }) --- { m: execResult.logs.message, l: execResult.logs.level } }, "grant" : eval("main.dwl", {"main.dwl": "{a: readUrl(`http://google.com`)}"}, {"payload": jsonValue }, {},{ securityManager: (grant, args) -> false }), "library" : eval("main.dwl", {"main.dwl": "Utils::sum(1,2)", "/Utils.dwl": Utils }, {"payload": jsonValue }), "timeout" : eval("main.dwl", {"main.dwl": "(1 to 1000000000000) map \$ + 1" }, {"payload": jsonValue }, {},{timeOut: 2}).success, "execFail" : eval("main.dwl", {"main.dwl": "dw::Runtime::fail('My Bad')" }, {"payload": jsonValue }), "parseFail" : eval("main.dwl", {"main.dwl": "(1 + " }, {"payload": jsonValue }), "writerFail" : eval("main.dwl", {"main.dwl": "output application/xml --- 2" }, {"payload": jsonValue }), "defaultOutput" : eval("main.dwl", {"main.dwl": "payload" }, {"payload": jsonValue2}, {},{outputMimeType: "application/csv", writerProperties: {"separator": "|"}}), "onExceptionFail": do { dw::Runtime::try( () -> eval("main.dwl", {"main.dwl": "dw::Runtime::fail('Failing Test')" }, {"payload": jsonValue2}, {},{onException: "FAIL"}) ).success }, "customLogger": eval( "main.dwl", {"main.dwl": "log(1234)" }, {"payload": jsonValue2}, {}, { loggerService: { initialize: () -> {token: "123"}, log: (level, msg, context) -> log("$(level) $(msg)", context) } } ) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "{\n a: 1\n}", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] }, "logs": { "m": [ "1" ], "l": [ "INFO" ] }, "grant": { "success": false, "message": "The given required permissions: `Resource` are not being granted for this execution.\nTrace:\n at readUrl (Unknown)\n at main::main (line: 1, column: 5)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "readUrl (anonymous:0:0)", "main (main:1:5)" ], "logs": [ ] }, "library": { "success": true, "value": 3, "logs": [ ] }, "timeout": true, "execFail": { "success": false, "message": "My Bad\nTrace:\n at fail (Unknown)\n at main::main (line: 1, column: 1)", "location": { "start": { "index": 0, "line": 0, "column": 0 }, "end": { "index": 0, "line": 0, "column": 0 }, "content": "Unknown location" }, "stack": [ "fail (anonymous:0:0)", "main (main:1:1)" ], "logs": [ ] }, "parseFail": { "success": false, "message": "Invalid input \"1 + \", expected parameter or parenEnd (line 1, column 2):\n\n\n1| (1 + \n ^^^^\nLocation:\nmain (line: 1, column:2)", "location": { "start": { "index": 0, "line": 1, "column": 2 }, "end": { "index": 4, "line": 1, "column": 6 }, "content": "\n1| (1 + \n ^^^^" }, "logs": [ ] }, "writerFail": { "success": true, "value": 2, "logs": [ ] }, "defaultOutput": { "success": true, "value": { "name": "Mariano", "lastName": "achaval" }, "logs": [ ] }, "onExceptionFail": false, "customLogger": { "success": true, "value": 1234, "logs": [ ] } } ``` # evaluateCompatibilityFlag ## [](#evaluatecompatibilityflag1)evaluateCompatibilityFlag(flag: String): Boolean 指定された名前の互換性フラグの値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

flag (フラグ)

String (文字列)

評価する互換性フラグの名前。

### [](#例)例 次の例では、現在の DataWeave バージョンで ​`com.mulesoft.dw.xml_reader.honourMixedContentStructure`​ 互換性フラグの値を取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "com.mulesoft.dw.xml_reader.honourMixedContentStructure": evaluateCompatibilityFlag("com.mulesoft.dw.xml_reader.honourMixedContentStructure") } ``` #### [](#出力)出力 ```Json { "com.mulesoft.dw.xml_reader.honourMixedContentStructure": true } ``` # evalUrl ## [](#evalurl1)evalUrl(url: String, readerInputs: Dictionary = ​{}, inputValues: Dictionary = ​{}, configuration: RuntimeExecutionConfiguration = ​{}​): EvalSuccess | ExecutionFailure 指定された URL のスクリプトを評価します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

​url

ファイル実行の名前。

​readerInputs

読み取って実行にバインドする入力。

​inputValues

実行に直接バインドする入力。

​configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`evalUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {"payload": jsonValue }), "execute_ok_withValue" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {}, {"payload": {name: "Mariano"}}) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "Mariano", "logs": [ ] }, "execute_ok_withValue": { "success": true, "value": "Mariano", "logs": [ ] } } ``` # evalUrl ## [](#evalurl1)evalUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalSuccess | ExecutionFailure 指定された URL のスクリプトを評価します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

ファイル実行の名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`evalUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {"payload": jsonValue }), "execute_ok_withValue" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {}, {"payload": {name: "Mariano"}}) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "Mariano", "logs": [ ] }, "execute_ok_withValue": { "success": true, "value": "Mariano", "logs": [ ] } } ``` # evalUrl ## [](#evalurl1)evalUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalSuccess | ExecutionFailure 指定された URL のスクリプトを評価します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

ファイル実行の名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`evalUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {"payload": jsonValue }), "execute_ok_withValue" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {}, {"payload": {name: "Mariano"}}) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "Mariano", "logs": [ ] }, "execute_ok_withValue": { "success": true, "value": "Mariano", "logs": [ ] } } ``` # evalUrl ## [](#evalurl1)evalUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalSuccess | ExecutionFailure 指定された URL のスクリプトを評価します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

ファイル実行の名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`evalUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {"payload": jsonValue }), "execute_ok_withValue" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {}, {"payload": {name: "Mariano"}}) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "Mariano", "logs": [ ] }, "execute_ok_withValue": { "success": true, "value": "Mariano", "logs": [ ] } } ``` # evalUrl ## [](#evalurl1)evalUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): EvalResult 指定された URL のスクリプトを評価します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

ファイル実行の名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`evalUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" output application/json --- { "execute_ok" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {"payload": jsonValue }), "execute_ok_withValue" : evalUrl("classpath://org/mule/weave/v2/engine/runtime_evalUrl/example.dwl", {}, {"payload": {name: "Mariano"}}) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "Mariano", "logs": [ ] }, "execute_ok_withValue": { "success": true, "value": "Mariano", "logs": [ ] } } ``` # every ## [](#every1)every(Array, (T) -> Boolean): Boolean 配列内のすべての要素が条件に一致すると ​`true`​ を返します。 この関数は、配列内の要素が最初に不一致と評価されたところで反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

​list

入力配列。

​condition

入力配列の要素に適用される条件 (式)。

### [](#例)例 次の例では、入力配列にさまざまな式を適用します。​`$`​ は、 要素の値を参照します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var arr0 = [] as Array output application/json --- { "results" : [ "ok" : [ [1,1,1] every ($ == 1), [1] every ($ == 1) ], "err" : [ [1,2,3] every ((log('should stop at 2 ==', $) mod 2) == 1), [1,1,0] every ($ == 1), [0,1,1,0] every (log('should stop at 0 ==', $) == 1), [1,2,3] every ($ == 1), arr0 every true, ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true ] }, { "err": [ false, false, false, false, true ] } ] } ``` ## [](#every2)every(Null, (Nothing) -> Boolean): Boolean `every`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ # every ## [](#every1)every(list: Array, condition: (T) -> Boolean): Boolean 配列内のすべての要素が条件に一致すると ​`true`​ を返します。 この関数は、配列内の要素が最初に不一致と評価されたところで反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

​list

入力配列。

​condition

入力配列の要素に適用される条件 (式)。

### [](#例)例 次の例では、入力配列にさまざまな式を適用します。​`$`​ は、 要素の値を参照します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var arr0 = [] as Array output application/json --- { "results" : [ "ok" : [ [1,1,1] every ($ == 1), [1] every ($ == 1) ], "err" : [ [1,2,3] every ((log('should stop at 2 ==', $) mod 2) == 1), [1,1,0] every ($ == 1), [0,1,1,0] every (log('should stop at 0 ==', $) == 1), [1,2,3] every ($ == 1), arr0 every true, ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true ] }, { "err": [ false, false, false, false, false ] } ] } ``` ## [](#every2)every(value: Null, condition: (Nothing) -> Any): Boolean `every`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_​ # every ## [](#every1)every(list: Array, condition: (T) -> Boolean): Boolean 配列内のすべての要素が条件に一致すると ​`true`​ を返します。 この関数は、配列内の要素が最初に不一致と評価されたところで反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

入力配列の要素に適用される条件 (式)。

### [](#例)例 次の例では、入力配列にさまざまな式を適用します。​`$`​ は、 要素の値を参照します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var arr0 = [] as Array output application/json --- { "results" : [ "ok" : [ [1,1,1] every ($ == 1), [1] every ($ == 1) ], "err" : [ [1,2,3] every ((log('should stop at 2 ==', $) mod 2) == 1), [1,1,0] every ($ == 1), [0,1,1,0] every (log('should stop at 0 ==', $) == 1), [1,2,3] every ($ == 1), arr0 every true, ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true ] }, { "err": [ false, false, false, false, false ] } ] } ``` ## [](#every2)every(value: Null, condition: (Nothing) -> Any): Boolean `every`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # every ## [](#every1)every(list: Array, condition: (T) -> Boolean): Boolean 配列内のすべての要素が条件に一致すると ​`true`​ を返します。 この関数は、配列内の要素が最初に不一致と評価されたところで反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

入力配列の要素に適用される条件 (式)。

### [](#例)例 次の例では、入力配列にさまざまな式を適用します。​`$`​ は、 要素の値を参照します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var arr0 = [] as Array output application/json --- { "results" : [ "ok" : [ [1,1,1] every ($ == 1), [1] every ($ == 1) ], "err" : [ [1,2,3] every ((log('should stop at 2 ==', $) mod 2) == 1), [1,1,0] every ($ == 1), [0,1,1,0] every (log('should stop at 0 ==', $) == 1), [1,2,3] every ($ == 1), arr0 every true, ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true ] }, { "err": [ false, false, false, false, false ] } ] } ``` ## [](#every2)every(value: Null, condition: (Nothing) -> Any): Boolean `every`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # every ## [](#every1)every(list: Array, condition: (T) -> Boolean): Boolean 配列内のすべての要素が条件に一致すると ​`true`​ を返します。 この関数は、配列内の要素が最初に不一致と評価されたところで反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

入力配列の要素に適用される条件 (式)。

### [](#例)例 次の例では、入力配列にさまざまな式を適用します。​`$`​ は、 要素の値を参照します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var arr0 = [] as Array output application/json --- { "results" : [ "ok" : [ [1,1,1] every ($ == 1), [1] every ($ == 1) ], "err" : [ [1,2,3] every ((log('should stop at 2 ==', $) mod 2) == 1), [1,1,0] every ($ == 1), [0,1,1,0] every (log('should stop at 0 ==', $) == 1), [1,2,3] every ($ == 1), arr0 every true, ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true ] }, { "err": [ false, false, false, false, false ] } ] } ``` ## [](#every2)every(value: Null, condition: (Nothing) -> Any): Boolean `every`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # every ## [](#every1)every(list: Array, condition: (T) -> Boolean): Boolean 配列内のすべての要素が条件に一致すると ​`true`​ を返します。 この関数は、配列内の要素が最初に不一致と評価されたところで反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

入力配列の要素に適用される条件 (式)。

### [](#例)例 次の例では、入力配列にさまざまな式を適用します。​`$`​ は、 要素の値を参照します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var arr0 = [] as Array output application/json --- { "results" : [ "ok" : [ [1,1,1] every ($ == 1), [1] every ($ == 1) ], "err" : [ [1,2,3] every ((log('should stop at 2 ==', $) mod 2) == 1), [1,1,0] every ($ == 1), [0,1,1,0] every (log('should stop at 0 ==', $) == 1), [1,2,3] every ($ == 1), arr0 every true, ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true ] }, { "err": [ false, false, false, false, false ] } ] } ``` ## [](#every2)every(value: Null, condition: (Nothing) -> Any): Boolean `every`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # everyCharacter ## [](#everycharacter1)everyCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の​_すべて_​の文字に対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

チェックする文字列内の文字を反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列が数字とスペースのみで構成されているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "12 34 56" everyCharacter $ == " " or isNumeric($) ``` #### [](#出力)出力 ```Json true ``` ## [](#everycharacter2)everyCharacter(text: Null, condition: (character: Nothing) -> Any): true `everyCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # everyCharacter ## [](#everycharacter1)everyCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の​_すべて_​の文字に対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

チェックする文字列内の文字を反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列が数字とスペースのみで構成されているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "12 34 56" everyCharacter $ == " " or isNumeric($) ``` #### [](#出力)出力 ```Json true ``` ## [](#everycharacter2)everyCharacter(text: Null, condition: (character: Nothing) -> Any): true `everyCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # everyCharacter ## [](#everycharacter1)everyCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の​_すべて_​の文字に対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

チェックする文字列内の文字を反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列が数字とスペースのみで構成されているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "12 34 56" everyCharacter $ == " " or isNumeric($) ``` #### [](#出力)出力 ```Json true ``` ## [](#everycharacter2)everyCharacter(text: Null, condition: (character: Nothing) -> Any): true `everyCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # everyCharacter ## [](#everycharacter1)everyCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の​_すべて_​の文字に対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

チェックする文字列内の文字を反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列が数字とスペースのみで構成されているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "12 34 56" everyCharacter $ == " " or isNumeric($) ``` #### [](#出力)出力 ```Json true ``` ## [](#everycharacter2)everyCharacter(text: Null, condition: (character: Nothing) -> Any): true `everyCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # everyCharacter ## [](#everycharacter1)everyCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の​_すべて_​の文字に対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

チェックする文字列内の文字を反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列が数字とスペースのみで構成されているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "12 34 56" everyCharacter $ == " " or isNumeric($) ``` #### [](#出力)出力 ```Json true ``` ## [](#everycharacter2)everyCharacter(text: Null, condition: (character: Nothing) -> Any): true `everyCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # everyEntry ## [](#everyentry1)everyEntry(Object, (value: Any, key: Key) -> Boolean): Boolean オブジェクト内のすべてのエントリが条件に一致すると ​`true`​ を返します。 この関数は、オブジェクト内の要素が最初に不一致と評価されたところで反復を停止します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​object

評価するオブジェクト。

​condition

各要素に適用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`everyEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import everyEntry from dw::core::Objects output application/json --- { a: {} everyEntry (value, key) -> value is String, b: {a: "", b: "123"} everyEntry (value, key) -> value is String, c: {a: "", b: 123} everyEntry (value, key) -> value is String, d: {a: "", b: 123} everyEntry (value, key) -> key as String == "a", e: {a: ""} everyEntry (value, key) -> key as String == "a", f: null everyEntry ((value, key) -> key as String == "a") } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false, "d": false, "e": true, "f": true } ``` ## [](#everyentry2)everyEntry(Null, (Nothing, Nothing) -> Boolean): Boolean `everyEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ # everyEntry ## [](#everyentry1)everyEntry(object: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内のすべてのエントリが条件に一致すると ​`true`​ を返します。 この関数は、オブジェクト内の要素が最初に不一致と評価されたところで反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​object

評価するオブジェクト。

​condition

各要素に適用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`everyEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import everyEntry from dw::core::Objects output application/json --- { a: {} everyEntry (value, key) -> value is String, b: {a: "", b: "123"} everyEntry (value, key) -> value is String, c: {a: "", b: 123} everyEntry (value, key) -> value is String, d: {a: "", b: 123} everyEntry (value, key) -> key as String == "a", e: {a: ""} everyEntry (value, key) -> key as String == "a", f: null everyEntry ((value, key) -> key as String == "a") } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false, "d": false, "e": true, "f": true } ``` ## [](#everyentry2)everyEntry(list: Null, condition: (Nothing, Nothing) -> Boolean): Boolean `everyEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_​ # everyEntry ## [](#everyentry1)everyEntry(object: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内のすべてのエントリが条件に一致すると ​`true`​ を返します。 この関数は、オブジェクト内の要素が最初に不一致と評価されたところで反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

condition

各要素に適用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`everyEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import everyEntry from dw::core::Objects output application/json --- { a: {} everyEntry (value, key) -> value is String, b: {a: "", b: "123"} everyEntry (value, key) -> value is String, c: {a: "", b: 123} everyEntry (value, key) -> value is String, d: {a: "", b: 123} everyEntry (value, key) -> key as String == "a", e: {a: ""} everyEntry (value, key) -> key as String == "a", f: null everyEntry ((value, key) -> key as String == "a") } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false, "d": false, "e": true, "f": true } ``` ## [](#everyentry2)everyEntry(list: Null, condition: (Nothing, Nothing) -> Boolean): Boolean `everyEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # everyEntry ## [](#everyentry1)everyEntry(object: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内のすべてのエントリが条件に一致すると ​`true`​ を返します。 この関数は、オブジェクト内の要素が最初に不一致と評価されたところで反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

condition

各要素に適用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`everyEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import everyEntry from dw::core::Objects output application/json --- { a: {} everyEntry (value, key) -> value is String, b: {a: "", b: "123"} everyEntry (value, key) -> value is String, c: {a: "", b: 123} everyEntry (value, key) -> value is String, d: {a: "", b: 123} everyEntry (value, key) -> key as String == "a", e: {a: ""} everyEntry (value, key) -> key as String == "a", f: null everyEntry ((value, key) -> key as String == "a") } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false, "d": false, "e": true, "f": true } ``` ## [](#everyentry2)everyEntry(list: Null, condition: (Nothing, Nothing) -> Boolean): Boolean `everyEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # everyEntry ## [](#everyentry1)everyEntry(object: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内のすべてのエントリが条件に一致すると ​`true`​ を返します。 この関数は、オブジェクト内の要素が最初に不一致と評価されたところで反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

condition

各要素に適用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`everyEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import everyEntry from dw::core::Objects output application/json --- { a: {} everyEntry (value, key) -> value is String, b: {a: "", b: "123"} everyEntry (value, key) -> value is String, c: {a: "", b: 123} everyEntry (value, key) -> value is String, d: {a: "", b: 123} everyEntry (value, key) -> key as String == "a", e: {a: ""} everyEntry (value, key) -> key as String == "a", f: null everyEntry ((value, key) -> key as String == "a") } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false, "d": false, "e": true, "f": true } ``` ## [](#everyentry2)everyEntry(list: Null, condition: (Nothing, Nothing) -> Boolean): Boolean `everyEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # everyEntry ## [](#everyentry1)everyEntry(object: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内のすべてのエントリが条件に一致すると ​`true`​ を返します。 この関数は、オブジェクト内の要素が最初に不一致と評価されたところで反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

condition

各要素に適用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`everyEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import everyEntry from dw::core::Objects output application/json --- { a: {} everyEntry (value, key) -> value is String, b: {a: "", b: "123"} everyEntry (value, key) -> value is String, c: {a: "", b: 123} everyEntry (value, key) -> value is String, d: {a: "", b: 123} everyEntry (value, key) -> key as String == "a", e: {a: ""} everyEntry (value, key) -> key as String == "a", f: null everyEntry ((value, key) -> key as String == "a") } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false, "d": false, "e": true, "f": true } ``` ## [](#everyentry2)everyEntry(list: Null, condition: (Nothing, Nothing) -> Boolean): Boolean `everyEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # Excel (XLSX) ファイルのデータの参照 この DataWeave の例では、​`filter`​ 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。​`ourBugs.xlsx`​ という名前のスプレッドシートには、​`Fred M`​ という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx") output application/json --- myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M") ``` - スクリプトは ​`classpath:ourBugs.xlsx`​ を ​`readUrl`​ 関数に渡して、Studio プロジェクトディレクトリ (​`src/main/resources`​) からファイルを読み取ります。結果は変数 ​`myInput`​ に保存されます。 - スクリプトは XLSX ファイルから ​`Data`​ という名前のシートを選択した後、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるレコードを除き、すべてのレコードを除外します。結果は JSON オブジェクトの配列で返されます。次に例を示します。 \[ { "Issue Key": "BUG-11708", "Issue Type": "Bug", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Natalie C", "Priority": "To be reviewed", "Status": "Closed", "Resolution": "Done", "Created": "2019-04-29T03:57:00", "Updated": "2019-05-06T10:40:00", "Due Date": "" }, { "Issue Key": "BUG-4903", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Fred M", "Priority": "To be reviewed", "Status": "In Progress", "Resolution": "", "Created": "2019-05-07T11:22:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" }, { "Issue Key": "BUG-4840", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Pablo C", "Priority": "To be reviewed", "Status": "In Validation", "Resolution": "", "Created": "2019-04-30T07:11:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" } \] 次の例は、前の例と同じ DataWeave スクリプトを使用して、​`filter`​ 式の結果をファイル ​`fredBugs.json`​ に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。 Studio での XML 設定: ```XML entry."Assignee" == "Fred M")]]> ``` - Scheduler (​`scheduler`​) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。 - Transform Message コンポーネント (​`ee:transform`​) は、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるすべてのレコードを ​`"Data"`​ シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。 - File Connector の Write 操作 (​`file:write`​) は、​`ee:transform`​ から JSON ペイロードを受け取り、​`fredBugs.json`​ という名前のファイルにペイロードを書き込みます。 ## [](#関連情報)関連情報 - [filter 関数](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-filter) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) # Excel (XLSX) ファイルのデータの参照 この DataWeave の例では、​`filter`​ 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。​`ourBugs.xlsx`​ という名前のスプレッドシートには、​`Fred M`​ という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx") output application/json --- myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M") ``` - スクリプトは ​`classpath:ourBugs.xlsx`​ を ​`readUrl`​ 関数に渡して、Studio プロジェクトディレクトリ (​`src/main/resources`​) からファイルを読み取ります。結果は変数 ​`myInput`​ に保存されます。 - スクリプトは XLSX ファイルから ​`Data`​ という名前のシートを選択した後、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるレコードを除き、すべてのレコードを除外します。結果は JSON オブジェクトの配列で返されます。次に例を示します。 \[ { "Issue Key": "BUG-11708", "Issue Type": "Bug", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Natalie C", "Priority": "To be reviewed", "Status": "Closed", "Resolution": "Done", "Created": "2019-04-29T03:57:00", "Updated": "2019-05-06T10:40:00", "Due Date": "" }, { "Issue Key": "BUG-4903", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Fred M", "Priority": "To be reviewed", "Status": "In Progress", "Resolution": "", "Created": "2019-05-07T11:22:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" }, { "Issue Key": "BUG-4840", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Pablo C", "Priority": "To be reviewed", "Status": "In Validation", "Resolution": "", "Created": "2019-04-30T07:11:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" } \] 次の例は、前の例と同じ DataWeave スクリプトを使用して、​`filter`​ 式の結果をファイル ​`fredBugs.json`​ に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。 Studio での XML 設定: ```XML entry."Assignee" == "Fred M")]]> ``` - Scheduler (​`scheduler`​) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。 - Transform Message コンポーネント (​`ee:transform`​) は、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるすべてのレコードを ​`"Data"`​ シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。 - File Connector の Write 操作 (​`file:write`​) は、​`ee:transform`​ から JSON ペイロードを受け取り、​`fredBugs.json`​ という名前のファイルにペイロードを書き込みます。 ## [](#関連情報)関連情報 - [filter 関数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-filter) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) # Excel (XLSX) ファイルのデータの参照 この DataWeave の例では、​`filter`​ 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。​`ourBugs.xlsx`​ という名前のスプレッドシートには、​`Fred M`​ という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx") output application/json --- myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M") ``` - スクリプトは ​`classpath:ourBugs.xlsx`​ を ​`readUrl`​ 関数に渡して、Studio プロジェクトディレクトリ (​`src/main/resources`​) からファイルを読み取ります。結果は変数 ​`myInput`​ に保存されます。 - スクリプトは XLSX ファイルから ​`Data`​ という名前のシートを選択した後、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるレコードを除き、すべてのレコードを除外します。 結果は JSON オブジェクトの配列で返されます。次に例を示します。 \[ { "Issue Key": "BUG-11708", "Issue Type": "Bug", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Natalie C", "Priority": "To be reviewed", "Status": "Closed", "Resolution": "Done", "Created": "2019-04-29T03:57:00", "Updated": "2019-05-06T10:40:00", "Due Date": "" }, { "Issue Key": "BUG-4903", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Fred M", "Priority": "To be reviewed", "Status": "In Progress", "Resolution": "", "Created": "2019-05-07T11:22:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" }, { "Issue Key": "BUG-4840", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Pablo C", "Priority": "To be reviewed", "Status": "In Validation", "Resolution": "", "Created": "2019-04-30T07:11:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" } \] 次の例は、前の例と同じ DataWeave スクリプトを使用して、​`filter`​ 式の結果をファイル ​`fredBugs.json`​ に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。 Studio での XML 設定: ```XML entry."Assignee" == "Fred M")]]> ``` - Scheduler (​`scheduler`​) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。 - Transform Message コンポーネント (​`ee:transform`​) は、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるすべてのレコードを ​`"Data"`​ シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。 - File Connector の Write 操作 (​`file:write`​) は、​`ee:transform`​ から JSON ペイロードを受け取り、​`fredBugs.json`​ という名前のファイルにペイロードを書き込みます。 ## [](#関連情報)関連情報 - [filter 関数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-filter) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) # Excel (XLSX) ファイルのデータの参照 この DataWeave の例では、​`filter`​ 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。​`ourBugs.xlsx`​ という名前のスプレッドシートには、​`Fred M`​ という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx") output application/json --- myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M") ``` - スクリプトは ​`classpath:ourBugs.xlsx`​ を ​`readUrl`​ 関数に渡して、Studio プロジェクトディレクトリ (​`src/main/resources`​) からファイルを読み取ります。結果は変数 ​`myInput`​ に保存されます。 - スクリプトは XLSX ファイルから ​`Data`​ という名前のシートを選択した後、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるレコードを除き、すべてのレコードを除外します。 結果は JSON オブジェクトの配列で返されます。次に例を示します。 \[ { "Issue Key": "BUG-11708", "Issue Type": "Bug", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Natalie C", "Priority": "To be reviewed", "Status": "Closed", "Resolution": "Done", "Created": "2019-04-29T03:57:00", "Updated": "2019-05-06T10:40:00", "Due Date": "" }, { "Issue Key": "BUG-4903", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Fred M", "Priority": "To be reviewed", "Status": "In Progress", "Resolution": "", "Created": "2019-05-07T11:22:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" }, { "Issue Key": "BUG-4840", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Pablo C", "Priority": "To be reviewed", "Status": "In Validation", "Resolution": "", "Created": "2019-04-30T07:11:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" } \] 次の例は、前の例と同じ DataWeave スクリプトを使用して、​`filter`​ 式の結果をファイル ​`fredBugs.json`​ に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。 Studio での XML 設定: ```XML entry."Assignee" == "Fred M")]]> ``` - Scheduler (​`scheduler`​) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。 - Transform Message コンポーネント (​`ee:transform`​) は、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるすべてのレコードを ​`"Data"`​ シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。 - File Connector の Write 操作 (​`file:write`​) は、​`ee:transform`​ から JSON ペイロードを受け取り、​`fredBugs.json`​ という名前のファイルにペイロードを書き込みます。 ## [](#関連情報)関連情報 - [filter 関数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-filter) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) # Excel (XLSX) ファイルのデータの参照 この DataWeave の例では、​`filter`​ 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。​`ourBugs.xlsx`​ という名前のスプレッドシートには、​`Fred M`​ という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx") output application/json --- myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M") ``` - スクリプトは ​`classpath:ourBugs.xlsx`​ を ​`readUrl`​ 関数に渡して、Studio プロジェクトディレクトリ (​`src/main/resources`​) からファイルを読み取ります。結果は変数 ​`myInput`​ に保存されます。 - スクリプトは XLSX ファイルから ​`Data`​ という名前のシートを選択した後、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるレコードを除き、すべてのレコードを除外します。 結果は JSON オブジェクトの配列で返されます。次に例を示します。 \[ { "Issue Key": "BUG-11708", "Issue Type": "Bug", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Natalie C", "Priority": "To be reviewed", "Status": "Closed", "Resolution": "Done", "Created": "2019-04-29T03:57:00", "Updated": "2019-05-06T10:40:00", "Due Date": "" }, { "Issue Key": "BUG-4903", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Fred M", "Priority": "To be reviewed", "Status": "In Progress", "Resolution": "", "Created": "2019-05-07T11:22:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" }, { "Issue Key": "BUG-4840", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Pablo C", "Priority": "To be reviewed", "Status": "In Validation", "Resolution": "", "Created": "2019-04-30T07:11:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" } \] 次の例は、前の例と同じ DataWeave スクリプトを使用して、​`filter`​ 式の結果をファイル ​`fredBugs.json`​ に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。 Studio での XML 設定: ```XML entry."Assignee" == "Fred M")]]> ``` - Scheduler (​`scheduler`​) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。 - Transform Message コンポーネント (​`ee:transform`​) は、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるすべてのレコードを ​`"Data"`​ シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。 - File Connector の Write 操作 (​`file:write`​) は、​`ee:transform`​ から JSON ペイロードを受け取り、​`fredBugs.json`​ という名前のファイルにペイロードを書き込みます。 ## [](#関連情報)関連情報 - [filter 関数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-filter) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) # Excel (XLSX) ファイルのデータの参照 この DataWeave の例では、​`filter`​ 関数を使用して、指定された値を含む、Excel (XLSX) 入力ファイルの行のみを返します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
デフォルトでは、1.5 MB を超えるファイルはディスクに保存されます。これより小さいファイルはメモリに保存されます。
次の DataWeave スクリプトでは、XLSX ファイルを読み取り、そのファイルから絞り込まれたデータを返します。​`ourBugs.xlsx`​ という名前のスプレッドシートには、​`Fred M`​ という名前の担当者を含め、チームのすべてのメンバーに割り当てられたバグに関するデータが含まれていると仮定します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = readUrl("classpath://ourBugs.xlsx", "application/xlsx") output application/json --- myInput."Data" filter ((entry, index) -> entry."Assignee" == "Fred M") ``` - スクリプトは ​`classpath:ourBugs.xlsx`​ を ​`readUrl`​ 関数に渡して、Studio プロジェクトディレクトリ (​`src/main/resources`​) からファイルを読み取ります。結果は変数 ​`myInput`​ に保存されます。 - スクリプトは XLSX ファイルから ​`Data`​ という名前のシートを選択した後、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるレコードを除き、すべてのレコードを除外します。結果は JSON オブジェクトの配列で返されます。次に例を示します。 \[ { "Issue Key": "BUG-11708", "Issue Type": "Bug", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Natalie C", "Priority": "To be reviewed", "Status": "Closed", "Resolution": "Done", "Created": "2019-04-29T03:57:00", "Updated": "2019-05-06T10:40:00", "Due Date": "" }, { "Issue Key": "BUG-4903", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Fred M", "Priority": "To be reviewed", "Status": "In Progress", "Resolution": "", "Created": "2019-05-07T11:22:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" }, { "Issue Key": "BUG-4840", "Issue Type": "Story", "Summary": "Some Description of the Bug", "Assignee": "Fred M", "Reporter": "Pablo C", "Priority": "To be reviewed", "Status": "In Validation", "Resolution": "", "Created": "2019-04-30T07:11:00", "Updated": "2019-05-08T10:16:00", "Due Date": "" } \] 次の例は、前の例と同じ DataWeave スクリプトを使用して、​`filter`​ 式の結果をファイル ​`fredBugs.json`​ に書き込みます。この例は、Studio の Mule プロジェクトからの設定 XML です。 Studio での XML 設定: ```XML entry."Assignee" == "Fred M")]]> ``` - Scheduler (​`scheduler`​) はフローをトリガーし、次のコンポーネント (Transform Message) を実行します。 - Transform Message コンポーネント (​`ee:transform`​) は、​`Assignee`​ 列に ​`Fred M`​ の値が含まれるすべてのレコードを ​`"Data"`​ シートから返す DataWeave スクリプトを提供し、バイナリ XLSX 入力を JSON 出力に変換します。 - File Connector の Write 操作 (​`file:write`​) は、​`ee:transform`​ から JSON ペイロードを受け取り、​`fredBugs.json`​ という名前のファイルにペイロードを書き込みます。 ## [](#関連情報)関連情報 - [filter 関数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-filter) - [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) # Excel 形式 MIME タイプ: `application/xlsx` ID: `excel` Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#mapping)Excel 型のマッピング 次の表に、Excel と DataWeave の型のマッピングを示します。
Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

## [](#examples)例 次の例は、Excel 形式の使用方法を示しています。 - [例: Excel を DataWeave (dw) 形式で表す](#example1) - [例: Excel テーブルを出力する](#example2) - [例: Excel 入力をストリーミングする](#example3) ### [](#example1)例: Excel を DataWeave (dw) 形式で表す 次の例は、DataWeave で Excel ワークブックを表す方法を示しています。 #### [](#入力)入力 Excel ワークブック (​`Sheet1`​) は、DataWeave ソースの入力ペイロードとして機能します。 Sheet1: . | A | B 1 | Id | Name 2 | 123 | George 3 | 456 | Lucas #### [](#ソース)ソース この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。 ```dataweave { "Sheet1": [ { "A": 123, "B": "George" }, { "A": 456, "B": "Lucas" } ] } ``` ### [](#example2)例: Excel テーブルを出力する 次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。 この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​`Sheet1`​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。 この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​`header=true`​ 設定は、出力にヘッダー値が含まれていることを示します。 ```dataweave %dw 2.0 output application/xlsx header=true --- { Sheet1: [ { Id: 123, Name: George }, { Id: 456, Name: Lucas } ] } ``` 他の例については、​[「Excel (XLSX) ファイルのデータの参照」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-xlsx-lookup)​を参照してください。 ### [](#example3)例: Excel 入力をストリーミングする デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。 Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。 ```xml { foo: row.a, bar: row.b })]]> ``` この例の説明: - `outputMimeType="application/xlsx; streaming=true"`​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/xlsx`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​`"Sheet Name"`​ という名前の XLSX シート) の各行を反復処理し、(​`row.a`​、​`row.b`​ を使用して) 行の各セルの値を選択します。​`a`​ および ​`b`​ という名前の列を想定し、それらの列の各行の値を ​`foo`​ および ​`bar`​ にそれぞれマップします。 #### [](#出力-2)出力 次の画像は、Excel テーブルの出力を示しています。 ![ID と名前が表示されている Excel 形式のテーブル](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-formats-exceltable.png) ## [](#properties)Configuration のプロパティ DataWeave では、Excel の次の設定プロパティがサポートされています。 ### [](#リーダープロパティ-excel)リーダープロパティ (Excel) Excel 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

header

Boolean

true

Excel テーブルにヘッダーを含めるかどうかを示します。有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。有効な値は、​true​ または ​false​ です。

streaming

Boolean

false

Mule 4.2.2 で導入済み: ストリーミングの目的は、大きなファイルを処理することです。ストリーミングを有効にすると、リーダーは一度にすべてのデータを使用可能にするのではなく、各行に順次アクセスして一度に 1 行ずつメモリ内に保存します。ストリーミングでは、ファイルの行にランダムアクセスできません。エントリを順次アクセスする場合のみ使用します。有効な値は、​true​ または ​false​ です。

tableOffset

String

null

テーブルの最初のセルの位置 (​<Column><Row> example A1​)。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾チェックがオフになります。有効な値は、​true​ または ​false​ です。

### [](#ライタープロパティ-excel)ライタープロパティ (Excel) Excel 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

ライターバッファのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

header

Boolean

true

Excel テーブルにヘッダーを含めるかどうかを示します。有効な値は、​true​ または ​false​ です。ヘッダーがない場合、列名が使用されます (例: A、B、C など)。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。有効な値は、​true​ または ​false​ です。

tableOffset

String

null

テーブルの最初のセルの位置 (​<Column><Row> example A1​)。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾チェックがオフになります。有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ (Excel) DataWeave では、次の MIME タイプがサポートされています。
MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx

# Excel 形式 MIME タイプ: `application/xlsx` ID: `excel` Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#mapping)Excel 型のマッピング 次の表に、Excel と DataWeave の型のマッピングを示します。
Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

## [](#examples)例 次の例は、Excel 形式の使用方法を示しています。 - [例: Excel を DataWeave (dw) 形式で表す](#example1) - [例: Excel テーブルを出力する](#example2) - [例: Excel 入力をストリーミングする](#example3) ### [](#example1)例: Excel を DataWeave (dw) 形式で表す 次の例は、DataWeave で Excel ワークブックを表す方法を示しています。 #### [](#入力)入力 Excel ワークブック (​`Sheet1`​) は、DataWeave ソースの入力ペイロードとして機能します。 Sheet1: . | A | B 1 | Id | Name 2 | 123 | George 3 | 456 | Lucas #### [](#ソース)ソース この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。 ```dataweave { "Sheet1": [ { "A": 123, "B": "George" }, { "A": 456, "B": "Lucas" } ] } ``` ### [](#example2)例: Excel テーブルを出力する 次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。 この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​`Sheet1`​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。 この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​`header=true`​ 設定は、出力にヘッダー値が含まれていることを示します。 ```dataweave %dw 2.0 output application/xlsx header=true --- { Sheet1: [ { Id: 123, Name: George }, { Id: 456, Name: Lucas } ] } ``` 他の例については、​[「Excel (XLSX) ファイルのデータの参照」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-xlsx-lookup)​を参照してください。 ### [](#example3)例: Excel 入力をストリーミングする デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。 Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。 ```xml { foo: row.a, bar: row.b })]]> ``` この例の説明: - `outputMimeType="application/xlsx; streaming=true"`​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/xlsx`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​`"Sheet Name"`​ という名前の XLSX シート) の各行を反復処理し、(​`row.a`​、​`row.b`​ を使用して) 行の各セルの値を選択します。​`a`​ および ​`b`​ という名前の列を想定し、それらの列の各行の値を ​`foo`​ および ​`bar`​ にそれぞれマップします。 #### [](#出力-2)出力 次の画像は、Excel テーブルの出力を示しています。 ![ID と名前が表示されている Excel 形式のテーブル](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-formats-exceltable.png) ## [](#制限事項)制限事項 - マクロは現在サポートされていません。 - チャートは無視されます。 - ピボットテーブルはサポートされていません。 // CONFIG PROPS GET APPENDED BELOW ///////////////////////////////// ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。

有効な値は、​true​ または ​false​ です。

tableLimit

String

'Unbounded'

各行の最後の列の位置。パターン ​<Column>​ (たとえば、​'A'​ や ​'AB'​)、値 ​'HeaderSize'​ (最後のヘッダーの位置を使用する)、または「Unbounded (無制限)」 (各行をコンシュームする) を受け入れます。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx

# Excel 形式 MIME タイプ: `application/xlsx` ID: `excel` Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#mapping)Excel 型のマッピング 次の表に、Excel と DataWeave の型のマッピングを示します。
Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

## [](#examples)例 次の例は、Excel 形式の使用方法を示しています。 - [例: Excel を DataWeave (dw) 形式で表す](#example1) - [例: Excel テーブルを出力する](#example2) - [例: Excel 入力をストリーミングする](#example3) ### [](#example1)例: Excel を DataWeave (dw) 形式で表す 次の例は、DataWeave で Excel ワークブックを表す方法を示しています。 #### [](#入力)入力 Excel ワークブック (​`Sheet1`​) は、DataWeave ソースの入力ペイロードとして機能します。 Sheet1: . | A | B 1 | Id | Name 2 | 123 | George 3 | 456 | Lucas #### [](#ソース)ソース この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。 ```dataweave { "Sheet1": [ { "A": 123, "B": "George" }, { "A": 456, "B": "Lucas" } ] } ``` ### [](#example2)例: Excel テーブルを出力する 次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。 この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​`Sheet1`​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。 この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​`header=true`​ 設定は、出力にヘッダー値が含まれていることを示します。 ```dataweave %dw 2.0 output application/xlsx header=true --- { Sheet1: [ { Id: 123, Name: George }, { Id: 456, Name: Lucas } ] } ``` 他の例については、​[「Excel (XLSX) ファイルのデータの参照」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-xlsx-lookup)​を参照してください。 ### [](#example3)例: Excel 入力をストリーミングする デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。 Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。 ```xml { foo: row.a, bar: row.b })]]> ``` この例の説明: - `outputMimeType="application/xlsx; streaming=true"`​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/xlsx`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​`"Sheet Name"`​ という名前の XLSX シート) の各行を反復処理し、(​`row.a`​、​`row.b`​ を使用して) 行の各セルの値を選択します。​`a`​ および ​`b`​ という名前の列を想定し、それらの列の各行の値を ​`foo`​ および ​`bar`​ にそれぞれマップします。 #### [](#出力-2)出力 次の画像は、Excel テーブルの出力を示しています。 ![ID と名前が表示されている Excel 形式のテーブル](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-formats-exceltable.png) ## [](#制限事項)制限事項 - マクロは現在サポートされていません。 - チャートは無視されます。 - ピボットテーブルはサポートされていません。 - 書式設定は現在サポートされていません。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

tableLimit

String

'Unbounded'

各行の最後の列の位置。パターン ​<Column>​ (たとえば、​'A'​ や ​'AB'​)、値 ​'HeaderSize'​ (最後のヘッダーの位置を使用する)、または「Unbounded (無制限)」 (各行をコンシュームする) を受け入れます。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx

# Excel 形式 MIME タイプ: `application/xlsx` ID: `excel` Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#mapping)Excel 型のマッピング 次の表に、Excel と DataWeave の型のマッピングを示します。
Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

## [](#examples)例 次の例は、Excel 形式の使用方法を示しています。 - [例: Excel を DataWeave (dw) 形式で表す](#example1) - [例: Excel テーブルを出力する](#example2) - [例: Excel 入力をストリーミングする](#example3) ### [](#example1)例: Excel を DataWeave (dw) 形式で表す 次の例は、DataWeave で Excel ワークブックを表す方法を示しています。 #### [](#入力)入力 Excel ワークブック (​`Sheet1`​) は、DataWeave ソースの入力ペイロードとして機能します。 Sheet1: . | A | B 1 | Id | Name 2 | 123 | George 3 | 456 | Lucas #### [](#ソース)ソース この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。 ```dataweave { "Sheet1": [ { "A": 123, "B": "George" }, { "A": 456, "B": "Lucas" } ] } ``` ### [](#example2)例: Excel テーブルを出力する 次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。 この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​`Sheet1`​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。 この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​`header=true`​ 設定は、出力にヘッダー値が含まれていることを示します。 ```dataweave %dw 2.0 output application/xlsx header=true --- { Sheet1: [ { Id: 123, Name: George }, { Id: 456, Name: Lucas } ] } ``` 他の例については、​[「Excel (XLSX) ファイルのデータの参照」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-xlsx-lookup)​を参照してください。 ### [](#example3)例: Excel 入力をストリーミングする デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。 Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。 ```xml { foo: row.a, bar: row.b })]]> ``` この例の説明: - `outputMimeType="application/xlsx; streaming=true"`​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/xlsx`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​`"Sheet Name"`​ という名前の XLSX シート) の各行を反復処理し、(​`row.a`​、​`row.b`​ を使用して) 行の各セルの値を選択します。​`a`​ および ​`b`​ という名前の列を想定し、それらの列の各行の値を ​`foo`​ および ​`bar`​ にそれぞれマップします。 #### [](#出力-2)出力 次の画像は、Excel テーブルの出力を示しています。 ![ID と名前が表示されている Excel 形式のテーブル](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-formats-exceltable.png) ## [](#制限事項)制限事項 - マクロは現在サポートされていません。 - チャートは無視されます。 - ピボットテーブルはサポートされていません。 - 書式設定は現在サポートされていません。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

maxEntrySize

Number

null

ZIP ファイル内の単一エントリの最大バイト数を設定します。

minInflateRatio

Number

null

ZIP 爆弾を検出するために、圧縮されたバイトと圧縮解除されたバイトの比率を設定します。たとえば、特定の読み取りパッケージ部分の圧縮が 1 パーセントより高い場合に値を 1 パーセント (= 0.01d) に設定すると、解析で zip 爆弾が示されません。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

tableLimit

String

'Unbounded'

各行の最後の列の位置。パターン ​<Column>​ (たとえば、​'A'​ や ​'AB'​)、値 ​'HeaderSize'​ (最後のヘッダーの位置を使用する)、または「Unbounded (無制限)」 (各行をコンシュームする) を受け入れます。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

maxEntrySize

Number

null

ZIP ファイル内の単一エントリの最大バイト数を設定します。

minInflateRatio

Number

null

ZIP 爆弾を検出するために、圧縮されたバイトと圧縮解除されたバイトの比率を設定します。たとえば、特定の読み取りパッケージ部分の圧縮が 1 パーセントより高い場合に値を 1 パーセント (= 0.01d) に設定すると、解析で zip 爆弾が示されません。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx

# Excel 形式 MIME タイプ: `application/xlsx` ID: `excel` Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#mapping)Excel 型のマッピング 次の表に、Excel と DataWeave の型のマッピングを示します。
Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

## [](#examples)例 次の例は、Excel 形式の使用方法を示しています。 - [例: Excel を DataWeave (dw) 形式で表す](#example1) - [例: Excel テーブルを出力する](#example2) - [例: Excel 入力をストリーミングする](#example3) ### [](#example1)例: Excel を DataWeave (dw) 形式で表す 次の例は、DataWeave で Excel ワークブックを表す方法を示しています。 #### [](#入力)入力 Excel ワークブック (​`Sheet1`​) は、DataWeave ソースの入力ペイロードとして機能します。 Sheet1: . | A | B 1 | Id | Name 2 | 123 | George 3 | 456 | Lucas #### [](#ソース)ソース この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。 ```dataweave { "Sheet1": [ { "A": 123, "B": "George" }, { "A": 456, "B": "Lucas" } ] } ``` ### [](#example2)例: Excel テーブルを出力する 次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。 この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​`Sheet1`​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。 この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​`header=true`​ 設定は、出力にヘッダー値が含まれていることを示します。 ```dataweave %dw 2.0 output application/xlsx header=true --- { Sheet1: [ { Id: 123, Name: George }, { Id: 456, Name: Lucas } ] } ``` 他の例については、​[「Excel (XLSX) ファイルのデータの参照」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-xlsx-lookup)​を参照してください。 ### [](#example3)例: Excel 入力をストリーミングする デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。 Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。 ```xml { foo: row.a, bar: row.b })]]> ``` この例の説明: - `outputMimeType="application/xlsx; streaming=true"`​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/xlsx`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​`"Sheet Name"`​ という名前の XLSX シート) の各行を反復処理し、(​`row.a`​、​`row.b`​ を使用して) 行の各セルの値を選択します。​`a`​ および ​`b`​ という名前の列を想定し、それらの列の各行の値を ​`foo`​ および ​`bar`​ にそれぞれマップします。 #### [](#出力-2)出力 次の画像は、Excel テーブルの出力を示しています。 ![ID と名前が表示されている Excel 形式のテーブル](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-formats-exceltable.png) ## [](#制限事項)制限事項 - マクロは現在サポートされていません。 - チャートは無視されます。 - ピボットテーブルはサポートされていません。 - 書式設定は現在サポートされていません。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

maxEntrySize

Number

null

ZIP ファイル内の単一エントリの最大バイト数を設定します。

minInflateRatio

Number

null

ZIP 爆弾を検出するために、圧縮されたバイトと圧縮解除されたバイトの比率を設定します。たとえば、特定の読み取りパッケージ部分の圧縮が 1 パーセントより高い場合に値を 1 パーセント (= 0.01d) に設定すると、解析で zip 爆弾が示されません。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

tableLimit

String

'Unbounded'

各行の最後の列の位置。パターン ​<Column>​ (たとえば、​'A'​ や ​'AB'​)、値 ​'HeaderSize'​ (最後のヘッダーの位置を使用する)、または「Unbounded (無制限)」 (各行をコンシュームする) を受け入れます。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

maxEntrySize

Number

null

ZIP ファイル内の単一エントリの最大バイト数を設定します。

minInflateRatio

Number

null

ZIP 爆弾を検出するために、圧縮されたバイトと圧縮解除されたバイトの比率を設定します。たとえば、特定の読み取りパッケージ部分の圧縮が 1 パーセントより高い場合に値を 1 パーセント (= 0.01d) に設定すると、解析で zip 爆弾が示されません。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx

# Excel 形式 MIME タイプ: `application/xlsx` ID: `excel` Excel ワークブックは一連のシートです。DataWeave では、これはオブジェクトにマップされ、各シートがキーになります。Excel シートごとに 1 つのテーブルのみが許可されます。 テーブルは行の配列として表現されます。行はオブジェクトであり、そのキーが列、値がセルのコンテンツになります。

.xlsx​ ファイルのみがサポートされます (Excel 2007)。 .xls​ ファイルは Mule ではサポートされません。

Excel 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#mapping)Excel 型のマッピング 次の表に、Excel と DataWeave の型のマッピングを示します。
Excel 型 DataWeave 型

String

String

Numeric

Number

Boolean

Boolean

Data

Date

## [](#examples)例 次の例は、Excel 形式の使用方法を示しています。 - [例: Excel を DataWeave (dw) 形式で表す](#example1) - [例: Excel テーブルを出力する](#example2) - [例: Excel 入力をストリーミングする](#example3) ### [](#example1)例: Excel を DataWeave (dw) 形式で表す 次の例は、DataWeave で Excel ワークブックを表す方法を示しています。 #### [](#入力)入力 Excel ワークブック (​`Sheet1`​) は、DataWeave ソースの入力ペイロードとして機能します。 Sheet1: . | A | B 1 | Id | Name 2 | 123 | George 3 | 456 | Lucas #### [](#ソース)ソース この DataWeave スクリプトは、Excel 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 DataWeave 出力は次のようになります。他のオブジェクトの値を選択するときと同じ方法で値を選択できます。 ```dataweave { "Sheet1": [ { "A": 123, "B": "George" }, { "A": 456, "B": "Lucas" } ] } ``` ### [](#example2)例: Excel テーブルを出力する 次の DataWeave スクリプトは、ヘッダーと項目が含まれる Excel テーブルを出力します。 この DataWeave スクリプトの本文は、Excel シートのコンテンツを定義する DataWeave オブジェクトです。シートの名前 ​`Sheet1`​ は、このオブジェクトのキーになります。値は、オブジェクトの配列になります。配列の各オブジェクトには、キー-値ペアのコレクションが含まれます。各ペアのキーは、スプレッドシートのヘッダー値として処理されます。各ペアの値は、シートの行のデータ値として処理されます。 この出力ディレクティブは、出力が Excel 形式と MIME タイプであることを示しています。​`header=true`​ 設定は、出力にヘッダー値が含まれていることを示します。 ```dataweave %dw 2.0 output application/xlsx header=true --- { Sheet1: [ { Id: 123, Name: George }, { Id: 456, Name: Lucas } ] } ``` 他の例については、​[「Excel (XLSX) ファイルのデータの参照」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-xlsx-lookup)​を参照してください。 ### [](#example3)例: Excel 入力をストリーミングする デフォルトでは、Excel リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体から入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​`streaming`​ プロパティを ​`true`​ に設定することで、リーダーのパフォーマンスを向上できます。 Mule アプリケーションの次の設定 XML では、Excel ファイルをストリーミングして JSON に変換します。 ```xml { foo: row.a, bar: row.b })]]> ``` この例の説明: - `outputMimeType="application/xlsx; streaming=true"`​ を設定して、XLSX 入力をストリーミングするように HTTP リスナーを設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/xlsx`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトを使用して、XLSX ペイロード (​`"Sheet Name"`​ という名前の XLSX シート) の各行を反復処理し、(​`row.a`​、​`row.b`​ を使用して) 行の各セルの値を選択します。​`a`​ および ​`b`​ という名前の列を想定し、それらの列の各行の値を ​`foo`​ および ​`bar`​ にそれぞれマップします。 #### [](#出力-2)出力 次の画像は、Excel テーブルの出力を示しています。 ![ID と名前が表示されている Excel 形式のテーブル](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-formats-exceltable.png) ## [](#制限事項)制限事項 - マクロは現在サポートされていません。 - チャートは無視されます。 - ピボットテーブルはサポートされていません。 - 書式設定は現在サポートされていません。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

maxEntrySize

Number

null

ZIP ファイル内の単一エントリの最大バイト数を設定します。

minInflateRatio

Number

null

ZIP 爆弾を検出するために、圧縮されたバイトと圧縮解除されたバイトの比率を設定します。たとえば、特定の読み取りパッケージ部分の圧縮が 1 パーセントより高い場合に値を 1 パーセント (= 0.01d) に設定すると、解析で zip 爆弾が示されません。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

tableLimit

String

'Unbounded'

各行の最後の列の位置。パターン ​<Column>​ (たとえば、​'A'​ や ​'AB'​)、値 ​'HeaderSize'​ (最後のヘッダーの位置を使用する)、または「Unbounded (無制限)」 (各行をコンシュームする) を受け入れます。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

header

Boolean

true

出力の 1 行目にヘッダー項目名が含まれるかどうかを示します。

有効な値は、​true​ または ​false​ です。

ignoreEmptyLine

Boolean

true

デフォルトでは、空の行を無視します。

有効な値は、​true​ または ​false​ です。

maxEntrySize

Number

null

ZIP ファイル内の単一エントリの最大バイト数を設定します。

minInflateRatio

Number

null

ZIP 爆弾を検出するために、圧縮されたバイトと圧縮解除されたバイトの比率を設定します。たとえば、特定の読み取りパッケージ部分の圧縮が 1 パーセントより高い場合に値を 1 パーセント (= 0.01d) に設定すると、解析で zip 爆弾が示されません。

tableOffset

String

null

最初のセルの位置を設定します。パターン ​<Column><Row>​ (たとえば、​A1​ や ​B3​) を受け入れます。

zipBombCheck

Boolean

true

false​ に設定すると、zip 爆弾 (圧縮解除爆弾) チェックを無効にします。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/xlsx

# fail ## [](#fail1)fail(String): Nothing 指定されたメッセージと共に例外をスローします。 ### [](#パラメーター)パラメーター
名前 説明

​message

エラーメッセージ (​String​)。

### [](#例)例 次の例では、式 ​`(sizeOf(myVar) <= 0)`​ が ​`true`​ であるため、失敗メッセージ ​`Data was empty`​ を返します。エラーメッセージの短縮バージョンが以下の「出力」セクションで示されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var result = [] output application/json --- if(sizeOf(result) <= 0) fail('Data was empty') else result ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:47:44,983 ... ********************************* Message : "Data was empty ... ``` # fail ## [](#fail1)fail(message: String = 'Error'): Nothing 指定されたメッセージと共に例外をスローします。 ### [](#パラメーター)パラメーター
名前 説明

​message

エラーメッセージ (​String​)。

### [](#例)例 次の例では、式 ​`(sizeOf(myVar) <= 0)`​ が ​`true`​ であるため、失敗メッセージ ​`Data was empty`​ を返します。エラーメッセージの短縮バージョンが出力で示されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var result = [] output application/json --- if(sizeOf(result) <= 0) fail('Data was empty') else result ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:47:44,983 ... ********************************* Message : "Data was empty ... ``` # fail ## [](#fail1)fail(message: String = 'Error'): Nothing 指定されたメッセージと共に例外をスローします。 ### [](#パラメーター)パラメーター
名前 説明

message

エラーメッセージ (​String​)。

### [](#例)例 次の例では、式 ​`(sizeOf(myVar) <= 0)`​ が ​`true`​ であるため、失敗メッセージ ​`Data was empty`​ を返します。エラーメッセージの短縮バージョンが出力で示されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var result = [] output application/json --- if(sizeOf(result) <= 0) fail('Data was empty') else result ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:47:44,983 ... ********************************* Message : "Data was empty ... ``` # fail ## [](#fail1)fail(message: String = 'Error'): Nothing 指定されたメッセージと共に例外をスローします。 ### [](#パラメーター)パラメーター
名前 説明

message

エラーメッセージ (​String​)。

### [](#例)例 次の例では、式 ​`(sizeOf(myVar) <= 0)`​ が ​`true`​ であるため、失敗メッセージ ​`Data was empty`​ を返します。エラーメッセージの短縮バージョンが出力で示されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var result = [] output application/json --- if(sizeOf(result) <= 0) fail('Data was empty') else result ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:47:44,983 ... ********************************* Message : "Data was empty ... ``` # fail ## [](#fail1)fail(message: String = 'Error'): Nothing 指定されたメッセージと共に例外をスローします。 ### [](#パラメーター)パラメーター
名前 説明

message

エラーメッセージ (​String​)。

### [](#例)例 次の例では、式 ​`(sizeOf(myVar) <= 0)`​ が ​`true`​ であるため、失敗メッセージ ​`Data was empty`​ を返します。エラーメッセージの短縮バージョンが出力で示されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var result = [] output application/json --- if(sizeOf(result) <= 0) fail('Data was empty') else result ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:47:44,983 ... ********************************* Message : "Data was empty ... ``` # fail ## [](#fail1)fail(message: String = 'Error'): Nothing 指定されたメッセージと共に例外をスローします。 ### [](#パラメーター)パラメーター
名前 説明

message

エラーメッセージ (​String​)。

### [](#例)例 次の例では、式 ​`(sizeOf(myVar) <= 0)`​ が ​`true`​ であるため、失敗メッセージ ​`Data was empty`​ を返します。エラーメッセージの短縮バージョンが出力で示されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var result = [] output application/json --- if(sizeOf(result) <= 0) fail('Data was empty') else result ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:47:44,983 ... ********************************* Message : "Data was empty ... ``` # failIf ## [](#failif1)failIf(T, (value: T) -> Boolean, String): T エバリュエーターの式が ​`true`​ を返す場合は、指定されたメッセージでエラーを生成し、それ以外の場合は値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

evaluator​ 式が ​false​ の場合のみ返す値。

evaluator

true​ または ​false​ を返す式。

### [](#例)例 次の例では、式 ​`isEmpty(result)`​ が ​`true`​ であるため、(SUCCESS メッセージの代わりに) ランタイムエラーを生成します。この式が ​`true`​ なのは、空のオブジェクトが変数 ​`result`​ に渡されているためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {} output application/json --- { "result" : failIf(result, isEmpty) } ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:56:39,988 ... ********************************** Message : "Failed ``` または、関数は値を出力します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {"a":"test"} output application/json --- { "result" : result failIf isEmpty($) } ``` #### [](#出力-2)出力 ```Json { "result": { "a": "test" } } ``` # failIf ## [](#failif1)failIf(value: T, evaluator: (value: T) -> Boolean, message: String = 'Failed'): T 評価式が ​`true`​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

evaluator​ 式が ​false​ の場合のみ返す値。

evaluator

true​ または ​false​ を返す式。

### [](#例)例 次の例では、式 ​`isEmpty(result)`​ が ​`true`​ であるため、(SUCCESS メッセージの代わりに) ランタイムエラーを生成します。この式が ​`true`​ なのは、空のオブジェクトが変数 ​`result`​ に渡されているためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {} output application/json --- { "result" : failIf(result, isEmpty) } ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:56:39,988 ... ********************************** Message : "Failed ``` または、関数は値を出力します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {"a":"test"} output application/json --- { "result" : result failIf isEmpty($) } ``` #### [](#出力-2)出力 ```Json { "result": { "a": "test" } } ``` # failIf ## [](#failif1)failIf(value: T, evaluator: (value: T) -> Boolean, message: String = 'Failed'): T 評価式が ​`true`​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

evaluator​ 式が ​false​ の場合のみ返す値。

evaluator

true​ または ​false​ を返す式。

### [](#例)例 次の例では、式 ​`isEmpty(result)`​ が ​`true`​ であるため、(SUCCESS メッセージの代わりに) ランタイムエラーを生成します。この式が ​`true`​ なのは、空のオブジェクトが変数 ​`result`​ に渡されているためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {} output application/json --- { "result" : failIf(result, isEmpty) } ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:56:39,988 ... ********************************** Message : "Failed ``` または、関数は値を出力します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {"a":"test"} output application/json --- { "result" : result failIf isEmpty($) } ``` #### [](#出力-2)出力 ```Json { "result": { "a": "test" } } ``` # failIf ## [](#failif1)failIf(value: T, evaluator: (value: T) -> Boolean, message: String = 'Failed'): T 評価式が ​`true`​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

evaluator​ 式が ​false​ の場合のみ返す値。

evaluator

true​ または ​false​ を返す式。

### [](#例)例 次の例では、式 ​`isEmpty(result)`​ が ​`true`​ であるため、(SUCCESS メッセージの代わりに) ランタイムエラーを生成します。この式が ​`true`​ なのは、空のオブジェクトが変数 ​`result`​ に渡されているためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {} output application/json --- { "result" : failIf(result, isEmpty) } ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:56:39,988 ... ********************************** Message : "Failed ``` または、関数は値を出力します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {"a":"test"} output application/json --- { "result" : result failIf isEmpty($) } ``` #### [](#出力-2)出力 ```Json { "result": { "a": "test" } } ``` # failIf ## [](#failif1)failIf(value: T, evaluator: (value: T) -> Boolean, message: String = 'Failed'): T 評価式が ​`true`​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

evaluator​ 式が ​false​ の場合のみ返す値。

evaluator

true​ または ​false​ を返す式。

### [](#例)例 次の例では、式 ​`isEmpty(result)`​ が ​`true`​ であるため、(SUCCESS メッセージの代わりに) ランタイムエラーを生成します。この式が ​`true`​ なのは、空のオブジェクトが変数 ​`result`​ に渡されているためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {} output application/json --- { "result" : failIf(result, isEmpty) } ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:56:39,988 ... ********************************** Message : "Failed ``` または、関数は値を出力します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {"a":"test"} output application/json --- { "result" : result failIf isEmpty($) } ``` #### [](#出力-2)出力 ```Json { "result": { "a": "test" } } ``` # failIf ## [](#failif1)failIf(value: T, evaluator: (value: T) -> Boolean, message: String = 'Failed'): T 評価式が ​`true`​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

evaluator​ 式が ​false​ の場合のみ返す値。

evaluator

true​ または ​false​ を返す式。

### [](#例)例 次の例では、式 ​`isEmpty(result)`​ が ​`true`​ であるため、(SUCCESS メッセージの代わりに) ランタイムエラーを生成します。この式が ​`true`​ なのは、空のオブジェクトが変数 ​`result`​ に渡されているためです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {} output application/json --- { "result" : failIf(result, isEmpty) } ``` #### [](#出力)出力 ```TXT ERROR 2018-07-29 11:56:39,988 ... ********************************** Message : "Failed ``` または、関数は値を出力します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import failIf from dw::Runtime var result = {"a":"test"} output application/json --- { "result" : result failIf isEmpty($) } ``` #### [](#出力-2)出力 ```Json { "result": { "a": "test" } } ``` # field ## [](#field1)field(​{| name: String, value: Any, mime?: String, fileName?: String |}​): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: `Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"})`​ ### [](#パラメーター)パラメーター
名前 説明

​opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して、JSON から XML など、入力の種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"}), clients: Multipart::field({name:"clients", value: myClients, mime: "application/xml"}) } } ``` #### [](#出力)出力 ```txt ------=_Part_8032_681891620.1542560124825 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_8032_681891620.1542560124825 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_8032_681891620.1542560124825-- ``` ## [](#field2)field(String, Any, String, String): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("order", myOrder,"application/json", "order.json")` ``` ### [](#パラメーター-2)パラメーター
名前 説明

​opts

以下を指定するパラメーターのセット。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この種別を使用して入力種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例-2)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。この ​`field`​ の例と前述の ​`field`​ の例の唯一の違いは、メソッドに引数を渡す方法です。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field("order", myOrder, "application/json", "order.json"), clients: Multipart::field("clients", myClients, "application/xml") } } ``` #### [](#出力-2)出力 ```txt ------=_Part_4846_2022598837.1542560230901 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_4846_2022598837.1542560230901 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_4846_2022598837.1542560230901-- ``` # field ## [](#field1)field(Namespace | Null, String): PathElement この関数は、​_オブジェクト項目_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

​namespace

選択する項目の名前空間。指定しない場合、null 値が設定されます。

​name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) のオブジェクト項目セレクターを作成し、セレクターの値を ​`"myFieldName"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Object"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- field(ns0 , "myFieldName") ``` #### [](#出力)出力 ```Json { "kind": "Object", "namespace": "http://acme.com/foo", "selector": "myFieldName" } ``` # field ## [](#field1)field(opts: {| name: String, value: Any, mime?: String, fileName?: String |}​): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: `Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"})`​ ### [](#パラメーター)パラメーター
名前 説明

​opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して、JSON から XML など、入力の種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例)例 次の例では、パートを含む ​`Multipart`​ データ構造を作成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力)出力 ```json ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` ### [](#例-2)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"}), clients: Multipart::field({name:"clients", value: myClients, mime: "application/xml"}) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_8032_681891620.1542560124825 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_8032_681891620.1542560124825 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_8032_681891620.1542560124825-- ``` ## [](#field2)field(name: String, value: Any, mime: String = "", fileName: String = ""): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("order", myOrder,"application/json", "order.json")` ``` ### [](#パラメーター-2)パラメーター
名前 説明

​opts

以下を指定するパラメーターのセット。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この種別を使用して入力種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例-3)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。この ​`field`​ の例と前述の ​`field`​ の例の唯一の違いは、メソッドに引数を渡す方法です。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field("order", myOrder, "application/json", "order.json"), clients: Multipart::field("clients", myClients, "application/xml") } } ``` #### [](#出力-3)出力 ```txt ------=_Part_4846_2022598837.1542560230901 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_4846_2022598837.1542560230901 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_4846_2022598837.1542560230901-- ``` # field ## [](#field1)field(namespace: Namespace | Null = null, name: String): PathElement この関数は、​_オブジェクト項目_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​namespace

選択する項目の名前空間。指定しない場合、null 値が設定されます。

​name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) のオブジェクト項目セレクターを作成し、セレクターの値を ​`"myFieldName"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Object"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- field(ns0 , "myFieldName") ``` #### [](#出力)出力 ```Json { "kind": "Object", "namespace": "http://acme.com/foo", "selector": "myFieldName" } ``` # field ## [](#field1)field(opts: {| name: String, value: Any, mime?: String, fileName?: String |}): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: `Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"})` ### [](#パラメーター)パラメーター
名前 説明

opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して、JSON から XML など、入力の種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例)例 次の例では、パートを含む ​`Multipart`​ データ構造を作成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力)出力 ```json ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` ### [](#例-2)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"}), clients: Multipart::field({name:"clients", value: myClients, mime: "application/xml"}) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_8032_681891620.1542560124825 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_8032_681891620.1542560124825 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_8032_681891620.1542560124825-- ``` ## [](#field2)field(name: String, value: Any, mime: String = "", fileName: String = ""): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("order", myOrder,"application/json", "order.json")` ``` ### [](#パラメーター-2)パラメーター
名前 説明

opts

以下を指定するパラメーターのセット。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この種別を使用して入力種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例-3)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。この ​`field`​ の例と前述の ​`field`​ の例の唯一の違いは、メソッドに引数を渡す方法です。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field("order", myOrder, "application/json", "order.json"), clients: Multipart::field("clients", myClients, "application/xml") } } ``` #### [](#出力-3)出力 ```txt ------=_Part_4846_2022598837.1542560230901 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_4846_2022598837.1542560230901 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_4846_2022598837.1542560230901-- ``` # field ## [](#field1)field(namespace: Namespace | Null = null, name: String): PathElement この関数は、​_オブジェクト項目_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する項目の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) のオブジェクト項目セレクターを作成し、セレクターの値を ​`"myFieldName"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Object"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- field(ns0 , "myFieldName") ``` #### [](#出力)出力 ```Json { "kind": "Object", "namespace": "http://acme.com/foo", "selector": "myFieldName" } ``` # field ## [](#field1)field(opts: {| name: String, value: Any, mime?: String, fileName?: String |}): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: `Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"})` ### [](#パラメーター)パラメーター
名前 説明

opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して、JSON から XML など、入力の種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例)例 次の例では、パートを含む ​`Multipart`​ データ構造を作成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力)出力 ```json ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` ### [](#例-2)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"}), clients: Multipart::field({name:"clients", value: myClients, mime: "application/xml"}) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_8032_681891620.1542560124825 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_8032_681891620.1542560124825 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_8032_681891620.1542560124825-- ``` ## [](#field2)field(name: String, value: Any, mime: String = "", fileName: String = ""): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("order", myOrder,"application/json", "order.json")` ``` ### [](#パラメーター-2)パラメーター
名前 説明

opts

以下を指定するパラメーターのセット。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この種別を使用して入力種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例-3)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。この ​`field`​ の例と前述の ​`field`​ の例の唯一の違いは、メソッドに引数を渡す方法です。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field("order", myOrder, "application/json", "order.json"), clients: Multipart::field("clients", myClients, "application/xml") } } ``` #### [](#出力-3)出力 ```txt ------=_Part_4846_2022598837.1542560230901 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_4846_2022598837.1542560230901 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_4846_2022598837.1542560230901-- ``` # field ## [](#field1)field(namespace: Namespace | Null = null, name: String): PathElement この関数は、​_オブジェクト項目_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する項目の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) のオブジェクト項目セレクターを作成し、セレクターの値を ​`"myFieldName"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Object"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- field(ns0 , "myFieldName") ``` #### [](#出力)出力 ```Json { "kind": "Object", "namespace": "http://acme.com/foo", "selector": "myFieldName" } ``` # field ## [](#field1)field(opts: {| name: String, value: Any, mime?: String, fileName?: String |}): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: `Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"})` ### [](#パラメーター)パラメーター
名前 説明

opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して、JSON から XML など、入力の種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例)例 次の例では、パートを含む ​`Multipart`​ データ構造を作成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力)出力 ```json ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` ### [](#例-2)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"}), clients: Multipart::field({name:"clients", value: myClients, mime: "application/xml"}) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_8032_681891620.1542560124825 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_8032_681891620.1542560124825 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_8032_681891620.1542560124825-- ``` ## [](#field2)field(name: String, value: Any, mime: String = "", fileName: String = ""): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("order", myOrder,"application/json", "order.json")` ``` ### [](#パラメーター-2)パラメーター
名前 説明

opts

以下を指定するパラメーターのセット。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この種別を使用して入力種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例-3)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。この ​`field`​ の例と前述の ​`field`​ の例の唯一の違いは、メソッドに引数を渡す方法です。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field` #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field("order", myOrder, "application/json", "order.json"), clients: Multipart::field("clients", myClients, "application/xml") } } ``` #### [](#出力-3)出力 ```txt ------=_Part_4846_2022598837.1542560230901 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_4846_2022598837.1542560230901 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_4846_2022598837.1542560230901-- ``` # field ## [](#field1)field(namespace: Namespace | Null = null, name: String): PathElement この関数は、​_オブジェクト項目_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する項目の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) のオブジェクト項目セレクターを作成し、セレクターの値を ​`"myFieldName"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Object"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- field(ns0 , "myFieldName") ``` #### [](#出力)出力 ```Json { "kind": "Object", "namespace": "http://acme.com/foo", "selector": "myFieldName" } ``` # field ## [](#field1)field(opts: {| name: String, value: Any, mime?: String, fileName?: String |}): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: `Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"})` ### [](#パラメーター)パラメーター
名前 説明

opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して、JSON から XML など、入力の種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例)例 次の例では、パートを含む ​`Multipart`​ データ構造を作成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力)出力 ```json ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` ### [](#例-2)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field`​。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field({name:"order",value: myOrder, mime: "application/json", fileName: "order.json"}), clients: Multipart::field({name:"clients", value: myClients, mime: "application/xml"}) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_8032_681891620.1542560124825 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_8032_681891620.1542560124825 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_8032_681891620.1542560124825-- ``` ## [](#field2)field(name: String, value: Any, mime: String = "", fileName: String = ""): MultipartPart 指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`field`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("order", myOrder,"application/json", "order.json")` ``` ### [](#パラメーター-2)パラメーター
名前 説明

opts

以下を指定するパラメーターのセット。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • value​ (必須): パートのコンテンツの値。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この種別を使用して入力種別を変換できます。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターに指定できるファイル名の値。

### [](#例-3)例 次の例では、2 つのパートを生成します。最初のパート (​`order`​) はコンテンツを JSON 形式で出力し、パートのファイル名 (​`order.json`​) を提供します。2 番目のパート (​`clients`​) はコンテンツを XML 形式で出力し、ファイル名を提供しません。この ​`field`​ の例と前述の ​`field`​ の例の唯一の違いは、メソッドに引数を渡す方法です。また、この例では、関数の名前空間を関数名に追加する必要があります。例: `Multipart::field`​。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrder = [ { order: 1, amount: 2 }, { order: 32, amount: 1 } ] var myClients = { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } --- { parts: { order: Multipart::field("order", myOrder, "application/json", "order.json"), clients: Multipart::field("clients", myClients, "application/xml") } } ``` #### [](#出力-3)出力 ```txt ------=_Part_4846_2022598837.1542560230901 Content-Type: application/json Content-Disposition: form-data; name="order"; filename="order.json" [ { "order": 1, "amount": 2 }, { "order": 32, "amount": 1 } ] ------=_Part_4846_2022598837.1542560230901 Content-Type: application/xml Content-Disposition: form-data; name="clients" 1 Mariano 2 Shoki ------=_Part_4846_2022598837.1542560230901-- ``` # field ## [](#field1)field(namespace: Namespace | Null = null, name: String): PathElement この関数は、​_オブジェクト項目_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に特定の文字列を入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

namespace

選択する項目の名前空間。指定しない場合、null 値が設定されます。

name

選択する属性の名前に設定する文字列。

### [](#例)例 次の例では、指定された名前空間 (​`ns0`​) のオブジェクト項目セレクターを作成し、セレクターの値を ​`"myFieldName"`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Object"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- field(ns0 , "myFieldName") ``` #### [](#出力)出力 ```Json { "kind": "Object", "namespace": "http://acme.com/foo", "selector": "myFieldName" } ``` # filter ## [](#filter1)filter(Array, (item: T, index: Number) -> Boolean): Array 配列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の値またはインデックスに対して式が ​`true`​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​`false`​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

​items

絞り込む配列。

​criteria

​item​ または ​index​ を選択するブール式。

### [](#例)例 次の例では、配列内で ​`2`​ より大きい値の配列を返します。 #### [](#ソース)ソース ```DataWeave [9,2,3,4,5] filter (value, index) -> (value > 2) ``` #### [](#出力)出力 ```JSON [9,3,4,5] ``` ### [](#例-2)例 次の例では、​`2`​ より大きいインデックスで検出されたすべての値の配列を返します。 #### [](#ソース-2)ソース ```DataWeave [9,2,3,4,5] filter ((value, index) -> (index > 2)) ``` #### [](#出力-2)出力 ```JSON [4,5] ``` ### [](#例-3)例 次の例では、​`1`​ より大きいインデックス (​`$$`​) で検出された、値が ​`5`​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5)) ``` #### [](#出力-3)出力 ```JSON [3,4] ``` ### [](#例-4)例 この例では、​`user`​ キーと ​`error`​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​`filter`​ 関数を使用して、​`error`​ キーの値が ​`null`​ のオブジェクトのみを返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var users = [ { "user": { "name": "123", "lastName": "Smith" }, "error": "That name doesn't exists" }, { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] --- users filter ((item, index) -> item.error == null) ``` #### [](#出力-4)出力 ```JSON [ { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] ``` ### [](#例-5)例 次の例では、JSON 配列を読み取り、​`filter`​ 関数を使用して有効な電話番号を抽出します。 #### [](#入力)入力 ```JSON { "Id": "1184001100000000517", "marketCode": "US", "languageCode": "en-US", "profile": { "base": { "username": "TheMule", "activeInd": "R", "phone": [ { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "230678123" }, { "activeInd": "N", "type": "mobile", "primaryInd": "N", "number": "" }, { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "154896523" } ] } } } ``` #### [](#dataweave-スクリプト)DataWeave スクリプト ```DataWeave %dw 2.0 output application/json --- { id: payload.Id, markCode: payload.marketCode, languageCode: payload.languageCode, username: payload.profile.base.username, phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default [] } ``` #### [](#出力-5)出力 ```JSON { "id": "1184001100000000517", "markCode": "US", "languageCode": "en-US", "username": "TheMule", "phoneNumber": [ "230678123" "154896523" ] } ``` ## [](#filter2)filter(Null, (item: Nothing, index: Nothing) -> Boolean): Null `filter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filter ## [](#filter1)filter(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Boolean): Array 配列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の値またはインデックスに対して式が ​`true`​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​`false`​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

​items

絞り込む配列。

​criteria

​item​ または ​index​ を選択するブール式。

### [](#例)例 次の例では、配列内で ​`2`​ より大きい値の配列を返します。 #### [](#ソース)ソース ```DataWeave [9,2,3,4,5] filter (value, index) -> (value > 2) ``` #### [](#出力)出力 ```JSON [9,3,4,5] ``` ### [](#例-2)例 次の例では、年齢が 30 歳以上のすべてのユーザーの配列を返します。 このスクリプトでは、ラムダ式内の各要素のデータにアクセスします。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 --- [{name: "Mariano", age: 37}, {name: "Shoki", age: 30}, {name: "Tomo", age: 25}, {name: "Ana", age: 29}] filter ((value, index) -> value.age >= 30) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Mariano", "age": 37 }, { "name": "Shoki", "age": 30 } ] ``` ### [](#例-3)例 次の例では、​`1`​ より大きいインデックス (​`$$`​) で検出された、値が ​`5`​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5)) ``` #### [](#出力-3)出力 ```JSON [3,4] ``` ### [](#例-4)例 この例では、​`user`​ キーと ​`error`​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​`filter`​ 関数を使用して、​`error`​ キーの値が ​`null`​ のオブジェクトのみを返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var users = [ { "user": { "name": "123", "lastName": "Smith" }, "error": "That name doesn't exists" }, { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] --- users filter ((item, index) -> item.error == null) ``` #### [](#出力-4)出力 ```JSON [ { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] ``` ### [](#例-5)例 次の例では、JSON 配列を読み取り、​`filter`​ 関数を使用して有効な電話番号を抽出します。 #### [](#入力)入力 ```JSON { "Id": "1184001100000000517", "marketCode": "US", "languageCode": "en-US", "profile": { "base": { "username": "TheMule", "activeInd": "R", "phone": [ { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "230678123" }, { "activeInd": "N", "type": "mobile", "primaryInd": "N", "number": "" }, { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "154896523" } ] } } } ``` #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { id: payload.Id, markCode: payload.marketCode, languageCode: payload.languageCode, username: payload.profile.base.username, phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default [] } ``` #### [](#出力-5)出力 ```JSON { "id": "1184001100000000517", "markCode": "US", "languageCode": "en-US", "username": "TheMule", "phoneNumber": [ "230678123" "154896523" ] } ``` ## [](#filter2)filter(@StreamCapable text: String, criteria: (character: String, index: Number) -> Boolean): String 文字列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の文字またはインデックスに対して式が ​`true`​ を返した場合、その文字は出力文字列に取得されます。 配列の文字またはインデックスに対して式が ​`false`​ を返した場合、その文字は出力から除外されます。一致する値がない場合、出力文字列は空になります。 ### [](#パラメーター-2)パラメーター
名前 説明

text (テキスト)

絞り込むテキスト。

criteria

使用する条件。

### [](#例-6)例 次の例では、​`filter`​ を使用して偶数番目にあるすべての文字を削除する方法を示しています。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" filter ($$ mod 2) == 0 ``` #### [](#出力-6)出力 ```Json "hlowrd" ``` ## [](#filter3)filter(@StreamCapable value: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `filter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filter ## [](#filter1)filter(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Boolean): Array 配列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の値またはインデックスに対して式が ​`true`​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​`false`​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

items

絞り込む配列。

criteria

item​ または ​index​ を選択するブール式。

### [](#例)例 次の例では、配列内で ​`2`​ より大きい値の配列を返します。 #### [](#ソース)ソース ```DataWeave [9,2,3,4,5] filter (value, index) -> (value > 2) ``` #### [](#出力)出力 ```JSON [9,3,4,5] ``` ### [](#例-2)例 次の例では、年齢が 30 歳以上のすべてのユーザーの配列を返します。 このスクリプトでは、ラムダ式内の各要素のデータにアクセスします。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 --- [{name: "Mariano", age: 37}, {name: "Shoki", age: 30}, {name: "Tomo", age: 25}, {name: "Ana", age: 29}] filter ((value, index) -> value.age >= 30) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Mariano", "age": 37 }, { "name": "Shoki", "age": 30 } ] ``` ### [](#例-3)例 次の例では、​`1`​ より大きいインデックス (​`$$`​) で検出された、値が ​`5`​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5)) ``` #### [](#出力-3)出力 ```JSON [3,4] ``` ### [](#例-4)例 この例では、​`user`​ キーと ​`error`​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​`filter`​ 関数を使用して、​`error`​ キーの値が ​`null`​ のオブジェクトのみを返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var users = [ { "user": { "name": "123", "lastName": "Smith" }, "error": "That name doesn't exists" }, { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] --- users filter ((item, index) -> item.error == null) ``` #### [](#出力-4)出力 ```JSON [ { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] ``` ### [](#例-5)例 次の例では、JSON 配列を読み取り、​`filter`​ 関数を使用して有効な電話番号を抽出します。 #### [](#入力)入力 ```JSON { "Id": "1184001100000000517", "marketCode": "US", "languageCode": "en-US", "profile": { "base": { "username": "TheMule", "activeInd": "R", "phone": [ { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "230678123" }, { "activeInd": "N", "type": "mobile", "primaryInd": "N", "number": "" }, { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "154896523" } ] } } } ``` #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { id: payload.Id, markCode: payload.marketCode, languageCode: payload.languageCode, username: payload.profile.base.username, phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default [] } ``` #### [](#出力-5)出力 ```JSON { "id": "1184001100000000517", "markCode": "US", "languageCode": "en-US", "username": "TheMule", "phoneNumber": [ "230678123" "154896523" ] } ``` ## [](#filter2)filter(@StreamCapable text: String, criteria: (character: String, index: Number) -> Boolean): String 文字列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の文字またはインデックスに対して式が ​`true`​ を返した場合、その文字は出力文字列に取得されます。 配列の文字またはインデックスに対して式が ​`false`​ を返した場合、その文字は出力から除外されます。一致する値がない場合、出力文字列は空になります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

絞り込むテキスト。

criteria

使用する条件。

### [](#例-6)例 次の例では、​`filter`​ を使用して偶数番目にあるすべての文字を削除する方法を示しています。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" filter ($$ mod 2) == 0 ``` #### [](#出力-6)出力 ```Json "hlowrd" ``` ## [](#filter3)filter(@StreamCapable value: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `filter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filter ## [](#filter1)filter(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Boolean): Array 配列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の値またはインデックスに対して式が ​`true`​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​`false`​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

items

絞り込む配列。

criteria

item​ または ​index​ を選択するブール式。

### [](#例)例 次の例では、配列内で ​`2`​ より大きい値の配列を返します。 #### [](#ソース)ソース ```DataWeave [9,2,3,4,5] filter (value, index) -> (value > 2) ``` #### [](#出力)出力 ```JSON [9,3,4,5] ``` ### [](#例-2)例 次の例では、年齢が 30 歳以上のすべてのユーザーの配列を返します。 このスクリプトでは、ラムダ式内の各要素のデータにアクセスします。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 --- [{name: "Mariano", age: 37}, {name: "Shoki", age: 30}, {name: "Tomo", age: 25}, {name: "Ana", age: 29}] filter ((value, index) -> value.age >= 30) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Mariano", "age": 37 }, { "name": "Shoki", "age": 30 } ] ``` ### [](#例-3)例 次の例では、​`1`​ より大きいインデックス (​`$$`​) で検出された、値が ​`5`​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5)) ``` #### [](#出力-3)出力 ```JSON [3,4] ``` ### [](#例-4)例 この例では、​`user`​ キーと ​`error`​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​`filter`​ 関数を使用して、​`error`​ キーの値が ​`null`​ のオブジェクトのみを返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var users = [ { "user": { "name": "123", "lastName": "Smith" }, "error": "That name doesn't exists" }, { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] --- users filter ((item, index) -> item.error == null) ``` #### [](#出力-4)出力 ```JSON [ { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] ``` ### [](#例-5)例 次の例では、JSON 配列を読み取り、​`filter`​ 関数を使用して有効な電話番号を抽出します。 #### [](#入力)入力 ```JSON { "Id": "1184001100000000517", "marketCode": "US", "languageCode": "en-US", "profile": { "base": { "username": "TheMule", "activeInd": "R", "phone": [ { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "230678123" }, { "activeInd": "N", "type": "mobile", "primaryInd": "N", "number": "" }, { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "154896523" } ] } } } ``` #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { id: payload.Id, markCode: payload.marketCode, languageCode: payload.languageCode, username: payload.profile.base.username, phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default [] } ``` #### [](#出力-5)出力 ```JSON { "id": "1184001100000000517", "markCode": "US", "languageCode": "en-US", "username": "TheMule", "phoneNumber": [ "230678123" "154896523" ] } ``` ## [](#filter2)filter(@StreamCapable text: String, criteria: (character: String, index: Number) -> Boolean): String 文字列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の文字またはインデックスに対して式が ​`true`​ を返した場合、その文字は出力文字列に取得されます。 配列の文字またはインデックスに対して式が ​`false`​ を返した場合、その文字は出力から除外されます。一致する値がない場合、出力文字列は空になります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

絞り込むテキスト。

criteria

使用する条件。

### [](#例-6)例 次の例では、​`filter`​ を使用して偶数番目にあるすべての文字を削除する方法を示しています。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" filter ($$ mod 2) == 0 ``` #### [](#出力-6)出力 ```Json "hlowrd" ``` ## [](#filter3)filter(@StreamCapable value: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `filter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filter ## [](#filter1)filter(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Boolean): Array 配列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の値またはインデックスに対して式が ​`true`​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​`false`​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

items

絞り込む配列。

criteria

item​ または ​index​ を選択するブール式。

### [](#例)例 次の例では、配列内で ​`2`​ より大きい値の配列を返します。 #### [](#ソース)ソース ```DataWeave [9,2,3,4,5] filter (value, index) -> (value > 2) ``` #### [](#出力)出力 ```JSON [9,3,4,5] ``` ### [](#例-2)例 次の例では、年齢が 30 歳以上のすべてのユーザーの配列を返します。 このスクリプトでは、ラムダ式内の各要素のデータにアクセスします。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 --- [{name: "Mariano", age: 37}, {name: "Shoki", age: 30}, {name: "Tomo", age: 25}, {name: "Ana", age: 29}] filter ((value, index) -> value.age >= 30) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Mariano", "age": 37 }, { "name": "Shoki", "age": 30 } ] ``` ### [](#例-3)例 次の例では、​`1`​ より大きいインデックス (​`$$`​) で検出された、値が ​`5`​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5)) ``` #### [](#出力-3)出力 ```JSON [3,4] ``` ### [](#例-4)例 この例では、​`user`​ キーと ​`error`​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​`filter`​ 関数を使用して、​`error`​ キーの値が ​`null`​ のオブジェクトのみを返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var users = [ { "user": { "name": "123", "lastName": "Smith" }, "error": "That name doesn't exists" }, { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] --- users filter ((item, index) -> item.error == null) ``` #### [](#出力-4)出力 ```JSON [ { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] ``` ### [](#例-5)例 次の例では、JSON 配列を読み取り、​`filter`​ 関数を使用して有効な電話番号を抽出します。 #### [](#入力)入力 ```JSON { "Id": "1184001100000000517", "marketCode": "US", "languageCode": "en-US", "profile": { "base": { "username": "TheMule", "activeInd": "R", "phone": [ { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "230678123" }, { "activeInd": "N", "type": "mobile", "primaryInd": "N", "number": "" }, { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "154896523" } ] } } } ``` #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { id: payload.Id, markCode: payload.marketCode, languageCode: payload.languageCode, username: payload.profile.base.username, phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default [] } ``` #### [](#出力-5)出力 ```JSON { "id": "1184001100000000517", "markCode": "US", "languageCode": "en-US", "username": "TheMule", "phoneNumber": [ "230678123" "154896523" ] } ``` ## [](#filter2)filter(@StreamCapable text: String, criteria: (character: String, index: Number) -> Boolean): String 文字列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の文字またはインデックスに対して式が ​`true`​ を返した場合、その文字は出力文字列に取得されます。 配列の文字またはインデックスに対して式が ​`false`​ を返した場合、その文字は出力から除外されます。一致する値がない場合、出力文字列は空になります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

絞り込むテキスト。

criteria

使用する条件。

### [](#例-6)例 次の例では、​`filter`​ を使用して偶数番目にあるすべての文字を削除する方法を示しています。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" filter ($$ mod 2) == 0 ``` #### [](#出力-6)出力 ```Json "hlowrd" ``` ## [](#filter3)filter(@StreamCapable value: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `filter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filter ## [](#filter1)filter(@StreamCapable items: Array, criteria: (item: T, index: Number) -> Boolean): Array 配列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の値またはインデックスに対して式が ​`true`​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​`false`​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

items

絞り込む配列。

criteria

item​ または ​index​ を選択するブール式。

### [](#例)例 次の例では、配列内で ​`2`​ より大きい値の配列を返します。 #### [](#ソース)ソース ```DataWeave [9,2,3,4,5] filter (value, index) -> (value > 2) ``` #### [](#出力)出力 ```JSON [9,3,4,5] ``` ### [](#例-2)例 次の例では、年齢が 30 歳以上のすべてのユーザーの配列を返します。 このスクリプトでは、ラムダ式内の各要素のデータにアクセスします。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 --- [{name: "Mariano", age: 37}, {name: "Shoki", age: 30}, {name: "Tomo", age: 25}, {name: "Ana", age: 29}] filter ((value, index) -> value.age >= 30) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Mariano", "age": 37 }, { "name": "Shoki", "age": 30 } ] ``` ### [](#例-3)例 次の例では、​`1`​ より大きいインデックス (​`$$`​) で検出された、値が ​`5`​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5)) ``` #### [](#出力-3)出力 ```JSON [3,4] ``` ### [](#例-4)例 この例では、​`user`​ キーと ​`error`​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​`filter`​ 関数を使用して、​`error`​ キーの値が ​`null`​ のオブジェクトのみを返します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var users = [ { "user": { "name": "123", "lastName": "Smith" }, "error": "That name doesn't exists" }, { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] --- users filter ((item, index) -> item.error == null) ``` #### [](#出力-4)出力 ```JSON [ { "user": { "name": "John", "lastName": "Johnson" }, "error": null } ] ``` ### [](#例-5)例 次の例では、JSON 配列を読み取り、​`filter`​ 関数を使用してアクティブな電話番号を抽出します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { id: payload.Id, markCode: payload.marketCode, languageCode: payload.languageCode, username: payload.profile.base.username, phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default [] } ``` #### [](#入力)入力 ```JSON { "Id": "1184001100000000517", "marketCode": "US", "languageCode": "en-US", "profile": { "base": { "username": "TheMule", "activeInd": "R", "phone": [ { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "230678123" }, { "activeInd": "N", "type": "mobile", "primaryInd": "N", "number": "" }, { "activeInd": "Y", "type": "mobile", "primaryInd": "Y", "number": "154896523" } ] } } } ``` #### [](#出力-5)出力 ```JSON { "id": "1184001100000000517", "markCode": "US", "languageCode": "en-US", "username": "TheMule", "phoneNumber": [ "230678123" "154896523" ] } ``` ## [](#filter2)filter(@StreamCapable text: String, criteria: (character: String, index: Number) -> Boolean): String 文字列を反復処理し、一致する値を返す式を適用します。 式は ​`true`​ または ​`false`​ を返す必要があります。配列の文字またはインデックスに対して式が ​`true`​ を返した場合、その文字は出力文字列に取得されます。 配列の文字またはインデックスに対して式が ​`false`​ を返した場合、その文字は出力から除外されます。一致する値がない場合、出力文字列は空になります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

絞り込むテキスト。

criteria

使用する条件。

### [](#例-6)例 次の例では、​`filter`​ を使用して偶数番目にあるすべての文字を削除する方法を示しています。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" filter ($$ mod 2) == 0 ``` #### [](#出力-6)出力 ```Json "hlowrd" ``` ## [](#filter3)filter(@StreamCapable value: Null, criteria: (item: Nothing, index: Nothing) -> Any): Null `filter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterArrayLeafs ## [](#filterarrayleafs1)filterArrayLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式を配列のリーフまたは ​`Path`​ 値に適用します。 配列のリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​value

​Any​ 型の入力値。

​criteria

入力 ​value​ のすべての配列の ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、配列ではリーフ値が保持されます。それ以外の場合、この関数により、リーフ値が出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterArrayLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [1, {name: ["", true], test: 213}, "123", null] output application/json --- { a: myArray filterArrayLeafs ((value, path) -> !(value is Null or value is String)), b: myArray filterArrayLeafs ((value, path) -> (value is Null or value == 1)), c: { a : [1,2] } filterArrayLeafs ((value, path) -> (value is Null or value == 1)), d: myArray filterArrayLeafs ((value, path) -> !isArrayType(path)) } ``` #### [](#出力)出力 ```Json { "a": [ 1, { "name": [ true ], "test": 213 } ], "b": [ 1, { "name": [ ], "test": 213 }, null ], "c": { "a": [ 1 ] }, "d": [ { "name": [ ], "test": 213 } ] } ``` # filterArrayLeafs ## [](#filterarrayleafs1)filterArrayLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式を配列のリーフまたは ​`Path`​ 値に適用します。 配列のリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべての配列の ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、配列ではリーフ値が保持されます。それ以外の場合、この関数により、リーフ値が出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterArrayLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [1, {name: ["", true], test: 213}, "123", null] output application/json --- { a: myArray filterArrayLeafs ((value, path) -> !(value is Null or value is String)), b: myArray filterArrayLeafs ((value, path) -> (value is Null or value == 1)), c: { a : [1,2] } filterArrayLeafs ((value, path) -> (value is Null or value == 1)), d: myArray filterArrayLeafs ((value, path) -> !isArrayType(path)) } ``` #### [](#出力)出力 ```Json { "a": [ 1, { "name": [ true ], "test": 213 } ], "b": [ 1, { "name": [ ], "test": 213 }, null ], "c": { "a": [ 1 ] }, "d": [ { "name": [ ], "test": 213 } ] } ``` # filterArrayLeafs ## [](#filterarrayleafs1)filterArrayLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式を配列のリーフまたは ​`Path`​ 値に適用します。 配列のリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべての配列の ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、配列ではリーフ値が保持されます。それ以外の場合、この関数により、リーフ値が出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterArrayLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [1, {name: ["", true], test: 213}, "123", null] output application/json --- { a: myArray filterArrayLeafs ((value, path) -> !(value is Null or value is String)), b: myArray filterArrayLeafs ((value, path) -> (value is Null or value == 1)), c: { a : [1,2] } filterArrayLeafs ((value, path) -> (value is Null or value == 1)), d: myArray filterArrayLeafs ((value, path) -> !isArrayType(path)) } ``` #### [](#出力)出力 ```Json { "a": [ 1, { "name": [ true ], "test": 213 } ], "b": [ 1, { "name": [ ], "test": 213 }, null ], "c": { "a": [ 1 ] }, "d": [ { "name": [ ], "test": 213 } ] } ``` # filterArrayLeafs ## [](#filterarrayleafs1)filterArrayLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式を配列のリーフまたは ​`Path`​ 値に適用します。 配列のリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべての配列の ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、配列ではリーフ値が保持されます。それ以外の場合、この関数により、リーフ値が出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterArrayLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [1, {name: ["", true], test: 213}, "123", null] output application/json --- { a: myArray filterArrayLeafs ((value, path) -> !(value is Null or value is String)), b: myArray filterArrayLeafs ((value, path) -> (value is Null or value == 1)), c: { a : [1,2] } filterArrayLeafs ((value, path) -> (value is Null or value == 1)), d: myArray filterArrayLeafs ((value, path) -> !isArrayType(path)) } ``` #### [](#出力)出力 ```Json { "a": [ 1, { "name": [ true ], "test": 213 } ], "b": [ 1, { "name": [ ], "test": 213 }, null ], "c": { "a": [ 1 ] }, "d": [ { "name": [ ], "test": 213 } ] } ``` # filterArrayLeafs ## [](#filterarrayleafs1)filterArrayLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式を配列のリーフまたは ​`Path`​ 値に適用します。 配列のリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべての配列の ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、配列ではリーフ値が保持されます。それ以外の場合、この関数により、リーフ値が出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterArrayLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [1, {name: ["", true], test: 213}, "123", null] output application/json --- { a: myArray filterArrayLeafs ((value, path) -> !(value is Null or value is String)), b: myArray filterArrayLeafs ((value, path) -> (value is Null or value == 1)), c: { a : [1,2] } filterArrayLeafs ((value, path) -> (value is Null or value == 1)), d: myArray filterArrayLeafs ((value, path) -> !isArrayType(path)) } ``` #### [](#出力)出力 ```Json { "a": [ 1, { "name": [ true ], "test": 213 } ], "b": [ 1, { "name": [ ], "test": 213 }, null ], "c": { "a": [ 1 ] }, "d": [ { "name": [ ], "test": 213 } ] } ``` # filterObject ## [](#filterobject1)filterObject(​{ (K)?: V }, (value: V, key: K, index: Number) -> Boolean): { (K)?: V } オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。 式は ​`true`​ または ​`false`​ を返す必要があります。オブジェクトのキー、値、またはインデックスに対して式が ​`true`​ を返した場合、そのオブジェクトは出力に取得されます。これらのいずれかに対して式が ​`false`​ を返した場合、そのオブジェクトは出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

​value

評価する取得元オブジェクト。

​criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

### [](#例)例 次の例では、オブジェクトの値が ​`"apple"`​ と等しい場合にそのオブジェクトを出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple") ``` #### [](#出力)出力 ```JSON { "a": "apple" } ``` ### [](#例-2)例 次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​`startsWith`​ 関数は ​`true`​ または ​`false`​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key) → key startsWith "letter")`​: ($$ startsWith "letter")\`)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- {"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter") ``` #### [](#出力-2)出力 ```JSON { "letter1": "a", "letter2": "b" } ``` ### [](#例-3)例 次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key, index) → index < 1)`​: `($$$ < 1)`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1) ``` #### [](#出力-3)出力 ```json { "1": "a" } ``` ### [](#例-4)例 次の例では、入力 JSON オブジェクト内の ​`null`​ 以外の値のみを含むオブジェクトを出力します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var o = { str1 : "String 1", str2 : "String 2", str3 : null, str4 : "String 4", } --- o filterObject $ != null ``` #### [](#出力-4)出力 ```json { "str1": "String 1", "str2": "String 2", "str4": "String 4" } ``` ## [](#filterobject2)filterObject(Null, (value: Nothing, key: Nothing, index: Nothing) -> Boolean): Null `filterObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterObject ## [](#filterobject1)filterObject(@StreamCapable value: { (K)?: V }, criteria: (value: V, key: K, index: Number) -> Boolean): { (K)?: V } オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。 式は ​`true`​ または ​`false`​ を返す必要があります。オブジェクトのキー、値、またはインデックスに対して式が ​`true`​ を返した場合、そのオブジェクトは出力に取得されます。これらのいずれかに対して式が ​`false`​ を返した場合、そのオブジェクトは出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

​value

評価する取得元オブジェクト。

​criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

### [](#例)例 次の例では、オブジェクトの値が ​`"apple"`​ と等しい場合にそのオブジェクトを出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple") ``` #### [](#出力)出力 ```JSON { "a": "apple" } ``` ### [](#例-2)例 次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​`startsWith`​ 関数は ​`true`​ または ​`false`​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key) → key startsWith "letter")`​: ($$ startsWith "letter")\`)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- {"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter") ``` #### [](#出力-2)出力 ```JSON { "letter1": "a", "letter2": "b" } ``` ### [](#例-3)例 次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key, index) → index < 1)`​: `($$$ < 1)`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1) ``` #### [](#出力-3)出力 ```json { "1": "a" } ``` ### [](#例-4)例 次の例では、入力 JSON オブジェクト内の ​`null`​ 以外の値のみを含むオブジェクトを出力します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myObject = { str1 : "String 1", str2 : "String 2", str3 : null, str4 : "String 4", } --- myObject filterObject $ != null ``` #### [](#出力-4)出力 ```json { "str1": "String 1", "str2": "String 2", "str4": "String 4" } ``` ## [](#filterobject2)filterObject(value: Null, criteria: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `filterObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterObject ## [](#filterobject1)filterObject(@StreamCapable value: { (K)?: V }, criteria: (value: V, key: K, index: Number) -> Boolean): { (K)?: V } オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。 式は ​`true`​ または ​`false`​ を返す必要があります。オブジェクトのキー、値、またはインデックスに対して式が ​`true`​ を返した場合、そのオブジェクトは出力に取得されます。これらのいずれかに対して式が ​`false`​ を返した場合、そのオブジェクトは出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

value

評価するソースオブジェクト。

criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

### [](#例)例 次の例では、オブジェクトの値が ​`"apple"`​ と等しい場合にそのオブジェクトを出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple") ``` #### [](#出力)出力 ```JSON { "a": "apple" } ``` ### [](#例-2)例 次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​`startsWith`​ 関数は ​`true`​ または ​`false`​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key) → key startsWith "letter")`​: ($$ startsWith "letter")\`)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- {"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter") ``` #### [](#出力-2)出力 ```JSON { "letter1": "a", "letter2": "b" } ``` ### [](#例-3)例 次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key, index) → index < 1)`​: `($$$ < 1)`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1) ``` #### [](#出力-3)出力 ```json { "1": "a" } ``` ### [](#例-4)例 次の例では、入力 JSON オブジェクト内の ​`null`​ 以外の値のみを含むオブジェクトを出力します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myObject = { str1 : "String 1", str2 : "String 2", str3 : null, str4 : "String 4", } --- myObject filterObject $ != null ``` #### [](#出力-4)出力 ```json { "str1": "String 1", "str2": "String 2", "str4": "String 4" } ``` ## [](#filterobject2)filterObject(value: Null, criteria: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `filterObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterObject ## [](#filterobject1)filterObject(@StreamCapable value: { (K)?: V }, criteria: (value: V, key: K, index: Number) -> Boolean): { (K)?: V } オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。 式は ​`true`​ または ​`false`​ を返す必要があります。オブジェクトのキー、値、またはインデックスに対して式が ​`true`​ を返した場合、そのオブジェクトは出力に取得されます。これらのいずれかに対して式が ​`false`​ を返した場合、そのオブジェクトは出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

value

評価するソースオブジェクト。

criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

### [](#例)例 次の例では、オブジェクトの値が ​`"apple"`​ と等しい場合にそのオブジェクトを出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple") ``` #### [](#出力)出力 ```JSON { "a": "apple" } ``` ### [](#例-2)例 次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​`startsWith`​ 関数は ​`true`​ または ​`false`​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key) → key startsWith "letter")`​: ($$ startsWith "letter")\`)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- {"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter") ``` #### [](#出力-2)出力 ```JSON { "letter1": "a", "letter2": "b" } ``` ### [](#例-3)例 次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key, index) → index < 1)`​: `($$$ < 1)`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1) ``` #### [](#出力-3)出力 ```json { "1": "a" } ``` ### [](#例-4)例 次の例では、入力 JSON オブジェクト内の ​`null`​ 以外の値のみを含むオブジェクトを出力します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myObject = { str1 : "String 1", str2 : "String 2", str3 : null, str4 : "String 4", } --- myObject filterObject $ != null ``` #### [](#出力-4)出力 ```json { "str1": "String 1", "str2": "String 2", "str4": "String 4" } ``` ## [](#filterobject2)filterObject(value: Null, criteria: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `filterObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterObject ## [](#filterobject1)filterObject(@StreamCapable value: { (K)?: V }, criteria: (value: V, key: K, index: Number) -> Boolean): { (K)?: V } オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。 式は ​`true`​ または ​`false`​ を返す必要があります。オブジェクトのキー、値、またはインデックスに対して式が ​`true`​ を返した場合、そのオブジェクトは出力に取得されます。これらのいずれかに対して式が ​`false`​ を返した場合、そのオブジェクトは出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

value

評価するソースオブジェクト。

criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

### [](#例)例 次の例では、オブジェクトの値が ​`"apple"`​ と等しい場合にそのオブジェクトを出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple") ``` #### [](#出力)出力 ```JSON { "a": "apple" } ``` ### [](#例-2)例 次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​`startsWith`​ 関数は ​`true`​ または ​`false`​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key) → key startsWith "letter")`​: ($$ startsWith "letter")\`)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- {"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter") ``` #### [](#出力-2)出力 ```JSON { "letter1": "a", "letter2": "b" } ``` ### [](#例-3)例 次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key, index) → index < 1)`​: `($$$ < 1)`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1) ``` #### [](#出力-3)出力 ```json { "1": "a" } ``` ### [](#例-4)例 次の例では、入力 JSON オブジェクト内の ​`null`​ 以外の値のみを含むオブジェクトを出力します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myObject = { str1 : "String 1", str2 : "String 2", str3 : null, str4 : "String 4", } --- myObject filterObject $ != null ``` #### [](#出力-4)出力 ```json { "str1": "String 1", "str2": "String 2", "str4": "String 4" } ``` ## [](#filterobject2)filterObject(value: Null, criteria: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `filterObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterObject ## [](#filterobject1)filterObject(@StreamCapable value: { (K)?: V }, criteria: (value: V, key: K, index: Number) -> Boolean): { (K)?: V } オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。 式は ​`true`​ または ​`false`​ を返す必要があります。オブジェクトのキー、値、またはインデックスに対して式が ​`true`​ を返した場合、そのオブジェクトは出力に取得されます。これらのいずれかに対して式が ​`false`​ を返した場合、そのオブジェクトは出力から除外されます。一致する値がない場合、出力配列は空になります。 ### [](#パラメーター)パラメーター
名前 説明

value

評価する取得元オブジェクト。

criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

### [](#例)例 次の例では、オブジェクトの値が ​`"apple"`​ と等しい場合にそのオブジェクトを出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple") ``` #### [](#出力)出力 ```JSON { "a": "apple" } ``` ### [](#例-2)例 次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​`startsWith`​ 関数は ​`true`​ または ​`false`​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key) → key startsWith "letter")`​: ($$ startsWith "letter")\`)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- {"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter") ``` #### [](#出力-2)出力 ```JSON { "letter1": "a", "letter2": "b" } ``` ### [](#例-3)例 次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​`((value, key, index) → index < 1)`​: `($$$ < 1)`​)。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1) ``` #### [](#出力-3)出力 ```json { "1": "a" } ``` ### [](#例-4)例 次の例では、入力 JSON オブジェクト内の ​`null`​ 以外の値のみを含むオブジェクトを出力します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myObject = { str1 : "String 1", str2 : "String 2", str3 : null, str4 : "String 4", } --- myObject filterObject $ != null ``` #### [](#出力-4)出力 ```json { "str1": "String 1", "str2": "String 2", "str4": "String 4" } ``` ## [](#filterobject2)filterObject(value: Null, criteria: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `filterObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # filterObjectLeafs ## [](#filterobjectleafs1)filterObjectLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式をオブジェクトのキーのリーフまたは ​`Path`​ 値に適用します。 オブジェクトのリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​value

​Any​ 型の入力値。

​criteria

入力 ​value​ のすべてのオブジェクトの ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、オブジェクトではリーフ値およびそのキーが保持されます。それ以外の場合、この関数により、リーフ値およびキーが出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterObjectLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [{name @(mail: "me@me.com", test:123 ): "", id:"test"}, {name: "Me", id:null}] output application/json --- { a: { name: "Mariano", lastName: null, age: 123, friends: myArray } filterObjectLeafs ((value, path) -> !(value is Null or value is String)), b: { c : null, d : "hello" } filterObjectLeafs ((value, path) -> (value is Null and isObjectType(path))) } ``` #### [](#出力)出力 ```Json { "a": { "age": 123, "friends": [ { }, { } ] }, "b": { "c": null } } ``` # filterObjectLeafs ## [](#filterobjectleafs1)filterObjectLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式をオブジェクトのキーのリーフまたは ​`Path`​ 値に適用します。 オブジェクトのリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべてのオブジェクトの ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、オブジェクトではリーフ値およびそのキーが保持されます。それ以外の場合、この関数により、リーフ値およびキーが出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterObjectLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [{name @(mail: "me@me.com", test:123 ): "", id:"test"}, {name: "Me", id:null}] output application/json --- { a: { name: "Mariano", lastName: null, age: 123, friends: myArray } filterObjectLeafs ((value, path) -> !(value is Null or value is String)), b: { c : null, d : "hello" } filterObjectLeafs ((value, path) -> (value is Null and isObjectType(path))) } ``` #### [](#出力)出力 ```Json { "a": { "age": 123, "friends": [ { }, { } ] }, "b": { "c": null } } ``` # filterObjectLeafs ## [](#filterobjectleafs1)filterObjectLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式をオブジェクトのキーのリーフまたは ​`Path`​ 値に適用します。 オブジェクトのリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべてのオブジェクトの ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、オブジェクトではリーフ値およびそのキーが保持されます。それ以外の場合、この関数により、リーフ値およびキーが出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterObjectLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [{name @(mail: "me@me.com", test:123 ): "", id:"test"}, {name: "Me", id:null}] output application/json --- { a: { name: "Mariano", lastName: null, age: 123, friends: myArray } filterObjectLeafs ((value, path) -> !(value is Null or value is String)), b: { c : null, d : "hello" } filterObjectLeafs ((value, path) -> (value is Null and isObjectType(path))) } ``` #### [](#出力)出力 ```Json { "a": { "age": 123, "friends": [ { }, { } ] }, "b": { "c": null } } ``` # filterObjectLeafs ## [](#filterobjectleafs1)filterObjectLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式をオブジェクトのキーのリーフまたは ​`Path`​ 値に適用します。 オブジェクトのリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべてのオブジェクトの ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、オブジェクトではリーフ値およびそのキーが保持されます。それ以外の場合、この関数により、リーフ値およびキーが出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterObjectLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [{name @(mail: "me@me.com", test:123 ): "", id:"test"}, {name: "Me", id:null}] output application/json --- { a: { name: "Mariano", lastName: null, age: 123, friends: myArray } filterObjectLeafs ((value, path) -> !(value is Null or value is String)), b: { c : null, d : "hello" } filterObjectLeafs ((value, path) -> (value is Null and isObjectType(path))) } ``` #### [](#出力)出力 ```Json { "a": { "age": 123, "friends": [ { }, { } ] }, "b": { "c": null } } ``` # filterObjectLeafs ## [](#filterobjectleafs1)filterObjectLeafs(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 絞り込み式をオブジェクトのキーのリーフまたは ​`Path`​ 値に適用します。 オブジェクトのリーフ値は ​`SimpleType`​ 値または ​`Null`​ 値である必要があります。型の説明については、 [「Core 型」](https://docs.mulesoft.com/dataweave/latest/dw-core-types)​を参照してください。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

Any​ 型の入力値。

criteria

入力 ​value​ のすべてのオブジェクトの ​SimpleType​ または ​Null​ リーフ値に適用する Boolean (ブール) 式。結果が ​true​ の場合、オブジェクトではリーフ値およびそのキーが保持されます。それ以外の場合、この関数により、リーフ値およびキーが出力から削除されます。

### [](#例)例 次の例では、さまざまな入力での ​`filterObjectLeafs`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myArray = [{name @(mail: "me@me.com", test:123 ): "", id:"test"}, {name: "Me", id:null}] output application/json --- { a: { name: "Mariano", lastName: null, age: 123, friends: myArray } filterObjectLeafs ((value, path) -> !(value is Null or value is String)), b: { c : null, d : "hello" } filterObjectLeafs ((value, path) -> (value is Null and isObjectType(path))) } ``` #### [](#出力)出力 ```Json { "a": { "age": 123, "friends": [ { }, { } ] }, "b": { "c": null } } ``` # filterTree ## [](#filtertree1)filterTree(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 指定された ​`criteria`​ に基づいて入力内のノードの値またはパスを絞り込みます。 この関数では、入力内のノードを反復処理します。​`criteria`​ は入力内の値またはパスに適用できます。​`criteria`​ が ​`true`​ に評価される場合、ノードは出力に留まります。​`false`​ の場合、この関数によってノードが除外されます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​value

絞り込む値。

​criteria

ノードを絞り込むかどうかを判断する式。

### [](#例)例 次の例では、さまざまな入力での ​`filterTree`​ の動作を示します。 出力はデモを目的とした ​`application/dw`​ となります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/dw --- { a: { name : "", lastName @(foo: ""): "Achaval", friends @(id: 123): [{id: "", test: true}, {age: 123}, ""] } filterTree ((value, path) -> value match { case s is String -> !isEmpty(s) else -> true } ), b: null filterTree ((value, path) -> value is String), c: [ {name: "Mariano", friends: []}, {test: [1,2,3]}, {dw: ""} ] filterTree ((value, path) -> value match { case a is Array -> !isEmpty(a as Array) else -> true }) } ``` #### [](#出力)出力 ```DataWeave { a: { lastName: "Achaval", friends @(id: 123): [ { test: true }, { age: 123 } ] }, b: null, c: [ { name: "Mariano" }, { test: [ 1, 2, 3 ] }, { dw: "" } ] } ``` # filterTree ## [](#filtertree1)filterTree(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 指定された ​`criteria`​ に基づいて入力内のノードの値またはパスを絞り込みます。 この関数では、入力内のノードを反復処理します。​`criteria`​ は入力内の値またはパスに適用できます。​`criteria`​ が ​`true`​ に評価される場合、ノードは出力に留まります。​`false`​ の場合、この関数によってノードが除外されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

絞り込む値。

criteria

ノードを絞り込むかどうかを判断する式。

### [](#例)例 次の例では、さまざまな入力での ​`filterTree`​ の動作を示します。 出力はデモを目的とした ​`application/dw`​ となります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/dw --- { a: { name : "", lastName @(foo: ""): "Achaval", friends @(id: 123): [{id: "", test: true}, {age: 123}, ""] } filterTree ((value, path) -> value match { case s is String -> !isEmpty(s) else -> true } ), b: null filterTree ((value, path) -> value is String), c: [ {name: "Mariano", friends: []}, {test: [1,2,3]}, {dw: ""} ] filterTree ((value, path) -> value match { case a is Array -> !isEmpty(a as Array) else -> true }) } ``` #### [](#出力)出力 ```DataWeave { a: { lastName: "Achaval", friends @(id: 123): [ { test: true }, { age: 123 } ] }, b: null, c: [ { name: "Mariano" }, { test: [ 1, 2, 3 ] }, { dw: "" } ] } ``` # filterTree ## [](#filtertree1)filterTree(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 指定された ​`criteria`​ に基づいて入力内のノードの値またはパスを絞り込みます。 この関数では、入力内のノードを反復処理します。​`criteria`​ は入力内の値またはパスに適用できます。​`criteria`​ が ​`true`​ に評価される場合、ノードは出力に留まります。​`false`​ の場合、この関数によってノードが除外されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

絞り込む値。

criteria

ノードを絞り込むかどうかを判断する式。

### [](#例)例 次の例では、さまざまな入力での ​`filterTree`​ の動作を示します。 出力はデモを目的とした ​`application/dw`​ となります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/dw --- { a: { name : "", lastName @(foo: ""): "Achaval", friends @(id: 123): [{id: "", test: true}, {age: 123}, ""] } filterTree ((value, path) -> value match { case s is String -> !isEmpty(s) else -> true } ), b: null filterTree ((value, path) -> value is String), c: [ {name: "Mariano", friends: []}, {test: [1,2,3]}, {dw: ""} ] filterTree ((value, path) -> value match { case a is Array -> !isEmpty(a as Array) else -> true }) } ``` #### [](#出力)出力 ```DataWeave { a: { lastName: "Achaval", friends @(id: 123): [ { test: true }, { age: 123 } ] }, b: null, c: [ { name: "Mariano" }, { test: [ 1, 2, 3 ] }, { dw: "" } ] } ``` # filterTree ## [](#filtertree1)filterTree(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 指定された ​`criteria`​ に基づいて入力内のノードの値またはパスを絞り込みます。 この関数では、入力内のノードを反復処理します。​`criteria`​ は入力内の値またはパスに適用できます。​`criteria`​ が ​`true`​ に評価される場合、ノードは出力に留まります。​`false`​ の場合、この関数によってノードが除外されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

絞り込む値。

criteria

ノードを絞り込むかどうかを判断する式。

### [](#例)例 次の例では、さまざまな入力での ​`filterTree`​ の動作を示します。 出力はデモを目的とした ​`application/dw`​ となります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/dw --- { a: { name : "", lastName @(foo: ""): "Achaval", friends @(id: 123): [{id: "", test: true}, {age: 123}, ""] } filterTree ((value, path) -> value match { case s is String -> !isEmpty(s) else -> true } ), b: null filterTree ((value, path) -> value is String), c: [ {name: "Mariano", friends: []}, {test: [1,2,3]}, {dw: ""} ] filterTree ((value, path) -> value match { case a is Array -> !isEmpty(a as Array) else -> true }) } ``` #### [](#出力)出力 ```DataWeave { a: { lastName: "Achaval", friends @(id: 123): [ { test: true }, { age: 123 } ] }, b: null, c: [ { name: "Mariano" }, { test: [ 1, 2, 3 ] }, { dw: "" } ] } ``` # filterTree ## [](#filtertree1)filterTree(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any 指定された ​`criteria`​ に基づいて入力内のノードの値またはパスを絞り込みます。 この関数では、入力内のノードを反復処理します。​`criteria`​ は入力内の値またはパスに適用できます。​`criteria`​ が ​`true`​ に評価される場合、ノードは出力に留まります。​`false`​ の場合、この関数によってノードが除外されます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

絞り込む値。

criteria

ノードを絞り込むかどうかを判断する式。

### [](#例)例 次の例では、さまざまな入力での ​`filterTree`​ の動作を示します。 出力はデモを目的とした ​`application/dw`​ となります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/dw --- { a: { name : "", lastName @(foo: ""): "Achaval", friends @(id: 123): [{id: "", test: true}, {age: 123}, ""] } filterTree ((value, path) -> value match { case s is String -> !isEmpty(s) else -> true } ), b: null filterTree ((value, path) -> value is String), c: [ {name: "Mariano", friends: []}, {test: [1,2,3]}, {dw: ""} ] filterTree ((value, path) -> value match { case a is Array -> !isEmpty(a as Array) else -> true }) } ``` #### [](#出力)出力 ```DataWeave { a: { lastName: "Achaval", friends @(id: 123): [ { test: true }, { age: 123 } ] }, b: null, c: [ { name: "Mariano" }, { test: [ 1, 2, 3 ] }, { dw: "" } ] } ``` # find ## [](#find1)find(Array, Any): Array 指定された値と一致する、入力のインデックスを返します。 このバージョンの関数は、配列のインデックスを返します。その他のバージョンは、文字列のインデックスを返します。 ### [](#パラメーター)パラメーター
名前 説明

​elements

任意のデータ型の要素を含む配列。

​elementToFind

入力配列内で検索する値。

### [](#例)例 次の例では、文字列配列内の要素のインデックスを検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["Bond", "James", "Bond"] find "Bond" ``` #### [](#出力)出力 ```JSON [0,2] ``` ## [](#find2)find(String, Regex): Array> 指定された正規表現 (regex) および後続のキャプチャグループと一致する、テキスト内のインデックスを返します。 結果のサブ文字列内の最初の要素は、regex と一致したテキスト内のインデックス、次の要素は、regex 内のキャプチャグループです (存在する場合)。 注意: テキストのうち、regex と一致する部分を取得するには、​`scan`​ 関数を使用します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

文字列。

​matcher

​text​ 内の文字を照合する Java 正規表現。

### [](#例-2)例 次の例では、​`ea`​ が含まれる語の開始インデックスと終了インデックスを検索します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "I heart DataWeave" find /\w*ea\w*(\b)/ ``` #### [](#出力-2)出力 ```JSON [ [2,7], [8,17] ] ``` ## [](#find3)find(String, String): Array 文字列の指定された文字が存在する位置のインデックスをリストします。 ### [](#パラメーター-3)パラメーター
名前 説明

​text

ソース文字列。

​textToFind

ソース文字列で検索する文字列。

### [](#例-3)例 次の例では、「aabccdbce」内にある「a」のインデックスをリストします。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "aabccdbce" find "a" ``` #### [](#出力-3)出力 ```JSON [0,1] ``` # find ## [](#find1)find(@StreamCapable() elements: Array, elementToFind: Any): Array 指定された値と一致する、入力のインデックスを返します。 このバージョンの関数は、配列のインデックスを返します。その他のバージョンは、文字列のインデックスを返します。 ### [](#パラメーター)パラメーター
名前 説明

​elements

任意のデータ型の要素を含む配列。

​elementToFind

入力配列内で検索する値。

### [](#例)例 次の例では、文字列配列内の要素のインデックスを検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["Bond", "James", "Bond"] find "Bond" ``` #### [](#出力)出力 ```JSON [0,2] ``` ## [](#find2)find(@StreamCapable() text: String, matcher: Regex): Array> 指定された正規表現 (regex) および後続のキャプチャグループと一致する、テキスト内のインデックスを返します。 結果のサブ文字列内の最初の要素は、regex と一致したテキスト内のインデックス、次の要素は、regex 内のキャプチャグループです (存在する場合)。 注意: テキストのうち、regex と一致する部分を取得するには、​`scan`​ 関数を使用します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

文字列。

​matcher

​text​ 内の文字を照合する Java 正規表現。

### [](#例-2)例 次の例では、​`ea`​ が含まれる語の開始インデックスと終了インデックスを検索します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "I heart DataWeave" find /\w*ea\w*(\b)/ ``` #### [](#出力-2)出力 ```JSON [ [2,7], [8,17] ] ``` ## [](#find3)find(@StreamCapable() text: String, textToFind: String): Array 文字列の指定された文字が存在する位置のインデックスをリストします。 ### [](#パラメーター-3)パラメーター
名前 説明

​text

ソース文字列。

​textToFind

ソース文字列で検索する文字列。

### [](#例-3)例 次の例では、「aabccdbce」内にある「a」のインデックスをリストします。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "aabccdbce" find "a" ``` #### [](#出力-3)出力 ```JSON [0,1] ``` ## [](#find4)find(@StreamCapable() text: Null, textToFind: Any): Array `find`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # find ## [](#find1)find(@StreamCapable() elements: Array, elementToFind: Any): Array 指定された値と一致する、入力のインデックスを返します。 このバージョンの関数は、配列のインデックスを返します。その他のバージョンは、文字列のインデックスを返します。 ### [](#パラメーター)パラメーター
名前 説明

elements

任意のデータ型の要素を含む配列。

elementToFind

入力配列内で検索する値。

### [](#例)例 次の例では、文字列配列内の要素のインデックスを検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["Bond", "James", "Bond"] find "Bond" ``` #### [](#出力)出力 ```JSON [0,2] ``` ## [](#find2)find(@StreamCapable() text: String, matcher: Regex): Array> 指定された正規表現 (regex) および後続のキャプチャグループと一致する、テキスト内のインデックスを返します。 結果のサブ文字列内の最初の要素は、regex と一致したテキスト内のインデックス、次の要素は、regex 内のキャプチャグループです (存在する場合)。 注意: テキストのうち、regex と一致する部分を取得するには、​`scan`​ 関数を使用します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例-2)例 次の例では、​`ea`​ が含まれる語の開始インデックスと終了インデックスを検索します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "I heart DataWeave" find /\w*ea\w*(\b)/ ``` #### [](#出力-2)出力 ```JSON [ [2,7], [8,17] ] ``` ## [](#find3)find(@StreamCapable() text: String, textToFind: String): Array 文字列の指定された文字が存在する位置のインデックスをリストします。 ### [](#パラメーター-3)パラメーター
名前 説明

text

ソース文字列。

textToFind

ソース文字列で検索する文字列。

### [](#例-3)例 次の例では、「aabccdbce」内にある「a」のインデックスをリストします。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "aabccdbce" find "a" ``` #### [](#出力-3)出力 ```JSON [0,1] ``` ## [](#find4)find(@StreamCapable() text: Null, textToFind: Any): Array `find`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # find ## [](#find1)find(@StreamCapable() elements: Array, elementToFind: Any): Array 指定された値と一致する、入力のインデックスを返します。 このバージョンの関数は、配列のインデックスを返します。その他のバージョンは、文字列のインデックスを返します。 ### [](#パラメーター)パラメーター
名前 説明

elements

任意のデータ型の要素を含む配列。

elementToFind

入力配列内で検索する値。

### [](#例)例 次の例では、文字列配列内の要素のインデックスを検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["Bond", "James", "Bond"] find "Bond" ``` #### [](#出力)出力 ```JSON [0,2] ``` ## [](#find2)find(@StreamCapable() text: String, matcher: Regex): Array> 指定された正規表現 (regex) および後続のキャプチャグループと一致する、テキスト内のインデックスを返します。 結果のサブ文字列内の最初の要素は、regex と一致したテキスト内のインデックス、次の要素は、regex 内のキャプチャグループです (存在する場合)。 注意: テキストのうち、regex と一致する部分を取得するには、​`scan`​ 関数を使用します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例-2)例 次の例では、​`ea`​ が含まれる語の開始インデックスと終了インデックスを検索します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "I heart DataWeave" find /\w*ea\w*(\b)/ ``` #### [](#出力-2)出力 ```JSON [ [2,7], [8,17] ] ``` ## [](#find3)find(@StreamCapable() text: String, textToFind: String): Array 文字列の指定された文字が存在する位置のインデックスをリストします。 ### [](#パラメーター-3)パラメーター
名前 説明

text

ソース文字列。

textToFind

ソース文字列で検索する文字列。

### [](#例-3)例 次の例では、「aabccdbce」内にある「a」のインデックスをリストします。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "aabccdbce" find "a" ``` #### [](#出力-3)出力 ```JSON [0,1] ``` ## [](#find4)find(@StreamCapable() text: Null, textToFind: Any): Array `find`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # find ## [](#find1)find(@StreamCapable() elements: Array, elementToFind: Any): Array 指定された値と一致する、入力のインデックスを返します。 このバージョンの関数は、配列のインデックスを返します。その他のバージョンは、文字列のインデックスを返します。 ### [](#パラメーター)パラメーター
名前 説明

elements

任意のデータ型の要素を含む配列。

elementToFind

入力配列内で検索する値。

### [](#例)例 次の例では、文字列配列内の要素のインデックスを検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["Bond", "James", "Bond"] find "Bond" ``` #### [](#出力)出力 ```JSON [0,2] ``` ## [](#find2)find(@StreamCapable() text: String, matcher: Regex): Array> 指定された正規表現 (regex) および後続のキャプチャグループと一致する、テキスト内のインデックスを返します。 結果のサブ文字列内の最初の要素は、regex と一致したテキスト内のインデックス、次の要素は、regex 内のキャプチャグループです (存在する場合)。 注意: テキストのうち、regex と一致する部分を取得するには、​`scan`​ 関数を使用します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例-2)例 次の例では、​`ea`​ が含まれる語の開始インデックスと終了インデックスを検索します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "I heart DataWeave" find /\w*ea\w*(\b)/ ``` #### [](#出力-2)出力 ```JSON [ [2,7], [8,17] ] ``` ## [](#find3)find(@StreamCapable() text: String, textToFind: String): Array 文字列の指定された文字が存在する位置のインデックスをリストします。 ### [](#パラメーター-3)パラメーター
名前 説明

text

ソース文字列。

textToFind

ソース文字列で検索する文字列。

### [](#例-3)例 次の例では、「aabccdbce」内にある「a」のインデックスをリストします。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "aabccdbce" find "a" ``` #### [](#出力-3)出力 ```JSON [0,1] ``` ## [](#find4)find(@StreamCapable() text: Null, textToFind: Any): Array `find`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # find ## [](#find1)find(@StreamCapable() elements: Array, elementToFind: Any): Array 指定された値と一致する、入力のインデックスを返します。 このバージョンの関数は、配列のインデックスを返します。その他のバージョンは、文字列のインデックスを返します。 ### [](#パラメーター)パラメーター
名前 説明

elements

任意のデータ型の要素を含む配列。

elementToFind

入力配列内で検索する値。

### [](#例)例 次の例では、文字列配列内の要素のインデックスを検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["Bond", "James", "Bond"] find "Bond" ``` #### [](#出力)出力 ```JSON [0,2] ``` ## [](#find2)find(@StreamCapable() text: String, matcher: Regex): Array> 指定された正規表現 (regex) および後続のキャプチャグループと一致する、テキスト内のインデックスを返します。 結果のサブ文字列内の最初の要素は、regex と一致したテキスト内のインデックス、次の要素は、regex 内のキャプチャグループです (存在する場合)。 注意: テキストのうち、regex と一致する部分を取得するには、​`scan`​ 関数を使用します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例-2)例 次の例では、​`ea`​ が含まれる語の開始インデックスと終了インデックスを検索します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "I heart DataWeave" find /\w*ea\w*(\b)/ ``` #### [](#出力-2)出力 ```JSON [ [2,7], [8,17] ] ``` ## [](#find3)find(@StreamCapable() text: String, textToFind: String): Array 文字列の指定された文字が存在する位置のインデックスをリストします。 ### [](#パラメーター-3)パラメーター
名前 説明

text

ソース文字列。

textToFind

ソース文字列で検索する文字列。

### [](#例-3)例 次の例では、「aabccdbce」内にある「a」のインデックスをリストします。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- "aabccdbce" find "a" ``` #### [](#出力-3)出力 ```JSON [0,1] ``` ## [](#find4)find(@StreamCapable() text: Null, textToFind: Any): Array `find`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # findDataFormatDescriptorByMime ## [](#finddataformatdescriptorbymime1)findDataFormatDescriptorByMime(mime: dw::module::Mime::MimeType): DataFormatDescriptor | Null 指定された ​`dw::module::Mime::MimeType`​ に基づいて ​`DataFormatDescriptor`​ を返すか、指定された ​`MimeType`​ の ​`DataFormatDescriptor`​ がない場合は ​`null`​ を返します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 _DataWeave バージョン 2.7.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

mimeType

dw::module::Mime::MimeType

検索する MIME タイプ値。

### [](#例)例 次の例では、JSON ​`DataFormatDescriptor`​ と不明な ​`DataFormatDescriptor`​ を検索します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json var jsonDF = findDataFormatDescriptorByMime({'type': "*", subtype: "json", parameters: {}}) var unknownDF = findDataFormatDescriptorByMime({'type': "*", subtype: "*", parameters: {}}) fun simplify(df: DataFormatDescriptor | Null) = df match { case d is DataFormatDescriptor -> { name: d.name, defaultMimeType: d.defaultMimeType } case is Null -> { name: "unknown", defaultMimeType: "unknown" } } --- { json: simplify(jsonDF), unknown: simplify(unknownDF) } ``` #### [](#出力)出力 ```Json { "json": { "name": "json", "defaultMimeType": "application/json" }, "unknown": { "name": "unknown", "defaultMimeType": "unknown" } } ``` # first ## [](#first1)first(text: String, amount: Number): String 文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。 この数が文字列内の文字数以上の場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

処理する文字列。

​amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り捨てられます。

### [](#例)例 次の例では、文字列内の最初の 5 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import first from dw::core::Strings output application/json --- "hello world!" first 5 ``` #### [](#出力)出力 ```Json "hello" ``` ## [](#first2)first(text: Null, amount: Any): Null `first`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # first ## [](#first1)first(text: String, amount: Number): String 文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。 この数が文字列内の文字数以上の場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り捨てられます。

### [](#例)例 次の例では、文字列内の最初の 5 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import first from dw::core::Strings output application/json --- "hello world!" first 5 ``` #### [](#出力)出力 ```Json "hello" ``` ## [](#first2)first(text: Null, amount: Any): Null `first`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # first ## [](#first1)first(text: String, amount: Number): String 文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。 この数が文字列内の文字数以上の場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り捨てられます。

### [](#例)例 次の例では、文字列内の最初の 5 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import first from dw::core::Strings output application/json --- "hello world!" first 5 ``` #### [](#出力)出力 ```Json "hello" ``` ## [](#first2)first(text: Null, amount: Any): Null `first`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # first ## [](#first1)first(text: String, amount: Number): String 文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。 この数が文字列内の文字数以上の場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り捨てられます。

### [](#例)例 次の例では、文字列内の最初の 5 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import first from dw::core::Strings output application/json --- "hello world!" first 5 ``` #### [](#出力)出力 ```Json "hello" ``` ## [](#first2)first(text: Null, amount: Any): Null `first`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # first ## [](#first1)first(text: String, amount: Number): String 文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。 この数が文字列内の文字数以上の場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り捨てられます。

### [](#例)例 次の例では、文字列内の最初の 5 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import first from dw::core::Strings output application/json --- "hello world!" first 5 ``` #### [](#出力)出力 ```Json "hello" ``` ## [](#first2)first(text: Null, amount: Any): Null `first`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # firstWith ## [](#firstwith1)firstWith(Array, (item: T, index: Number) -> Boolean): T | Null 条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​`null`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

array (配列)

検索する要素の配列。

condition (条件)

満たす条件。

### [](#例)例 次の例では、要素が一致する場合と要素が一致しない場合の ​`firstWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import firstWith from dw::core::Arrays var users = [{name: "Mariano", lastName: "Achaval"}, {name: "Ana", lastName: "Felisatti"}, {name: "Mariano", lastName: "de Sousa"}] --- { a: users firstWith ((user, index) -> user.name == "Mariano"), b: users firstWith ((user, index) -> user.name == "Peter") } ``` #### [](#出力)出力 ```Json { "a": { "name": "Mariano", "lastName": "Achaval" }, "b": null } ``` # firstWith ## [](#firstwith1)firstWith(array: Array, condition: (item: T, index: Number) -> Boolean): T | Null 条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​`null`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

検索する要素の配列。

​condition

満たす条件。

### [](#例)例 次の例では、要素が一致する場合と要素が一致しない場合の ​`firstWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import firstWith from dw::core::Arrays var users = [{name: "Mariano", lastName: "Achaval"}, {name: "Ana", lastName: "Felisatti"}, {name: "Mariano", lastName: "de Sousa"}] --- { a: users firstWith ((user, index) -> user.name == "Mariano"), b: users firstWith ((user, index) -> user.name == "Peter") } ``` #### [](#出力)出力 ```Json { "a": { "name": "Mariano", "lastName": "Achaval" }, "b": null } ``` ## [](#firstwith2)firstWith(array: Null, condition: (item: Nothing, index: Nothing) -> Any): Null `firstWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # firstWith ## [](#firstwith1)firstWith(array: Array, condition: (item: T, index: Number) -> Boolean): T | Null 条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​`null`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

condition

満たす条件。

### [](#例)例 次の例では、要素が一致する場合と要素が一致しない場合の ​`firstWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import firstWith from dw::core::Arrays var users = [{name: "Mariano", lastName: "Achaval"}, {name: "Ana", lastName: "Felisatti"}, {name: "Mariano", lastName: "de Sousa"}] --- { a: users firstWith ((user, index) -> user.name == "Mariano"), b: users firstWith ((user, index) -> user.name == "Peter") } ``` #### [](#出力)出力 ```Json { "a": { "name": "Mariano", "lastName": "Achaval" }, "b": null } ``` ## [](#firstwith2)firstWith(array: Null, condition: (item: Nothing, index: Nothing) -> Any): Null `firstWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # firstWith ## [](#firstwith1)firstWith(array: Array, condition: (item: T, index: Number) -> Boolean): T | Null 条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​`null`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

condition

満たす条件。

### [](#例)例 次の例では、要素が一致する場合と要素が一致しない場合の ​`firstWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import firstWith from dw::core::Arrays var users = [{name: "Mariano", lastName: "Achaval"}, {name: "Ana", lastName: "Felisatti"}, {name: "Mariano", lastName: "de Sousa"}] --- { a: users firstWith ((user, index) -> user.name == "Mariano"), b: users firstWith ((user, index) -> user.name == "Peter") } ``` #### [](#出力)出力 ```Json { "a": { "name": "Mariano", "lastName": "Achaval" }, "b": null } ``` ## [](#firstwith2)firstWith(array: Null, condition: (item: Nothing, index: Nothing) -> Any): Null `firstWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # firstWith ## [](#firstwith1)firstWith(array: Array, condition: (item: T, index: Number) -> Boolean): T | Null 条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​`null`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

condition

満たす条件。

### [](#例)例 次の例では、要素が一致する場合と要素が一致しない場合の ​`firstWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import firstWith from dw::core::Arrays var users = [{name: "Mariano", lastName: "Achaval"}, {name: "Ana", lastName: "Felisatti"}, {name: "Mariano", lastName: "de Sousa"}] --- { a: users firstWith ((user, index) -> user.name == "Mariano"), b: users firstWith ((user, index) -> user.name == "Peter") } ``` #### [](#出力)出力 ```Json { "a": { "name": "Mariano", "lastName": "Achaval" }, "b": null } ``` ## [](#firstwith2)firstWith(array: Null, condition: (item: Nothing, index: Nothing) -> Any): Null `firstWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # firstWith ## [](#firstwith1)firstWith(array: Array, condition: (item: T, index: Number) -> Boolean): T | Null 条件を満たす最初の要素を返すか、条件を満たす要素がない場合は ​`null`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

condition

満たす条件。

### [](#例)例 次の例では、要素が一致する場合と要素が一致しない場合の ​`firstWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import firstWith from dw::core::Arrays var users = [{name: "Mariano", lastName: "Achaval"}, {name: "Ana", lastName: "Felisatti"}, {name: "Mariano", lastName: "de Sousa"}] --- { a: users firstWith ((user, index) -> user.name == "Mariano"), b: users firstWith ((user, index) -> user.name == "Peter") } ``` #### [](#出力)出力 ```Json { "a": { "name": "Mariano", "lastName": "Achaval" }, "b": null } ``` ## [](#firstwith2)firstWith(array: Null, condition: (item: Nothing, index: Nothing) -> Any): Null `firstWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # flatMap ## [](#flatmap1)flatMap(Array, (item: T, index: Number) -> Array): Array 配列内の各項目を反復処理し、結果をフラット化します。 (​`[ [1,2], [3,4] ]`​ などの入力内の値を反復処理する場合の ​`map`​ のように) 配列の配列を返すのではなく、​`flatMap`​ は ​`[1, 2, 3, 4]`​ のようにフラット化された配列を返します。​`flatMap`​ は ​`flatten`​ に似ていますが、​`flatten`​ は配列の値でのみ動作し、​`flatMap`​ は配列の項目の値とインデックスで動作できます。 ### [](#パラメーター)パラメーター
名前 説明

​items

マップする配列。

​mapper

フラット化する、配列内の ​item​ または ​index​ の式またはセレクター。

### [](#例)例 次の例では、各値が順序どおりに含まれる配列を返します。これは、省略可能な ​`index`​ パラメーターを匿名関数内で指定していますが (​`(value, index) → value`​)、​`index`​ を出力のセレクターとして使用しません。このため、​`(value) → value`​ を使用して匿名関数を記述することができます。値の代わりに匿名パラメーターを使用して、この例を ​`[ [3,5], [0.9,5.5] ] flatMap $`​ のように記述することもできます。 次の例では、​`flatten`​ を使用する ​`flatten([ [3,5], [0.9,5.5] ])`​ と同じ結果が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ [3,5], [0.9,5.5] ] flatMap (value, index) -> value ``` #### [](#出力)出力 ```JSON [ 3, 5, 0.9, 5.5] ``` ## [](#flatmap2)flatMap(Null, (item: Nothing, index: Nothing) -> Any): Null `flatMap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatMap ## [](#flatmap1)flatMap(@StreamCapable items: Array, mapper: (item: T, index: Number) -> Array): Array 配列内の各項目を反復処理し、結果をフラット化します。 (​`[ [1,2], [3,4] ]`​ などの入力内の値を反復処理する場合の ​`map`​ のように) 配列の配列を返すのではなく、​`flatMap`​ は ​`[1, 2, 3, 4]`​ のようにフラット化された配列を返します。​`flatMap`​ は ​`flatten`​ に似ていますが、​`flatten`​ は配列の値でのみ動作し、​`flatMap`​ は配列の項目の値とインデックスで動作できます。 ### [](#パラメーター)パラメーター
名前 説明

​items

マップする配列。

​mapper

フラット化する、配列内の ​item​ または ​index​ の式またはセレクター。

### [](#例)例 次の例では、各値が順序どおりに含まれる配列を返します。これは、省略可能な ​`index`​ パラメーターを匿名関数内で指定していますが (​`(value, index) → value`​)、​`index`​ を出力のセレクターとして使用しません。このため、​`(value) → value`​ を使用して匿名関数を記述することができます。値の代わりに匿名パラメーターを使用して、この例を ​`[ [3,5], [0.9,5.5] ] flatMap $`​ のように記述することもできます。 次の例では、​`flatten`​ を使用する ​`flatten([ [3,5], [0.9,5.5] ])`​ と同じ結果が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ [3,5], [0.9,5.5] ] flatMap (value, index) -> value ``` #### [](#出力)出力 ```JSON [ 3, 5, 0.9, 5.5] ``` ## [](#flatmap2)flatMap(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `flatMap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatMap ## [](#flatmap1)flatMap(@StreamCapable items: Array, mapper: (item: T, index: Number) -> Array): Array 配列内の各項目を反復処理し、結果をフラット化します。 (​`[ [1,2], [3,4] ]`​ などの入力内の値を反復処理する場合の ​`map`​ のように) 配列の配列を返すのではなく、​`flatMap`​ は ​`[1, 2, 3, 4]`​ のようにフラット化された配列を返します。 ​`flatMap`​ は ​`flatten`​ に似ていますが、​`flatten`​ は配列の値でのみ動作し、​`flatMap`​ は配列の項目の値とインデックスで動作できます。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

フラット化する、配列内の ​item​ または ​index​ の式またはセレクター。

### [](#例)例 次の例では、各値が順序どおりに含まれる配列を返します。これは、省略可能な ​`index`​ パラメーターを匿名関数内で指定していますが (​`(value, index) → value`​)、​`index`​ を出力のセレクターとして使用しません。このため、​`(value) → value`​ を使用して匿名関数を記述することができます。値の代わりに匿名パラメーターを使用して、この例を ​`[ [3,5], [0.9,5.5] ] flatMap $`​ のように記述することもできます。 次の例では、​`flatten`​ を使用する ​`flatten([ [3,5], [0.9,5.5] ])`​ と同じ結果が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ [3,5], [0.9,5.5] ] flatMap (value, index) -> value ``` #### [](#出力)出力 ```JSON [ 3, 5, 0.9, 5.5] ``` ## [](#flatmap2)flatMap(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `flatMap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatMap ## [](#flatmap1)flatMap(@StreamCapable items: Array, mapper: (item: T, index: Number) -> Array): Array 配列内の各項目を反復処理し、結果をフラット化します。 (​`[ [1,2], [3,4] ]`​ などの入力内の値を反復処理する場合の ​`map`​ のように) 配列の配列を返すのではなく、​`flatMap`​ は ​`[1, 2, 3, 4]`​ のようにフラット化された配列を返します。 ​`flatMap`​ は ​`flatten`​ に似ていますが、​`flatten`​ は配列の値でのみ動作し、​`flatMap`​ は配列の項目の値とインデックスで動作できます。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

フラット化する、配列内の ​item​ または ​index​ の式またはセレクター。

### [](#例)例 次の例では、各値が順序どおりに含まれる配列を返します。これは、省略可能な ​`index`​ パラメーターを匿名関数内で指定していますが (​`(value, index) → value`​)、​`index`​ を出力のセレクターとして使用しません。このため、​`(value) → value`​ を使用して匿名関数を記述することができます。値の代わりに匿名パラメーターを使用して、この例を ​`[ [3,5], [0.9,5.5] ] flatMap $`​ のように記述することもできます。 次の例では、​`flatten`​ を使用する ​`flatten([ [3,5], [0.9,5.5] ])`​ と同じ結果が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ [3,5], [0.9,5.5] ] flatMap (value, index) -> value ``` #### [](#出力)出力 ```JSON [ 3, 5, 0.9, 5.5] ``` ## [](#flatmap2)flatMap(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `flatMap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatMap ## [](#flatmap1)flatMap(@StreamCapable items: Array, mapper: (item: T, index: Number) -> Array): Array 配列内の各項目を反復処理し、結果をフラット化します。 (​`[ [1,2], [3,4] ]`​ などの入力内の値を反復処理する場合の ​`map`​ のように) 配列の配列を返すのではなく、​`flatMap`​ は ​`[1, 2, 3, 4]`​ のようにフラット化された配列を返します。 ​`flatMap`​ は ​`flatten`​ に似ていますが、​`flatten`​ は配列の値でのみ動作し、​`flatMap`​ は配列の項目の値とインデックスで動作できます。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

フラット化する、配列内の ​item​ または ​index​ の式またはセレクター。

### [](#例)例 次の例では、各値が順序どおりに含まれる配列を返します。これは、省略可能な ​`index`​ パラメーターを匿名関数内で指定していますが (​`(value, index) → value`​)、​`index`​ を出力のセレクターとして使用しません。このため、​`(value) → value`​ を使用して匿名関数を記述することができます。値の代わりに匿名パラメーターを使用して、この例を ​`[ [3,5], [0.9,5.5] ] flatMap $`​ のように記述することもできます。 次の例では、​`flatten`​ を使用する ​`flatten([ [3,5], [0.9,5.5] ])`​ と同じ結果が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ [3,5], [0.9,5.5] ] flatMap (value, index) -> value ``` #### [](#出力)出力 ```JSON [ 3, 5, 0.9, 5.5] ``` ## [](#flatmap2)flatMap(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `flatMap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatMap ## [](#flatmap1)flatMap(@StreamCapable items: Array, mapper: (item: T, index: Number) -> Array): Array 配列内の各項目を反復処理し、結果をフラット化します。 (​`[ [1,2], [3,4] ]`​ などの入力内の値を反復処理する場合の ​`map`​ のように) 配列の配列を返すのではなく、​`flatMap`​ は ​`[1, 2, 3, 4]`​ のようにフラット化された配列を返します。 ​`flatMap`​ は ​`flatten`​ に似ていますが、​`flatten`​ は配列の値でのみ動作し、​`flatMap`​ は配列の項目の値とインデックスで動作できます。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

フラット化する、配列内の ​item​ または ​index​ の式またはセレクター。

### [](#例)例 次の例では、各値が順序どおりに含まれる配列を返します。これは、省略可能な ​`index`​ パラメーターを匿名関数内で指定していますが (​`(value, index) → value`​)、​`index`​ を出力のセレクターとして使用しません。このため、​`(value) → value`​ を使用して匿名関数を記述することができます。値の代わりに匿名パラメーターを使用して、この例を ​`[ [3,5], [0.9,5.5] ] flatMap $`​ のように記述することもできます。 次の例では、​`flatten`​ を使用する ​`flatten([ [3,5], [0.9,5.5] ])`​ と同じ結果が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ [3,5], [0.9,5.5] ] flatMap (value, index) -> value ``` #### [](#出力)出力 ```JSON [ 3, 5, 0.9, 5.5] ``` ## [](#flatmap2)flatMap(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `flatMap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatten ## [](#flatten1)flatten(Array | Q>): Array 一連のサブ配列 (​`[ [1,2,3], [4,5,[6]], [], [null] ]`​ など) を 1 つのフラット化した配列 (​`[ 1, 2, 3, 4, 5, [6], null ]`​ など) に変換します。 サブ配列の最初のレベルのみがフラット化され、空のサブ配列は省略されます。 ### [](#パラメーター)パラメーター
名前 説明

​items

サポートされる任意の型で構成された配列の入力配列。

### [](#例)例 この例では、数値の配列を 3 つ定義し、それらの 3 つの配列を含むもう 1 つの配列を作成してから、flatten 関数を使用して配列の配列をすべての値を含む 1 つの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var array1 = [1,2,3] var array2 = [4,5,6] var array3 = [7,8,9] var arrayOfArrays = [array1, array2, array3] --- flatten(arrayOfArrays) ``` #### [](#出力)出力 ```JSON [ 1,2,3,4,5,6,7,8,9 ] ``` ### [](#例-2)例 次の例では、オブジェクトのネストされた配列から 1 つの配列を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myData = { user : [ { group : "dev", myarray : [ { name : "Shoki", id : 5678 }, { name : "Mariano", id : 9123 } ] } ] } output application/json --- flatten(myData.user.myarray) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ``` `flatten(myData.user.myarray)`​ を使用するのではなく、​`myData.user.myarray`​ を使用して ​`myarray`​ 内のオブジェクトの配列を選択した場合、出力はオブジェクトのネストされた配列になります。 ```JSON [ [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ] ``` ## [](#flatten2)flatten(Null): Null `flatten`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatten ## [](#flatten1)flatten(@StreamCapable items: Array | Q>): Array 一連のサブ配列 (​`[ [1,2,3], [4,5,[6]], [], [null] ]`​ など) を 1 つのフラット化した配列 (​`[ 1, 2, 3, 4, 5, [6], null ]`​ など) に変換します。 サブ配列の最初のレベルのみがフラット化され、空のサブ配列は省略されます。 ### [](#パラメーター)パラメーター
名前 説明

​items

サポートされる任意の型で構成された配列の入力配列。

### [](#例)例 この例では、数値の配列を 3 つ定義し、それらの 3 つの配列を含むもう 1 つの配列を作成してから、flatten 関数を使用して配列の配列をすべての値を含む 1 つの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var array1 = [1,2,3] var array2 = [4,5,6] var array3 = [7,8,9] var arrayOfArrays = [array1, array2, array3] --- flatten(arrayOfArrays) ``` #### [](#出力)出力 ```JSON [ 1,2,3,4,5,6,7,8,9 ] ``` ### [](#例-2)例 次の例では、オブジェクトのネストされた配列から 1 つの配列を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myData = { user : [ { group : "dev", myarray : [ { name : "Shoki", id : 5678 }, { name : "Mariano", id : 9123 } ] }, { group : "test", myarray : [ { name : "Sai", id : 2001 }, { name : "Peter", id : 2002 } ] } ] } output application/json --- flatten(myData.user.myarray) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 }, { "name": "Sai", "id": 2001 }, { "name": "Peter", "id": 2002 } ] ``` `flatten(myData.user.myarray)`​ を使用するのではなく、​`myData.user.myarray`​ を使用して ​`myarray`​ 内のオブジェクトの配列を選択した場合、出力はオブジェクトのネストされた配列になります。 ```JSON [ [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ] ``` ## [](#flatten2)flatten(@StreamCapable value: Null): Null `flatten`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatten ## [](#flatten1)flatten(@StreamCapable items: Array | Q>): Array 一連のサブ配列 (​`[ [1,2,3], [4,5,[6]], [], [null] ]`​ など) を 1 つのフラット化した配列 (​`[ 1, 2, 3, 4, 5, [6], null ]`​ など) に変換します。 サブ配列の最初のレベルのみがフラット化され、空のサブ配列は省略されます。 ### [](#パラメーター)パラメーター
名前 説明

items

サポートされる任意の型で構成された配列の入力配列。

### [](#例)例 この例では、数値の配列を 3 つ定義し、それらの 3 つの配列を含むもう 1 つの配列を作成してから、flatten 関数を使用して配列の配列をすべての値を含む 1 つの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var array1 = [1,2,3] var array2 = [4,5,6] var array3 = [7,8,9] var arrayOfArrays = [array1, array2, array3] --- flatten(arrayOfArrays) ``` #### [](#出力)出力 ```JSON [ 1,2,3,4,5,6,7,8,9 ] ``` ### [](#例-2)例 次の例では、オブジェクトのネストされた配列から 1 つの配列を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myData = { user : [ { group : "dev", myarray : [ { name : "Shoki", id : 5678 }, { name : "Mariano", id : 9123 } ] }, { group : "test", myarray : [ { name : "Sai", id : 2001 }, { name : "Peter", id : 2002 } ] } ] } output application/json --- flatten(myData.user.myarray) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 }, { "name": "Sai", "id": 2001 }, { "name": "Peter", "id": 2002 } ] ``` `flatten(myData.user.myarray)`​ を使用するのではなく、​`myData.user.myarray`​ を使用して ​`myarray`​ 内のオブジェクトの配列を選択した場合、出力はオブジェクトのネストされた配列になります。 ```JSON [ [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ] ``` ## [](#flatten2)flatten(@StreamCapable value: Null): Null `flatten`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatten ## [](#flatten1)flatten(@StreamCapable items: Array | Q>): Array 一連のサブ配列 (​`[ [1,2,3], [4,5,[6]], [], [null] ]`​ など) を 1 つのフラット化した配列 (​`[ 1, 2, 3, 4, 5, [6], null ]`​ など) に変換します。 サブ配列の最初のレベルのみがフラット化され、空のサブ配列は省略されます。 ### [](#パラメーター)パラメーター
名前 説明

items

サポートされる任意の型で構成された配列の入力配列。

### [](#例)例 この例では、数値の配列を 3 つ定義し、それらの 3 つの配列を含むもう 1 つの配列を作成してから、flatten 関数を使用して配列の配列をすべての値を含む 1 つの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var array1 = [1,2,3] var array2 = [4,5,6] var array3 = [7,8,9] var arrayOfArrays = [array1, array2, array3] --- flatten(arrayOfArrays) ``` #### [](#出力)出力 ```JSON [ 1,2,3,4,5,6,7,8,9 ] ``` ### [](#例-2)例 次の例では、オブジェクトのネストされた配列から 1 つの配列を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myData = { user : [ { group : "dev", myarray : [ { name : "Shoki", id : 5678 }, { name : "Mariano", id : 9123 } ] }, { group : "test", myarray : [ { name : "Sai", id : 2001 }, { name : "Peter", id : 2002 } ] } ] } output application/json --- flatten(myData.user.myarray) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 }, { "name": "Sai", "id": 2001 }, { "name": "Peter", "id": 2002 } ] ``` `flatten(myData.user.myarray)`​ を使用するのではなく、​`myData.user.myarray`​ を使用して ​`myarray`​ 内のオブジェクトの配列を選択した場合、出力はオブジェクトのネストされた配列になります。 ```JSON [ [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ] ``` ## [](#flatten2)flatten(@StreamCapable value: Null): Null `flatten`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatten ## [](#flatten1)flatten(@StreamCapable items: Array | Q>): Array 一連のサブ配列 (​`[ [1,2,3], [4,5,[6]], [], [null] ]`​ など) を 1 つのフラット化した配列 (​`[ 1, 2, 3, 4, 5, [6], null ]`​ など) に変換します。 サブ配列の最初のレベルのみがフラット化され、空のサブ配列は省略されます。 ### [](#パラメーター)パラメーター
名前 説明

items

サポートされる任意の型で構成された配列の入力配列。

### [](#例)例 この例では、数値の配列を 3 つ定義し、それらの 3 つの配列を含むもう 1 つの配列を作成してから、flatten 関数を使用して配列の配列をすべての値を含む 1 つの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var array1 = [1,2,3] var array2 = [4,5,6] var array3 = [7,8,9] var arrayOfArrays = [array1, array2, array3] --- flatten(arrayOfArrays) ``` #### [](#出力)出力 ```JSON [ 1,2,3,4,5,6,7,8,9 ] ``` ### [](#例-2)例 次の例では、オブジェクトのネストされた配列から 1 つの配列を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myData = { user : [ { group : "dev", myarray : [ { name : "Shoki", id : 5678 }, { name : "Mariano", id : 9123 } ] }, { group : "test", myarray : [ { name : "Sai", id : 2001 }, { name : "Peter", id : 2002 } ] } ] } output application/json --- flatten(myData.user.myarray) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 }, { "name": "Sai", "id": 2001 }, { "name": "Peter", "id": 2002 } ] ``` `flatten(myData.user.myarray)`​ を使用するのではなく、​`myData.user.myarray`​ を使用して ​`myarray`​ 内のオブジェクトの配列を選択した場合、出力はオブジェクトのネストされた配列になります。 ```JSON [ [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ] ``` ## [](#flatten2)flatten(@StreamCapable value: Null): Null `flatten`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # flatten ## [](#flatten1)flatten(@StreamCapable items: Array | Q>): Array 一連のサブ配列 (​`[ [1,2,3], [4,5,[6]], [], [null] ]`​ など) を 1 つのフラット化した配列 (​`[ 1, 2, 3, 4, 5, [6], null ]`​ など) に変換します。 サブ配列の最初のレベルのみがフラット化され、空のサブ配列は省略されます。 ### [](#パラメーター)パラメーター
名前 説明

items

サポートされる任意の型で構成された配列の入力配列。

### [](#例)例 この例では、数値の配列を 3 つ定義し、それらの 3 つの配列を含むもう 1 つの配列を作成してから、flatten 関数を使用して配列の配列をすべての値を含む 1 つの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var array1 = [1,2,3] var array2 = [4,5,6] var array3 = [7,8,9] var arrayOfArrays = [array1, array2, array3] --- flatten(arrayOfArrays) ``` #### [](#出力)出力 ```JSON [ 1,2,3,4,5,6,7,8,9 ] ``` ### [](#例-2)例 次の例では、オブジェクトのネストされた配列から 1 つの配列を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myData = { user : [ { group : "dev", myarray : [ { name : "Shoki", id : 5678 }, { name : "Mariano", id : 9123 } ] }, { group : "test", myarray : [ { name : "Sai", id : 2001 }, { name : "Peter", id : 2002 } ] } ] } output application/json --- flatten(myData.user.myarray) ``` #### [](#出力-2)出力 ```JSON [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 }, { "name": "Sai", "id": 2001 }, { "name": "Peter", "id": 2002 } ] ``` `flatten(myData.user.myarray)`​ を使用するのではなく、​`myData.user.myarray`​ を使用して ​`myarray`​ 内のオブジェクトの配列を選択した場合、出力はオブジェクトのネストされた配列になります。 ```JSON [ [ { "name": "Shoki", "id": 5678 }, { "name": "Mariano", "id": 9123 } ] ] ``` ## [](#flatten2)flatten(@StreamCapable value: Null): Null `flatten`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # floor ## [](#floor1)floor(Number): Number 数値を最も近い整数に切り捨てます。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値の小数点以下を切り捨てて最も近い整数にします。​`1.5`​ の小数点以下が 切り捨てられて ​`1`​ になっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ floor(1.5), floor(2.2), floor(3) ] ``` #### [](#出力)出力 ```JSON [ 1, 2, 3] ``` # floor ## [](#floor1)floor(number: Number): Number 数値を最も近い整数に切り捨てます。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値の小数点以下を切り捨てて最も近い整数にします。​`1.5`​ の小数点以下が 切り捨てられて ​`1`​ になっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ floor(1.5), floor(2.2), floor(3) ] ``` #### [](#出力)出力 ```JSON [ 1, 2, 3] ``` # floor ## [](#floor1)floor(number: Number): Number 数値を最も近い整数に切り捨てます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の小数点以下を切り捨てて最も近い整数にします。​`1.5`​ の小数点以下が 切り捨てられて ​`1`​ になっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ floor(1.5), floor(2.2), floor(3) ] ``` #### [](#出力)出力 ```JSON [ 1, 2, 3] ``` # floor ## [](#floor1)floor(number: Number): Number 数値を最も近い整数に切り捨てます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の小数点以下を切り捨てて最も近い整数にします。​`1.5`​ の小数点以下が 切り捨てられて ​`1`​ になっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ floor(1.5), floor(2.2), floor(3) ] ``` #### [](#出力)出力 ```JSON [ 1, 2, 3] ``` # floor ## [](#floor1)floor(number: Number): Number 数値を最も近い整数に切り捨てます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の小数点以下を切り捨てて最も近い整数にします。​`1.5`​ の小数点以下が 切り捨てられて ​`1`​ になっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ floor(1.5), floor(2.2), floor(3) ] ``` #### [](#出力)出力 ```JSON [ 1, 2, 3] ``` # floor ## [](#floor1)floor(number: Number): Number 数値を最も近い整数に切り捨てます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の小数点以下を切り捨てて最も近い整数にします。​`1.5`​ の小数点以下が 切り捨てられて ​`1`​ になっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ floor(1.5), floor(2.2), floor(3) ] ``` #### [](#出力)出力 ```JSON [ 1, 2, 3] ``` # form ## [](#form1)form(Array): Multipart 指定されたパートの配列を使用して ​`Multipart`​ データ構造を作成します。 ### [](#パラメーター)パラメーター
名前 説明

​parts

パートの配列 (​MultipartPart​ データ構造)。

### [](#例)例 次の例では、​`field`​ 関数の例で説明されているパートを含む ​`Multipart`​ データ構造を作成します。​`form`​ の他の使用方法については、マルチパートの ​`file`​ および ​`field`​ の [ドキュメント](https://docs.mulesoft.com/mule-runtime/4.3/dw-multipart-functions-form)​で例を参照してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力)出力 ```txt ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` # form ## [](#form1)form(parts: Array): Multipart 指定されたパートの配列を使用して ​`Multipart`​ データ構造を作成します。 ### [](#パラメーター)パラメーター
名前 説明

​parts

パートの配列 (​MultipartPart​ データ構造)。

### [](#例)例 次の例では、3 つのパートを含む ​`Multipart`​ データ構造を作成します。 最初のパートは ​`Multipart::file()`​ 関数を使用して ​`orders.xml`​ という外部ファイルをインポートします。このファイルは、Mule アプリケーションの内部 ​`src/main/resources`​ フォルダーにあります。この例についての詳細は、​[file](https://docs.mulesoft.com/jp/dataweave/2.4/dw-multipart-functions-file)​ 関数のドキュメントを参照してください。 2 つ目のパートでは、項目名をキー/値ペアを含むオブジェクトの形式で入力パラメーターとして受け入れる ​`Multipart::field()`​ 関数のバージョンを使用して、キーを任意の順序で渡せるようにします。このパートでも省略可能な ​`fileName`​ パラメーターを指定しません。指定すると、​`fileName`​ はそのパートの ​`Content-Distribution`​ 要素に含まれます。​`mime`​ 項目も省略可能です。指定すると、この項目は ​`Content-Type`​ 要素を ​`mime`​ 値に設定します。この場合、​`Content-Type`​ は ​`text/plain`​ に設定されます。 3 つ目のパートではよりコンパクトなバージョンの ​`Multipart::field()`​ 関数を使用して必須および省略可能なパラメーターを正しい順序で入力パラメーターとして設定します。最初の 3 つのパラメーター ​`name`​、​`value`​、​`mime`​ は必須です。​`fileName`​ パラメーターは省略可能です。コンテンツをファイルから読み取る場合やファイルに書き込む場合にのみ使用します。このバージョンでは、​`mime`​ パラメーターは ​`Content-Type`​ 要素としての出力、​`fileName`​ は ​`Content-Distribution`​ 要素の ​`filename`​ パラメーターとしての出力になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrders = "./orders.xml" var fileArgs = { name: "file", path: myOrders, mime: "application/xml", fileName: "myorders.xml"} var fieldArgs = {name:"userName",value: "Annie Point", mime: "text/plain"} --- Multipart::form([ Multipart::file(fileArgs), Multipart::field(fieldArgs), Multipart::field("myJson", {"user": "Annie Point"}, "application/json", "userInfo.json") ]) ``` #### [](#出力)出力 ```json ------=_Part_146_143704079.1560394078604 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_146_143704079.1560394078604 Content-Type: text/plain Content-Disposition: form-data; name="userName" Annie Point ------=_Part_146_143704079.1560394078604 Content-Type: application/json Content-Disposition: form-data; name="myJson"; filename="userInfo.json" { "user": "Annie Point" } ------=_Part_146_143704079.1560394078604-- ``` ### [](#例-2)例 次の例は、​`multipart/form-data`​ 出力形式と互換性のある DataWeave コードを使用してデータ構造を作成し、どうすれば ​`form`​ 関数を使用することなく、​`multipart/form-data`​ 出力と互換性のあるデータ構造を手動で作成できるかを示しています。 次の構造では、パートキー ​`part1`​ と ​`part2`​ は ​`multipart/form-data`​ 出力から削除されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` # form ## [](#form1)form(parts: Array): Multipart 指定されたパートの配列を使用して ​`Multipart`​ データ構造を作成します。 ### [](#パラメーター)パラメーター
名前 説明

parts

パートの配列 (​MultipartPart​ データ構造)。

### [](#例)例 次の例では、3 つのパートを含む ​`Multipart`​ データ構造を作成します。 最初のパートは ​`Multipart::file()`​ 関数を使用して ​`orders.xml`​ という外部ファイルをインポートします。このファイルは、Mule アプリケーションの内部 ​`src/main/resources`​ フォルダーにあります。この例についての詳細は、​[file](https://docs.mulesoft.com/jp/dataweave/2.5/dw-multipart-functions-file)​ 関数のドキュメントを参照してください。 2 つ目のパートでは、項目名をキー/値ペアを含むオブジェクトの形式で入力パラメーターとして受け入れる ​`Multipart::field()`​ 関数のバージョンを使用して、キーを任意の順序で渡せるようにします。このパートでも省略可能な ​`fileName`​ パラメーターを指定しません。指定すると、​`fileName`​ はそのパートの ​`Content-Distribution`​ 要素に含まれます。​`mime`​ 項目も省略可能です。指定すると、この項目は ​`Content-Type`​ 要素を ​`mime`​ 値に設定します。この場合、​`Content-Type`​ は ​`text/plain`​ に設定されます。 3 つ目のパートではよりコンパクトなバージョンの ​`Multipart::field()`​ 関数を使用して必須および省略可能なパラメーターを正しい順序で入力パラメーターとして設定します。最初の 3 つのパラメーター ​`name`​、​`value`​、​`mime`​ は必須です。​`fileName`​ パラメーターは省略可能です。コンテンツをファイルから読み取る場合やファイルに書き込む場合にのみ使用します。このバージョンでは、​`mime`​ パラメーターは ​`Content-Type`​ 要素としての出力、​`fileName`​ は ​`Content-Distribution`​ 要素の ​`filename`​ パラメーターとしての出力になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrders = "./orders.xml" var fileArgs = { name: "file", path: myOrders, mime: "application/xml", fileName: "myorders.xml"} var fieldArgs = {name:"userName",value: "Annie Point", mime: "text/plain"} --- Multipart::form([ Multipart::file(fileArgs), Multipart::field(fieldArgs), Multipart::field("myJson", {"user": "Annie Point"}, "application/json", "userInfo.json") ]) ``` #### [](#出力)出力 ```json ------=_Part_146_143704079.1560394078604 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_146_143704079.1560394078604 Content-Type: text/plain Content-Disposition: form-data; name="userName" Annie Point ------=_Part_146_143704079.1560394078604 Content-Type: application/json Content-Disposition: form-data; name="myJson"; filename="userInfo.json" { "user": "Annie Point" } ------=_Part_146_143704079.1560394078604-- ``` ### [](#例-2)例 次の例は、​`multipart/form-data`​ 出力形式と互換性のある DataWeave コードを使用してデータ構造を作成し、どうすれば ​`form`​ 関数を使用することなく、​`multipart/form-data`​ 出力と互換性のあるデータ構造を手動で作成できるかを示しています。 次の構造では、パートキー ​`part1`​ と ​`part2`​ は ​`multipart/form-data`​ 出力から削除されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` # form ## [](#form1)form(parts: Array): Multipart 指定されたパートの配列を使用して ​`Multipart`​ データ構造を作成します。 ### [](#パラメーター)パラメーター
名前 説明

parts

パートの配列 (​MultipartPart​ データ構造)。

### [](#例)例 次の例では、3 つのパートを含む ​`Multipart`​ データ構造を作成します。 最初のパートは ​`Multipart::file()`​ 関数を使用して ​`orders.xml`​ という外部ファイルをインポートします。このファイルは、Mule アプリケーションの内部 ​`src/main/resources`​ フォルダーにあります。この例についての詳細は、​[file](https://docs.mulesoft.com/jp/dataweave/2.6/dw-multipart-functions-file)​ 関数のドキュメントを参照してください。 2 つ目のパートでは、項目名をキー/値ペアを含むオブジェクトの形式で入力パラメーターとして受け入れる ​`Multipart::field()`​ 関数のバージョンを使用して、キーを任意の順序で渡せるようにします。このパートでも省略可能な ​`fileName`​ パラメーターを指定しません。指定すると、​`fileName`​ はそのパートの ​`Content-Distribution`​ 要素に含まれます。​`mime`​ 項目も省略可能です。指定すると、この項目は ​`Content-Type`​ 要素を ​`mime`​ 値に設定します。この場合、​`Content-Type`​ は ​`text/plain`​ に設定されます。 3 つ目のパートではよりコンパクトなバージョンの ​`Multipart::field()`​ 関数を使用して必須および省略可能なパラメーターを正しい順序で入力パラメーターとして設定します。最初の 3 つのパラメーター ​`name`​、​`value`​、​`mime`​ は必須です。​`fileName`​ パラメーターは省略可能です。コンテンツをファイルから読み取る場合やファイルに書き込む場合にのみ使用します。このバージョンでは、​`mime`​ パラメーターは ​`Content-Type`​ 要素としての出力、​`fileName`​ は ​`Content-Distribution`​ 要素の ​`filename`​ パラメーターとしての出力になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrders = "./orders.xml" var fileArgs = { name: "file", path: myOrders, mime: "application/xml", fileName: "myorders.xml"} var fieldArgs = {name:"userName",value: "Annie Point", mime: "text/plain"} --- Multipart::form([ Multipart::file(fileArgs), Multipart::field(fieldArgs), Multipart::field("myJson", {"user": "Annie Point"}, "application/json", "userInfo.json") ]) ``` #### [](#出力)出力 ```json ------=_Part_146_143704079.1560394078604 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_146_143704079.1560394078604 Content-Type: text/plain Content-Disposition: form-data; name="userName" Annie Point ------=_Part_146_143704079.1560394078604 Content-Type: application/json Content-Disposition: form-data; name="myJson"; filename="userInfo.json" { "user": "Annie Point" } ------=_Part_146_143704079.1560394078604-- ``` ### [](#例-2)例 次の例は、​`multipart/form-data`​ 出力形式と互換性のある DataWeave コードを使用してデータ構造を作成し、どうすれば ​`form`​ 関数を使用することなく、​`multipart/form-data`​ 出力と互換性のあるデータ構造を手動で作成できるかを示しています。 次の構造では、パートキー ​`part1`​ と ​`part2`​ は ​`multipart/form-data`​ 出力から削除されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` # form ## [](#form1)form(parts: Array): Multipart 指定されたパートの配列を使用して ​`Multipart`​ データ構造を作成します。 ### [](#パラメーター)パラメーター
名前 説明

parts

パートの配列 (​MultipartPart​ データ構造)。

### [](#例)例 次の例では、3 つのパートを含む ​`Multipart`​ データ構造を作成します。 最初のパートは ​`Multipart::file()`​ 関数を使用して ​`orders.xml`​ という外部ファイルをインポートします。このファイルは、Mule アプリケーションの内部 ​`src/main/resources`​ フォルダーにあります。この例についての詳細は、​[file](https://docs.mulesoft.com/jp/dataweave/2.7/dw-multipart-functions-file)​ 関数のドキュメントを参照してください。 2 つ目のパートでは、項目名をキー/値ペアを含むオブジェクトの形式で入力パラメーターとして受け入れる ​`Multipart::field()`​ 関数のバージョンを使用して、キーを任意の順序で渡せるようにします。このパートでも省略可能な ​`fileName`​ パラメーターを指定しません。指定すると、​`fileName`​ はそのパートの ​`Content-Distribution`​ 要素に含まれます。​`mime`​ 項目も省略可能です。指定すると、この項目は ​`Content-Type`​ 要素を ​`mime`​ 値に設定します。この場合、​`Content-Type`​ は ​`text/plain`​ に設定されます。 3 つ目のパートではよりコンパクトなバージョンの ​`Multipart::field()`​ 関数を使用して必須および省略可能なパラメーターを正しい順序で入力パラメーターとして設定します。最初の 3 つのパラメーター ​`name`​、​`value`​、​`mime`​ は必須です。​`fileName`​ パラメーターは省略可能です。コンテンツをファイルから読み取る場合やファイルに書き込む場合にのみ使用します。このバージョンでは、​`mime`​ パラメーターは ​`Content-Type`​ 要素としての出力、​`fileName`​ は ​`Content-Distribution`​ 要素の ​`filename`​ パラメーターとしての出力になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrders = "./orders.xml" var fileArgs = { name: "file", path: myOrders, mime: "application/xml", fileName: "myorders.xml"} var fieldArgs = {name:"userName",value: "Annie Point", mime: "text/plain"} --- Multipart::form([ Multipart::file(fileArgs), Multipart::field(fieldArgs), Multipart::field("myJson", {"user": "Annie Point"}, "application/json", "userInfo.json") ]) ``` #### [](#出力)出力 ```json ------=_Part_146_143704079.1560394078604 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_146_143704079.1560394078604 Content-Type: text/plain Content-Disposition: form-data; name="userName" Annie Point ------=_Part_146_143704079.1560394078604 Content-Type: application/json Content-Disposition: form-data; name="myJson"; filename="userInfo.json" { "user": "Annie Point" } ------=_Part_146_143704079.1560394078604-- ``` ### [](#例-2)例 次の例は、​`multipart/form-data`​ 出力形式と互換性のある DataWeave コードを使用してデータ構造を作成し、どうすれば ​`form`​ 関数を使用することなく、​`multipart/form-data`​ 出力と互換性のあるデータ構造を手動で作成できるかを示しています。 次の構造では、パートキー ​`part1`​ と ​`part2`​ は ​`multipart/form-data`​ 出力から削除されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` # form ## [](#form1)form(parts: Array): Multipart 指定されたパートの配列を使用して ​`Multipart`​ データ構造を作成します。 ### [](#パラメーター)パラメーター
名前 説明

parts

パートの配列 (​MultipartPart​ データ構造)。

### [](#例)例 次の例では、3 つのパートを含む ​`Multipart`​ データ構造を作成します。 最初のパートは ​`Multipart::file()`​ 関数を使用して ​`orders.xml`​ という外部ファイルをインポートします。このファイルは、Mule アプリケーションの内部 ​`src/main/resources`​ フォルダーにあります。この例についての詳細は、​[file](https://docs.mulesoft.com/jp/dataweave/2.8/dw-multipart-functions-file)​ 関数のドキュメントを参照してください。 2 つ目のパートでは、項目名をキー/値ペアを含むオブジェクトの形式で入力パラメーターとして受け入れる ​`Multipart::field()`​ 関数のバージョンを使用して、キーを任意の順序で渡せるようにします。このパートでも省略可能な ​`fileName`​ パラメーターを指定しません。指定すると、​`fileName`​ はそのパートの ​`Content-Distribution`​ 要素に含まれます。​`mime`​ 項目も省略可能です。指定すると、この項目は ​`Content-Type`​ 要素を ​`mime`​ 値に設定します。この場合、​`Content-Type`​ は ​`text/plain`​ に設定されます。 3 つ目のパートではよりコンパクトなバージョンの ​`Multipart::field()`​ 関数を使用して必須および省略可能なパラメーターを正しい順序で入力パラメーターとして設定します。最初の 3 つのパラメーター ​`name`​、​`value`​、​`mime`​ は必須です。​`fileName`​ パラメーターは省略可能です。コンテンツをファイルから読み取る場合やファイルに書き込む場合にのみ使用します。このバージョンでは、​`mime`​ パラメーターは ​`Content-Type`​ 要素としての出力、​`fileName`​ は ​`Content-Distribution`​ 要素の ​`filename`​ パラメーターとしての出力になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myOrders = "./orders.xml" var fileArgs = { name: "file", path: myOrders, mime: "application/xml", fileName: "myorders.xml"} var fieldArgs = {name:"userName",value: "Annie Point", mime: "text/plain"} --- Multipart::form([ Multipart::file(fileArgs), Multipart::field(fieldArgs), Multipart::field("myJson", {"user": "Annie Point"}, "application/json", "userInfo.json") ]) ``` #### [](#出力)出力 ```json ------=_Part_146_143704079.1560394078604 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_146_143704079.1560394078604 Content-Type: text/plain Content-Disposition: form-data; name="userName" Annie Point ------=_Part_146_143704079.1560394078604 Content-Type: application/json Content-Disposition: form-data; name="myJson"; filename="userInfo.json" { "user": "Annie Point" } ------=_Part_146_143704079.1560394078604-- ``` ### [](#例-2)例 次の例は、​`multipart/form-data`​ 出力形式と互換性のある DataWeave コードを使用してデータ構造を作成し、どうすれば ​`form`​ 関数を使用することなく、​`multipart/form-data`​ 出力と互換性のあるデータ構造を手動で作成できるかを示しています。 次の構造では、パートキー ​`part1`​ と ​`part2`​ は ​`multipart/form-data`​ 出力から削除されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var firstPart = "content for my first part" var secondPart = "content for my second part" --- { parts: { part1: Multipart::field({name:"myFirstPart",value: firstPart}), part2: Multipart::field("mySecondPart", secondPart) } } ``` #### [](#出力-2)出力 ```txt ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="myFirstPart" content for my first part ------=_Part_320_1528378161.1542639222352 Content-Disposition: form-data; name="mySecondPart" content for my second part ------=_Part_320_1528378161.1542639222352-- ``` # fromBase64 ## [](#frombase641)fromBase64(String): Binary Base64 文字列をバイナリ値に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​base64String

変換する Base64 文字列。

### [](#例)例 次の例では、Base64 でエンコードされた文字列を入力してバイナリ値に変換します。次の例では、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.3/dw-binaries-functions-tobase64#toBase64-example)​ で画像から生成された Base64 文字列が ​`payload`​ に含まれていることを前提としています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBase64 from dw::core::Binaries output application/octet-stream --- fromBase64(payload) ``` #### [](#出力)出力 この関数の出力は、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.3/dw-binaries-functions-tobase64#toBase64-example)​ で生成された画像を表すバイナリ値です。 # fromBase64 ## [](#frombase641)fromBase64(base64String: String): Binary Base64 文字列をバイナリ値に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​base64String

変換する Base64 文字列。

### [](#例)例 次の例では、Base64 でエンコードされた文字列を入力してバイナリ値に変換します。次の例では、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.4/dw-binaries-functions-tobase64#toBase64-example)​ で画像から生成された Base64 文字列が ​`payload`​ に含まれていることを前提としています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBase64 from dw::core::Binaries output application/octet-stream --- fromBase64(payload) ``` # fromBase64 ## [](#frombase641)fromBase64(base64String: String): Binary Base64 文字列をバイナリ値に変換します。 ### [](#パラメーター)パラメーター
名前 説明

base64String

変換する Base64 文字列。

### [](#例)例 次の例では、Base64 でエンコードされた文字列を入力してバイナリ値に変換します。次の例では、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.5/dw-binaries-functions-tobase64#toBase64-example)​ で画像から生成された Base64 文字列が ​`payload`​ に含まれていることを前提としています。 この関数の出力は、例 [toBase64](https://docs.mulesoft.com/dataweave/latest/dw-binaries-functions-tobase64)​ で生成された画像を表すバイナリ値です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/octet-stream --- fromBase64(payload) ``` # fromBase64 ## [](#frombase641)fromBase64(base64String: String): Binary Base64 文字列をバイナリ値に変換します。 ### [](#パラメーター)パラメーター
名前 説明

base64String

変換する Base64 文字列。

### [](#例)例 次の例では、Base64 でエンコードされた文字列を入力してバイナリ値に変換します。次の例では、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.6/dw-binaries-functions-tobase64#toBase64-example)​ で画像から生成された Base64 文字列が ​`payload`​ に含まれていることを前提としています。 この関数の出力は、例 [toBase64](https://docs.mulesoft.com/dataweave/latest/dw-binaries-functions-tobase64)​ で生成された画像を表すバイナリ値です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/octet-stream --- fromBase64(payload) ``` # fromBase64 ## [](#frombase641)fromBase64(base64String: String): Binary Base64 文字列をバイナリ値に変換します。 ### [](#パラメーター)パラメーター
名前 説明

base64String

変換する Base64 文字列。

### [](#例)例 次の例では、Base64 でエンコードされた文字列を入力してバイナリ値に変換します。次の例では、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.7/dw-binaries-functions-tobase64#toBase64-example)​ で画像から生成された Base64 文字列が ​`payload`​ に含まれていることを前提としています。 この関数の出力は、例 [toBase64](https://docs.mulesoft.com/dataweave/latest/dw-binaries-functions-tobase64)​ で生成された画像を表すバイナリ値です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/octet-stream --- fromBase64(payload) ``` # fromBase64 ## [](#frombase641)fromBase64(base64String: String): Binary Base64 文字列をバイナリ値に変換します。 ### [](#パラメーター)パラメーター
名前 説明

base64String

変換する Base64 文字列。

### [](#例)例 次の例では、Base64 でエンコードされた文字列を入力してバイナリ値に変換します。次の例では、例 ​[toBase64](https://docs.mulesoft.com/jp/dataweave/2.8/dw-binaries-functions-tobase64#toBase64-example)​ で画像から生成された Base64 文字列が ​`payload`​ に含まれていることを前提としています。 この関数の出力は、例 [toBase64](https://docs.mulesoft.com/dataweave/latest/dw-binaries-functions-tobase64)​ で生成された画像を表すバイナリ値です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/octet-stream --- fromBase64(payload) ``` # fromBinary ## [](#frombinary1)fromBinary(String): Number 2 進数から 10 進数に変換します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​binaryText

​String​ で表される 2 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBinary from dw::core::Numbers output application/json --- { a: fromBinary("-10"), b: fromBinary("11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000"), c: fromBinary(0), d: fromBinary(null), e: fromBinary("100"), } ``` #### [](#出力)出力 ```JSON { "a": -2, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 4 } ``` ## [](#frombinary2)fromBinary(Null): Null `fromBinary`​ を null 値に使用できるようにするヘルパー関数。 # fromBinary ## [](#frombinary1)fromBinary(binaryText: String): Number 2 進数から 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​binaryText

​String​ で表される 2 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBinary from dw::core::Numbers output application/json --- { a: fromBinary("-10"), b: fromBinary("11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000"), c: fromBinary(0), d: fromBinary(null), e: fromBinary("100"), } ``` #### [](#出力)出力 ```JSON { "a": -2, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 4 } ``` ## [](#frombinary2)fromBinary(binaryText: Null): Null `fromBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # fromBinary ## [](#frombinary1)fromBinary(binaryText: String): Number 2 進数から 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

binaryText

String​ で表される 2 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBinary from dw::core::Numbers output application/json --- { a: fromBinary("-10"), b: fromBinary("11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000"), c: fromBinary(0), d: fromBinary(null), e: fromBinary("100"), } ``` #### [](#出力)出力 ```JSON { "a": -2, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 4 } ``` ## [](#frombinary2)fromBinary(binaryText: Null): Null `fromBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromBinary ## [](#frombinary1)fromBinary(binaryText: String): Number 2 進数から 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

binaryText

String​ で表される 2 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBinary from dw::core::Numbers output application/json --- { a: fromBinary("-10"), b: fromBinary("11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000"), c: fromBinary(0), d: fromBinary(null), e: fromBinary("100"), } ``` #### [](#出力)出力 ```JSON { "a": -2, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 4 } ``` ## [](#frombinary2)fromBinary(binaryText: Null): Null `fromBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromBinary ## [](#frombinary1)fromBinary(binaryText: String): Number 2 進数から 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

binaryText

String​ で表される 2 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBinary from dw::core::Numbers output application/json --- { a: fromBinary("-10"), b: fromBinary("11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000"), c: fromBinary(0), d: fromBinary(null), e: fromBinary("100"), } ``` #### [](#出力)出力 ```JSON { "a": -2, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 4 } ``` ## [](#frombinary2)fromBinary(binaryText: Null): Null `fromBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromBinary ## [](#frombinary1)fromBinary(binaryText: String): Number 2 進数から 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

binaryText

String​ で表される 2 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromBinary from dw::core::Numbers output application/json --- { a: fromBinary("-10"), b: fromBinary("11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000"), c: fromBinary(0), d: fromBinary(null), e: fromBinary("100"), } ``` #### [](#出力)出力 ```JSON { "a": -2, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 4 } ``` ## [](#frombinary2)fromBinary(binaryText: Null): Null `fromBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromCharCode ## [](#fromcharcode1)fromCharCode(Number): String 指定された Unicode に一致する文字を返します。 ### [](#パラメーター)パラメーター
名前 説明

​charCode

入力 Unicode (​Number​)。

### [](#例)例 次の例では、Unicode 番号 ​`117`​ を入力し、文字「u」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "fromCharCode" : fromCharCode(117) } ``` #### [](#出力)出力 ```JSON { "fromCharCode": "u" } ``` # fromCharCode ## [](#fromcharcode1)fromCharCode(charCode: Number): String 指定された Unicode に一致する文字を返します。 ### [](#パラメーター)パラメーター
名前 説明

​charCode

入力 Unicode (​Number​)。

### [](#例)例 次の例では、Unicode 番号 ​`117`​ を入力し、文字「u」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "fromCharCode" : fromCharCode(117) } ``` #### [](#出力)出力 ```JSON { "fromCharCode": "u" } ``` ## [](#fromcharcode2)fromCharCode(charCode: Null): Null `fromCharCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # fromCharCode ## [](#fromcharcode1)fromCharCode(charCode: Number): String 指定された Unicode に一致する文字を返します。 ### [](#パラメーター)パラメーター
名前 説明

charCode

入力 Unicode (​Number​)。

### [](#例)例 次の例では、Unicode 番号 ​`117`​ を入力し、文字「u」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "fromCharCode" : fromCharCode(117) } ``` #### [](#出力)出力 ```JSON { "fromCharCode": "u" } ``` ## [](#fromcharcode2)fromCharCode(charCode: Null): Null `fromCharCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # fromCharCode ## [](#fromcharcode1)fromCharCode(charCode: Number): String 指定された Unicode に一致する文字を返します。 ### [](#パラメーター)パラメーター
名前 説明

charCode

入力 Unicode (​Number​)。

### [](#例)例 次の例では、Unicode 番号 ​`117`​ を入力し、文字「u」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "fromCharCode" : fromCharCode(117) } ``` #### [](#出力)出力 ```JSON { "fromCharCode": "u" } ``` ## [](#fromcharcode2)fromCharCode(charCode: Null): Null `fromCharCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # fromCharCode ## [](#fromcharcode1)fromCharCode(charCode: Number): String 指定された Unicode に一致する文字を返します。 ### [](#パラメーター)パラメーター
名前 説明

charCode

入力 Unicode (​Number​)。

### [](#例)例 次の例では、Unicode 番号 ​`117`​ を入力し、文字「u」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "fromCharCode" : fromCharCode(117) } ``` #### [](#出力)出力 ```JSON { "fromCharCode": "u" } ``` ## [](#fromcharcode2)fromCharCode(charCode: Null): Null `fromCharCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # fromCharCode ## [](#fromcharcode1)fromCharCode(charCode: Number): String 指定された Unicode に一致する文字を返します。 ### [](#パラメーター)パラメーター
名前 説明

charCode

入力 Unicode (​Number​)。

### [](#例)例 次の例では、Unicode 番号 ​`117`​ を入力し、文字「u」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "fromCharCode" : fromCharCode(117) } ``` #### [](#出力)出力 ```JSON { "fromCharCode": "u" } ``` ## [](#fromcharcode2)fromCharCode(charCode: Null): Null `fromCharCode`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # fromHex ## [](#fromhex1)fromHex(String): Binary 16 進文字列をバイナリに変換します。 ### [](#パラメーター)パラメーター
名前 説明

​hexString

変換する 16 進文字列。

### [](#例)例 次の例では、16 進文字列を「Mule」に変換します。 返される型を見やすくするため、データは ​`application/dw`​ 形式で出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- { "hexToBinary": fromHex("4D756C65") } ``` #### [](#出力)出力 ```JSON { hexToBinary: "TXVsZQ==" as Binary {base: "64"} } ``` # fromHex ## [](#fromhex1)fromHex(String): Number 16 進数を 10 進数に変換します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​hexText

​String​ で表される 16 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromHex from dw::core::Numbers output application/json --- { a: fromHex("-1"), b: fromHex("3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000"), c: fromHex(0), d: fromHex(null), e: fromHex("f"), } ``` #### [](#出力)出力 ```JSON { "a": -1, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 15 } ``` ## [](#fromhex2)fromHex(Null): Null `fromHex`​ を null 値に使用できるようにするヘルパー関数。 # fromHex ## [](#fromhex1)fromHex(hexString: String): Binary 16 進文字列をバイナリに変換します。 ### [](#パラメーター)パラメーター
名前 説明

​hexString

変換する 16 進文字列。

### [](#例)例 次の例では、16 進文字列を「Mule」に変換します。 返される型を見やすくするため、データは ​`application/dw`​ 形式で出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- { "hexToBinary": fromHex("4D756C65") } ``` #### [](#出力)出力 ```JSON { hexToBinary: "TXVsZQ==" as Binary {base: "64"} } ``` # fromHex ## [](#fromhex1)fromHex(hexText: String): Number 16 進数を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​hexText

​String​ で表される 16 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromHex from dw::core::Numbers output application/json --- { a: fromHex("-1"), b: fromHex("3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000"), c: fromHex(0), d: fromHex(null), e: fromHex("f"), } ``` #### [](#出力)出力 ```JSON { "a": -1, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 15 } ``` ## [](#fromhex2)fromHex(hexText: Null): Null `fromHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # fromHex ## [](#fromhex1)fromHex(hexString: String): Binary 16 進文字列をバイナリに変換します。 ### [](#パラメーター)パラメーター
名前 説明

hexString

変換する 16 進文字列。

### [](#例)例 次の例では、16 進文字列を「Mule」に変換します。 返される型を見やすくするため、データは ​`application/dw`​ 形式で出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- { "hexToBinary": fromHex("4D756C65") } ``` #### [](#出力)出力 ```JSON { hexToBinary: "TXVsZQ==" as Binary {base: "64"} } ``` # fromHex ## [](#fromhex1)fromHex(hexText: String): Number 16 進数を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

hexText

String​ で表される 16 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromHex from dw::core::Numbers output application/json --- { a: fromHex("-1"), b: fromHex("3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000"), c: fromHex(0), d: fromHex(null), e: fromHex("f"), } ``` #### [](#出力)出力 ```JSON { "a": -1, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 15 } ``` ## [](#fromhex2)fromHex(hexText: Null): Null `fromHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromHex ## [](#fromhex1)fromHex(hexString: String): Binary 16 進文字列をバイナリに変換します。 ### [](#パラメーター)パラメーター
名前 説明

hexString

変換する 16 進文字列。

### [](#例)例 次の例では、16 進文字列を「Mule」に変換します。 返される型を見やすくするため、データは ​`application/dw`​ 形式で出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- { "hexToBinary": fromHex("4D756C65") } ``` #### [](#出力)出力 ```JSON { hexToBinary: "TXVsZQ==" as Binary {base: "64"} } ``` # fromHex ## [](#fromhex1)fromHex(hexText: String): Number 16 進数を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

hexText

String​ で表される 16 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromHex from dw::core::Numbers output application/json --- { a: fromHex("-1"), b: fromHex("3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000"), c: fromHex(0), d: fromHex(null), e: fromHex("f"), } ``` #### [](#出力)出力 ```JSON { "a": -1, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 15 } ``` ## [](#fromhex2)fromHex(hexText: Null): Null `fromHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromHex ## [](#fromhex1)fromHex(hexString: String): Binary 16 進文字列をバイナリに変換します。 ### [](#パラメーター)パラメーター
名前 説明

hexString

変換する 16 進文字列。

### [](#例)例 次の例では、16 進文字列を「Mule」に変換します。 返される型を見やすくするため、データは ​`application/dw`​ 形式で出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- { "hexToBinary": fromHex("4D756C65") } ``` #### [](#出力)出力 ```JSON { hexToBinary: "TXVsZQ==" as Binary {base: "64"} } ``` # fromHex ## [](#fromhex1)fromHex(hexText: String): Number 16 進数を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

hexText

String​ で表される 16 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromHex from dw::core::Numbers output application/json --- { a: fromHex("-1"), b: fromHex("3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000"), c: fromHex(0), d: fromHex(null), e: fromHex("f"), } ``` #### [](#出力)出力 ```JSON { "a": -1, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 15 } ``` ## [](#fromhex2)fromHex(hexText: Null): Null `fromHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromHex ## [](#fromhex1)fromHex(hexString: String): Binary 16 進文字列をバイナリに変換します。 ### [](#パラメーター)パラメーター
名前 説明

hexString

変換する 16 進文字列。

### [](#例)例 次の例では、16 進文字列を「Mule」に変換します。 返される型を見やすくするため、データは ​`application/dw`​ 形式で出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/dw --- { "hexToBinary": fromHex("4D756C65") } ``` #### [](#出力)出力 ```JSON { hexToBinary: "TXVsZQ==" as Binary {base: "64"} } ``` # fromHex ## [](#fromhex1)fromHex(hexText: String): Number 16 進数を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

hexText

String​ で表される 16 進数。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromHex from dw::core::Numbers output application/json --- { a: fromHex("-1"), b: fromHex("3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000"), c: fromHex(0), d: fromHex(null), e: fromHex("f"), } ``` #### [](#出力)出力 ```JSON { "a": -1, "b": 100000000000000000000000000000000000000000000000000000000000000, "c": 0, "d": null, "e": 15 } ``` ## [](#fromhex2)fromHex(hexText: Null): Null `fromHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # fromRadixNumber ## [](#fromradixnumber1)fromRadixNumber(String, Number): Number 指定された基数の数値を 10 進数に変換します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​numberText

数値テキスト。

​radix

基数。

### [](#例)例 次の例では、さまざまな入力での ​`fromRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromRadixNumber from dw::core::Numbers output application/json --- { a: fromRadixNumber("10", 2), b: fromRadixNumber("FF", 16) } ``` #### [](#出力)出力 ```JSON { "a": 2, "b": 255 } ``` # fromRadixNumber ## [](#fromradixnumber1)fromRadixNumber(numberStr: String, radix: Number): Number 指定された基数の数値を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​numberText

数値テキスト。

​radix

基数。

### [](#例)例 次の例では、さまざまな入力での ​`fromRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromRadixNumber from dw::core::Numbers output application/json --- { a: fromRadixNumber("10", 2), b: fromRadixNumber("FF", 16) } ``` #### [](#出力)出力 ```JSON { "a": 2, "b": 255 } ``` # fromRadixNumber ## [](#fromradixnumber1)fromRadixNumber(numberStr: String, radix: Number): Number 指定された基数の数値を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

numberText

数値テキスト。

radix

基数。

### [](#例)例 次の例では、さまざまな入力での ​`fromRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromRadixNumber from dw::core::Numbers output application/json --- { a: fromRadixNumber("10", 2), b: fromRadixNumber("FF", 16) } ``` #### [](#出力)出力 ```JSON { "a": 2, "b": 255 } ``` # fromRadixNumber ## [](#fromradixnumber1)fromRadixNumber(numberStr: String, radix: Number): Number 指定された基数の数値を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

numberText

数値テキスト。

radix

基数。

### [](#例)例 次の例では、さまざまな入力での ​`fromRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromRadixNumber from dw::core::Numbers output application/json --- { a: fromRadixNumber("10", 2), b: fromRadixNumber("FF", 16) } ``` #### [](#出力)出力 ```JSON { "a": 2, "b": 255 } ``` # fromRadixNumber ## [](#fromradixnumber1)fromRadixNumber(numberStr: String, radix: Number): Number 指定された基数の数値を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

numberText

数値テキスト。

radix

基数。

### [](#例)例 次の例では、さまざまな入力での ​`fromRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromRadixNumber from dw::core::Numbers output application/json --- { a: fromRadixNumber("10", 2), b: fromRadixNumber("FF", 16) } ``` #### [](#出力)出力 ```JSON { "a": 2, "b": 255 } ``` # fromRadixNumber ## [](#fromradixnumber1)fromRadixNumber(numberStr: String, radix: Number): Number 指定された基数の数値を 10 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

numberText

数値テキスト。

radix

基数。

### [](#例)例 次の例では、さまざまな入力での ​`fromRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import fromRadixNumber from dw::core::Numbers output application/json --- { a: fromRadixNumber("10", 2), b: fromRadixNumber("FF", 16) } ``` #### [](#出力)出力 ```JSON { "a": 2, "b": 255 } ``` # fromString ## [](#fromstring1)fromString(mimeType: String): Result MIME タイプの文字列値表現を ​`MimeType`​ に変換します。 _DataWeave バージョン 2.7.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

mimeType

String (文字列)

MimeType​ に変換する MIME タイプの文字列値。

### [](#例)例 次の例では、​`parameters`​ が含まれない MIME タイプの文字列値を ​`MimeType`​ 値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::module::Mime output application/json --- fromString("application/json") ``` #### [](#出力)出力 ```Json { "success": true, "result": { "type": "application", "subtype": "json", "parameters": {} } } ``` ### [](#例-2)例 次の例では、​`parameters`​ が含まれる MIME タイプの文字列値を ​`MimeType`​ 値に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::module::Mime output application/json --- fromString("multipart/form-data; boundary=the-boundary") ``` #### [](#出力-2)出力 ```Json { "success": true, "result": { "type": "multipart", "subtype": "form-data", "parameters": { "boundary": "the-boundary" } } } ``` ### [](#例-3)例 次の例では、無効な MIME タイプの文字列値を変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::module::Mime output application/json --- fromString("Invalid MIME type") ``` #### [](#出力-3)出力 ```Json { "success": false, "error": { "message": "Unable to find a sub type in `Invalid MIME type`." } } ``` # functionParamTypes ## [](#functionparamtypes1)functionParamTypes(Type): Array 特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionParamTypes`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionParamTypes(AFunction), b: functionParamTypes(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": [ { "paramType": "String", "optional": false }, { "paramType": "Number", "optional": false } ], "b": [ ] } ``` # functionParamTypes ## [](#functionparamtypes1)functionParamTypes(t: Type): Array 特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionParamTypes`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionParamTypes(AFunction), b: functionParamTypes(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": [ { "paramType": "String", "optional": false }, { "paramType": "Number", "optional": false } ], "b": [ ] } ``` # functionParamTypes ## [](#functionparamtypes1)functionParamTypes(t: Type): Array 特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionParamTypes`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionParamTypes(AFunction), b: functionParamTypes(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": [ { "paramType": "String", "optional": false }, { "paramType": "Number", "optional": false } ], "b": [ ] } ``` # functionParamTypes ## [](#functionparamtypes1)functionParamTypes(t: Type): Array 特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionParamTypes`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionParamTypes(AFunction), b: functionParamTypes(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": [ { "paramType": "String", "optional": false }, { "paramType": "Number", "optional": false } ], "b": [ ] } ``` # functionParamTypes ## [](#functionparamtypes1)functionParamTypes(t: Type): Array 特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionParamTypes`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionParamTypes(AFunction), b: functionParamTypes(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": [ { "paramType": "String", "optional": false }, { "paramType": "Number", "optional": false } ], "b": [ ] } ``` # functionParamTypes ## [](#functionparamtypes1)functionParamTypes(t: Type): Array 特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionParamTypes`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionParamTypes(AFunction), b: functionParamTypes(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": [ { "paramType": "String", "optional": false }, { "paramType": "Number", "optional": false } ], "b": [ ] } ``` # functionReturnType ## [](#functionreturntype1)functionReturnType(Type): Type | Null 関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionReturnType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionReturnType(AFunction), b: functionReturnType(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": "Number", "b": "Number" } ``` # functionReturnType ## [](#functionreturntype1)functionReturnType(t: Type): Type | Null 関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionReturnType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionReturnType(AFunction), b: functionReturnType(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": "Number", "b": "Number" } ``` # functionReturnType ## [](#functionreturntype1)functionReturnType(t: Type): Type | Null 関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionReturnType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionReturnType(AFunction), b: functionReturnType(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": "Number", "b": "Number" } ``` # functionReturnType ## [](#functionreturntype1)functionReturnType(t: Type): Type | Null 関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionReturnType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionReturnType(AFunction), b: functionReturnType(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": "Number", "b": "Number" } ``` # functionReturnType ## [](#functionreturntype1)functionReturnType(t: Type): Type | Null 関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionReturnType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionReturnType(AFunction), b: functionReturnType(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": "Number", "b": "Number" } ``` # functionReturnType ## [](#functionreturntype1)functionReturnType(t: Type): Type | Null 関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`functionReturnType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AFunction = (String, Number) -> Number type AFunction2 = () -> Number --- { a: functionReturnType(AFunction), b: functionReturnType(AFunction2) } ``` #### [](#出力)出力 ```Json { "a": "Number", "b": "Number" } ``` # generateBoundary ## [](#generateboundary1)generateBoundary(Number): String `Multipart`​ データ構造の境界を生成するためのヘルパー関数。 # generateBoundary ## [](#generateboundary1)generateBoundary(len: Number = 70): String `Multipart`​ データ構造の境界を生成するためのヘルパー関数。 # generateBoundary ## [](#generateboundary1)generateBoundary(len: Number = 70): String `Multipart`​ データ構造の境界を生成するためのヘルパー関数。 # generateBoundary ## [](#generateboundary1)generateBoundary(len: Number = 70): String `Multipart`​ データ構造の境界を生成するためのヘルパー関数。 # generateBoundary ## [](#generateboundary1)generateBoundary(len: Number = 70): String `Multipart`​ データ構造の境界を生成するためのヘルパー関数。 # generateBoundary ## [](#generateboundary1)generateBoundary(len: Number = 70): String `Multipart`​ データ構造の境界を生成するためのヘルパー関数。 # groupBy ## [](#groupby1)groupBy(Array, (item: T, index: Number) -> R): { (R): Array } 指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

​items

グループ化する配列。

​criteria

配列の項目をグループ化するための条件を提供する式。

### [](#例)例 次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["a","b","c"] groupBy (item, index) -> index ``` #### [](#出力)出力 ```JSON { "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] } ``` ### [](#例-2)例 次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myArray = [ { "name": "Foo", "language": "Java" }, { "name": "Bar", "language": "Scala" }, { "name": "FooBar", "language": "Java" } ] output application/json --- myArray groupBy (item) -> item.language ``` #### [](#出力-2)出力 ```JSON { "Scala": [ { "name": "Bar", "language": "Scala" } ], "Java": [ { "name": "Foo", "language": "Java" }, { "name": "FooBar", "language": "Java" } ] } ``` ### [](#例-3)例 次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 var myVar = { menu: { header: "Move Items", items: [ {"id": "internal"}, {"id": "left", "label": "Move Left"}, {"id": "right", "label": "Move Right"}, {"id": "up", "label": "Move Up"}, {"id": "down", "label": "Move Down"} ] }} output application/json --- (myVar.menu.items.*label groupBy "myLabels") ``` #### [](#出力-3)出力 ```JSON { "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] } ``` ## [](#groupby2)groupBy(​{ (K)?: V }, (value: V, key: K) -> R): { (R): { (K)?: V }​ } 入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。 ### [](#パラメーター-2)パラメーター
名前 説明

​object

グループ化するオブジェクトを含むオブジェクト。

​criteria

グループ化に使用するオブジェクトの ​key​ や ​value​ など、入力オブジェクト内の要素に適用するグループ化条件。

### [](#例-4)例 次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : "b", "c" : "d"} groupBy upper($) ``` #### [](#出力-4)出力 ```JSON { "D": { "c": "d" }, "B": { "a": "b" } } ``` ### [](#例-5)例 次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 var myRead = read("9.9910.99","application/xml") output application/json --- myRead.prices groupBy "costs" ``` #### [](#出力-5)出力 ```JSON { "costs" : { "price": "9.99", "price": "10.99" } } ``` ## [](#groupby3)groupBy(Null, (Nothing, Nothing) -> Any): Null `groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # groupBy ## [](#groupby1)groupBy(items: Array, criteria: (item: T, index: Number) -> R): { (R): Array } 指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

​items

グループ化する配列。

​criteria

配列の項目をグループ化するための条件を提供する式。

### [](#例)例 次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["a","b","c"] groupBy (item, index) -> index ``` #### [](#出力)出力 ```JSON { "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] } ``` ### [](#例-2)例 次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myArray = [ { "name": "Foo", "language": "Java" }, { "name": "Bar", "language": "Scala" }, { "name": "FooBar", "language": "Java" } ] output application/json --- myArray groupBy (item) -> item.language ``` #### [](#出力-2)出力 ```JSON { "Scala": [ { "name": "Bar", "language": "Scala" } ], "Java": [ { "name": "Foo", "language": "Java" }, { "name": "FooBar", "language": "Java" } ] } ``` ### [](#例-3)例 次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 var myVar = { menu: { header: "Move Items", items: [ {"id": "internal"}, {"id": "left", "label": "Move Left"}, {"id": "right", "label": "Move Right"}, {"id": "up", "label": "Move Up"}, {"id": "down", "label": "Move Down"} ] }} output application/json --- (myVar.menu.items.*label groupBy "myLabels") ``` #### [](#出力-3)出力 ```JSON { "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] } ``` ## [](#groupby2)groupBy(text: String, criteria: (character: String, index: Number) -> R): { (R): String } 指定された条件 (式や一致セレクターなど) に基づいて文字列の文字をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

グループ化する文字列。

​criteria

使用する条件。

### [](#例-4)例 次の例では、​`groupBy`​ を使用して文字列を母音と母音以外に分割する方法を示しています。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- "hello world!" groupBy (not isEmpty($ find /[aeiou]/)) ``` #### [](#出力-4)出力 ```Json { "false": "hll wrld!", "true": "eoo" } ``` ## [](#groupby3)groupBy(object: { (K)?: V }, criteria: (value: V, key: K) -> R): { (R): { (K)?: V }​ } 入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。 ### [](#パラメーター-3)パラメーター
名前 説明

​object

グループ化するオブジェクトを含むオブジェクト。

​criteria

グループ化に使用するオブジェクトの ​key​ や ​value​ など、入力オブジェクト内の要素に適用するグループ化条件。

### [](#例-5)例 次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : "b", "c" : "d"} groupBy upper($) ``` #### [](#出力-5)出力 ```JSON { "D": { "c": "d" }, "B": { "a": "b" } } ``` ### [](#例-6)例 次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myRead = read("9.9910.99","application/xml") output application/json --- myRead.prices groupBy "costs" ``` #### [](#出力-6)出力 ```JSON { "costs" : { "price": "9.99", "price": "10.99" } } ``` ## [](#groupby4)groupBy(value: Null, criteria: (Nothing, Nothing) -> Any): Null `groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # groupBy ## [](#groupby1)groupBy(items: Array, criteria: (item: T, index: Number) -> R): {| (R): Array |} 指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

グループ化する配列。

criteria

配列の項目をグループ化するための条件を提供する式。

### [](#例)例 次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["a","b","c"] groupBy (item, index) -> index ``` #### [](#出力)出力 ```JSON { "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] } ``` ### [](#例-2)例 次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myArray = [ { "name": "Foo", "language": "Java" }, { "name": "Bar", "language": "Scala" }, { "name": "FooBar", "language": "Java" } ] output application/json --- myArray groupBy (item) -> item.language ``` #### [](#出力-2)出力 ```JSON { "Scala": [ { "name": "Bar", "language": "Scala" } ], "Java": [ { "name": "Foo", "language": "Java" }, { "name": "FooBar", "language": "Java" } ] } ``` ### [](#例-3)例 次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 var myVar = { menu: { header: "Move Items", items: [ {"id": "internal"}, {"id": "left", "label": "Move Left"}, {"id": "right", "label": "Move Right"}, {"id": "up", "label": "Move Up"}, {"id": "down", "label": "Move Down"} ] }} output application/json --- (myVar.menu.items.*label groupBy "myLabels") ``` #### [](#出力-3)出力 ```JSON { "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] } ``` ## [](#groupby2)groupBy(text: String, criteria: (character: String, index: Number) -> R): { (R): String } 指定された条件 (式や一致セレクターなど) に基づいて文字列の文字をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

グループ化する文字列。

criteria

使用する条件。

### [](#例-4)例 次の例では、​`groupBy`​ を使用して文字列を母音と母音以外に分割する方法を示しています。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- "hello world!" groupBy (not isEmpty($ find /[aeiou]/)) ``` #### [](#出力-4)出力 ```Json { "false": "hll wrld!", "true": "eoo" } ``` ## [](#groupby3)groupBy(object: { (K)?: V }, criteria: (value: V, key: K) -> R): { (R): { (K)?: V } } 入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。 ### [](#パラメーター-3)パラメーター
名前 説明

object

グループ化するオブジェクトを含むオブジェクト。

criteria

グループ化に使用するオブジェクトの ​key​ や ​value​ など、入力オブジェクト内の要素に適用するグループ化条件。

### [](#例-5)例 次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : "b", "c" : "d"} groupBy upper($) ``` #### [](#出力-5)出力 ```JSON { "D": { "c": "d" }, "B": { "a": "b" } } ``` ### [](#例-6)例 次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myRead = read("9.9910.99","application/xml") output application/json --- myRead.prices groupBy "costs" ``` #### [](#出力-6)出力 ```JSON { "costs" : { "price": "9.99", "price": "10.99" } } ``` ## [](#groupby4)groupBy(value: Null, criteria: (Nothing, Nothing) -> Any): Null `groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # groupBy ## [](#groupby1)groupBy(items: Array, criteria: (item: T, index: Number) -> R): {| (R): Array |} 指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

グループ化する配列。

criteria

配列の項目をグループ化するための条件を提供する式。

### [](#例)例 次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["a","b","c"] groupBy (item, index) -> index ``` #### [](#出力)出力 ```JSON { "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] } ``` ### [](#例-2)例 次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myArray = [ { "name": "Foo", "language": "Java" }, { "name": "Bar", "language": "Scala" }, { "name": "FooBar", "language": "Java" } ] output application/json --- myArray groupBy (item) -> item.language ``` #### [](#出力-2)出力 ```JSON { "Scala": [ { "name": "Bar", "language": "Scala" } ], "Java": [ { "name": "Foo", "language": "Java" }, { "name": "FooBar", "language": "Java" } ] } ``` ### [](#例-3)例 次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 var myVar = { menu: { header: "Move Items", items: [ {"id": "internal"}, {"id": "left", "label": "Move Left"}, {"id": "right", "label": "Move Right"}, {"id": "up", "label": "Move Up"}, {"id": "down", "label": "Move Down"} ] }} output application/json --- (myVar.menu.items.*label groupBy "myLabels") ``` #### [](#出力-3)出力 ```JSON { "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] } ``` ## [](#groupby2)groupBy(text: String, criteria: (character: String, index: Number) -> R): { (R): String } 指定された条件 (式や一致セレクターなど) に基づいて文字列の文字をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

グループ化する文字列。

criteria

使用する条件。

### [](#例-4)例 次の例では、​`groupBy`​ を使用して文字列を母音と母音以外に分割する方法を示しています。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- "hello world!" groupBy (not isEmpty($ find /[aeiou]/)) ``` #### [](#出力-4)出力 ```Json { "false": "hll wrld!", "true": "eoo" } ``` ## [](#groupby3)groupBy(object: { (K)?: V }, criteria: (value: V, key: K) -> R): { (R): { (K)?: V } } 入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。 ### [](#パラメーター-3)パラメーター
名前 説明

object

グループ化するオブジェクトを含むオブジェクト。

criteria

グループ化に使用するオブジェクトの ​key​ や ​value​ など、入力オブジェクト内の要素に適用するグループ化条件。

### [](#例-5)例 次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : "b", "c" : "d"} groupBy upper($) ``` #### [](#出力-5)出力 ```JSON { "D": { "c": "d" }, "B": { "a": "b" } } ``` ### [](#例-6)例 次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myRead = read("9.9910.99","application/xml") output application/json --- myRead.prices groupBy "costs" ``` #### [](#出力-6)出力 ```JSON { "costs" : { "price": "9.99", "price": "10.99" } } ``` ## [](#groupby4)groupBy(value: Null, criteria: (Nothing, Nothing) -> Any): Null `groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # groupBy ## [](#groupby1)groupBy(items: Array, criteria: (item: T, index: Number) -> R): {| (R): Array |} 指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

グループ化する配列。

criteria

配列の項目をグループ化するための条件を提供する式。

### [](#例)例 次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["a","b","c"] groupBy (item, index) -> index ``` #### [](#出力)出力 ```JSON { "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] } ``` ### [](#例-2)例 次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myArray = [ { "name": "Foo", "language": "Java" }, { "name": "Bar", "language": "Scala" }, { "name": "FooBar", "language": "Java" } ] output application/json --- myArray groupBy (item) -> item.language ``` #### [](#出力-2)出力 ```JSON { "Scala": [ { "name": "Bar", "language": "Scala" } ], "Java": [ { "name": "Foo", "language": "Java" }, { "name": "FooBar", "language": "Java" } ] } ``` ### [](#例-3)例 次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 var myVar = { menu: { header: "Move Items", items: [ {"id": "internal"}, {"id": "left", "label": "Move Left"}, {"id": "right", "label": "Move Right"}, {"id": "up", "label": "Move Up"}, {"id": "down", "label": "Move Down"} ] }} output application/json --- (myVar.menu.items.*label groupBy "myLabels") ``` #### [](#出力-3)出力 ```JSON { "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] } ``` ## [](#groupby2)groupBy(text: String, criteria: (character: String, index: Number) -> R): { (R): String } 指定された条件 (式や一致セレクターなど) に基づいて文字列の文字をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

グループ化する文字列。

criteria

使用する条件。

### [](#例-4)例 次の例では、​`groupBy`​ を使用して文字列を母音と母音以外に分割する方法を示しています。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- "hello world!" groupBy (not isEmpty($ find /[aeiou]/)) ``` #### [](#出力-4)出力 ```Json { "false": "hll wrld!", "true": "eoo" } ``` ## [](#groupby3)groupBy(object: { (K)?: V }, criteria: (value: V, key: K) -> R): { (R): { (K)?: V } } 入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。 ### [](#パラメーター-3)パラメーター
名前 説明

object

グループ化するオブジェクトを含むオブジェクト。

criteria

グループ化に使用するオブジェクトの ​key​ や ​value​ など、入力オブジェクト内の要素に適用するグループ化条件。

### [](#例-5)例 次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : "b", "c" : "d"} groupBy upper($) ``` #### [](#出力-5)出力 ```JSON { "D": { "c": "d" }, "B": { "a": "b" } } ``` ### [](#例-6)例 次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myRead = read("9.9910.99","application/xml") output application/json --- myRead.prices groupBy "costs" ``` #### [](#出力-6)出力 ```JSON { "costs" : { "price": "9.99", "price": "10.99" } } ``` ## [](#groupby4)groupBy(value: Null, criteria: (Nothing, Nothing) -> Any): Null `groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # groupBy ## [](#groupby1)groupBy(items: Array, criteria: (item: T, index: Number) -> R): {| (R): Array |} 指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

items

グループ化する配列。

criteria

配列の項目をグループ化するための条件を提供する式。

### [](#例)例 次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["a","b","c"] groupBy (item, index) -> index ``` #### [](#出力)出力 ```JSON { "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] } ``` ### [](#例-2)例 次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myArray = [ { "name": "Foo", "language": "Java" }, { "name": "Bar", "language": "Scala" }, { "name": "FooBar", "language": "Java" } ] output application/json --- myArray groupBy (item) -> item.language ``` #### [](#出力-2)出力 ```JSON { "Scala": [ { "name": "Bar", "language": "Scala" } ], "Java": [ { "name": "Foo", "language": "Java" }, { "name": "FooBar", "language": "Java" } ] } ``` ### [](#例-3)例 次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 var myVar = { menu: { header: "Move Items", items: [ {"id": "internal"}, {"id": "left", "label": "Move Left"}, {"id": "right", "label": "Move Right"}, {"id": "up", "label": "Move Up"}, {"id": "down", "label": "Move Down"} ] }} output application/json --- (myVar.menu.items.*label groupBy "myLabels") ``` #### [](#出力-3)出力 ```JSON { "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] } ``` ## [](#groupby2)groupBy(text: String, criteria: (character: String, index: Number) -> R): { (R): String } 指定された条件 (式や一致セレクターなど) に基づいて文字列の文字をグループ化するオブジェクトを返します。 このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

グループ化する文字列。

criteria

使用する条件。

### [](#例-4)例 次の例では、​`groupBy`​ を使用して文字列を母音と母音以外に分割する方法を示しています。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- "hello world!" groupBy (not isEmpty($ find /[aeiou]/)) ``` #### [](#出力-4)出力 ```Json { "false": "hll wrld!", "true": "eoo" } ``` ## [](#groupby3)groupBy(object: { (K)?: V }, criteria: (value: V, key: K) -> R): { (R): { (K)?: V } } 入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。 ### [](#パラメーター-3)パラメーター
名前 説明

object

グループ化するオブジェクトを含むオブジェクト。

criteria

グループ化に使用するオブジェクトの ​key​ や ​value​ など、入力オブジェクト内の要素に適用するグループ化条件。

### [](#例-5)例 次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : "b", "c" : "d"} groupBy upper($) ``` #### [](#出力-5)出力 ```JSON { "D": { "c": "d" }, "B": { "a": "b" } } ``` ### [](#例-6)例 次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myRead = read("9.9910.99","application/xml") output application/json --- myRead.prices groupBy "costs" ``` #### [](#出力-6)出力 ```JSON { "costs" : { "price": "9.99", "price": "10.99" } } ``` ## [](#groupby4)groupBy(value: Null, criteria: (Nothing, Nothing) -> Any): Null `groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # hammingDistance ## [](#hammingdistance1)hammingDistance(a: String, b: String): Number | Null 2 つの文字列間のハミング距離を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​a

最初の文字列。

​b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`hammingDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import hammingDistance from dw::core::Strings output application/json --- "holu" hammingDistance "chau" ``` #### [](#出力)出力 ```Json 3 ``` # hammingDistance ## [](#hammingdistance1)hammingDistance(a: String, b: String): Number | Null 2 つの文字列間のハミング距離を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`hammingDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import hammingDistance from dw::core::Strings output application/json --- "holu" hammingDistance "chau" ``` #### [](#出力)出力 ```Json 3 ``` # hammingDistance ## [](#hammingdistance1)hammingDistance(a: String, b: String): Number | Null 2 つの文字列間のハミング距離を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`hammingDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import hammingDistance from dw::core::Strings output application/json --- "holu" hammingDistance "chau" ``` #### [](#出力)出力 ```Json 3 ``` # hammingDistance ## [](#hammingdistance1)hammingDistance(a: String, b: String): Number | Null 2 つの文字列間のハミング距離を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`hammingDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import hammingDistance from dw::core::Strings output application/json --- "holu" hammingDistance "chau" ``` #### [](#出力)出力 ```Json 3 ``` # hammingDistance ## [](#hammingdistance1)hammingDistance(a: String, b: String): Number | Null 2 つの文字列間のハミング距離を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`hammingDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import hammingDistance from dw::core::Strings output application/json --- "holu" hammingDistance "chau" ``` #### [](#出力)出力 ```Json 3 ``` # hashWith ## [](#hashwith1)hashWith(Binary, String): Binary 指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。 最初の引数はハッシュ値の計算に使用するバイナリコンテンツを指定し、2 つ目の引数は使用するハッシュアルゴリズムを指定します。2 つ目の引数は、使用可能なアルゴリズム名にする必要があります。
アルゴリズム名 説明

MD2

RFC 1319​ で定義される MD2 メッセージダイジェストアルゴリズム。

MD5

RFC 1321​ で定義される MD5 メッセージダイジェストアルゴリズム。

SHA-1​、​SHA-256​、​SHA-384​、​SHA-512

FIPS PUB 180-2​ で定義されるハッシュアルゴリズム。SHA-256 は衝突攻撃に対する 128 ビットのセキュリティを提供するための 256 ビットハッシュ関数で、SHA-512 は 256 ビットのセキュリティを提供するための 512 ビットハッシュ関数です。384 ビットハッシュは、SHA-512 の出力を切り捨てることによって取得できます。

### [](#パラメーター)パラメーター
名前 説明

​content

ハッシュするバイナリ入力コンテンツ。

​algorithm

​content​ のハッシュ値を計算するために使用するアルゴリズムの名前。この値は ​String​ です。デフォルトは ​SHA-1​ です。

### [](#例)例 次の例では、MD2 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md2" : Crypto::hashWith("hello" as Binary, "MD2") } ``` #### [](#出力)出力 ```JSON { "md2": "\ufffd\u0004ls\ufffd\u00031\ufffdh\ufffd}8\u0004\ufffd\u0006U" } ``` # hashWith ## [](#hashwith1)hashWith(content: Binary, algorithm: String = "SHA-1"): Binary 指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。 最初の引数はハッシュ値の計算に使用するバイナリコンテンツを指定し、2 つ目の引数は使用するハッシュアルゴリズムを指定します。2 つ目の引数は、使用可能なアルゴリズム名にする必要があります。
アルゴリズム名 説明

MD2

RFC 1319​ で定義される MD2 メッセージダイジェストアルゴリズム。

MD5

RFC 1321​ で定義される MD5 メッセージダイジェストアルゴリズム。

SHA-1​、​SHA-256​、​SHA-384​、​SHA-512

FIPS PUB 180-2​ で定義されるハッシュアルゴリズム。SHA-256 は衝突攻撃に対する 128 ビットのセキュリティを提供するための 256 ビットハッシュ関数で、SHA-512 は 256 ビットのセキュリティを提供するための 512 ビットハッシュ関数です。384 ビットハッシュは、SHA-512 の出力を切り捨てることによって取得できます。

### [](#パラメーター)パラメーター
名前 説明

​content

ハッシュするバイナリ入力値。

​algorithm

​content​ のハッシュ値を計算するために使用するアルゴリズムの名前。この値は文字列です。デフォルトは ​SHA-1​ です。

### [](#例)例 次の例では、MD2 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md2" : Crypto::hashWith("hello" as Binary, "MD2") } ``` #### [](#出力)出力 ```JSON { "md2": "\ufffd\u0004ls\ufffd\u00031\ufffdh\ufffd}8\u0004\ufffd\u0006U" } ``` # hashWith ## [](#hashwith1)hashWith(content: Binary, algorithm: String = "SHA-1"): Binary 指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。 最初の引数はハッシュ値の計算に使用するバイナリコンテンツを指定し、2 つ目の引数は使用するハッシュアルゴリズムを指定します。2 つ目の引数は、使用可能なアルゴリズム名にする必要があります。
アルゴリズム名 説明

MD2

RFC 1319​ で定義される MD2 メッセージダイジェストアルゴリズム。

MD5

RFC 1321​ で定義される MD5 メッセージダイジェストアルゴリズム。

SHA-1​、​SHA-256​、​SHA-384​、​SHA-512

FIPS PUB 180-2​ で定義されるハッシュアルゴリズム。SHA-256 は衝突攻撃に対する 128 ビットのセキュリティを提供するための 256 ビットハッシュ関数で、SHA-512 は 256 ビットのセキュリティを提供するための 512 ビットハッシュ関数です。384 ビットハッシュは、SHA-512 の出力を切り捨てることによって取得できます。

### [](#パラメーター)パラメーター
名前 説明

content

ハッシュするバイナリ入力値。

algorithm

content​ のハッシュ値を計算するために使用するアルゴリズムの名前。この値は文字列です。デフォルトは ​SHA-1​ です。

### [](#例)例 次の例では、MD2 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md2" : Crypto::hashWith("hello" as Binary, "MD2") } ``` #### [](#出力)出力 ```JSON { "md2": "\ufffd\u0004ls\ufffd\u00031\ufffdh\ufffd}8\u0004\ufffd\u0006U" } ``` # hashWith ## [](#hashwith1)hashWith(content: Binary, algorithm: String = "SHA-1"): Binary 指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。 最初の引数はハッシュ値の計算に使用するバイナリコンテンツを指定し、2 つ目の引数は使用するハッシュアルゴリズムを指定します。2 つ目の引数は、使用可能なアルゴリズム名にする必要があります。
アルゴリズム名 説明

MD2

RFC 1319​ で定義される MD2 メッセージダイジェストアルゴリズム。

MD5

RFC 1321​ で定義される MD5 メッセージダイジェストアルゴリズム。

SHA-1​、​SHA-256​、​SHA-384​、​SHA-512

FIPS PUB 180-2​ で定義されるハッシュアルゴリズム。SHA-256 は衝突攻撃に対する 128 ビットのセキュリティを提供するための 256 ビットハッシュ関数で、SHA-512 は 256 ビットのセキュリティを提供するための 512 ビットハッシュ関数です。384 ビットハッシュは、SHA-512 の出力を切り捨てることによって取得できます。

### [](#パラメーター)パラメーター
名前 説明

content

ハッシュするバイナリ入力値。

algorithm

content​ のハッシュ値を計算するために使用するアルゴリズムの名前。この値は文字列です。デフォルトは ​SHA-1​ です。

### [](#例)例 次の例では、MD2 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md2" : Crypto::hashWith("hello" as Binary, "MD2") } ``` #### [](#出力)出力 ```JSON { "md2": "\ufffd\u0004ls\ufffd\u00031\ufffdh\ufffd}8\u0004\ufffd\u0006U" } ``` # hashWith ## [](#hashwith1)hashWith(content: Binary, algorithm: String = "SHA-1"): Binary 指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。 最初の引数はハッシュ値の計算に使用するバイナリコンテンツを指定し、2 つ目の引数は使用するハッシュアルゴリズムを指定します。2 つ目の引数は、使用可能なアルゴリズム名にする必要があります。
アルゴリズム名 説明

MD2

RFC 1319​ で定義される MD2 メッセージダイジェストアルゴリズム。

MD5

RFC 1321​ で定義される MD5 メッセージダイジェストアルゴリズム。

SHA-1​、​SHA-256​、​SHA-384​、​SHA-512

FIPS PUB 180-2​ で定義されるハッシュアルゴリズム。SHA-256 は衝突攻撃に対する 128 ビットのセキュリティを提供するための 256 ビットハッシュ関数で、SHA-512 は 256 ビットのセキュリティを提供するための 512 ビットハッシュ関数です。384 ビットハッシュは、SHA-512 の出力を切り捨てることによって取得できます。

### [](#パラメーター)パラメーター
名前 説明

content

ハッシュするバイナリ入力値。

algorithm

content​ のハッシュ値を計算するために使用するアルゴリズムの名前。この値は文字列です。デフォルトは ​SHA-1​ です。

### [](#例)例 次の例では、MD2 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md2" : Crypto::hashWith("hello" as Binary, "MD2") } ``` #### [](#出力)出力 ```JSON { "md2": "\ufffd\u0004ls\ufffd\u00031\ufffdh\ufffd}8\u0004\ufffd\u0006U" } ``` # hashWith ## [](#hashwith1)hashWith(content: Binary, algorithm: String = "SHA-1"): Binary 指定されたアルゴリズムを使用してバイナリコンテンツのハッシュ値を計算します。 最初の引数はハッシュ値の計算に使用するバイナリコンテンツを指定し、2 つ目の引数は使用するハッシュアルゴリズムを指定します。2 つ目の引数は、使用可能なアルゴリズム名にする必要があります。
アルゴリズム名 説明

MD2

RFC 1319​ で定義される MD2 メッセージダイジェストアルゴリズム。

MD5

RFC 1321​ で定義される MD5 メッセージダイジェストアルゴリズム。

SHA-1​、​SHA-256​、​SHA-384​、​SHA-512

FIPS PUB 180-2​ で定義されるハッシュアルゴリズム。SHA-256 は衝突攻撃に対する 128 ビットのセキュリティを提供するための 256 ビットハッシュ関数で、SHA-512 は 256 ビットのセキュリティを提供するための 512 ビットハッシュ関数です。384 ビットハッシュは、SHA-512 の出力を切り捨てることによって取得できます。

### [](#パラメーター)パラメーター
名前 説明

content

ハッシュするバイナリ入力値。

algorithm

content​ のハッシュ値を計算するために使用するアルゴリズムの名前。この値は文字列です。デフォルトは ​SHA-1​ です。

### [](#例)例 次の例では、MD2 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md2" : Crypto::hashWith("hello" as Binary, "MD2") } ``` #### [](#出力)出力 ```JSON { "md2": "\ufffd\u0004ls\ufffd\u00031\ufffdh\ufffd}8\u0004\ufffd\u0006U" } ``` # HMACBinary ## [](#hmacbinary1)HMACBinary(Binary, Binary, String): Binary 入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。 `HMACWith`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​secret

​Binary​ を暗号化するときに使用される秘密暗号化キー (​content​)。

​content

入力コンテンツ。​Binary​ 値。

​algorithm

ハッシュアルゴリズム。​HmacSHA1​ がデフォルトです。有効な値は、使用している JDK バージョンによって異なります。JDK 8 および JDK 11 では、​HmacMD5​、​HmacSHA1​、​HmacSHA224​、​HmacSHA256​、​HmacSHA384​、​HmacSHA512​ が有効なアルゴリズムです。JDK 11 では、​HmacSHA512/224​ と ​HmacSHA512/256​ も有効です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACBinary" : Crypto::HMACBinary("confidential" as Binary, "xxxxx" as Binary, "HmacSHA512") } ``` #### [](#出力)出力 ```JSON { "HMACBinary": "^\tXƐ\f\ufffd\ufffd\ufffdӞ]\ufffdd\ufffd\ufffd\u001b\u0003\ufffd\tL\ufffd\ufffdr#\ufffd\ufffdc\ufffd\u001bl\ufffd-q\ufffd\u001bؐ+\ufffd\u001d*M\ufffdz\ufffd\u0012&\ufffd&\ufffd\ufffdd\ufffd\ufffd̷R\u0003qO\ufffdF" } ``` # HMACBinary ## [](#hmacbinary1)HMACBinary(secret: Binary, content: Binary, algorithm: String = "HmacSHA1"): Binary 入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。 `HMACWith`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​secret

​content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

​content

バイナリ入力値。

​algorithm

ハッシュアルゴリズム。​HmacSHA1​ がデフォルトです。有効な値は 使用している JDK バージョンに応じて異なります。JDK 8 および JDK 11 では、​HmacMD5​、​HmacSHA1​、​HmacSHA224​、​HmacSHA256​、​HmacSHA384​、​HmacSHA512​ が有効なアルゴリズムです。JDK 11 では、​HmacSHA512/224​ と ​HmacSHA512/256​ も有効です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACBinary" : Crypto::HMACBinary("confidential" as Binary, "xxxxx" as Binary, "HmacSHA512") } ``` #### [](#出力)出力 ```JSON { "HMACBinary": "\ufffd\ufffd\ufffd\ufffd^h\ufffd!3\u0005\ufffd֎\u00017\ufffd\ufffd\ufffd`\ufffd8?\ufffdjn7\ufffdbs;\t\ufffdƅ\ufffd\ufffd\ufffdx&g\ufffd~\ufffd\ufffd%\ufffd7>1\ufffdK\u000e@\ufffdC\u0011\ufffdT\ufffd}W" } ``` # HMACBinary ## [](#hmacbinary1)HMACBinary(secret: Binary, content: Binary, algorithm: String = "HmacSHA1"): Binary 入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。 `HMACWith`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

content

バイナリ入力値。

algorithm

ハッシュアルゴリズム。 HmacSHA1​ がデフォルトです。有効な値は、使用している JDK バージョンによって異なります。JDK 8 および JDK 11 では、​HmacMD5​、​HmacSHA1​、​HmacSHA224​、​HmacSHA256​、​HmacSHA384​、​HmacSHA512​ が有効なアルゴリズムです。JDK 11 では、​HmacSHA512/224​ と ​HmacSHA512/256​ も有効です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACBinary" : Crypto::HMACBinary("confidential" as Binary, "xxxxx" as Binary, "HmacSHA512") } ``` #### [](#出力)出力 ```JSON { "HMACBinary": "\ufffd\ufffd\ufffd\ufffd^h\ufffd!3\u0005\ufffd֎\u00017\ufffd\ufffd\ufffd`\ufffd8?\ufffdjn7\ufffdbs;\t\ufffdƅ\ufffd\ufffd\ufffdx&g\ufffd~\ufffd\ufffd%\ufffd7>1\ufffdK\u000e@\ufffdC\u0011\ufffdT\ufffd}W" } ``` # HMACBinary ## [](#hmacbinary1)HMACBinary(secret: Binary, content: Binary, algorithm: String = "HmacSHA1"): Binary 入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。 `HMACWith`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

content

バイナリ入力値。

algorithm

ハッシュアルゴリズム。 HmacSHA1​ がデフォルトです。有効な値は、使用している JDK バージョンによって異なります。JDK 8 および JDK 11 では、​HmacMD5​、​HmacSHA1​、​HmacSHA224​、​HmacSHA256​、​HmacSHA384​、​HmacSHA512​ が有効なアルゴリズムです。JDK 11 では、​HmacSHA512/224​ と ​HmacSHA512/256​ も有効です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACBinary" : Crypto::HMACBinary("confidential" as Binary, "xxxxx" as Binary, "HmacSHA512") } ``` #### [](#出力)出力 ```JSON { "HMACBinary": "\ufffd\ufffd\ufffd\ufffd^h\ufffd!3\u0005\ufffd֎\u00017\ufffd\ufffd\ufffd`\ufffd8?\ufffdjn7\ufffdbs;\t\ufffdƅ\ufffd\ufffd\ufffdx&g\ufffd~\ufffd\ufffd%\ufffd7>1\ufffdK\u000e@\ufffdC\u0011\ufffdT\ufffd}W" } ``` # HMACBinary ## [](#hmacbinary1)HMACBinary(secret: Binary, content: Binary, algorithm: String = "HmacSHA1"): Binary 入力コンテンツの HMAC ハッシュを計算します (秘密暗号化キーを使用)。 `HMACWith`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

content

バイナリ入力値。

algorithm

ハッシュアルゴリズム。 HmacSHA1​ がデフォルトです。有効な値は、使用している JDK バージョンによって異なります。JDK 8 および JDK 11 では、​HmacMD5​、​HmacSHA1​、​HmacSHA224​、​HmacSHA256​、​HmacSHA384​、​HmacSHA512​ が有効なアルゴリズムです。JDK 11 では、​HmacSHA512/224​ と ​HmacSHA512/256​ も有効です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACBinary" : Crypto::HMACBinary("confidential" as Binary, "xxxxx" as Binary, "HmacSHA512") } ``` #### [](#出力)出力 ```JSON { "HMACBinary": "\ufffd\ufffd\ufffd\ufffd^h\ufffd!3\u0005\ufffd֎\u00017\ufffd\ufffd\ufffd`\ufffd8?\ufffdjn7\ufffdbs;\t\ufffdƅ\ufffd\ufffd\ufffdx&g\ufffd~\ufffd\ufffd%\ufffd7>1\ufffdK\u000e@\ufffdC\u0011\ufffdT\ufffd}W" } ``` # HMACBinary ## [](#hmacbinary1)HMACBinary(secret: Binary, content: Binary, algorithm: String = "HmacSHA1"): Binary 入力コンテンツの HMAC ハッシュを計算します (秘密暗号化鍵を使用)。 `HMACWith`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化鍵 (バイナリ値)。

content

バイナリ入力値。

algorithm

ハッシュアルゴリズム。 HmacSHA1​ がデフォルトです。有効な値は、使用している JDK バージョンによって異なります。JDK 8 および JDK 11 では、​HmacMD5​、​HmacSHA1​、​HmacSHA224​、​HmacSHA256​、​HmacSHA384​、​HmacSHA512​ が有効なアルゴリズムです。JDK 11 では、​HmacSHA512/224​ と ​HmacSHA512/256​ も有効です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACBinary" : Crypto::HMACBinary("confidential" as Binary, "xxxxx" as Binary, "HmacSHA512") } ``` #### [](#出力)出力 ```JSON { "HMACBinary": "\ufffd\ufffd\ufffd\ufffd^h\ufffd!3\u0005\ufffd֎\u00017\ufffd\ufffd\ufffd`\ufffd8?\ufffdjn7\ufffdbs;\t\ufffdƅ\ufffd\ufffd\ufffdx&g\ufffd~\ufffd\ufffd%\ufffd7>1\ufffdK\u000e@\ufffdC\u0011\ufffdT\ufffd}W" } ``` # HMACWith ## [](#hmacwith1)HMACWith(Binary, Binary, String): String 入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。 `HMACBinary`​ も参照してください。 ### [](#パラメーター)パラメーター
Name (名前) 説明

​secret

​Binary​ を暗号化するときに使用される秘密暗号化キー (​content​)。

​content

入力コンテンツ。​Binary​ 値。

​algorithm

(​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​)ハッシュアルゴリズム。デフォルトでは、​HmacSHA1​ が使用されます。他の有効な値は、​HmacSHA256​ と ​HmacSHA512​ です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。アルゴリズムには ​`HmacSHA256`​ を使用します。 #### [](#取得元)取得元 ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACWith" : Crypto::HMACWith("secret_key" as Binary, "Some value to hash" as Binary, "HmacSHA256") } ``` #### [](#出力)出力 ```JSON { "HMACWith": "b51b4fe8c4e37304605753272b5b4321f9644a9b09cb1179d7016c25041d1747" } ``` # HMACWith ## [](#hmacwith1)HMACWith(secret: Binary, content: Binary, @Since(version= "2.2.0") algorithm: String = "HmacSHA1"): String 入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。 `HMACBinary`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​secret

​content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

​content

バイナリ入力値。

​algorithm

(​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​)ハッシュアルゴリズム。デフォルトでは、​HmacSHA1​ が使用されます。他の有効な値は、​HmacSHA256​ と ​HmacSHA512​ です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。アルゴリズムには ​`HmacSHA256`​ を使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACWith" : Crypto::HMACWith("secret_key" as Binary, "Some value to hash" as Binary, "HmacSHA256") } ``` #### [](#出力)出力 ```JSON { "HMACWith": "b51b4fe8c4e37304605753272b5b4321f9644a9b09cb1179d7016c25041d1747" } ``` # HMACWith ## [](#hmacwith1)HMACWith(secret: Binary, content: Binary, @Since(version = "2.2.0") algorithm: String = "HmacSHA1"): String 入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。 `HMACBinary`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

content

バイナリ入力値。

algorithm

(​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​) ハッシュアルゴリズム。デフォルトでは、​HmacSHA1​ が使用されます。他の有効な値は、​HmacSHA256​ と ​HmacSHA512​ です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。アルゴリズムには ​`HmacSHA256`​ を使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACWith" : Crypto::HMACWith("secret_key" as Binary, "Some value to hash" as Binary, "HmacSHA256") } ``` #### [](#出力)出力 ```JSON { "HMACWith": "b51b4fe8c4e37304605753272b5b4321f9644a9b09cb1179d7016c25041d1747" } ``` # HMACWith ## [](#hmacwith1)HMACWith(secret: Binary, content: Binary, @Since(version = "2.2.0") algorithm: String = "HmacSHA1"): String 入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。 `HMACBinary`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

content

バイナリ入力値。

algorithm

(​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​) ハッシュアルゴリズム。デフォルトでは、​HmacSHA1​ が使用されます。他の有効な値は、​HmacSHA256​ と ​HmacSHA512​ です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。アルゴリズムには ​`HmacSHA256`​ を使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACWith" : Crypto::HMACWith("secret_key" as Binary, "Some value to hash" as Binary, "HmacSHA256") } ``` #### [](#出力)出力 ```JSON { "HMACWith": "b51b4fe8c4e37304605753272b5b4321f9644a9b09cb1179d7016c25041d1747" } ``` # HMACWith ## [](#hmacwith1)HMACWith(secret: Binary, content: Binary, @Since(version = "2.2.0") algorithm: String = "HmacSHA1"): String 入力コンテンツの HMAC ハッシュを計算し (秘密暗号化キーを使用)、その結果を小文字の 16 進文字列に変換します。 `HMACBinary`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化キー (バイナリ値)。

content

バイナリ入力値。

algorithm

(​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​) ハッシュアルゴリズム。デフォルトでは、​HmacSHA1​ が使用されます。他の有効な値は、​HmacSHA256​ と ​HmacSHA512​ です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。アルゴリズムには ​`HmacSHA256`​ を使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACWith" : Crypto::HMACWith("secret_key" as Binary, "Some value to hash" as Binary, "HmacSHA256") } ``` #### [](#出力)出力 ```JSON { "HMACWith": "b51b4fe8c4e37304605753272b5b4321f9644a9b09cb1179d7016c25041d1747" } ``` # HMACWith ## [](#hmacwith1)HMACWith(secret: Binary, content: Binary, @Since(version = "2.2.0") algorithm: String = "HmacSHA1"): String 入力コンテンツの HMAC ハッシュを計算し (秘密暗号化鍵を使用)、その結果を小文字の 16 進文字列に変換します。 `HMACBinary`​ も参照してください。 ### [](#パラメーター)パラメーター
名前 説明

secret

content​ を暗号化するときに使用される秘密暗号化鍵 (バイナリ値)。

content

バイナリ入力値。

algorithm

(​DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。​) ハッシュアルゴリズム。デフォルトでは、​HmacSHA1​ が使用されます。他の有効な値は、​HmacSHA256​ と ​HmacSHA512​ です。

### [](#例)例 次の例では、HMAC と秘密値を使用して入力コンテンツを暗号化します。アルゴリズムには ​`HmacSHA256`​ を使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "HMACWith" : Crypto::HMACWith("secret_key" as Binary, "Some value to hash" as Binary, "HmacSHA256") } ``` #### [](#出力)出力 ```JSON { "HMACWith": "b51b4fe8c4e37304605753272b5b4321f9644a9b09cb1179d7016c25041d1747" } ``` # hours ## [](#hours1)hours(nHours: Number): Period 指定された時間数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​nHours

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`hours`​ の動作を示します。 DateTime (日時) 値および LocalTime (ローカル時刻) 値に対して時間数を加算および減算します。 また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4H33M18S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4H`​) にも変換します。 `hours(-1) + hours(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextHour: |2020-10-05T20:22:34.385Z| + hours(1), previousHour: |2020-10-05T20:22:34.385Z| - hours(1), threeHoursLater: |20:22| + hours(3), addDecimalInput: |20:22| + hours(3.5), decimalInputAsPeriod : hours(4.555), fourHourPeriod : hours(4), addNegativeValue: hours(-1) + hours(2) } ``` #### [](#出力)出力 ```Json { "nextHour": "2020-10-05T21:22:34.385Z", "previousHour": "2020-10-05T19:22:34.385Z", "threeHoursLater": "23:22:00", "addDecimalInput": "23:52:00", "decimalInputAsPeriod": "PT4H33M18S", "fourHourPeriod": "PT4H", "addNegativeValue": 3600 } ``` # hours ## [](#hours1)hours(nHours: Number): Period 指定された時間数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nHours

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`hours`​ の動作を示します。 DateTime (日時) 値および LocalTime (ローカル時刻) 値に対して時間数を加算および減算します。 また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4H33M18S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4H`​) にも変換します。 `hours(-1) + hours(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextHour: |2020-10-05T20:22:34.385Z| + hours(1), previousHour: |2020-10-05T20:22:34.385Z| - hours(1), threeHoursLater: |20:22| + hours(3), addDecimalInput: |20:22| + hours(3.5), decimalInputAsPeriod : hours(4.555), fourHourPeriod : hours(4), addNegativeValue: hours(-1) + hours(2) } ``` #### [](#出力)出力 ```Json { "nextHour": "2020-10-05T21:22:34.385Z", "previousHour": "2020-10-05T19:22:34.385Z", "threeHoursLater": "23:22:00", "addDecimalInput": "23:52:00", "decimalInputAsPeriod": "PT4H33M18S", "fourHourPeriod": "PT4H", "addNegativeValue": 3600 } ``` # hours ## [](#hours1)hours(nHours: Number): Period 指定された時間数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nHours

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`hours`​ の動作を示します。 DateTime (日時) 値および LocalTime (ローカル時刻) 値に対して時間数を加算および減算します。 また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4H33M18S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4H`​) にも変換します。 `hours(-1) + hours(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextHour: |2020-10-05T20:22:34.385Z| + hours(1), previousHour: |2020-10-05T20:22:34.385Z| - hours(1), threeHoursLater: |20:22| + hours(3), addDecimalInput: |20:22| + hours(3.5), decimalInputAsPeriod : hours(4.555), fourHourPeriod : hours(4), addNegativeValue: hours(-1) + hours(2) } ``` #### [](#出力)出力 ```Json { "nextHour": "2020-10-05T21:22:34.385Z", "previousHour": "2020-10-05T19:22:34.385Z", "threeHoursLater": "23:22:00", "addDecimalInput": "23:52:00", "decimalInputAsPeriod": "PT4H33M18S", "fourHourPeriod": "PT4H", "addNegativeValue": 3600 } ``` # hours ## [](#hours1)hours(nHours: Number): Period 指定された時間数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nHours

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`hours`​ の動作を示します。 DateTime (日時) 値および LocalTime (ローカル時刻) 値に対して時間数を加算および減算します。 また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4H33M18S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4H`​) にも変換します。 `hours(-1) + hours(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextHour: |2020-10-05T20:22:34.385Z| + hours(1), previousHour: |2020-10-05T20:22:34.385Z| - hours(1), threeHoursLater: |20:22| + hours(3), addDecimalInput: |20:22| + hours(3.5), decimalInputAsPeriod : hours(4.555), fourHourPeriod : hours(4), addNegativeValue: hours(-1) + hours(2) } ``` #### [](#出力)出力 ```Json { "nextHour": "2020-10-05T21:22:34.385Z", "previousHour": "2020-10-05T19:22:34.385Z", "threeHoursLater": "23:22:00", "addDecimalInput": "23:52:00", "decimalInputAsPeriod": "PT4H33M18S", "fourHourPeriod": "PT4H", "addNegativeValue": 3600 } ``` # hours ## [](#hours1)hours(nHours: Number): Period 指定された時間数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nHours

整数または小数としての時間数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`hours`​ の動作を示します。 DateTime (日時) 値および LocalTime (ローカル時刻) 値に対して時間数を加算および減算します。 また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4H33M18S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4H`​) にも変換します。 `hours(-1) + hours(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextHour: |2020-10-05T20:22:34.385Z| + hours(1), previousHour: |2020-10-05T20:22:34.385Z| - hours(1), threeHoursLater: |20:22| + hours(3), addDecimalInput: |20:22| + hours(3.5), decimalInputAsPeriod : hours(4.555), fourHourPeriod : hours(4), addNegativeValue: hours(-1) + hours(2) } ``` #### [](#出力)出力 ```Json { "nextHour": "2020-10-05T21:22:34.385Z", "previousHour": "2020-10-05T19:22:34.385Z", "threeHoursLater": "23:22:00", "addDecimalInput": "23:52:00", "decimalInputAsPeriod": "PT4H33M18S", "fourHourPeriod": "PT4H", "addNegativeValue": 3600 } ``` # index ## [](#index1)index(Number): PathElement この関数は、​_配列要素_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に、指定されたインデックスを入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

​index

インデックス。

### [](#例)例 次の例では、指定されたインデックスのセレクターを作成します。 セレクターの値を ​`0`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Array"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- index(0) ``` #### [](#出力)出力 ```Json { "kind": "Array", "namespace": null, "selector": 0 } ``` # index ## [](#index1)index(index: Number): PathElement この関数は、​_配列要素_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に、指定されたインデックスを入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​index

インデックス。

### [](#例)例 次の例では、指定されたインデックスのセレクターを作成します。 セレクターの値を ​`0`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Array"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- index(0) ``` #### [](#出力)出力 ```Json { "kind": "Array", "namespace": null, "selector": 0 } ``` # index ## [](#index1)index(index: Number): PathElement この関数は、​_配列要素_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に、指定されたインデックスを入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

index

インデックス。

### [](#例)例 次の例では、指定されたインデックスのセレクターを作成します。 セレクターの値を ​`0`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Array"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- index(0) ``` #### [](#出力)出力 ```Json { "kind": "Array", "namespace": null, "selector": 0 } ``` # index ## [](#index1)index(index: Number): PathElement この関数は、​_配列要素_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に、指定されたインデックスを入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

index

インデックス。

### [](#例)例 次の例では、指定されたインデックスのセレクターを作成します。 セレクターの値を ​`0`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Array"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- index(0) ``` #### [](#出力)出力 ```Json { "kind": "Array", "namespace": null, "selector": 0 } ``` # index ## [](#index1)index(index: Number): PathElement この関数は、​_配列要素_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に、指定されたインデックスを入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

index

インデックス。

### [](#例)例 次の例では、指定されたインデックスのセレクターを作成します。 セレクターの値を ​`0`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Array"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- index(0) ``` #### [](#出力)出力 ```Json { "kind": "Array", "namespace": null, "selector": 0 } ``` # index ## [](#index1)index(index: Number): PathElement この関数は、​_配列要素_​を選択するために使用する ​`PathElement`​ データ型を作成し、型の ​`selector`​ 項目に、指定されたインデックスを入力します。 `update`​ および ​`mask`​ 関数の一部のバージョンは、​`PathElement`​ を引数として受け入れます。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

index

インデックス。

### [](#例)例 次の例では、指定されたインデックスのセレクターを作成します。 セレクターの値を ​`0`​ に設定します。出力で ​`"kind"`​ キーの値が ​`"Array"`​ になっていることにも注意してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values ns ns0 http://acme.com/foo --- index(0) ``` #### [](#出力)出力 ```Json { "kind": "Array", "namespace": null, "selector": 0 } ``` # indexOf ## [](#indexof1)indexOf(Array, T): Number 配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​`-1`​ を返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​toFind

検索する要素。

### [](#例)例 次の例では、入力配列から、一致する値のインデックスを返します。 `"Julian"`​ のインデックスは ​`2`​ です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- indexOf(users, "Julian") ``` #### [](#出力)出力 ```json 2 ``` # indexOf ## [](#indexof1)indexOf(array: Array, toFind: T): Number 配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​toFind

検索する要素。

### [](#例)例 次の例では、入力配列から、一致する値のインデックスを返します。 `"Julian"`​ のインデックスは ​`2`​ です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- indexOf(users, "Julian") ``` #### [](#出力)出力 ```json 2 ``` # indexOf ## [](#indexof1)indexOf(array: Array, value: Any): Number この配列の指定された要素の​_最初_​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

検索する要素の配列。

​value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] indexOf "c", notPresent: ["x","w","x"] indexOf "c", presentMoreThanOnce: ["a","b","c","c"] indexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof2)indexOf(theString: String, search: String): Number この文字列の指定された文字列の​**最初**​の出現のインデックスを返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​theString

検索する文字列。

​search

​theString​ 内で検索する文字列。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" indexOf "c", notPresent: "xyz" indexOf "c", presentMoreThanOnce: "abcdc" indexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof3)indexOf(array: Null, value: Any): Number indexOf を null 対応にするためのヘルパーメソッド。 _DataWeave バージョン 2.4.0 で導入されました。_​ # indexOf ## [](#indexof1)indexOf(array: Array, toFind: T): Number 配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

toFind

検索する要素。

### [](#例)例 次の例では、入力配列から、一致する値のインデックスを返します。 `"Julian"`​ のインデックスは ​`2`​ です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- indexOf(users, "Julian") ``` #### [](#出力)出力 ```json 2 ``` # indexOf ## [](#indexof1)indexOf(array: Array, value: Any): Number この配列の指定された要素の​_最初_​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] indexOf "c", notPresent: ["x","w","x"] indexOf "c", presentMoreThanOnce: ["a","b","c","c"] indexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof2)indexOf(theString: String, search: String): Number この文字列の指定された文字列の​**最初**​の出現のインデックスを返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

theString

検索する文字列。

search

theString​ 内で検索する文字列。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" indexOf "c", notPresent: "xyz" indexOf "c", presentMoreThanOnce: "abcdc" indexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof3)indexOf(array: Null, value: Any): Number indexOf を null 対応にするためのヘルパーメソッド。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexOf ## [](#indexof1)indexOf(array: Array, toFind: T): Number 配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

toFind

検索する要素。

### [](#例)例 次の例では、入力配列から、一致する値のインデックスを返します。 `"Julian"`​ のインデックスは ​`2`​ です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- indexOf(users, "Julian") ``` #### [](#出力)出力 ```json 2 ``` # indexOf ## [](#indexof1)indexOf(array: Array, value: Any): Number この配列の指定された要素の​_最初_​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] indexOf "c", notPresent: ["x","w","x"] indexOf "c", presentMoreThanOnce: ["a","b","c","c"] indexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof2)indexOf(theString: String, search: String): Number この文字列の指定された文字列の​**最初**​の出現のインデックスを返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

theString

検索する文字列。

search

theString​ 内で検索する文字列。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" indexOf "c", notPresent: "xyz" indexOf "c", presentMoreThanOnce: "abcdc" indexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof3)indexOf(array: Null, value: Any): Number indexOf を null 対応にするためのヘルパーメソッド。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexOf ## [](#indexof1)indexOf(array: Array, toFind: T): Number 配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

toFind

検索する要素。

### [](#例)例 次の例では、入力配列から、一致する値のインデックスを返します。 `"Julian"`​ のインデックスは ​`2`​ です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- indexOf(users, "Julian") ``` #### [](#出力)出力 ```json 2 ``` # indexOf ## [](#indexof1)indexOf(array: Array, value: Any): Number この配列の指定された要素の​_最初_​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] indexOf "c", notPresent: ["x","w","x"] indexOf "c", presentMoreThanOnce: ["a","b","c","c"] indexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof2)indexOf(theString: String, search: String): Number この文字列の指定された文字列の​**最初**​の出現のインデックスを返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

theString

検索する文字列。

search

theString​ 内で検索する文字列。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" indexOf "c", notPresent: "xyz" indexOf "c", presentMoreThanOnce: "abcdc" indexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof3)indexOf(array: Null, value: Any): Number indexOf を null 対応にするためのヘルパーメソッド。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexOf ## [](#indexof1)indexOf(array: Array, toFind: T): Number 配列内で最初に出現する要素のインデックスを返します。値が見つからない場合、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

toFind

検索する要素。

### [](#例)例 次の例では、入力配列から、一致する値のインデックスを返します。 `"Julian"`​ のインデックスは ​`2`​ です。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- indexOf(users, "Julian") ``` #### [](#出力)出力 ```json 2 ``` # indexOf ## [](#indexof1)indexOf(array: Array, value: Any): Number この配列の指定された要素の​_最初_​の出現のインデックスを返し、このリストに要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] indexOf "c", notPresent: ["x","w","x"] indexOf "c", presentMoreThanOnce: ["a","b","c","c"] indexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof2)indexOf(theString: String, search: String): Number この文字列の指定された文字列の​**最初**​の出現のインデックスを返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

theString

検索する文字列。

search

theString​ 内で検索する文字列。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" indexOf "c", notPresent: "xyz" indexOf "c", presentMoreThanOnce: "abcdc" indexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 2 } ``` ## [](#indexof3)indexOf(array: Null, value: Any): Number indexOf を null 対応にするためのヘルパーメソッド。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexWhere ## [](#indexwhere1)indexWhere(Array, (item: T) -> Boolean): Number 配列内で条件に一致する最初に出現する要素のインデックスを返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列からラムダ式の条件 (​`(item) → item startsWith "Jul"`​) に一致する値のインデックスを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users indexWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json 2 ``` # indexWhere ## [](#indexwhere1)indexWhere(array: Array, condition: (item: T) -> Boolean): Number 配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列からラムダ式の条件 (​`(item) → item startsWith "Jul"`​) に一致する値のインデックスを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users indexWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json 2 ``` ## [](#indexwhere2)indexWhere(array: Null, condition: (item: Nothing) -> Any): Null `indexWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # indexWhere ## [](#indexwhere1)indexWhere(array: Array, condition: (item: T) -> Boolean): Number 配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列からラムダ式の条件 (​`(item) → item startsWith "Jul"`​) に一致する値のインデックスを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users indexWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json 2 ``` ## [](#indexwhere2)indexWhere(array: Null, condition: (item: Nothing) -> Any): Null `indexWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexWhere ## [](#indexwhere1)indexWhere(array: Array, condition: (item: T) -> Boolean): Number 配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列からラムダ式の条件 (​`(item) → item startsWith "Jul"`​) に一致する値のインデックスを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users indexWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json 2 ``` ## [](#indexwhere2)indexWhere(array: Null, condition: (item: Nothing) -> Any): Null `indexWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexWhere ## [](#indexwhere1)indexWhere(array: Array, condition: (item: T) -> Boolean): Number 配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列からラムダ式の条件 (​`(item) → item startsWith "Jul"`​) に一致する値のインデックスを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users indexWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json 2 ``` ## [](#indexwhere2)indexWhere(array: Null, condition: (item: Nothing) -> Any): Null `indexWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # indexWhere ## [](#indexwhere1)indexWhere(array: Array, condition: (item: T) -> Boolean): Number 配列内で条件に一致する最初に出現する要素のインデックスを返します。条件を満たす要素がない場合は、​`-1`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列からラムダ式の条件 (​`(item) → item startsWith "Jul"`​) に一致する値のインデックスを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users indexWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json 2 ``` ## [](#indexwhere2)indexWhere(array: Null, condition: (item: Nothing) -> Any): Null `indexWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # intersectionItems ## [](#intersectionitems1)intersectionItems(Type): Array 特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`intersectionItems`​ の動作を示します。 `AType`​ 変数は、2 つのオブジェクト間の ​`&`​ を使用して Intersection (交差) 型 ​`{name: String} & {age: Number}`​ を定義します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: intersectionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["Object","Object"] } ``` # intersectionItems ## [](#intersectionitems1)intersectionItems(t: Type): Array 特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`intersectionItems`​ の動作を示します。 `AType`​ 変数は、2 つのオブジェクト間の ​`&`​ を使用して Intersection (交差) 型 ​`{name: String} & {age: Number}`​ を定義します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: intersectionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["Object","Object"] } ``` # intersectionItems ## [](#intersectionitems1)intersectionItems(t: Type): Array 特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`intersectionItems`​ の動作を示します。 `AType`​ 変数は、2 つのオブジェクト間の ​`&`​ を使用して Intersection (交差) 型 ​`{name: String} & {age: Number}`​ を定義します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: intersectionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["Object","Object"] } ``` # intersectionItems ## [](#intersectionitems1)intersectionItems(t: Type): Array 特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`intersectionItems`​ の動作を示します。 `AType`​ 変数は、2 つのオブジェクト間の ​`&`​ を使用して Intersection (交差) 型 ​`{name: String} & {age: Number}`​ を定義します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: intersectionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["Object","Object"] } ``` # intersectionItems ## [](#intersectionitems1)intersectionItems(t: Type): Array 特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`intersectionItems`​ の動作を示します。 `AType`​ 変数は、2 つのオブジェクト間の ​`&`​ を使用して Intersection (交差) 型 ​`{name: String} & {age: Number}`​ を定義します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: intersectionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["Object","Object"] } ``` # intersectionItems ## [](#intersectionitems1)intersectionItems(t: Type): Array 特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`intersectionItems`​ の動作を示します。 `AType`​ 変数は、2 つのオブジェクト間の ​`&`​ を使用して Intersection (交差) 型 ​`{name: String} & {age: Number}`​ を定義します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: intersectionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["Object","Object"] } ``` # isAlpha ## [](#isalpha1)isAlpha(String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​`false`​ が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlpha from dw::core::Strings output application/json --- { "a": isAlpha(null), "b": isAlpha(""), "c": isAlpha(" "), "d": isAlpha("abc"), "e": isAlpha("ab2c"), "f": isAlpha("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false } ``` ## [](#isalpha2)isAlpha(Null): Boolean `isAlpha`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # isAlpha ## [](#isalpha1)isAlpha(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​`false`​ が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlpha`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlpha from dw::core::Strings output application/json --- { "a": isAlpha(null), "b": isAlpha(""), "c": isAlpha(" "), "d": isAlpha("abc"), "e": isAlpha("ab2c"), "f": isAlpha("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false } ``` ## [](#isalpha2)isAlpha(text: Null): Boolean `isAlpha`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # isAlpha ## [](#isalpha1)isAlpha(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​`false`​ が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlpha`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlpha from dw::core::Strings output application/json --- { "a": isAlpha(null), "b": isAlpha(""), "c": isAlpha(" "), "d": isAlpha("abc"), "e": isAlpha("ab2c"), "f": isAlpha("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false } ``` ## [](#isalpha2)isAlpha(text: Null): Boolean `isAlpha`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlpha ## [](#isalpha1)isAlpha(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​`false`​ が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlpha`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlpha from dw::core::Strings output application/json --- { "a": isAlpha(null), "b": isAlpha(""), "c": isAlpha(" "), "d": isAlpha("abc"), "e": isAlpha("ab2c"), "f": isAlpha("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false } ``` ## [](#isalpha2)isAlpha(text: Null): Boolean `isAlpha`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlpha ## [](#isalpha1)isAlpha(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​`false`​ が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlpha`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlpha from dw::core::Strings output application/json --- { "a": isAlpha(null), "b": isAlpha(""), "c": isAlpha(" "), "d": isAlpha("abc"), "e": isAlpha("ab2c"), "f": isAlpha("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false } ``` ## [](#isalpha2)isAlpha(text: Null): Boolean `isAlpha`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlpha ## [](#isalpha1)isAlpha(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​`false`​ が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlpha`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlpha from dw::core::Strings output application/json --- { "a": isAlpha(null), "b": isAlpha(""), "c": isAlpha(" "), "d": isAlpha("abc"), "e": isAlpha("ab2c"), "f": isAlpha("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false } ``` ## [](#isalpha2)isAlpha(text: Null): Boolean `isAlpha`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlphanumeric ## [](#isalphanumeric1)isAlphanumeric(String): Boolean `text`​ に Unicode 文字または数字のみが含まれるかどうかを確認します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlphanumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlphanumeric from dw::core::Strings output application/json --- { "a": isAlphanumeric(null), "b": isAlphanumeric(""), "c": isAlphanumeric(" "), "d": isAlphanumeric("abc"), "e": isAlphanumeric("ab c"), "f": isAlphanumeric("ab2c"), "g": isAlphanumeric("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": true, "g": false } ``` ## [](#isalphanumeric2)isAlphanumeric(Null): Boolean `isAlphanumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # isAlphanumeric ## [](#isalphanumeric1)isAlphanumeric(text: String): Boolean `text`​ に Unicode 文字または数字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlphanumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlphanumeric from dw::core::Strings output application/json --- { "a": isAlphanumeric(null), "b": isAlphanumeric(""), "c": isAlphanumeric(" "), "d": isAlphanumeric("abc"), "e": isAlphanumeric("ab c"), "f": isAlphanumeric("ab2c"), "g": isAlphanumeric("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": true, "g": false } ``` ## [](#isalphanumeric2)isAlphanumeric(text: Null): Boolean `isAlphanumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # isAlphanumeric ## [](#isalphanumeric1)isAlphanumeric(text: String): Boolean `text`​ に Unicode 文字または数字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlphanumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlphanumeric from dw::core::Strings output application/json --- { "a": isAlphanumeric(null), "b": isAlphanumeric(""), "c": isAlphanumeric(" "), "d": isAlphanumeric("abc"), "e": isAlphanumeric("ab c"), "f": isAlphanumeric("ab2c"), "g": isAlphanumeric("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": true, "g": false } ``` ## [](#isalphanumeric2)isAlphanumeric(text: Null): Boolean `isAlphanumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlphanumeric ## [](#isalphanumeric1)isAlphanumeric(text: String): Boolean `text`​ に Unicode 文字または数字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlphanumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlphanumeric from dw::core::Strings output application/json --- { "a": isAlphanumeric(null), "b": isAlphanumeric(""), "c": isAlphanumeric(" "), "d": isAlphanumeric("abc"), "e": isAlphanumeric("ab c"), "f": isAlphanumeric("ab2c"), "g": isAlphanumeric("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": true, "g": false } ``` ## [](#isalphanumeric2)isAlphanumeric(text: Null): Boolean `isAlphanumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlphanumeric ## [](#isalphanumeric1)isAlphanumeric(text: String): Boolean `text`​ に Unicode 文字または数字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlphanumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlphanumeric from dw::core::Strings output application/json --- { "a": isAlphanumeric(null), "b": isAlphanumeric(""), "c": isAlphanumeric(" "), "d": isAlphanumeric("abc"), "e": isAlphanumeric("ab c"), "f": isAlphanumeric("ab2c"), "g": isAlphanumeric("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": true, "g": false } ``` ## [](#isalphanumeric2)isAlphanumeric(text: Null): Boolean `isAlphanumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAlphanumeric ## [](#isalphanumeric1)isAlphanumeric(text: String): Boolean `text`​ に Unicode 文字または数字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isAlphanumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isAlphanumeric from dw::core::Strings output application/json --- { "a": isAlphanumeric(null), "b": isAlphanumeric(""), "c": isAlphanumeric(" "), "d": isAlphanumeric("abc"), "e": isAlphanumeric("ab c"), "f": isAlphanumeric("ab2c"), "g": isAlphanumeric("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": true, "g": false } ``` ## [](#isalphanumeric2)isAlphanumeric(text: Null): Boolean `isAlphanumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isAnyType ## [](#isanytype1)isAnyType(Type): Boolean 入力が Any (任意) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isAnyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AAny = Any output application/json --- { a: isAnyType(AAny), b: isAnyType(Any), c: isAnyType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isAnyType ## [](#isanytype1)isAnyType(t: Type): Boolean 入力が Any (任意) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isAnyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AAny = Any output application/json --- { a: isAnyType(AAny), b: isAnyType(Any), c: isAnyType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isAnyType ## [](#isanytype1)isAnyType(t: Type): Boolean 入力が Any (任意) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isAnyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AAny = Any output application/json --- { a: isAnyType(AAny), b: isAnyType(Any), c: isAnyType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isAnyType ## [](#isanytype1)isAnyType(t: Type): Boolean 入力が Any (任意) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isAnyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AAny = Any output application/json --- { a: isAnyType(AAny), b: isAnyType(Any), c: isAnyType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isAnyType ## [](#isanytype1)isAnyType(t: Type): Boolean 入力が Any (任意) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isAnyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AAny = Any output application/json --- { a: isAnyType(AAny), b: isAnyType(Any), c: isAnyType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isAnyType ## [](#isanytype1)isAnyType(t: Type): Boolean 入力が Any (任意) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isAnyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AAny = Any output application/json --- { a: isAnyType(AAny), b: isAnyType(Any), c: isAnyType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isArrayType ## [](#isarraytype1)isArrayType(Type): Boolean 入力種別が Array (配列) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Array output application/json --- { a: isArrayType(AType), b: isArrayType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isArrayType ## [](#isarraytype1)isArrayType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ARRAY_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: 0, namespace: null}]), c: isArrayType([{kind: ARRAY_TYPE, selector: 0, namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isArrayType ## [](#isarraytype1)isArrayType(t: Type): Boolean 入力種別が Array (配列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Array output application/json --- { a: isArrayType(AType), b: isArrayType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isArrayType ## [](#isarraytype1)isArrayType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ARRAY_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: 0, namespace: null}]), c: isArrayType([{kind: ARRAY_TYPE, selector: 0, namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isArrayType ## [](#isarraytype1)isArrayType(t: Type): Boolean 入力種別が Array (配列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Array output application/json --- { a: isArrayType(AType), b: isArrayType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isArrayType ## [](#isarraytype1)isArrayType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ARRAY_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: 0, namespace: null}]), c: isArrayType([{kind: ARRAY_TYPE, selector: 0, namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isArrayType ## [](#isarraytype1)isArrayType(t: Type): Boolean 入力種別が Array (配列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Array output application/json --- { a: isArrayType(AType), b: isArrayType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isArrayType ## [](#isarraytype1)isArrayType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ARRAY_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: 0, namespace: null}]), c: isArrayType([{kind: ARRAY_TYPE, selector: 0, namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isArrayType ## [](#isarraytype1)isArrayType(t: Type): Boolean 入力種別が Array (配列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Array output application/json --- { a: isArrayType(AType), b: isArrayType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isArrayType ## [](#isarraytype1)isArrayType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ARRAY_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isArrayType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: 0, namespace: null}]), c: isArrayType([{kind: ARRAY_TYPE, selector: 0, namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isArrayType ## [](#isarraytype1)isArrayType(t: Type): Boolean 入力種別が Array (配列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isArrayType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Array output application/json --- { a: isArrayType(AType), b: isArrayType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isAttributeType ## [](#isattributetype1)isAttributeType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ATTRIBUTE_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isAttributeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: "name", namespace: null}]), c: isAttributeType([{kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": true } ``` # isAttributeType ## [](#isattributetype1)isAttributeType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ATTRIBUTE_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isAttributeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: "name", namespace: null}]), c: isAttributeType([{kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": true } ``` # isAttributeType ## [](#isattributetype1)isAttributeType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ATTRIBUTE_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isAttributeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: "name", namespace: null}]), c: isAttributeType([{kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": true } ``` # isAttributeType ## [](#isattributetype1)isAttributeType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ATTRIBUTE_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isAttributeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: "name", namespace: null}]), c: isAttributeType([{kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": true } ``` # isAttributeType ## [](#isattributetype1)isAttributeType(path: Path): Boolean 指定された ​`Path`​ 値が ​`ATTRIBUTE_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isAttributeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isAttributeType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ARRAY_TYPE, selector: "name", namespace: null}]), c: isAttributeType([{kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": true } ``` # isBinaryType ## [](#isbinarytype1)isBinaryType(Type): Boolean 入力が Binary (バイナリ) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBinaryType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABinary = Binary output application/json --- { a: isBinaryType(ABinary), b: isBinaryType(Binary), c: isBinaryType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBinaryType ## [](#isbinarytype1)isBinaryType(t: Type): Boolean 入力が Binary (バイナリ) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBinaryType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABinary = Binary output application/json --- { a: isBinaryType(ABinary), b: isBinaryType(Binary), c: isBinaryType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBinaryType ## [](#isbinarytype1)isBinaryType(t: Type): Boolean 入力が Binary (バイナリ) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBinaryType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABinary = Binary output application/json --- { a: isBinaryType(ABinary), b: isBinaryType(Binary), c: isBinaryType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBinaryType ## [](#isbinarytype1)isBinaryType(t: Type): Boolean 入力が Binary (バイナリ) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBinaryType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABinary = Binary output application/json --- { a: isBinaryType(ABinary), b: isBinaryType(Binary), c: isBinaryType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBinaryType ## [](#isbinarytype1)isBinaryType(t: Type): Boolean 入力が Binary (バイナリ) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBinaryType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABinary = Binary output application/json --- { a: isBinaryType(ABinary), b: isBinaryType(Binary), c: isBinaryType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBinaryType ## [](#isbinarytype1)isBinaryType(t: Type): Boolean 入力が Binary (バイナリ) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBinaryType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABinary = Binary output application/json --- { a: isBinaryType(ABinary), b: isBinaryType(Binary), c: isBinaryType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBlank ## [](#isblank1)isBlank(String | Null): Boolean 特定の文字列が空 (​`""`​) か、完全に空白で構成されているか、​`null`​ の場合は、​`true`​ を返します。それ以外の場合、関数は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

評価する入力文字列。

### [](#例)例 次の例では、特定の値が空白かどうかを示します。また、​`not`​ および ​`!`​ 演算子を使用して、値が空白でないことを確認します。 `!`​ 演算子は Dataweave 2.2.0 からサポートされるようになりました。​`!`​ は、Mule 4.2 以降のバージョンでのみ使用してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var someString = "something" var nullString = null --- { // checking if the string is blank "emptyString" : isBlank(""), "stringWithSpaces" : isBlank(" "), "textString" : isBlank(someString), "somePayloadValue" : isBlank(payload.nonExistingValue), "nullString" : isBlank(nullString), // checking if the string is not blank "notEmptyTextString" : not isBlank(" 1234"), "notEmptyTextStringTwo" : ! isBlank("") } ``` #### [](#出力)出力 ```JSON { "emptyString": true, "stringWithSpaces": true, "textString": false, "somePayloadValue": true, "nullString": true, "notEmptyTextString": true, "notEmptyTextStringTwo": false } ``` # isBlank ## [](#isblank1)isBlank(text: String | Null): Boolean 特定の文字列が空 (​`""`​) か、完全に空白で構成されているか、​`null`​ の場合は、​`true`​ を返します。それ以外の場合、関数は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

評価する入力文字列。

### [](#例)例 次の例では、特定の値が空白かどうかを示します。また、​`not`​ および ​`!`​ 演算子を使用して、値が空白でないことを確認します。 `!`​ 演算子は Dataweave 2.2.0 からサポートされるようになりました。​`!`​ は、Mule 4.2 以降のバージョンでのみ使用してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var someString = "something" var nullString = null --- { // checking if the string is blank "emptyString" : isBlank(""), "stringWithSpaces" : isBlank(" "), "textString" : isBlank(someString), "somePayloadValue" : isBlank(payload.nonExistingValue), "nullString" : isBlank(nullString), // checking if the string is not blank "notEmptyTextString" : not isBlank(" 1234"), "notEmptyTextStringTwo" : ! isBlank("") } ``` #### [](#出力)出力 ```JSON { "emptyString": true, "stringWithSpaces": true, "textString": false, "somePayloadValue": true, "nullString": true, "notEmptyTextString": true, "notEmptyTextStringTwo": false } ``` # isBlank ## [](#isblank1)isBlank(text: String | Null): Boolean 特定の文字列が空 (​`""`​) か、完全に空白で構成されているか、​`null`​ の場合は、​`true`​ を返します。それ以外の場合、関数は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

評価する入力文字列。

### [](#例)例 次の例では、特定の値が空白かどうかを示します。また、​`not`​ および ​`!`​ 演算子を使用して、値が空白でないことを確認します。 `!`​ 演算子は Dataweave 2.2.0 からサポートされるようになりました。​`!`​ は、Mule 4.2 以降のバージョンでのみ使用してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var someString = "something" var nullString = null --- { // checking if the string is blank "emptyString" : isBlank(""), "stringWithSpaces" : isBlank(" "), "textString" : isBlank(someString), "somePayloadValue" : isBlank(payload.nonExistingValue), "nullString" : isBlank(nullString), // checking if the string is not blank "notEmptyTextString" : not isBlank(" 1234"), "notEmptyTextStringTwo" : ! isBlank("") } ``` #### [](#出力)出力 ```JSON { "emptyString": true, "stringWithSpaces": true, "textString": false, "somePayloadValue": true, "nullString": true, "notEmptyTextString": true, "notEmptyTextStringTwo": false } ``` # isBlank ## [](#isblank1)isBlank(text: String | Null): Boolean 特定の文字列が空 (​`""`​) か、完全に空白で構成されているか、​`null`​ の場合は、​`true`​ を返します。それ以外の場合、関数は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

評価する入力文字列。

### [](#例)例 次の例では、特定の値が空白かどうかを示します。また、​`not`​ および ​`!`​ 演算子を使用して、値が空白でないことを確認します。 `!`​ 演算子は Dataweave 2.2.0 からサポートされるようになりました。​`!`​ は、Mule 4.2 以降のバージョンでのみ使用してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var someString = "something" var nullString = null --- { // checking if the string is blank "emptyString" : isBlank(""), "stringWithSpaces" : isBlank(" "), "textString" : isBlank(someString), "somePayloadValue" : isBlank(payload.nonExistingValue), "nullString" : isBlank(nullString), // checking if the string is not blank "notEmptyTextString" : not isBlank(" 1234"), "notEmptyTextStringTwo" : ! isBlank("") } ``` #### [](#出力)出力 ```JSON { "emptyString": true, "stringWithSpaces": true, "textString": false, "somePayloadValue": true, "nullString": true, "notEmptyTextString": true, "notEmptyTextStringTwo": false } ``` # isBlank ## [](#isblank1)isBlank(text: String | Null): Boolean 特定の文字列が空 (​`""`​) か、完全に空白で構成されているか、​`null`​ の場合は、​`true`​ を返します。それ以外の場合、関数は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

評価する入力文字列。

### [](#例)例 次の例では、特定の値が空白かどうかを示します。また、​`not`​ および ​`!`​ 演算子を使用して、値が空白でないことを確認します。 `!`​ 演算子は Dataweave 2.2.0 からサポートされるようになりました。​`!`​ は、Mule 4.2 以降のバージョンでのみ使用してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var someString = "something" var nullString = null --- { // checking if the string is blank "emptyString" : isBlank(""), "stringWithSpaces" : isBlank(" "), "textString" : isBlank(someString), "somePayloadValue" : isBlank(payload.nonExistingValue), "nullString" : isBlank(nullString), // checking if the string is not blank "notEmptyTextString" : not isBlank(" 1234"), "notEmptyTextStringTwo" : ! isBlank("") } ``` #### [](#出力)出力 ```JSON { "emptyString": true, "stringWithSpaces": true, "textString": false, "somePayloadValue": true, "nullString": true, "notEmptyTextString": true, "notEmptyTextStringTwo": false } ``` # isBlank ## [](#isblank1)isBlank(text: String | Null): Boolean 特定の文字列が空 (​`""`​) か、完全に空白で構成されているか、​`null`​ の場合は、​`true`​ を返します。それ以外の場合、関数は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

評価する入力文字列。

### [](#例)例 次の例では、特定の値が空白かどうかを示します。また、​`not`​ および ​`!`​ 演算子を使用して、値が空白でないことを確認します。 `!`​ 演算子は Dataweave 2.2.0 からサポートされるようになりました。​`!`​ は、Mule 4.2 以降のバージョンでのみ使用してください。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json var someString = "something" var nullString = null --- { // checking if the string is blank "emptyString" : isBlank(""), "stringWithSpaces" : isBlank(" "), "textString" : isBlank(someString), "somePayloadValue" : isBlank(payload.nonExistingValue), "nullString" : isBlank(nullString), // checking if the string is not blank "notEmptyTextString" : not isBlank(" 1234"), "notEmptyTextStringTwo" : ! isBlank("") } ``` #### [](#出力)出力 ```JSON { "emptyString": true, "stringWithSpaces": true, "textString": false, "somePayloadValue": true, "nullString": true, "notEmptyTextString": true, "notEmptyTextStringTwo": false } ``` # isBooleanType ## [](#isbooleantype1)isBooleanType(Type): Boolean 入力が Boolean (ブール) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBooleanType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABoolean = Boolean output application/json --- { a: isBooleanType(ABoolean), b: isBooleanType(Boolean), c: isBooleanType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBooleanType ## [](#isbooleantype1)isBooleanType(t: Type): Boolean 入力が Boolean (ブール) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBooleanType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABoolean = Boolean output application/json --- { a: isBooleanType(ABoolean), b: isBooleanType(Boolean), c: isBooleanType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBooleanType ## [](#isbooleantype1)isBooleanType(t: Type): Boolean 入力が Boolean (ブール) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBooleanType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABoolean = Boolean output application/json --- { a: isBooleanType(ABoolean), b: isBooleanType(Boolean), c: isBooleanType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBooleanType ## [](#isbooleantype1)isBooleanType(t: Type): Boolean 入力が Boolean (ブール) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBooleanType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABoolean = Boolean output application/json --- { a: isBooleanType(ABoolean), b: isBooleanType(Boolean), c: isBooleanType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBooleanType ## [](#isbooleantype1)isBooleanType(t: Type): Boolean 入力が Boolean (ブール) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBooleanType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABoolean = Boolean output application/json --- { a: isBooleanType(ABoolean), b: isBooleanType(Boolean), c: isBooleanType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isBooleanType ## [](#isbooleantype1)isBooleanType(t: Type): Boolean 入力が Boolean (ブール) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isBooleanType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ABoolean = Boolean output application/json --- { a: isBooleanType(ABoolean), b: isBooleanType(Boolean), c: isBooleanType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateTimeType ## [](#isdatetimetype1)isDateTimeType(Type): Boolean 入力が DateTime (日時) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADateTime = DateTime output application/json --- { a: isDateTimeType(ADateTime), b: isDateTimeType(DateTime), c: isDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateTimeType ## [](#isdatetimetype1)isDateTimeType(t: Type): Boolean 入力が DateTime (日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADateTime = DateTime output application/json --- { a: isDateTimeType(ADateTime), b: isDateTimeType(DateTime), c: isDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateTimeType ## [](#isdatetimetype1)isDateTimeType(t: Type): Boolean 入力が DateTime (日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADateTime = DateTime output application/json --- { a: isDateTimeType(ADateTime), b: isDateTimeType(DateTime), c: isDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateTimeType ## [](#isdatetimetype1)isDateTimeType(t: Type): Boolean 入力が DateTime (日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADateTime = DateTime output application/json --- { a: isDateTimeType(ADateTime), b: isDateTimeType(DateTime), c: isDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateTimeType ## [](#isdatetimetype1)isDateTimeType(t: Type): Boolean 入力が DateTime (日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADateTime = DateTime output application/json --- { a: isDateTimeType(ADateTime), b: isDateTimeType(DateTime), c: isDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateTimeType ## [](#isdatetimetype1)isDateTimeType(t: Type): Boolean 入力が DateTime (日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADateTime = DateTime output application/json --- { a: isDateTimeType(ADateTime), b: isDateTimeType(DateTime), c: isDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateType ## [](#isdatetype1)isDateType(Type): Boolean 入力が Date (日付) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADate = Date output application/json --- { a: isDateType(ADate), b: isDateType(Date), c: isDateType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateType ## [](#isdatetype1)isDateType(t: Type): Boolean 入力が Date (日付) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADate = Date output application/json --- { a: isDateType(ADate), b: isDateType(Date), c: isDateType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateType ## [](#isdatetype1)isDateType(t: Type): Boolean 入力が Date (日付) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADate = Date output application/json --- { a: isDateType(ADate), b: isDateType(Date), c: isDateType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateType ## [](#isdatetype1)isDateType(t: Type): Boolean 入力が Date (日付) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADate = Date output application/json --- { a: isDateType(ADate), b: isDateType(Date), c: isDateType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateType ## [](#isdatetype1)isDateType(t: Type): Boolean 入力が Date (日付) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADate = Date output application/json --- { a: isDateType(ADate), b: isDateType(Date), c: isDateType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDateType ## [](#isdatetype1)isDateType(t: Type): Boolean 入力が Date (日付) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isDateType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ADate = Date output application/json --- { a: isDateType(ADate), b: isDateType(Date), c: isDateType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isDecimal ## [](#isdecimal1)isDecimal(Number): Boolean 特定の数値に小数部が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値に小数部が含まれるかどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isDecimal(1.1), isDecimal(1), isDecimal("1.1") ] ``` #### [](#出力)出力 ```JSON [ true, false, true ] ``` # isDecimal ## [](#isdecimal1)isDecimal(number: Number): Boolean 特定の数値に小数部が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値に小数部が含まれるかどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isDecimal(1.1), isDecimal(1), isDecimal("1.1") ] ``` #### [](#出力)出力 ```JSON [ true, false, true ] ``` # isDecimal ## [](#isdecimal1)isDecimal(number: Number): Boolean 特定の数値に小数部が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値に小数部が含まれるかどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isDecimal(1.1), isDecimal(1), isDecimal("1.1") ] ``` #### [](#出力)出力 ```JSON [ true, false, true ] ``` # isDecimal ## [](#isdecimal1)isDecimal(number: Number): Boolean 特定の数値に小数部が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値に小数部が含まれるかどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isDecimal(1.1), isDecimal(1), isDecimal("1.1") ] ``` #### [](#出力)出力 ```JSON [ true, false, true ] ``` # isDecimal ## [](#isdecimal1)isDecimal(number: Number): Boolean 特定の数値に小数部が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値に小数部が含まれるかどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isDecimal(1.1), isDecimal(1), isDecimal("1.1") ] ``` #### [](#出力)出力 ```JSON [ true, false, true ] ``` # isDecimal ## [](#isdecimal1)isDecimal(number: Number): Boolean 特定の数値に小数部が含まれる場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値に小数部が含まれるかどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isDecimal(1.1), isDecimal(1), isDecimal("1.1") ] ``` #### [](#出力)出力 ```JSON [ true, false, true ] ``` # isEmpty ## [](#isempty1)isEmpty(Array): Boolean 特定の入力値が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`isEmpty`​ は、配列で動作します。その他のバージョンは、文字列またはオブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

​elements

評価する入力配列。

### [](#例)例 次の例では、入力配列が空かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty([]), isEmpty([1]) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isempty2)isEmpty(String): Boolean 入力文字列が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​value

評価する文字列。

### [](#例-2)例 次の例では、入力文字列が空かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty(""), isEmpty("DataWeave") ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isempty3)isEmpty(Null): Boolean 入力が ​`null`​ の場合は ​`true`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​value

この場合は ​null​ が値です。

### [](#例-3)例 次の例では、入力が ​`null`​ かどうかを示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "nullValue" : isEmpty(null) } ``` #### [](#出力-3)出力 ```JSON { "nullValue": true } ``` ## [](#isempty4)isEmpty(Object): Boolean 特定のオブジェクトが空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

​value

評価するオブジェクト。

### [](#例-4)例 次の例では、入力オブジェクトが空かどうかを示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty({}), isEmpty({name: "DataWeave"}) ] ``` #### [](#出力-4)出力 ```JSON [ true, false ] ``` # isEmpty ## [](#isempty1)isEmpty(elements: Array): Boolean 特定の入力値が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`isEmpty`​ は、配列で動作します。その他のバージョンは、文字列またはオブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

​elements

評価する入力配列。

### [](#例)例 次の例では、入力配列が空かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty([]), isEmpty([1]) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isempty2)isEmpty(value: String): Boolean 入力文字列が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​value

評価する文字列。

### [](#例-2)例 次の例では、入力文字列が空かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty(""), isEmpty("DataWeave") ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isempty3)isEmpty(value: Object): Boolean 特定のオブジェクトが空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​value

評価するオブジェクト。

### [](#例-3)例 次の例では、入力オブジェクトが空かどうかを示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty({}), isEmpty({name: "DataWeave"}) ] ``` #### [](#出力-3)出力 ```JSON [ true, false ] ``` ## [](#isempty4)isEmpty(value: Null): true 入力が ​`null`​ の場合は ​`true`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

​value

この場合は ​null​ が値です。

### [](#例-4)例 次の例では、入力が ​`null`​ かどうかを示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "nullValue" : isEmpty(null) } ``` #### [](#出力-4)出力 ```JSON { "nullValue": true } ``` # isEmpty ## [](#isempty1)isEmpty(elements: Array): Boolean 特定の入力値が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`isEmpty`​ は、配列で動作します。その他のバージョンは、文字列またはオブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

elements

評価する入力配列。

### [](#例)例 次の例では、入力配列が空かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty([]), isEmpty([1]) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isempty2)isEmpty(value: String): Boolean 入力文字列が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

value

評価する文字列。

### [](#例-2)例 次の例では、入力文字列が空かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty(""), isEmpty("DataWeave") ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isempty3)isEmpty(value: Object): Boolean 特定のオブジェクトが空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

value

評価するオブジェクト。

### [](#例-3)例 次の例では、入力オブジェクトが空かどうかを示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty({}), isEmpty({name: "DataWeave"}) ] ``` #### [](#出力-3)出力 ```JSON [ true, false ] ``` ## [](#isempty4)isEmpty(value: Null): true 入力が ​`null`​ の場合は ​`true`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

value

この場合は ​null​ が値です。

### [](#例-4)例 次の例では、入力が ​`null`​ かどうかを示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "nullValue" : isEmpty(null) } ``` #### [](#出力-4)出力 ```JSON { "nullValue": true } ``` # isEmpty ## [](#isempty1)isEmpty(elements: Array): Boolean 特定の入力値が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`isEmpty`​ は、配列で動作します。その他のバージョンは、文字列またはオブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

elements

評価する入力配列。

### [](#例)例 次の例では、入力配列が空かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty([]), isEmpty([1]) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isempty2)isEmpty(value: String): Boolean 入力文字列が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

value

評価する文字列。

### [](#例-2)例 次の例では、入力文字列が空かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty(""), isEmpty("DataWeave") ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isempty3)isEmpty(value: Object): Boolean 特定のオブジェクトが空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

value

評価するオブジェクト。

### [](#例-3)例 次の例では、入力オブジェクトが空かどうかを示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty({}), isEmpty({name: "DataWeave"}) ] ``` #### [](#出力-3)出力 ```JSON [ true, false ] ``` ## [](#isempty4)isEmpty(value: Null): true 入力が ​`null`​ の場合は ​`true`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

value

この場合は ​null​ が値です。

### [](#例-4)例 次の例では、入力が ​`null`​ かどうかを示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "nullValue" : isEmpty(null) } ``` #### [](#出力-4)出力 ```JSON { "nullValue": true } ``` # isEmpty ## [](#isempty1)isEmpty(elements: Array): Boolean 特定の入力値が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`isEmpty`​ は、配列で動作します。その他のバージョンは、文字列またはオブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

elements

評価する入力配列。

### [](#例)例 次の例では、入力配列が空かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty([]), isEmpty([1]) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isempty2)isEmpty(value: String): Boolean 入力文字列が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

value

評価する文字列。

### [](#例-2)例 次の例では、入力文字列が空かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty(""), isEmpty("DataWeave") ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isempty3)isEmpty(value: Object): Boolean 特定のオブジェクトが空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

value

評価するオブジェクト。

### [](#例-3)例 次の例では、入力オブジェクトが空かどうかを示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty({}), isEmpty({name: "DataWeave"}) ] ``` #### [](#出力-3)出力 ```JSON [ true, false ] ``` ## [](#isempty4)isEmpty(value: Null): true 入力が ​`null`​ の場合は ​`true`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

value

この場合は ​null​ が値です。

### [](#例-4)例 次の例では、入力が ​`null`​ かどうかを示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "nullValue" : isEmpty(null) } ``` #### [](#出力-4)出力 ```JSON { "nullValue": true } ``` # isEmpty ## [](#isempty1)isEmpty(elements: Array): Boolean 特定の入力値が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`isEmpty`​ は、配列で動作します。その他のバージョンは、文字列またはオブジェクトで動作し、null 値を処理します。 ### [](#パラメーター)パラメーター
名前 説明

elements

評価する入力配列。

### [](#例)例 次の例では、入力配列が空かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty([]), isEmpty([1]) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isempty2)isEmpty(value: String): Boolean 入力文字列が空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

value

評価する文字列。

### [](#例-2)例 次の例では、入力文字列が空かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty(""), isEmpty("DataWeave") ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isempty3)isEmpty(value: Object): Boolean 特定のオブジェクトが空の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

value

評価するオブジェクト。

### [](#例-3)例 次の例では、入力オブジェクトが空かどうかを示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ isEmpty({}), isEmpty({name: "DataWeave"}) ] ``` #### [](#出力-3)出力 ```JSON [ true, false ] ``` ## [](#isempty4)isEmpty(value: Null): true 入力が ​`null`​ の場合は ​`true`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

value

この場合は ​null​ が値です。

### [](#例-4)例 次の例では、入力が ​`null`​ かどうかを示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { "nullValue" : isEmpty(null) } ``` #### [](#出力-4)出力 ```JSON { "nullValue": true } ``` # isEven ## [](#iseven1)isEven(Number): Boolean 数値または算術演算の数値結果が偶数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値および演算の結果が偶数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isEven" : [ isEven(0), isEven(1), isEven(1+1) ] } ``` #### [](#出力)出力 ```JSON { "isEven" : [ true, false, true ] } ``` # isEven ## [](#iseven1)isEven(number: Number): Boolean 数値または算術演算の数値結果が偶数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値および演算の結果が偶数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isEven" : [ isEven(0), isEven(1), isEven(1+1) ] } ``` #### [](#出力)出力 ```JSON { "isEven" : [ true, false, true ] } ``` # isEven ## [](#iseven1)isEven(number: Number): Boolean 数値または算術演算の数値結果が偶数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値および演算の結果が偶数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isEven" : [ isEven(0), isEven(1), isEven(1+1) ] } ``` #### [](#出力)出力 ```JSON { "isEven" : [ true, false, true ] } ``` # isEven ## [](#iseven1)isEven(number: Number): Boolean 数値または算術演算の数値結果が偶数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値および演算の結果が偶数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isEven" : [ isEven(0), isEven(1), isEven(1+1) ] } ``` #### [](#出力)出力 ```JSON { "isEven" : [ true, false, true ] } ``` # isEven ## [](#iseven1)isEven(number: Number): Boolean 数値または算術演算の数値結果が偶数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値および演算の結果が偶数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isEven" : [ isEven(0), isEven(1), isEven(1+1) ] } ``` #### [](#出力)出力 ```JSON { "isEven" : [ true, false, true ] } ``` # isEven ## [](#iseven1)isEven(number: Number): Boolean 数値または算術演算の数値結果が偶数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値および演算の結果が偶数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isEven" : [ isEven(0), isEven(1), isEven(1+1) ] } ``` #### [](#出力)出力 ```JSON { "isEven" : [ true, false, true ] } ``` # isFunctionType ## [](#isfunctiontype1)isFunctionType(Type): Boolean 入力が Function (関数) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isFunctionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AFunction = (String) -> String output application/json --- { a: isFunctionType(AFunction), b: isFunctionType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isFunctionType ## [](#isfunctiontype1)isFunctionType(t: Type): Boolean 入力が Function (関数) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isFunctionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AFunction = (String) -> String output application/json --- { a: isFunctionType(AFunction), b: isFunctionType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isFunctionType ## [](#isfunctiontype1)isFunctionType(t: Type): Boolean 入力が Function (関数) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isFunctionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AFunction = (String) -> String output application/json --- { a: isFunctionType(AFunction), b: isFunctionType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isFunctionType ## [](#isfunctiontype1)isFunctionType(t: Type): Boolean 入力が Function (関数) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isFunctionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AFunction = (String) -> String output application/json --- { a: isFunctionType(AFunction), b: isFunctionType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isFunctionType ## [](#isfunctiontype1)isFunctionType(t: Type): Boolean 入力が Function (関数) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isFunctionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AFunction = (String) -> String output application/json --- { a: isFunctionType(AFunction), b: isFunctionType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isFunctionType ## [](#isfunctiontype1)isFunctionType(t: Type): Boolean 入力が Function (関数) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isFunctionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AFunction = (String) -> String output application/json --- { a: isFunctionType(AFunction), b: isFunctionType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isHandledBy ## [](#ishandledby1)isHandledBy(base: MimeType, other: MimeType): Boolean 指定された ​`MimeType`​ 値がベース ​`MimeType`​ 値によって処理される場合、​`true`​ を返します。 _DataWeave バージョン 2.7.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

base

MimeType

ベースラインとして使用する MIME タイプ値。

other

MimeType

検証する MIME タイプ値。

### [](#例)例 次の例では、MIME タイプでいくつかの検証を処理する方法をテストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::module::Mime output application/json var JSON = {'type': "application", subtype: "json", parameters: {}} var MULTIPART = {'type': "multipart", subtype: "form-data", parameters: {boundary: "my-boundary"}} var ALL = {'type': "*", subtype: "*", parameters: {}} --- { a: isHandledBy(JSON, JSON), b: isHandledBy({'type': "*", subtype: "json", parameters: {}}, JSON), c: isHandledBy({'type': "application", subtype: "*", parameters: {}}, JSON), d: isHandledBy(ALL, MULTIPART), e: isHandledBy(MULTIPART, ALL), f: isHandledBy(JSON, MULTIPART), g: isHandledBy( {'type': "application", subtype: "*+xml", parameters: {}}, {'type': "application", subtype: "soap+xml", parameters: {}}) } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": true, "d": true, "e": false, "f": false, "g": true } ``` # isInteger ## [](#isinteger1)isInteger(Number): Boolean 特定の数値が整数 (小数部なし) の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、いろいろな値の入力が整数かどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [isInteger(1), isInteger(2.0), isInteger(2.2), isInteger("1")] ``` #### [](#出力)出力 ```JSON [ true, true, false, true ] ``` # isInteger ## [](#isinteger1)isInteger(number: Number): Boolean 特定の数値が整数 (小数部なし) の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、いろいろな値の入力が整数かどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [isInteger(1), isInteger(2.0), isInteger(2.2), isInteger("1")] ``` #### [](#出力)出力 ```JSON [ true, true, false, true ] ``` # isInteger ## [](#isinteger1)isInteger(number: Number): Boolean 特定の数値が整数 (小数部なし) の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、いろいろな値の入力が整数かどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [isInteger(1), isInteger(2.0), isInteger(2.2), isInteger("1")] ``` #### [](#出力)出力 ```JSON [ true, true, false, true ] ``` # isInteger ## [](#isinteger1)isInteger(number: Number): Boolean 特定の数値が整数 (小数部なし) の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、いろいろな値の入力が整数かどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [isInteger(1), isInteger(2.0), isInteger(2.2), isInteger("1")] ``` #### [](#出力)出力 ```JSON [ true, true, false, true ] ``` # isInteger ## [](#isinteger1)isInteger(number: Number): Boolean 特定の数値が整数 (小数部なし) の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、いろいろな値の入力が整数かどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [isInteger(1), isInteger(2.0), isInteger(2.2), isInteger("1")] ``` #### [](#出力)出力 ```JSON [ true, true, false, true ] ``` # isInteger ## [](#isinteger1)isInteger(number: Number): Boolean 特定の数値が整数 (小数部なし) の場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、いろいろな値の入力が整数かどうかを示します。文字列内の数値は、数値に強制変換されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [isInteger(1), isInteger(2.0), isInteger(2.2), isInteger("1")] ``` #### [](#出力)出力 ```JSON [ true, true, false, true ] ``` # isIntersectionType ## [](#isintersectiontype1)isIntersectionType(Type): Boolean 入力種別が Intersection (交差) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isIntersectionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: isIntersectionType(AType), b: isIntersectionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isIntersectionType ## [](#isintersectiontype1)isIntersectionType(t: Type): Boolean 入力種別が Intersection (交差) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isIntersectionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: isIntersectionType(AType), b: isIntersectionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isIntersectionType ## [](#isintersectiontype1)isIntersectionType(t: Type): Boolean 入力種別が Intersection (交差) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isIntersectionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: isIntersectionType(AType), b: isIntersectionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isIntersectionType ## [](#isintersectiontype1)isIntersectionType(t: Type): Boolean 入力種別が Intersection (交差) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isIntersectionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: isIntersectionType(AType), b: isIntersectionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isIntersectionType ## [](#isintersectiontype1)isIntersectionType(t: Type): Boolean 入力種別が Intersection (交差) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isIntersectionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: isIntersectionType(AType), b: isIntersectionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isIntersectionType ## [](#isintersectiontype1)isIntersectionType(t: Type): Boolean 入力種別が Intersection (交差) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isIntersectionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} & {age: Number} output application/json --- { a: isIntersectionType(AType), b: isIntersectionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isKeyType ## [](#iskeytype1)isKeyType(Type): Boolean 入力が Key (キー) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isKeyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AKey = Key output application/json --- { a: isKeyType(AKey), b: isKeyType(Key), c: isKeyType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isKeyType ## [](#iskeytype1)isKeyType(t: Type): Boolean 入力が Key (キー) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isKeyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AKey = Key output application/json --- { a: isKeyType(AKey), b: isKeyType(Key), c: isKeyType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isKeyType ## [](#iskeytype1)isKeyType(t: Type): Boolean 入力が Key (キー) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isKeyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AKey = Key output application/json --- { a: isKeyType(AKey), b: isKeyType(Key), c: isKeyType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isKeyType ## [](#iskeytype1)isKeyType(t: Type): Boolean 入力が Key (キー) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isKeyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AKey = Key output application/json --- { a: isKeyType(AKey), b: isKeyType(Key), c: isKeyType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isKeyType ## [](#iskeytype1)isKeyType(t: Type): Boolean 入力が Key (キー) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isKeyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AKey = Key output application/json --- { a: isKeyType(AKey), b: isKeyType(Key), c: isKeyType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isKeyType ## [](#iskeytype1)isKeyType(t: Type): Boolean 入力が Key (キー) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isKeyType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AKey = Key output application/json --- { a: isKeyType(AKey), b: isKeyType(Key), c: isKeyType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLeapYear ## [](#isleapyear1)isLeapYear(DateTime): Boolean うるう年の日付を受け取った場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`leapYear`​ は、​`DateTime`​ (日時) 型で動作します。その他のバージョンは、DataWeave でサポートされる他の日付と時刻の形式で動作します。 ### [](#パラメーター)パラメーター
名前 説明

​dateTime

評価する ​DateTime​ 値。

### [](#例)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01T23:57:59|), isLeapYear(|2017-10-01T23:57:59|) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isleapyear2)isLeapYear(Date): Boolean 入力 ​`Date`​ (日付) がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​date

評価する ​Date​ 値。

### [](#例-2)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01|), isLeapYear(|2017-10-01|) ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isleapyear3)isLeapYear(LocalDateTime): Boolean 入力ローカル日時がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​datetime

評価する ​LocalDateTime​ 値。

### [](#例-3)例 次の例では、入力がうるう年かどうかを示します。​`map`​ 関数を使用して、その ​`LocalDateTime`​ 値の配列を反復処理し、値に ​`isLeapYear`​ を適用して結果を配列で返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ |2016-10-01T23:57:59-03:00|, |2016-10-01T23:57:59Z| ] map isLeapYear($) ``` #### [](#出力-3)出力 ```JSON [ true, true ] ``` # isLeapYear ## [](#isleapyear1)isLeapYear(dateTime: DateTime): Boolean うるう年の日付を受け取った場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`leapYear`​ は、​`DateTime`​ (日時) 型で動作します。その他のバージョンは、DataWeave でサポートされる他の日付と時刻の形式で動作します。 ### [](#パラメーター)パラメーター
名前 説明

​dateTime

評価する ​DateTime​ 値。

### [](#例)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01T23:57:59|), isLeapYear(|2017-10-01T23:57:59|) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isleapyear2)isLeapYear(date: Date): Boolean 入力 ​`Date`​ (日付) がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​date

評価する ​Date​ 値。

### [](#例-2)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01|), isLeapYear(|2017-10-01|) ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isleapyear3)isLeapYear(datetime: LocalDateTime): Boolean 入力ローカル日時がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​datetime

評価する ​LocalDateTime​ 値。

### [](#例-3)例 次の例では、入力がうるう年かどうかを示します。​`map`​ 関数を使用して、その ​`LocalDateTime`​ 値の配列を反復処理し、値に ​`isLeapYear`​ を適用して結果を配列で返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ |2016-10-01T23:57:59-03:00|, |2016-10-01T23:57:59Z| ] map isLeapYear($) ``` #### [](#出力-3)出力 ```JSON [ true, true ] ``` # isLeapYear ## [](#isleapyear1)isLeapYear(dateTime: DateTime): Boolean うるう年の日付を受け取った場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`leapYear`​ は、​`DateTime`​ (日時) 型で動作します。その他のバージョンは、DataWeave でサポートされる他の日付と時刻の形式で動作します。 ### [](#パラメーター)パラメーター
名前 説明

dateTime

評価する ​DateTime​ 値。

### [](#例)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01T23:57:59|), isLeapYear(|2017-10-01T23:57:59|) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isleapyear2)isLeapYear(date: Date): Boolean 入力 ​`Date`​ (日付) がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

date

評価する ​Date​ 値。

### [](#例-2)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01|), isLeapYear(|2017-10-01|) ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isleapyear3)isLeapYear(datetime: LocalDateTime): Boolean 入力ローカル日時がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

datetime

評価する ​LocalDateTime​ 値。

### [](#例-3)例 次の例では、入力がうるう年かどうかを示します。​`map`​ 関数を使用して、その ​`LocalDateTime`​ 値の配列を反復処理し、値に ​`isLeapYear`​ を適用して結果を配列で返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ |2016-10-01T23:57:59-03:00|, |2016-10-01T23:57:59Z| ] map isLeapYear($) ``` #### [](#出力-3)出力 ```JSON [ true, true ] ``` # isLeapYear ## [](#isleapyear1)isLeapYear(dateTime: DateTime): Boolean うるう年の日付を受け取った場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`leapYear`​ は、​`DateTime`​ (日時) 型で動作します。その他のバージョンは、DataWeave でサポートされる他の日付と時刻の形式で動作します。 ### [](#パラメーター)パラメーター
名前 説明

dateTime

評価する ​DateTime​ 値。

### [](#例)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01T23:57:59|), isLeapYear(|2017-10-01T23:57:59|) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isleapyear2)isLeapYear(date: Date): Boolean 入力 ​`Date`​ (日付) がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

date

評価する ​Date​ 値。

### [](#例-2)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01|), isLeapYear(|2017-10-01|) ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isleapyear3)isLeapYear(datetime: LocalDateTime): Boolean 入力ローカル日時がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

datetime

評価する ​LocalDateTime​ 値。

### [](#例-3)例 次の例では、入力がうるう年かどうかを示します。​`map`​ 関数を使用して、その ​`LocalDateTime`​ 値の配列を反復処理し、値に ​`isLeapYear`​ を適用して結果を配列で返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ |2016-10-01T23:57:59-03:00|, |2016-10-01T23:57:59Z| ] map isLeapYear($) ``` #### [](#出力-3)出力 ```JSON [ true, true ] ``` # isLeapYear ## [](#isleapyear1)isLeapYear(dateTime: DateTime): Boolean うるう年の日付を受け取った場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`leapYear`​ は、​`DateTime`​ (日時) 型で動作します。その他のバージョンは、DataWeave でサポートされる他の日付と時刻の形式で動作します。 ### [](#パラメーター)パラメーター
名前 説明

dateTime

評価する ​DateTime​ 値。

### [](#例)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01T23:57:59|), isLeapYear(|2017-10-01T23:57:59|) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isleapyear2)isLeapYear(date: Date): Boolean 入力 ​`Date`​ (日付) がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

date

評価する ​Date​ 値。

### [](#例-2)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01|), isLeapYear(|2017-10-01|) ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isleapyear3)isLeapYear(datetime: LocalDateTime): Boolean 入力ローカル日時がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

datetime

評価する ​LocalDateTime​ 値。

### [](#例-3)例 次の例では、入力がうるう年かどうかを示します。​`map`​ 関数を使用して、その ​`LocalDateTime`​ 値の配列を反復処理し、値に ​`isLeapYear`​ を適用して結果を配列で返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ |2016-10-01T23:57:59-03:00|, |2016-10-01T23:57:59Z| ] map isLeapYear($) ``` #### [](#出力-3)出力 ```JSON [ true, true ] ``` # isLeapYear ## [](#isleapyear1)isLeapYear(dateTime: DateTime): Boolean うるう年の日付を受け取った場合は ​`true`​、それ以外の場合は ​`false`​ を返します。 このバージョンの ​`leapYear`​ は、​`DateTime`​ (日時) 型で動作します。その他のバージョンは、DataWeave でサポートされる他の日付と時刻の形式で動作します。 ### [](#パラメーター)パラメーター
名前 説明

dateTime

評価する ​DateTime​ 値。

### [](#例)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01T23:57:59|), isLeapYear(|2017-10-01T23:57:59|) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#isleapyear2)isLeapYear(date: Date): Boolean 入力 ​`Date`​ (日付) がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

date

評価する ​Date​ 値。

### [](#例-2)例 次の例では、入力がうるう年かどうかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ isLeapYear(|2016-10-01|), isLeapYear(|2017-10-01|) ] ``` #### [](#出力-2)出力 ```JSON [ true, false ] ``` ## [](#isleapyear3)isLeapYear(datetime: LocalDateTime): Boolean 入力ローカル日時がうるう年の場合は ​`true`​、それ以外の場合は 'false' を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

datetime

評価する ​LocalDateTime​ 値。

### [](#例-3)例 次の例では、入力がうるう年かどうかを示します。​`map`​ 関数を使用して、その ​`LocalDateTime`​ 値の配列を反復処理し、値に ​`isLeapYear`​ を適用して結果を配列で返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [ |2016-10-01T23:57:59-03:00|, |2016-10-01T23:57:59Z| ] map isLeapYear($) ``` #### [](#出力-3)出力 ```JSON [ true, true ] ``` # isLiteralType ## [](#isliteraltype1)isLiteralType(Type): Boolean 入力が Literal (リテラル) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLiteralType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALiteralType = "Mariano" output application/json --- { a: isLiteralType(ALiteralType), b: isLiteralType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isLiteralType ## [](#isliteraltype1)isLiteralType(t: Type): Boolean 入力が Literal (リテラル) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLiteralType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALiteralType = "Mariano" output application/json --- { a: isLiteralType(ALiteralType), b: isLiteralType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isLiteralType ## [](#isliteraltype1)isLiteralType(t: Type): Boolean 入力が Literal (リテラル) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLiteralType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALiteralType = "Mariano" output application/json --- { a: isLiteralType(ALiteralType), b: isLiteralType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isLiteralType ## [](#isliteraltype1)isLiteralType(t: Type): Boolean 入力が Literal (リテラル) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLiteralType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALiteralType = "Mariano" output application/json --- { a: isLiteralType(ALiteralType), b: isLiteralType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isLiteralType ## [](#isliteraltype1)isLiteralType(t: Type): Boolean 入力が Literal (リテラル) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLiteralType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALiteralType = "Mariano" output application/json --- { a: isLiteralType(ALiteralType), b: isLiteralType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isLiteralType ## [](#isliteraltype1)isLiteralType(t: Type): Boolean 入力が Literal (リテラル) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLiteralType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALiteralType = "Mariano" output application/json --- { a: isLiteralType(ALiteralType), b: isLiteralType(Boolean) } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isLocalDateTimeType ## [](#islocaldatetimetype1)isLocalDateTimeType(Type): Boolean 入力が LocalDateTime (ローカル日時) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalDateTime = LocalDateTime output application/json --- { a: isLocalDateTimeType(ALocalDateTime), b: isLocalDateTimeType(LocalDateTime), c: isLocalDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalDateTimeType ## [](#islocaldatetimetype1)isLocalDateTimeType(t: Type): Boolean 入力が LocalDateTime (ローカル日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalDateTime = LocalDateTime output application/json --- { a: isLocalDateTimeType(ALocalDateTime), b: isLocalDateTimeType(LocalDateTime), c: isLocalDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalDateTimeType ## [](#islocaldatetimetype1)isLocalDateTimeType(t: Type): Boolean 入力が LocalDateTime (ローカル日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalDateTime = LocalDateTime output application/json --- { a: isLocalDateTimeType(ALocalDateTime), b: isLocalDateTimeType(LocalDateTime), c: isLocalDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalDateTimeType ## [](#islocaldatetimetype1)isLocalDateTimeType(t: Type): Boolean 入力が LocalDateTime (ローカル日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalDateTime = LocalDateTime output application/json --- { a: isLocalDateTimeType(ALocalDateTime), b: isLocalDateTimeType(LocalDateTime), c: isLocalDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalDateTimeType ## [](#islocaldatetimetype1)isLocalDateTimeType(t: Type): Boolean 入力が LocalDateTime (ローカル日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalDateTime = LocalDateTime output application/json --- { a: isLocalDateTimeType(ALocalDateTime), b: isLocalDateTimeType(LocalDateTime), c: isLocalDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalDateTimeType ## [](#islocaldatetimetype1)isLocalDateTimeType(t: Type): Boolean 入力が LocalDateTime (ローカル日時) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalDateTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalDateTime = LocalDateTime output application/json --- { a: isLocalDateTimeType(ALocalDateTime), b: isLocalDateTimeType(LocalDateTime), c: isLocalDateTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalTimeType ## [](#islocaltimetype1)isLocalTimeType(Type): Boolean 入力が LocalTime (ローカル時刻) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalTime = LocalTime output application/json --- { a: isLocalTimeType(ALocalTime), b: isLocalTimeType(LocalTime), c: isLocalTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalTimeType ## [](#islocaltimetype1)isLocalTimeType(t: Type): Boolean 入力が LocalTime (ローカル時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalTime = LocalTime output application/json --- { a: isLocalTimeType(ALocalTime), b: isLocalTimeType(LocalTime), c: isLocalTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalTimeType ## [](#islocaltimetype1)isLocalTimeType(t: Type): Boolean 入力が LocalTime (ローカル時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalTime = LocalTime output application/json --- { a: isLocalTimeType(ALocalTime), b: isLocalTimeType(LocalTime), c: isLocalTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalTimeType ## [](#islocaltimetype1)isLocalTimeType(t: Type): Boolean 入力が LocalTime (ローカル時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalTime = LocalTime output application/json --- { a: isLocalTimeType(ALocalTime), b: isLocalTimeType(LocalTime), c: isLocalTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalTimeType ## [](#islocaltimetype1)isLocalTimeType(t: Type): Boolean 入力が LocalTime (ローカル時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalTime = LocalTime output application/json --- { a: isLocalTimeType(ALocalTime), b: isLocalTimeType(LocalTime), c: isLocalTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLocalTimeType ## [](#islocaltimetype1)isLocalTimeType(t: Type): Boolean 入力が LocalTime (ローカル時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isLocalTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ALocalTime = LocalTime output application/json --- { a: isLocalTimeType(ALocalTime), b: isLocalTimeType(LocalTime), c: isLocalTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isLowerCase ## [](#islowercase1)isLowerCase(String): Boolean `text`​ に小文字のみが含まれるかどうかを確認します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isLowerCase from dw::core::Strings output application/json --- { "a": isLowerCase(null), "b": isLowerCase(""), "c": isLowerCase(" "), "d": isLowerCase("abc"), "e": isLowerCase("aBC"), "f": isLowerCase("a c"), "g": isLowerCase("a1c"), "h": isLowerCase("a/c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#islowercase2)isLowerCase(Null): Boolean `isLowerCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # isLowerCase ## [](#islowercase1)isLowerCase(text: String): Boolean `text`​ に小文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isLowerCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isLowerCase from dw::core::Strings output application/json --- { "a": isLowerCase(null), "b": isLowerCase(""), "c": isLowerCase(" "), "d": isLowerCase("abc"), "e": isLowerCase("aBC"), "f": isLowerCase("a c"), "g": isLowerCase("a1c"), "h": isLowerCase("a/c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#islowercase2)isLowerCase(text: Null): Boolean `isLowerCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # isLowerCase ## [](#islowercase1)isLowerCase(text: String): Boolean `text`​ に小文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isLowerCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isLowerCase from dw::core::Strings output application/json --- { "a": isLowerCase(null), "b": isLowerCase(""), "c": isLowerCase(" "), "d": isLowerCase("abc"), "e": isLowerCase("aBC"), "f": isLowerCase("a c"), "g": isLowerCase("a1c"), "h": isLowerCase("a/c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#islowercase2)isLowerCase(text: Null): Boolean `isLowerCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isLowerCase ## [](#islowercase1)isLowerCase(text: String): Boolean `text`​ に小文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isLowerCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isLowerCase from dw::core::Strings output application/json --- { "a": isLowerCase(null), "b": isLowerCase(""), "c": isLowerCase(" "), "d": isLowerCase("abc"), "e": isLowerCase("aBC"), "f": isLowerCase("a c"), "g": isLowerCase("a1c"), "h": isLowerCase("a/c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#islowercase2)isLowerCase(text: Null): Boolean `isLowerCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isLowerCase ## [](#islowercase1)isLowerCase(text: String): Boolean `text`​ に小文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isLowerCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isLowerCase from dw::core::Strings output application/json --- { "a": isLowerCase(null), "b": isLowerCase(""), "c": isLowerCase(" "), "d": isLowerCase("abc"), "e": isLowerCase("aBC"), "f": isLowerCase("a c"), "g": isLowerCase("a1c"), "h": isLowerCase("a/c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#islowercase2)isLowerCase(text: Null): Boolean `isLowerCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isLowerCase ## [](#islowercase1)isLowerCase(text: String): Boolean `text`​ に小文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isLowerCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isLowerCase from dw::core::Strings output application/json --- { "a": isLowerCase(null), "b": isLowerCase(""), "c": isLowerCase(" "), "d": isLowerCase("abc"), "e": isLowerCase("aBC"), "f": isLowerCase("a c"), "g": isLowerCase("a1c"), "h": isLowerCase("a/c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#islowercase2)isLowerCase(text: Null): Boolean `isLowerCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isNamespaceType ## [](#isnamespacetype1)isNamespaceType(Type): Boolean 入力が Namespace (名前空間) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNamespaceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANamespace = Namespace output application/json --- { a: isNamespaceType(ANamespace), b: isNamespaceType(Namespace), c: isNamespaceType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNamespaceType ## [](#isnamespacetype1)isNamespaceType(t: Type): Boolean 入力が Namespace (名前空間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNamespaceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANamespace = Namespace output application/json --- { a: isNamespaceType(ANamespace), b: isNamespaceType(Namespace), c: isNamespaceType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNamespaceType ## [](#isnamespacetype1)isNamespaceType(t: Type): Boolean 入力が Namespace (名前空間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNamespaceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANamespace = Namespace output application/json --- { a: isNamespaceType(ANamespace), b: isNamespaceType(Namespace), c: isNamespaceType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNamespaceType ## [](#isnamespacetype1)isNamespaceType(t: Type): Boolean 入力が Namespace (名前空間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNamespaceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANamespace = Namespace output application/json --- { a: isNamespaceType(ANamespace), b: isNamespaceType(Namespace), c: isNamespaceType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNamespaceType ## [](#isnamespacetype1)isNamespaceType(t: Type): Boolean 入力が Namespace (名前空間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNamespaceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANamespace = Namespace output application/json --- { a: isNamespaceType(ANamespace), b: isNamespaceType(Namespace), c: isNamespaceType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNamespaceType ## [](#isnamespacetype1)isNamespaceType(t: Type): Boolean 入力が Namespace (名前空間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNamespaceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANamespace = Namespace output application/json --- { a: isNamespaceType(ANamespace), b: isNamespaceType(Namespace), c: isNamespaceType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNothingType ## [](#isnothingtype1)isNothingType(Type): Boolean 入力が Nothing (なし) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNothingType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANothing = Nothing output application/json --- { a: isNothingType(ANothing), b: isNothingType(Nothing), c: isNothingType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNothingType ## [](#isnothingtype1)isNothingType(t: Type): Boolean 入力が Nothing (なし) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNothingType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANothing = Nothing output application/json --- { a: isNothingType(ANothing), b: isNothingType(Nothing), c: isNothingType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNothingType ## [](#isnothingtype1)isNothingType(t: Type): Boolean 入力が Nothing (なし) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNothingType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANothing = Nothing output application/json --- { a: isNothingType(ANothing), b: isNothingType(Nothing), c: isNothingType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNothingType ## [](#isnothingtype1)isNothingType(t: Type): Boolean 入力が Nothing (なし) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNothingType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANothing = Nothing output application/json --- { a: isNothingType(ANothing), b: isNothingType(Nothing), c: isNothingType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNothingType ## [](#isnothingtype1)isNothingType(t: Type): Boolean 入力が Nothing (なし) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNothingType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANothing = Nothing output application/json --- { a: isNothingType(ANothing), b: isNothingType(Nothing), c: isNothingType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNothingType ## [](#isnothingtype1)isNothingType(t: Type): Boolean 入力が Nothing (なし) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNothingType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANothing = Nothing output application/json --- { a: isNothingType(ANothing), b: isNothingType(Nothing), c: isNothingType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNullType ## [](#isnulltype1)isNullType(Type): Boolean 入力が Null 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNullType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANull = Null output application/json --- { a: isNullType(ANull), b: isNullType(Null), c: isNullType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNullType ## [](#isnulltype1)isNullType(t: Type): Boolean 入力が Null 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNullType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANull = Null output application/json --- { a: isNullType(ANull), b: isNullType(Null), c: isNullType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNullType ## [](#isnulltype1)isNullType(t: Type): Boolean 入力が Null 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNullType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANull = Null output application/json --- { a: isNullType(ANull), b: isNullType(Null), c: isNullType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNullType ## [](#isnulltype1)isNullType(t: Type): Boolean 入力が Null 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNullType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANull = Null output application/json --- { a: isNullType(ANull), b: isNullType(Null), c: isNullType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNullType ## [](#isnulltype1)isNullType(t: Type): Boolean 入力が Null 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNullType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANull = Null output application/json --- { a: isNullType(ANull), b: isNullType(Null), c: isNullType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNullType ## [](#isnulltype1)isNullType(t: Type): Boolean 入力が Null 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNullType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANull = Null output application/json --- { a: isNullType(ANull), b: isNullType(Null), c: isNullType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumberType ## [](#isnumbertype1)isNumberType(Type): Boolean 入力が Number (数値) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNumberType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANumber = Number output application/json --- { a: isNumberType(ANumber), b: isNumberType(Number), c: isNumberType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumberType ## [](#isnumbertype1)isNumberType(t: Type): Boolean 入力が Number (数値) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNumberType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANumber = Number output application/json --- { a: isNumberType(ANumber), b: isNumberType(Number), c: isNumberType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumberType ## [](#isnumbertype1)isNumberType(t: Type): Boolean 入力が Number (数値) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNumberType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANumber = Number output application/json --- { a: isNumberType(ANumber), b: isNumberType(Number), c: isNumberType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumberType ## [](#isnumbertype1)isNumberType(t: Type): Boolean 入力が Number (数値) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNumberType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANumber = Number output application/json --- { a: isNumberType(ANumber), b: isNumberType(Number), c: isNumberType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumberType ## [](#isnumbertype1)isNumberType(t: Type): Boolean 入力が Number (数値) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNumberType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANumber = Number output application/json --- { a: isNumberType(ANumber), b: isNumberType(Number), c: isNumberType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumberType ## [](#isnumbertype1)isNumberType(t: Type): Boolean 入力が Number (数値) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isNumberType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ANumber = Number output application/json --- { a: isNumberType(ANumber), b: isNumberType(Number), c: isNumberType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isNumeric ## [](#isnumeric1)isNumeric(String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。 小数点は Unicode 数字ではないため、false が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isNumeric from dw::core::Strings output application/json --- { "a": isNumeric(null), "b": isNumeric(""), "c": isNumeric(" "), "d": isNumeric("123"), "e": isNumeric("१२३"), "f": isNumeric("12 3"), "g": isNumeric("ab2c"), "h": isNumeric("12-3"), "i": isNumeric("12.3"), "j": isNumeric("-123"), "k": isNumeric("+123") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": true, "f": false, "g": false, "h": false, "i": false, "j": false, "k": false } ``` ## [](#isnumeric2)isNumeric(Null): Boolean `isNumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # isNumeric ## [](#isnumeric1)isNumeric(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。 小数点は Unicode 数字ではないため、false が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isNumeric from dw::core::Strings output application/json --- { "a": isNumeric(null), "b": isNumeric(""), "c": isNumeric(" "), "d": isNumeric("123"), "e": isNumeric("१२३"), "f": isNumeric("12 3"), "g": isNumeric("ab2c"), "h": isNumeric("12-3"), "i": isNumeric("12.3"), "j": isNumeric("-123"), "k": isNumeric("+123") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": true, "f": false, "g": false, "h": false, "i": false, "j": false, "k": false } ``` ## [](#isnumeric2)isNumeric(text: Null): Boolean `isNumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # isNumeric ## [](#isnumeric1)isNumeric(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。 小数点は Unicode 数字ではないため、false が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isNumeric from dw::core::Strings output application/json --- { "a": isNumeric(null), "b": isNumeric(""), "c": isNumeric(" "), "d": isNumeric("123"), "e": isNumeric("१२३"), "f": isNumeric("12 3"), "g": isNumeric("ab2c"), "h": isNumeric("12-3"), "i": isNumeric("12.3"), "j": isNumeric("-123"), "k": isNumeric("+123") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": true, "f": false, "g": false, "h": false, "i": false, "j": false, "k": false } ``` ## [](#isnumeric2)isNumeric(text: Null): Boolean `isNumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isNumeric ## [](#isnumeric1)isNumeric(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。 小数点は Unicode 数字ではないため、false が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isNumeric from dw::core::Strings output application/json --- { "a": isNumeric(null), "b": isNumeric(""), "c": isNumeric(" "), "d": isNumeric("123"), "e": isNumeric("१२३"), "f": isNumeric("12 3"), "g": isNumeric("ab2c"), "h": isNumeric("12-3"), "i": isNumeric("12.3"), "j": isNumeric("-123"), "k": isNumeric("+123") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": true, "f": false, "g": false, "h": false, "i": false, "j": false, "k": false } ``` ## [](#isnumeric2)isNumeric(text: Null): Boolean `isNumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isNumeric ## [](#isnumeric1)isNumeric(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。 小数点は Unicode 数字ではないため、false が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isNumeric from dw::core::Strings output application/json --- { "a": isNumeric(null), "b": isNumeric(""), "c": isNumeric(" "), "d": isNumeric("123"), "e": isNumeric("१२३"), "f": isNumeric("12 3"), "g": isNumeric("ab2c"), "h": isNumeric("12-3"), "i": isNumeric("12.3"), "j": isNumeric("-123"), "k": isNumeric("+123") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": true, "f": false, "g": false, "h": false, "i": false, "j": false, "k": false } ``` ## [](#isnumeric2)isNumeric(text: Null): Boolean `isNumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isNumeric ## [](#isnumeric1)isNumeric(text: String): Boolean `text`​ に Unicode 数字のみが含まれるかどうかを確認します。 小数点は Unicode 数字ではないため、false が返されます。 このメソッドでは先頭の記号 (プラスまたはマイナス) は許可されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isNumeric from dw::core::Strings output application/json --- { "a": isNumeric(null), "b": isNumeric(""), "c": isNumeric(" "), "d": isNumeric("123"), "e": isNumeric("१२३"), "f": isNumeric("12 3"), "g": isNumeric("ab2c"), "h": isNumeric("12-3"), "i": isNumeric("12.3"), "j": isNumeric("-123"), "k": isNumeric("+123") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": true, "f": false, "g": false, "h": false, "i": false, "j": false, "k": false } ``` ## [](#isnumeric2)isNumeric(text: Null): Boolean `isNumeric`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isObjectType ## [](#isobjecttype1)isObjectType(Type): Boolean 入力が Object (オブジェクト) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} output application/json --- { a: isObjectType(AType), b: isObjectType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isObjectType ## [](#isobjecttype1)isObjectType(path: Path): Boolean 指定された ​`Path`​ 値が ​`OBJECT_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: OBJECT_TYPE, selector: "name", namespace: null}]), c: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isObjectType ## [](#isobjecttype1)isObjectType(t: Type): Boolean 入力が Object (オブジェクト) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} output application/json --- { a: isObjectType(AType), b: isObjectType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isObjectType ## [](#isobjecttype1)isObjectType(path: Path): Boolean 指定された ​`Path`​ 値が ​`OBJECT_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: OBJECT_TYPE, selector: "name", namespace: null}]), c: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isObjectType ## [](#isobjecttype1)isObjectType(t: Type): Boolean 入力が Object (オブジェクト) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} output application/json --- { a: isObjectType(AType), b: isObjectType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isObjectType ## [](#isobjecttype1)isObjectType(path: Path): Boolean 指定された ​`Path`​ 値が ​`OBJECT_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: OBJECT_TYPE, selector: "name", namespace: null}]), c: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isObjectType ## [](#isobjecttype1)isObjectType(t: Type): Boolean 入力が Object (オブジェクト) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} output application/json --- { a: isObjectType(AType), b: isObjectType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isObjectType ## [](#isobjecttype1)isObjectType(path: Path): Boolean 指定された ​`Path`​ 値が ​`OBJECT_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: OBJECT_TYPE, selector: "name", namespace: null}]), c: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isObjectType ## [](#isobjecttype1)isObjectType(t: Type): Boolean 入力が Object (オブジェクト) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} output application/json --- { a: isObjectType(AType), b: isObjectType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isObjectType ## [](#isobjecttype1)isObjectType(path: Path): Boolean 指定された ​`Path`​ 値が ​`OBJECT_TYPE`​ 式の場合、​`true`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

path

検証する ​Path​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { a: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}]), b: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: OBJECT_TYPE, selector: "name", namespace: null}]), c: isObjectType([{kind: OBJECT_TYPE, selector: "user", namespace: null}]) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true } ``` # isObjectType ## [](#isobjecttype1)isObjectType(t: Type): Boolean 入力が Object (オブジェクト) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isObjectType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = {name: String} output application/json --- { a: isObjectType(AType), b: isObjectType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isOdd ## [](#isodd1)isOdd(Number): Boolean 数値または算術演算の数値結果が奇数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値が奇数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isOdd" : [ isOdd(0), isOdd(1), isOdd(2+2) ] } ``` #### [](#出力)出力 ```JSON { "isOdd": [ false, true, false ] } ``` # isOdd ## [](#isodd1)isOdd(number: Number): Boolean 数値または算術演算の数値結果が奇数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値が奇数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isOdd" : [ isOdd(0), isOdd(1), isOdd(2+2) ] } ``` #### [](#出力)出力 ```JSON { "isOdd": [ false, true, false ] } ``` # isOdd ## [](#isodd1)isOdd(number: Number): Boolean 数値または算術演算の数値結果が奇数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値が奇数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isOdd" : [ isOdd(0), isOdd(1), isOdd(2+2) ] } ``` #### [](#出力)出力 ```JSON { "isOdd": [ false, true, false ] } ``` # isOdd ## [](#isodd1)isOdd(number: Number): Boolean 数値または算術演算の数値結果が奇数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値が奇数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isOdd" : [ isOdd(0), isOdd(1), isOdd(2+2) ] } ``` #### [](#出力)出力 ```JSON { "isOdd": [ false, true, false ] } ``` # isOdd ## [](#isodd1)isOdd(number: Number): Boolean 数値または算術演算の数値結果が奇数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値が奇数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isOdd" : [ isOdd(0), isOdd(1), isOdd(2+2) ] } ``` #### [](#出力)出力 ```JSON { "isOdd": [ false, true, false ] } ``` # isOdd ## [](#isodd1)isOdd(number: Number): Boolean 数値または算術演算の数値結果が奇数の場合は ​`true`​ を返し、それ以外の場合は ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値が奇数かどうかを示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "isOdd" : [ isOdd(0), isOdd(1), isOdd(2+2) ] } ``` #### [](#出力)出力 ```JSON { "isOdd": [ false, true, false ] } ``` # isPeriodType ## [](#isperiodtype1)isPeriodType(Type): Boolean 入力が Period (期間) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isPeriodType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type APeriod = Period output application/json --- { a: isPeriodType(APeriod), b: isPeriodType(Period), c: isPeriodType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isPeriodType ## [](#isperiodtype1)isPeriodType(t: Type): Boolean 入力が Period (期間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isPeriodType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type APeriod = Period output application/json --- { a: isPeriodType(APeriod), b: isPeriodType(Period), c: isPeriodType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isPeriodType ## [](#isperiodtype1)isPeriodType(t: Type): Boolean 入力が Period (期間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isPeriodType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type APeriod = Period output application/json --- { a: isPeriodType(APeriod), b: isPeriodType(Period), c: isPeriodType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isPeriodType ## [](#isperiodtype1)isPeriodType(t: Type): Boolean 入力が Period (期間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isPeriodType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type APeriod = Period output application/json --- { a: isPeriodType(APeriod), b: isPeriodType(Period), c: isPeriodType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isPeriodType ## [](#isperiodtype1)isPeriodType(t: Type): Boolean 入力が Period (期間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isPeriodType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type APeriod = Period output application/json --- { a: isPeriodType(APeriod), b: isPeriodType(Period), c: isPeriodType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isPeriodType ## [](#isperiodtype1)isPeriodType(t: Type): Boolean 入力が Period (期間) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isPeriodType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type APeriod = Period output application/json --- { a: isPeriodType(APeriod), b: isPeriodType(Period), c: isPeriodType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRangeType ## [](#israngetype1)isRangeType(Type): Boolean 入力が Range (範囲) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRangeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARange = Range output application/json --- { a: isRangeType(ARange), b: isRangeType(Range), c: isRangeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRangeType ## [](#israngetype1)isRangeType(t: Type): Boolean 入力が Range (範囲) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRangeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARange = Range output application/json --- { a: isRangeType(ARange), b: isRangeType(Range), c: isRangeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRangeType ## [](#israngetype1)isRangeType(t: Type): Boolean 入力が Range (範囲) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRangeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARange = Range output application/json --- { a: isRangeType(ARange), b: isRangeType(Range), c: isRangeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRangeType ## [](#israngetype1)isRangeType(t: Type): Boolean 入力が Range (範囲) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRangeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARange = Range output application/json --- { a: isRangeType(ARange), b: isRangeType(Range), c: isRangeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRangeType ## [](#israngetype1)isRangeType(t: Type): Boolean 入力が Range (範囲) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRangeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARange = Range output application/json --- { a: isRangeType(ARange), b: isRangeType(Range), c: isRangeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRangeType ## [](#israngetype1)isRangeType(t: Type): Boolean 入力が Range (範囲) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRangeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARange = Range output application/json --- { a: isRangeType(ARange), b: isRangeType(Range), c: isRangeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isReferenceType ## [](#isreferencetype1)isReferenceType(Type): Boolean 入力種別が Reference (参照) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isReferenceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: isReferenceType( AArray), b: isReferenceType(arrayItem(AArray2)), c: isReferenceType(String) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": false } ``` # isReferenceType ## [](#isreferencetype1)isReferenceType(t: Type): Boolean 入力種別が Reference (参照) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isReferenceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: isReferenceType( AArray), b: isReferenceType(arrayItem(AArray2)), c: isReferenceType(String) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": false } ``` # isReferenceType ## [](#isreferencetype1)isReferenceType(t: Type): Boolean 入力種別が Reference (参照) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isReferenceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: isReferenceType( AArray), b: isReferenceType(arrayItem(AArray2)), c: isReferenceType(String) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": false } ``` # isReferenceType ## [](#isreferencetype1)isReferenceType(t: Type): Boolean 入力種別が Reference (参照) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isReferenceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: isReferenceType( AArray), b: isReferenceType(arrayItem(AArray2)), c: isReferenceType(String) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": false } ``` # isReferenceType ## [](#isreferencetype1)isReferenceType(t: Type): Boolean 入力種別が Reference (参照) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isReferenceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: isReferenceType( AArray), b: isReferenceType(arrayItem(AArray2)), c: isReferenceType(String) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": false } ``` # isReferenceType ## [](#isreferencetype1)isReferenceType(t: Type): Boolean 入力種別が Reference (参照) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isReferenceType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: isReferenceType( AArray), b: isReferenceType(arrayItem(AArray2)), c: isReferenceType(String) } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": false } ``` # isRegexType ## [](#isregextype1)isRegexType(Type): Boolean 入力が Regex (正規表現) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRegexType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARegex = Regex output application/json --- { a: isRegexType(ARegex), b: isRegexType(Regex), c: isRegexType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRegexType ## [](#isregextype1)isRegexType(t: Type): Boolean 入力が Regex (正規表現) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRegexType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARegex = Regex output application/json --- { a: isRegexType(ARegex), b: isRegexType(Regex), c: isRegexType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRegexType ## [](#isregextype1)isRegexType(t: Type): Boolean 入力が Regex (正規表現) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRegexType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARegex = Regex output application/json --- { a: isRegexType(ARegex), b: isRegexType(Regex), c: isRegexType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRegexType ## [](#isregextype1)isRegexType(t: Type): Boolean 入力が Regex (正規表現) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRegexType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARegex = Regex output application/json --- { a: isRegexType(ARegex), b: isRegexType(Regex), c: isRegexType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRegexType ## [](#isregextype1)isRegexType(t: Type): Boolean 入力が Regex (正規表現) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRegexType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARegex = Regex output application/json --- { a: isRegexType(ARegex), b: isRegexType(Regex), c: isRegexType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isRegexType ## [](#isregextype1)isRegexType(t: Type): Boolean 入力が Regex (正規表現) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isRegexType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ARegex = Regex output application/json --- { a: isRegexType(ARegex), b: isRegexType(Regex), c: isRegexType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isStringType ## [](#isstringtype1)isStringType(Type): Boolean 入力が String (文字列) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isStringType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AString = String output application/json --- { a: isStringType(AString), b: isStringType(String), c: isStringType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isStringType ## [](#isstringtype1)isStringType(t: Type): Boolean 入力が String (文字列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isStringType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AString = String output application/json --- { a: isStringType(AString), b: isStringType(String), c: isStringType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isStringType ## [](#isstringtype1)isStringType(t: Type): Boolean 入力が String (文字列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isStringType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AString = String output application/json --- { a: isStringType(AString), b: isStringType(String), c: isStringType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isStringType ## [](#isstringtype1)isStringType(t: Type): Boolean 入力が String (文字列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isStringType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AString = String output application/json --- { a: isStringType(AString), b: isStringType(String), c: isStringType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isStringType ## [](#isstringtype1)isStringType(t: Type): Boolean 入力が String (文字列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isStringType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AString = String output application/json --- { a: isStringType(AString), b: isStringType(String), c: isStringType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isStringType ## [](#isstringtype1)isStringType(t: Type): Boolean 入力が String (文字列) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isStringType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AString = String output application/json --- { a: isStringType(AString), b: isStringType(String), c: isStringType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeType ## [](#istimetype1)isTimeType(Type): Boolean 入力が Time (時刻) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATime = Time output application/json --- { a: isTimeType(ATime), b: isTimeType(Time), c: isTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeType ## [](#istimetype1)isTimeType(t: Type): Boolean 入力が Time (時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATime = Time output application/json --- { a: isTimeType(ATime), b: isTimeType(Time), c: isTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeType ## [](#istimetype1)isTimeType(t: Type): Boolean 入力が Time (時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATime = Time output application/json --- { a: isTimeType(ATime), b: isTimeType(Time), c: isTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeType ## [](#istimetype1)isTimeType(t: Type): Boolean 入力が Time (時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATime = Time output application/json --- { a: isTimeType(ATime), b: isTimeType(Time), c: isTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeType ## [](#istimetype1)isTimeType(t: Type): Boolean 入力が Time (時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATime = Time output application/json --- { a: isTimeType(ATime), b: isTimeType(Time), c: isTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeType ## [](#istimetype1)isTimeType(t: Type): Boolean 入力が Time (時刻) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATime = Time output application/json --- { a: isTimeType(ATime), b: isTimeType(Time), c: isTimeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeZoneType ## [](#istimezonetype1)isTimeZoneType(Type): Boolean 入力が TimeZone (タイムゾーン) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeZoneType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATimeZone = TimeZone output application/json --- { a: isTimeZoneType(ATimeZone), b: isTimeZoneType(TimeZone), c: isTimeZoneType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeZoneType ## [](#istimezonetype1)isTimeZoneType(t: Type): Boolean 入力が TimeZone (タイムゾーン) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeZoneType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATimeZone = TimeZone output application/json --- { a: isTimeZoneType(ATimeZone), b: isTimeZoneType(TimeZone), c: isTimeZoneType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeZoneType ## [](#istimezonetype1)isTimeZoneType(t: Type): Boolean 入力が TimeZone (タイムゾーン) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeZoneType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATimeZone = TimeZone output application/json --- { a: isTimeZoneType(ATimeZone), b: isTimeZoneType(TimeZone), c: isTimeZoneType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeZoneType ## [](#istimezonetype1)isTimeZoneType(t: Type): Boolean 入力が TimeZone (タイムゾーン) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeZoneType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATimeZone = TimeZone output application/json --- { a: isTimeZoneType(ATimeZone), b: isTimeZoneType(TimeZone), c: isTimeZoneType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeZoneType ## [](#istimezonetype1)isTimeZoneType(t: Type): Boolean 入力が TimeZone (タイムゾーン) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeZoneType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATimeZone = TimeZone output application/json --- { a: isTimeZoneType(ATimeZone), b: isTimeZoneType(TimeZone), c: isTimeZoneType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTimeZoneType ## [](#istimezonetype1)isTimeZoneType(t: Type): Boolean 入力が TimeZone (タイムゾーン) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTimeZoneType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type ATimeZone = TimeZone output application/json --- { a: isTimeZoneType(ATimeZone), b: isTimeZoneType(TimeZone), c: isTimeZoneType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTypeType ## [](#istypetype1)isTypeType(Type): Boolean 入力が Type (データ型) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTypeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Type output application/json --- { a: isTypeType(AType), b: isTypeType(Type), c: isTypeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTypeType ## [](#istypetype1)isTypeType(t: Type): Boolean 入力が Type (データ型) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTypeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Type output application/json --- { a: isTypeType(AType), b: isTypeType(Type), c: isTypeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTypeType ## [](#istypetype1)isTypeType(t: Type): Boolean 入力が Type (データ型) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTypeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Type output application/json --- { a: isTypeType(AType), b: isTypeType(Type), c: isTypeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTypeType ## [](#istypetype1)isTypeType(t: Type): Boolean 入力が Type (データ型) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTypeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Type output application/json --- { a: isTypeType(AType), b: isTypeType(Type), c: isTypeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTypeType ## [](#istypetype1)isTypeType(t: Type): Boolean 入力が Type (データ型) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTypeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Type output application/json --- { a: isTypeType(AType), b: isTypeType(Type), c: isTypeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isTypeType ## [](#istypetype1)isTypeType(t: Type): Boolean 入力が Type (データ型) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isTypeType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = Type output application/json --- { a: isTypeType(AType), b: isTypeType(Type), c: isTypeType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isUnionType ## [](#isuniontype1)isUnionType(Type): Boolean 入力種別が Union (結合) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUnionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: isUnionType(AType), b: isUnionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isUnionType ## [](#isuniontype1)isUnionType(t: Type): Boolean 入力種別が Union (結合) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUnionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: isUnionType(AType), b: isUnionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isUnionType ## [](#isuniontype1)isUnionType(t: Type): Boolean 入力種別が Union (結合) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUnionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: isUnionType(AType), b: isUnionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isUnionType ## [](#isuniontype1)isUnionType(t: Type): Boolean 入力種別が Union (結合) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUnionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: isUnionType(AType), b: isUnionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isUnionType ## [](#isuniontype1)isUnionType(t: Type): Boolean 入力種別が Union (結合) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUnionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: isUnionType(AType), b: isUnionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isUnionType ## [](#isuniontype1)isUnionType(t: Type): Boolean 入力種別が Union (結合) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUnionType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: isUnionType(AType), b: isUnionType(Boolean), } ``` #### [](#出力)出力 ```Json { "a": true, "b": false } ``` # isUpperCase ## [](#isuppercase1)isUpperCase(String): Boolean `text`​ に大文字のみが含まれるかどうかを確認します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isNumeric`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isUpperCase from dw::core::Strings output application/json --- { "a": isUpperCase(null), "b": isUpperCase(""), "c": isUpperCase(" "), "d": isUpperCase("ABC"), "e": isUpperCase("aBC"), "f": isUpperCase("A C"), "g": isUpperCase("A1C"), "h": isUpperCase("A/C") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#isuppercase2)isUpperCase(Null): Boolean `isUpperCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # isUpperCase ## [](#isuppercase1)isUpperCase(text: String): Boolean `text`​ に大文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isUpperCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isUpperCase from dw::core::Strings output application/json --- { "a": isUpperCase(null), "b": isUpperCase(""), "c": isUpperCase(" "), "d": isUpperCase("ABC"), "e": isUpperCase("aBC"), "f": isUpperCase("A C"), "g": isUpperCase("A1C"), "h": isUpperCase("A/C") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#isuppercase2)isUpperCase(text: Null): Boolean `isUpperCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # isUpperCase ## [](#isuppercase1)isUpperCase(text: String): Boolean `text`​ に大文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isUpperCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isUpperCase from dw::core::Strings output application/json --- { "a": isUpperCase(null), "b": isUpperCase(""), "c": isUpperCase(" "), "d": isUpperCase("ABC"), "e": isUpperCase("aBC"), "f": isUpperCase("A C"), "g": isUpperCase("A1C"), "h": isUpperCase("A/C") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#isuppercase2)isUpperCase(text: Null): Boolean `isUpperCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isUpperCase ## [](#isuppercase1)isUpperCase(text: String): Boolean `text`​ に大文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isUpperCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isUpperCase from dw::core::Strings output application/json --- { "a": isUpperCase(null), "b": isUpperCase(""), "c": isUpperCase(" "), "d": isUpperCase("ABC"), "e": isUpperCase("aBC"), "f": isUpperCase("A C"), "g": isUpperCase("A1C"), "h": isUpperCase("A/C") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#isuppercase2)isUpperCase(text: Null): Boolean `isUpperCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isUpperCase ## [](#isuppercase1)isUpperCase(text: String): Boolean `text`​ に大文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isUpperCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isUpperCase from dw::core::Strings output application/json --- { "a": isUpperCase(null), "b": isUpperCase(""), "c": isUpperCase(" "), "d": isUpperCase("ABC"), "e": isUpperCase("aBC"), "f": isUpperCase("A C"), "g": isUpperCase("A1C"), "h": isUpperCase("A/C") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#isuppercase2)isUpperCase(text: Null): Boolean `isUpperCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isUpperCase ## [](#isuppercase1)isUpperCase(text: String): Boolean `text`​ に大文字のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isUpperCase`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isUpperCase from dw::core::Strings output application/json --- { "a": isUpperCase(null), "b": isUpperCase(""), "c": isUpperCase(" "), "d": isUpperCase("ABC"), "e": isUpperCase("aBC"), "f": isUpperCase("A C"), "g": isUpperCase("A1C"), "h": isUpperCase("A/C") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": false, "c": false, "d": true, "e": false, "f": false, "g": false, "h": false } ``` ## [](#isuppercase2)isUpperCase(text: Null): Boolean `isUpperCase`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isUriType ## [](#isuritype1)isUriType(Type): Boolean 入力が Uri (URI) 型の場合は ​`true`​ を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUriType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AUri = Uri output application/json --- { a: isUriType(AUri), b: isUriType(Uri), c: isUriType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isUriType ## [](#isuritype1)isUriType(t: Type): Boolean 入力が Uri (URI) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUriType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AUri = Uri output application/json --- { a: isUriType(AUri), b: isUriType(Uri), c: isUriType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isUriType ## [](#isuritype1)isUriType(t: Type): Boolean 入力が Uri (URI) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUriType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AUri = Uri output application/json --- { a: isUriType(AUri), b: isUriType(Uri), c: isUriType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isUriType ## [](#isuritype1)isUriType(t: Type): Boolean 入力が Uri (URI) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUriType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AUri = Uri output application/json --- { a: isUriType(AUri), b: isUriType(Uri), c: isUriType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isUriType ## [](#isuritype1)isUriType(t: Type): Boolean 入力が Uri (URI) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUriType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AUri = Uri output application/json --- { a: isUriType(AUri), b: isUriType(Uri), c: isUriType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isUriType ## [](#isuritype1)isUriType(t: Type): Boolean 入力が Uri (URI) 型の場合は ​`true`​ を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`isUriType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AUri = Uri output application/json --- { a: isUriType(AUri), b: isUriType(Uri), c: isUriType(String), } ``` #### [](#出力)出力 ```Json { "a": true, "b": true, "c": false } ``` # isWhitespace ## [](#iswhitespace1)isWhitespace(String): Boolean `text`​ に空白のみが含まれるかどうかを確認します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isWhitespace`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isWhitespace from dw::core::Strings output application/json --- { "a": isWhitespace(null), "b": isWhitespace(""), "c": isWhitespace(" "), "d": isWhitespace("abc"), "e": isWhitespace("ab2c"), "f": isWhitespace("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": true, "c": true, "d": false, "e": false, "f": false } ``` ## [](#iswhitespace2)isWhitespace(Null): Boolean `isWhitespace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # isWhitespace ## [](#iswhitespace1)isWhitespace(text: String): Boolean `text`​ に空白のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isWhitespace`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isWhitespace from dw::core::Strings output application/json --- { "a": isWhitespace(null), "b": isWhitespace(""), "c": isWhitespace(" "), "d": isWhitespace("abc"), "e": isWhitespace("ab2c"), "f": isWhitespace("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": true, "c": true, "d": false, "e": false, "f": false } ``` ## [](#iswhitespace2)isWhitespace(text: Null): Boolean `isWhitespace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # isWhitespace ## [](#iswhitespace1)isWhitespace(text: String): Boolean `text`​ に空白のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isWhitespace`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isWhitespace from dw::core::Strings output application/json --- { "a": isWhitespace(null), "b": isWhitespace(""), "c": isWhitespace(" "), "d": isWhitespace("abc"), "e": isWhitespace("ab2c"), "f": isWhitespace("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": true, "c": true, "d": false, "e": false, "f": false } ``` ## [](#iswhitespace2)isWhitespace(text: Null): Boolean `isWhitespace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isWhitespace ## [](#iswhitespace1)isWhitespace(text: String): Boolean `text`​ に空白のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isWhitespace`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isWhitespace from dw::core::Strings output application/json --- { "a": isWhitespace(null), "b": isWhitespace(""), "c": isWhitespace(" "), "d": isWhitespace("abc"), "e": isWhitespace("ab2c"), "f": isWhitespace("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": true, "c": true, "d": false, "e": false, "f": false } ``` ## [](#iswhitespace2)isWhitespace(text: Null): Boolean `isWhitespace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isWhitespace ## [](#iswhitespace1)isWhitespace(text: String): Boolean `text`​ に空白のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isWhitespace`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isWhitespace from dw::core::Strings output application/json --- { "a": isWhitespace(null), "b": isWhitespace(""), "c": isWhitespace(" "), "d": isWhitespace("abc"), "e": isWhitespace("ab2c"), "f": isWhitespace("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": true, "c": true, "d": false, "e": false, "f": false } ``` ## [](#iswhitespace2)isWhitespace(text: Null): Boolean `isWhitespace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # isWhitespace ## [](#iswhitespace1)isWhitespace(text: String): Boolean `text`​ に空白のみが含まれるかどうかを確認します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`isWhitespace`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import isWhitespace from dw::core::Strings output application/json --- { "a": isWhitespace(null), "b": isWhitespace(""), "c": isWhitespace(" "), "d": isWhitespace("abc"), "e": isWhitespace("ab2c"), "f": isWhitespace("ab-c") } ``` #### [](#出力)出力 ```JSON { "a": false, "b": true, "c": true, "d": false, "e": false, "f": false } ``` ## [](#iswhitespace2)isWhitespace(text: Null): Boolean `isWhitespace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # Java クラスの型の再利用 Java クラスを読み込む場合、​`java!`​ プレフィックスがあるインポートディレクティブを使用します。プレフィックス ​`java!`​ では、Java Module ローダーを使用するように DataWeave に指示します。モジュールが読み込まれたら、コンストラクター、変数、関数をコールできます ([DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-java-methods)を参照)。また、クラス型を使用することもできます。DataWeave は、​`Class`​ という型名で Java クラスの型を公開します。 Java クラスは、​[「Java 値のマッピング」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-java#java-value-mapping)​にリストされている DataWeave 型にマップされます。 表で指定されていない Java クラスは、DataWeave で ​`JavaBean`​ として処理され、DataWeave の ​`Object`​ 型にマップされます。そのオブジェクトのキーは Java クラスのプロパティの名前と一致し、それらの値はプロパティクラスと一致する DataWeave 型に対応します。次の例は、DataWeave が Java getter からすべてのプロパティを取得する方法を示しています。 Product クラス: package org.mycompany; public class Product { private String name; private int price; public Product(String name, int price) { this.name = name; this.price = price; } public String getName() {return name;} public void setName(String name) {this.name = name;} public int getPrice() {return price;} public void setPrice(int price) {this.price = price;} } この Java クラスの型を読み込むと、次の DataWeave 型の宣言と同じ効果があります。 type Class = { name?: String | Null, price?: Number | Null } 次の例は、型 ​`Product::Class`​ を DataWeave のその他の型として使用します。関数 ​`Product::new`​ をコールして (これにより、Java クラスのコンストラクターがコールされる)、DataWeave オブジェクトを作成しても、型 ​`Product::Class`​ と同じ効果があります。 インポートディレクティブには ​`from`​ がなく、代わりに型 ​`Class`​ のプレフィックス ​`Product::`​ を使用しています。このプレフィックスにより、型をより宣言的な使用が可能になり、インポートされる他の ​`Class`​ 型との競合を回避できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import java!org::mycompany::Product var aBook: Product::Class = {name: "Learn DW", price: 123} fun description(p: Product::Class) = "The product: $(p.name), costs: $(p.price)" type Order = { product: Product::Class, date: LocalDateTime } --- { a: Product::new("DW lang", 321) is Product::Class, b: description(aBook), c: {product: aBook, date: |2022-12-18T14:00:00|} is Order } ``` 出力: { a: true, b: "The product: Learn DW, costs: 123", c: true } # Java クラスの型の再利用 Java クラスを読み込む場合、​`java!`​ プレフィックスがあるインポートディレクティブを使用します。プレフィックス ​`java!`​ では、Java Module ローダーを使用するように DataWeave に指示します。モジュールが読み込まれたら、コンストラクター、変数、関数をコールできます ([DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-java-methods)を参照)。また、クラス型を使用することもできます。DataWeave は、​`Class`​ という型名で Java クラスの型を公開します。 Java クラスは、​[「Java 値のマッピング」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-java#java-value-mapping)​にリストされている DataWeave 型にマップされます。 表で指定されていない Java クラスは、DataWeave で ​`JavaBean`​ として処理され、DataWeave の ​`Object`​ 型にマップされます。そのオブジェクトのキーは Java クラスのプロパティの名前と一致し、それらの値はプロパティクラスと一致する DataWeave 型に対応します。次の例は、DataWeave が Java getter からすべてのプロパティを取得する方法を示しています。 Product クラス: package org.mycompany; public class Product { private String name; private int price; public Product(String name, int price) { this.name = name; this.price = price; } public String getName() {return name;} public void setName(String name) {this.name = name;} public int getPrice() {return price;} public void setPrice(int price) {this.price = price;} } この Java クラスの型を読み込むと、次の DataWeave 型の宣言と同じ効果があります。 type Class = { name?: String | Null, price?: Number | Null } 次の例は、型 ​`Product::Class`​ を DataWeave のその他の型として使用します。関数 ​`Product::new`​ をコールして (これにより、Java クラスのコンストラクターがコールされる)、DataWeave オブジェクトを作成しても、型 ​`Product::Class`​ と同じ効果があります。 インポートディレクティブには ​`from`​ がなく、代わりに型 ​`Class`​ のプレフィックス ​`Product::`​ を使用しています。このプレフィックスにより、型をより宣言的な使用が可能になり、インポートされる他の ​`Class`​ 型との競合を回避できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import java!org::mycompany::Product var aBook: Product::Class = {name: "Learn DW", price: 123} fun description(p: Product::Class) = "The product: $(p.name), costs: $(p.price)" type Order = { product: Product::Class, date: LocalDateTime } --- { a: Product::new("DW lang", 321) is Product::Class, b: description(aBook), c: {product: aBook, date: |2022-12-18T14:00:00|} is Order } ``` 出力: { a: true, b: "The product: Learn DW, costs: 123", c: true } # Java クラスの型の再利用 Java クラスを読み込む場合、​`java!`​ プレフィックスがあるインポートディレクティブを使用します。プレフィックス ​`java!`​ では、Java Module ローダーを使用するように DataWeave に指示します。モジュールが読み込まれたら、コンストラクター、変数、関数をコールできます ([DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-java-methods)を参照)。また、クラス型を使用することもできます。DataWeave は、​`Class`​ という型名で Java クラスの型を公開します。 Java クラスは、​[「Java 値のマッピング」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-java#java-value-mapping)​にリストされている DataWeave 型にマップされます。 表で指定されていない Java クラスは、DataWeave で ​`JavaBean`​ として処理され、DataWeave の ​`Object`​ 型にマップされます。そのオブジェクトのキーは Java クラスのプロパティの名前と一致し、それらの値はプロパティクラスと一致する DataWeave 型に対応します。次の例は、DataWeave が Java getter からすべてのプロパティを取得する方法を示しています。 Product クラス: package org.mycompany; public class Product { private String name; private int price; public Product(String name, int price) { this.name = name; this.price = price; } public String getName() {return name;} public void setName(String name) {this.name = name;} public int getPrice() {return price;} public void setPrice(int price) {this.price = price;} } この Java クラスの型を読み込むと、次の DataWeave 型の宣言と同じ効果があります。 type Class = { name?: String | Null, price?: Number | Null } 次の例は、型 ​`Product::Class`​ を DataWeave のその他の型として使用します。関数 ​`Product::new`​ をコールして (これにより、Java クラスのコンストラクターがコールされる)、DataWeave オブジェクトを作成しても、型 ​`Product::Class`​ と同じ効果があります。 インポートディレクティブには ​`from`​ がなく、代わりに型 ​`Class`​ のプレフィックス ​`Product::`​ を使用しています。このプレフィックスにより、型をより宣言的な使用が可能になり、インポートされる他の ​`Class`​ 型との競合を回避できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import java!org::mycompany::Product var aBook: Product::Class = {name: "Learn DW", price: 123} fun description(p: Product::Class) = "The product: $(p.name), costs: $(p.price)" type Order = { product: Product::Class, date: LocalDateTime } --- { a: Product::new("DW lang", 321) is Product::Class, b: description(aBook), c: {product: aBook, date: |2022-12-18T14:00:00|} is Order } ``` 出力: { a: true, b: "The product: Learn DW, costs: 123", c: true } # Java クラスの型の再利用 Java クラスを読み込む場合、​`java!`​ プレフィックスがあるインポートディレクティブを使用します。プレフィックス ​`java!`​ では、Java Module ローダーを使用するように DataWeave に指示します。モジュールが読み込まれたら、コンストラクター、変数、関数をコールできます ([DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-java-methods)を参照)。また、クラス型を使用することもできます。DataWeave は、​`Class`​ という型名で Java クラスの型を公開します。 Java クラスは、​[「Java 値のマッピング」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-java#java-value-mapping)​にリストされている DataWeave 型にマップされます。 表で指定されていない Java クラスは、DataWeave で ​`JavaBean`​ として処理され、DataWeave の ​`Object`​ 型にマップされます。そのオブジェクトのキーは Java クラスのプロパティの名前と一致し、それらの値はプロパティクラスと一致する DataWeave 型に対応します。次の例は、DataWeave が Java getter からすべてのプロパティを取得する方法を示しています。 Product クラス: package org.mycompany; public class Product { private String name; private int price; public Product(String name, int price) { this.name = name; this.price = price; } public String getName() {return name;} public void setName(String name) {this.name = name;} public int getPrice() {return price;} public void setPrice(int price) {this.price = price;} } この Java クラスの型を読み込むと、次の DataWeave 型の宣言と同じ効果があります。 type Class = { name?: String | Null, price?: Number | Null } 次の例は、型 ​`Product::Class`​ を DataWeave のその他の型として使用します。関数 ​`Product::new`​ をコールして (これにより、Java クラスのコンストラクターがコールされる)、DataWeave オブジェクトを作成しても、型 ​`Product::Class`​ と同じ効果があります。 インポートディレクティブには ​`from`​ がなく、代わりに型 ​`Class`​ のプレフィックス ​`Product::`​ を使用しています。このプレフィックスにより、型をより宣言的な使用が可能になり、インポートされる他の ​`Class`​ 型との競合を回避できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output json import java!org::mycompany::Product var aBook: Product::Class = {name: "Learn DW", price: 123} fun description(p: Product::Class) = "The product: $(p.name), costs: $(p.price)" type Order = { product: Product::Class, date: LocalDateTime } --- { a: Product::new("DW lang", 321) is Product::Class, b: description(aBook), c: {product: aBook, date: |2022-12-18T14:00:00|} is Order } ``` 出力: { a: true, b: "The product: Learn DW, costs: 123", c: true } # Java 形式 MIME タイプ: `application/java`​ ID: `java`​ Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。 ## [](#java-値のマッピング)Java 値のマッピング 次の表に、Java クラスと DataWeave の型のマッピングを示します。
Java クラス DataWeave

​java.lang.String

​String​

​Enum

​String​

​Class

​String​

​UUID

​String​

​CharSequence

String​

​Char

​String​

​java.sql.Clob

​String​

​java.io.Reader

​String​

​int

​Number​

​long

​Number​

​double

​Number​

​short

​Number​

​BigInteger

​Number​

​BigDecimal

​Number​

​AtomicInteger

​Number​

​AtomicLong

​Number​

​boolean

​Boolean​

​AtomicBoolean

​Boolean​

​java.util.Collection

​Array​

​java.lang.Iterable

​Array​

​java.util.Iterator

​Array​

​java.util.Map

​Object​

​java.util.Optional

​Null​ または ​Value​

​byte[]

​Binary​

​java.lang.InputStream

​Binary​

​byte

​Binary​

​java.lang.File

​Binary​

​java.time.LocalDateTime

​LocalDateTime​

​java.sql.Timestamp

​LocalDateTime​

​java.sql.Date

​LocalDateTime​

​java.time.ZonedDateTime

​DateTime​

​java.time.LocalTime

​LocalTime​

​java.time.OffsetTime

Time​

​java.time.LocalDate

​Date​

​java.time.ZoneOffset

​TimeZone​

​java.util.Calendar

​DateTime​

​java.util.XMLGregorianCalendar

​DateTime​

​*[]

​Array​

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。
## [](#metadata)メタデータ DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。 すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。 `payload.^class`​ は、​`payload`​ のクラスの名前を返します。 Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。 ## [](#format_enum)Enum カスタム型 Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。 ## [](#format_examples)例 次の例は、Java 形式の使用方法を示しています。 - [例: Java プロパティの値にアクセスする](#example1)​ - [例: Customer オブジェクトを作成する](#example2)​ - [例: 汎用型を使用する](#example3) ### [](#クラス定義)クラス定義 この Java の例では、次のクラス定義を使用します。 - [`User`](#class_user)​ - [`Customer`](#class_customer)​ (​`User`​ を拡張) User クラス: ```java class User { private String name; private String lastName; public User(){ } public User(String name, String lastName){ this.name = name; this.lastName = lastName; } public void setName(String name){ this.name = name; } public void setLastName(String lastName){ this.lastName = lastName; } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` 次のクラスは ​`User`​ を拡張します。 Customer クラス: ```java import java.util.Calendar; class Customer extends User { private Calendar expirationDate; private User salesRepr; public User(){ } public User(String name, String lastName,Calendar expirationDate){ super(name,lastName); this.expirationDate = expirationDate; } public void setSalesRepr(User salesRepr){ this.salesRepr = salesRepr; } public User getSalesRepr(){ return this.salesRepr; } public void setExpirationDate(Calendar expirationDate){ this.expirationDate = expirationDate; } public Calendar getExpirationDate(){ return this.expirationDate; } } ``` ### [](#example1)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#入力)入力 `User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。 ```groovy new User("Leandro", "Shokida") ``` #### [](#取得元)取得元 この DataWeave スクリプトは、入力値を JSON に変換します。 ```dataweave output application/json --- { a: payload.name, b: payload.lastName } ``` #### [](#出力)出力 出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。 ```json { "a": "Leandro", "b": "Shokida" } ``` ### [](#example2)例: Customer オブジェクトを作成する 次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。 クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。 ```dataweave output application/json --- { name: "Tomo", lastName: "Chibana", expirationDate: now(), salesRepr: { name: "Mariano", lastName: "de Achaval", } } as Object {class: "Customer"} ``` ### [](#example3)例: 汎用型を使用する この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。 各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。 ```dataweave output application/json --- [{ name: "Tomo", lastName: "Chibana" }, { name: "Ana", lastName: "Felissati" }, { name: "Leandro", lastName: "Shokida" } ] as Array {class: "java.util.ArrayList"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、Java 形式の次の設定プロパティがサポートされています。 ### [](#reader-のプロパティ)Reader のプロパティ Java データのリーダープロパティはありません。 ### [](#writer-のプロパティ)Writer のプロパティ Java 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​duplicateKeyAsArray

​Boolean

​false

オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。 有効な値は、​true​ または ​false​ です。

​writeAttributes

​Boolean

​false

キーの属性をキーの子に追加するかどうかを指定します。新しい属性キー名の先頭は @ になります。有効なオプションは、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ Java 形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/java​

## [](#関連情報)関連情報 - [DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-java-methods) # Java 形式 MIME タイプ: `application/java` ID: `java` Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。 ## [](#java-値のマッピング)Java 値のマッピング 次の表に、Java クラスと DataWeave の型のマッピングを示します。
Java クラス DataWeave

java.lang.String

String

Enum

String

Class

String

UUID

String

CharSequence

String

Char

String

java.sql.Clob

String

java.io.Reader

String

int

Number

long

Number

double

Number

short

Number

BigInteger

Number

BigDecimal

Number

AtomicInteger

Number

AtomicLong

Number

boolean

Boolean

AtomicBoolean

Boolean

java.util.Collection

Array

java.lang.Iterable

Array

java.util.Iterator

Array

java.util.Map

Object

java.util.Optional

Null​ または ​Value

java.util.OptionalInt

Null​ または ​Number

java.util.OptionalDouble

Null​ または ​Number

java.util.OptionalLong

Null​ または ​Number

byte[]

Binary

java.lang.InputStream

Binary

java.nio.ByteBuffer

Binary

byte

Binary

java.lang.File

Binary

java.time.Instant

LocalDateTime

java.time.LocalDateTime

LocalDateTime

java.sql.Timestamp

LocalDateTime

java.sql.Date

LocalDateTime

java.util.Date

LocalDateTime

java.time.ZonedDateTime

DateTime

java.time.LocalTime

LocalTime

java.time.OffsetTime

Time

java.time.LocalDate

Date

java.time.ZoneOffset

TimeZone

java.util.Calendar

DateTime

java.util.XMLGregorianCalendar

DateTime

*[]

Array

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。
## [](#metadata)メタデータ DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。 すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。 `payload.^class`​ は、​`payload`​ のクラスの名前を返します。 Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。 ## [](#format_enum)Enum カスタム型 Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。 ## [](#format_examples)例 次の例は、Java 形式の使用方法を示しています。 - [例: Java プロパティの値にアクセスする](#example1) - [例: Customer オブジェクトを作成する](#example2) - [例: 汎用型を使用する](#example3) ### [](#クラス定義)クラス定義 この Java の例では、次のクラス定義を使用します。 - [​`User`](#class_user) - [​`Customer`](#class_customer)​ (​`User`​ を拡張) User クラス: ```java class User { private String name; private String lastName; public User(){ } public User(String name, String lastName){ this.name = name; this.lastName = lastName; } public void setName(String name){ this.name = name; } public void setLastName(String lastName){ this.lastName = lastName; } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` 次のクラスは ​`User`​ を拡張します。 Customer クラス: ```java import java.util.Calendar; class Customer extends User { private Calendar expirationDate; private User salesRepr; public User(){ } public User(String name, String lastName,Calendar expirationDate){ super(name,lastName); this.expirationDate = expirationDate; } public void setSalesRepr(User salesRepr){ this.salesRepr = salesRepr; } public User getSalesRepr(){ return this.salesRepr; } public void setExpirationDate(Calendar expirationDate){ this.expirationDate = expirationDate; } public Calendar getExpirationDate(){ return this.expirationDate; } } ``` ### [](#example1)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#入力)入力 `User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。 ```groovy new User("Leandro", "Shokida") ``` #### [](#取得元)取得元 この DataWeave スクリプトは、入力値を JSON に変換します。 ```dataweave output application/json --- { a: payload.name, b: payload.lastName } ``` #### [](#出力)出力 出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。 ```json { "a": "Leandro", "b": "Shokida" } ``` ### [](#example2)例: Customer オブジェクトを作成する 次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。 クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。 ```dataweave output application/json --- { name: "Tomo", lastName: "Chibana", expirationDate: now(), salesRepr: { name: "Mariano", lastName: "de Achaval", } } as Object {class: "Customer"} ``` ### [](#example3)例: 汎用型を使用する この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。 各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。 ```dataweave output application/json --- [{ name: "Tomo", lastName: "Chibana" }, { name: "Ana", lastName: "Felissati" }, { name: "Leandro", lastName: "Shokida" } ] as Array {class: "java.util.ArrayList"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/java

# Java 形式 MIME タイプ: `application/java` ID: `java` Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。 ## [](#java-値のマッピング)Java 値のマッピング 次の表に、Java クラスと DataWeave の型のマッピングを示します。
Java クラス DataWeave

java.lang.String

String

Enum

String

Class

String

UUID

String

CharSequence

String

Char

String

java.sql.Clob

String

java.io.Reader

String

int

Number

long

Number

double

Number

short

Number

BigInteger

Number

BigDecimal

Number

AtomicInteger

Number

AtomicLong

Number

boolean

Boolean

AtomicBoolean

Boolean

java.util.Collection

Array

java.lang.Iterable

Array

java.util.Iterator

Array

java.util.Map

Object

java.util.Optional

Null​ または ​Value

java.util.OptionalInt

Null​ または ​Number

java.util.OptionalDouble

Null​ または ​Number

java.util.OptionalLong

Null​ または ​Number

byte[]

Binary

java.lang.InputStream

Binary

java.nio.ByteBuffer

Binary

byte

Binary

java.lang.File

Binary

java.time.Instant

LocalDateTime

java.time.LocalDateTime

LocalDateTime

java.sql.Timestamp

LocalDateTime

java.sql.Date

LocalDateTime

java.util.Date

LocalDateTime

java.time.ZonedDateTime

DateTime

java.time.LocalTime

LocalTime

java.time.OffsetTime

Time

java.time.LocalDate

Date

java.time.ZoneOffset

TimeZone

java.util.Calendar

DateTime

java.util.XMLGregorianCalendar

DateTime

*[]

Array

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。
## [](#metadata)メタデータ DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。 すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。 `payload.^class`​ は、​`payload`​ のクラスの名前を返します。 Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。 ## [](#format_enum)Enum カスタム型 Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。 ## [](#format_examples)例 次の例は、Java 形式の使用方法を示しています。 - [例: Java プロパティの値にアクセスする](#example1) - [例: Customer オブジェクトを作成する](#example2) - [例: 汎用型を使用する](#example3) ### [](#クラス定義)クラス定義 この Java の例では、次のクラス定義を使用します。 - [​`User`](#class_user) - [​`Customer`](#class_customer)​ (​`User`​ を拡張) User クラス: ```java class User { private String name; private String lastName; public User(){ } public User(String name, String lastName){ this.name = name; this.lastName = lastName; } public void setName(String name){ this.name = name; } public void setLastName(String lastName){ this.lastName = lastName; } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` 次のクラスは ​`User`​ を拡張します。 Customer クラス: ```java import java.util.Calendar; class Customer extends User { private Calendar expirationDate; private User salesRepr; public User(){ } public User(String name, String lastName,Calendar expirationDate){ super(name,lastName); this.expirationDate = expirationDate; } public void setSalesRepr(User salesRepr){ this.salesRepr = salesRepr; } public User getSalesRepr(){ return this.salesRepr; } public void setExpirationDate(Calendar expirationDate){ this.expirationDate = expirationDate; } public Calendar getExpirationDate(){ return this.expirationDate; } } ``` ### [](#example1)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#入力)入力 `User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。 ```groovy new User("Leandro", "Shokida") ``` #### [](#ソース)ソース この DataWeave スクリプトは、入力値を JSON に変換します。 ```dataweave output application/json --- { a: payload.name, b: payload.lastName } ``` #### [](#出力)出力 出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。 ```json { "a": "Leandro", "b": "Shokida" } ``` ### [](#example2)例: Customer オブジェクトを作成する 次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。 クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。 ```dataweave output application/json --- { name: "Tomo", lastName: "Chibana", expirationDate: now(), salesRepr: { name: "Mariano", lastName: "de Achaval", } } as Object {class: "Customer"} ``` ### [](#example3)例: 汎用型を使用する この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。 各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。 ```dataweave output application/json --- [{ name: "Tomo", lastName: "Chibana" }, { name: "Ana", lastName: "Felissati" }, { name: "Leandro", lastName: "Shokida" } ] as Array {class: "java.util.ArrayList"} ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/java

# Java 形式 MIME タイプ: `application/java` ID: `java` Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。 ## [](#java-値のマッピング)Java 値のマッピング 次の表に、Java クラスと DataWeave の型のマッピングを示します。
Java クラス DataWeave

java.lang.String

String

Enum

String

Class

String

UUID

String

CharSequence

String

Char

String

java.sql.Clob

String

java.io.Reader

String

int

Number

long

Number

double

Number

short

Number

BigInteger

Number

BigDecimal

Number

AtomicInteger

Number

AtomicLong

Number

boolean

Boolean

AtomicBoolean

Boolean

java.util.Collection

Array

java.lang.Iterable

Array

java.util.Iterator

Array

java.util.Map

Object

java.util.Optional

Null​ または ​Value

java.util.OptionalInt

Null​ または ​Number

java.util.OptionalDouble

Null​ または ​Number

java.util.OptionalLong

Null​ または ​Number

byte[]

Binary

java.lang.InputStream

Binary

java.nio.ByteBuffer

Binary

byte

Binary

java.lang.File

Binary

java.time.Instant

LocalDateTime

java.time.LocalDateTime

LocalDateTime

java.sql.Timestamp

LocalDateTime

java.sql.Date

LocalDateTime

java.util.Date

LocalDateTime

java.time.ZonedDateTime

DateTime

java.time.LocalTime

LocalTime

java.time.OffsetTime

Time

java.time.LocalDate

Date

java.time.ZoneOffset

TimeZone

java.util.Calendar

DateTime

java.util.XMLGregorianCalendar

DateTime

*[]

Array

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。
## [](#metadata)メタデータ DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。 すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。 `payload.^class`​ は、​`payload`​ のクラスの名前を返します。 Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。 ## [](#format_enum)Enum カスタム型 Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。 ## [](#format_examples)例 次の例は、Java 形式の使用方法を示しています。 - [例: Java プロパティの値にアクセスする](#example1) - [例: Customer オブジェクトを作成する](#example2) - [例: 汎用型を使用する](#example3) ### [](#クラス定義)クラス定義 この Java の例では、次のクラス定義を使用します。 - [`User`](#class_user) - [`Customer`](#class_customer)​ (​`User`​ を拡張) User クラス: ```java class User { private String name; private String lastName; public User(){ } public User(String name, String lastName){ this.name = name; this.lastName = lastName; } public void setName(String name){ this.name = name; } public void setLastName(String lastName){ this.lastName = lastName; } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` 次のクラスは ​`User`​ を拡張します。 Customer クラス: ```java import java.util.Calendar; class Customer extends User { private Calendar expirationDate; private User salesRepr; public User(){ } public User(String name, String lastName,Calendar expirationDate){ super(name,lastName); this.expirationDate = expirationDate; } public void setSalesRepr(User salesRepr){ this.salesRepr = salesRepr; } public User getSalesRepr(){ return this.salesRepr; } public void setExpirationDate(Calendar expirationDate){ this.expirationDate = expirationDate; } public Calendar getExpirationDate(){ return this.expirationDate; } } ``` ### [](#example1)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#入力)入力 `User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。 ```groovy new User("Leandro", "Shokida") ``` #### [](#ソース)ソース この DataWeave スクリプトは、入力値を JSON に変換します。 ```dataweave output application/json --- { a: payload.name, b: payload.lastName } ``` #### [](#出力)出力 出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。 ```json { "a": "Leandro", "b": "Shokida" } ``` ### [](#example2)例: Customer オブジェクトを作成する 次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。 クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。 ```dataweave output application/json --- { name: "Tomo", lastName: "Chibana", expirationDate: now(), salesRepr: { name: "Mariano", lastName: "de Achaval", } } as Object {class: "Customer"} ``` ### [](#example3)例: 汎用型を使用する この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。 各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。 ```dataweave output application/json --- [{ name: "Tomo", lastName: "Chibana" }, { name: "Ana", lastName: "Felissati" }, { name: "Leandro", lastName: "Shokida" } ] as Array {class: "java.util.ArrayList"} ``` ## [](#java_support)Java サポート バージョン 2.6 以降、DataWeave は Java 17 をサポートしています。Java 17 では、 [Java 形式](https://docs.mulesoft.com/dataweave/latest/dataweave-formats-java)​に影響する制限がカプセル化とリフレクティブアクセスに追加されています。DataWeave は、Java のリフレクション API を使用して Java オブジェクトの読み取りと書き込みを行うため、アプリケーションで使用するオブジェクトが以下を含む Plain Old Java Object (POJO) であることを確認してください。 - デフォルトのコンストラクター - すべてのプロパティの getter - すべてのプロパティの setter ## [](#java17_examples)Java サポートの例 次の例は、Java 17 と [言語レベル 2.6](https://docs.mulesoft.com/dataweave/latest/dataweave-versioning-behavior.adoc)​ を使用して実行されます。 - [例: Java オブジェクトインスタンスを作成する](#example4) - [例: Java プロパティの値にアクセスする](#example5) ### [](#example4)例: Java オブジェクトインスタンスを作成する 次の例では、Java オブジェクトインスタンスを作成する方法を示します。 #### [](#user-クラス)User クラス この Java の例では、次のクラスを使用します。 ```java public class User { private String name; private String lastName; public User(){ } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` #### [](#dataweave-スクリプト)DataWeave スクリプト ```java {name: "Tomo", lastName: "Chibana" } as Object {class: "User"} ``` #### [](#出力-2)出力 期待される出力は、User クラスのインスタンスです。User クラス定義に適切な setter がないため、出力は ​`IllegalAccessException`​ になります。 ```java java.lang.IllegalAccessException - class org.mule.weave.v2.module.pojo.reader.PropertyDefinition (in module org.mule.weave.module.java) cannot access a member of class User with modifiers "private ``` ### [](#example5)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#item-クラス)Item クラス この Java の例では、次のクラスを使用します。 ```java public class Item { private String name; private int quantity; public Item() { } public Item(String name, int quantity) { this.name = name; this.quantity = quantity; } public void setName(String name) { this.name = name; } public void setQuantity(int quantity) { this.quantity = quantity; } } ``` #### [](#入力-2)入力 new Item("Pencil", 5) #### [](#dataweave-スクリプト-2)DataWeave スクリプト ```dataweave output application/json --- { "name": "payload.name", "quantity": "payload.quantity" } ``` #### [](#出力-3)出力 期待される出力は JSON オブジェクトです。 ```json { "name": "Pencil", "quantity": "5" } ``` Item クラス定義に適切な getter がないため、出力は ​`IllegalAccessException`​ になります。 ```java java.lang.IllegalAccessException: class org.mule.weave.v2.module.pojo.reader.PropertyDefinition (in module org.mule.weave.module.java) cannot access a member of class Item with modifiers "private" ``` ### [](#一般的なエラーのトラブルシューティング)一般的なエラーのトラブルシューティング 競合を解決するには、以下を行っていることを確認します。 - POJO 構造に従うようにクラス定義を更新する (推奨)。 - 互換性フラグ ​`com.mulesoft.dw.java.disable_set_accessible=false`​ を使用して、リフレクションオブジェクトのアクセス可能なフラグ変更を許可する。 このアプローチは回避策であり、顧客ドメインクラスに対してのみ機能します。この互換性フラグの使用は、将来のバージョンでは機能しない可能性があります。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/java

# Java 形式 MIME タイプ: `application/java` ID: `java` Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。 ## [](#java-値のマッピング)Java 値のマッピング 次の表に、Java クラスと DataWeave の型のマッピングを示します。
Java クラス DataWeave

java.lang.String

String

Enum

String

Class

String

UUID

String

CharSequence

String

Char

String

java.sql.Clob

String

java.io.Reader

String

int

Number

long

Number

double

Number

short

Number

BigInteger

Number

BigDecimal

Number

AtomicInteger

Number

AtomicLong

Number

boolean

Boolean

AtomicBoolean

Boolean

java.util.Collection

Array

java.lang.Iterable

Array

java.util.Iterator

Array

java.util.Map

Object

java.util.Optional

Null​ または ​Value

java.util.OptionalInt

Null​ または ​Number

java.util.OptionalDouble

Null​ または ​Number

java.util.OptionalLong

Null​ または ​Number

byte[]

Binary

java.lang.InputStream

Binary

java.nio.ByteBuffer

Binary

byte

Binary

java.lang.File

Binary

java.time.Instant

LocalDateTime

java.time.LocalDateTime

LocalDateTime

java.sql.Timestamp

LocalDateTime

java.sql.Date

LocalDateTime

java.util.Date

LocalDateTime

java.time.ZonedDateTime

DateTime

java.time.LocalTime

LocalTime

java.time.OffsetTime

Time

java.time.LocalDate

Date

java.time.ZoneOffset

TimeZone

java.util.Calendar

DateTime

java.util.XMLGregorianCalendar

DateTime

*[]

Array

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。
## [](#metadata)メタデータ DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。 すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。 `payload.^class`​ は、​`payload`​ のクラスの名前を返します。 Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。 ## [](#format_enum)Enum カスタム型 Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。 ## [](#format_examples)例 次の例は、Java 形式の使用方法を示しています。 - [例: Java プロパティの値にアクセスする](#example1) - [例: Customer オブジェクトを作成する](#example2) - [例: 汎用型を使用する](#example3) ### [](#クラス定義)クラス定義 この Java の例では、次のクラス定義を使用します。 - [`User`](#class_user) - [`Customer`](#class_customer)​ (​`User`​ を拡張) User クラス: ```java class User { private String name; private String lastName; public User(){ } public User(String name, String lastName){ this.name = name; this.lastName = lastName; } public void setName(String name){ this.name = name; } public void setLastName(String lastName){ this.lastName = lastName; } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` 次のクラスは ​`User`​ を拡張します。 Customer クラス: ```java import java.util.Calendar; class Customer extends User { private Calendar expirationDate; private User salesRepr; public User(){ } public User(String name, String lastName,Calendar expirationDate){ super(name,lastName); this.expirationDate = expirationDate; } public void setSalesRepr(User salesRepr){ this.salesRepr = salesRepr; } public User getSalesRepr(){ return this.salesRepr; } public void setExpirationDate(Calendar expirationDate){ this.expirationDate = expirationDate; } public Calendar getExpirationDate(){ return this.expirationDate; } } ``` ### [](#example1)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#入力)入力 `User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。 ```groovy new User("Leandro", "Shokida") ``` #### [](#ソース)ソース この DataWeave スクリプトは、入力値を JSON に変換します。 ```dataweave output application/json --- { a: payload.name, b: payload.lastName } ``` #### [](#出力)出力 出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。 ```json { "a": "Leandro", "b": "Shokida" } ``` ### [](#example2)例: Customer オブジェクトを作成する 次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。 クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。 ```dataweave output application/json --- { name: "Tomo", lastName: "Chibana", expirationDate: now(), salesRepr: { name: "Mariano", lastName: "de Achaval", } } as Object {class: "Customer"} ``` ### [](#example3)例: 汎用型を使用する この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。 各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。 ```dataweave output application/json --- [{ name: "Tomo", lastName: "Chibana" }, { name: "Ana", lastName: "Felissati" }, { name: "Leandro", lastName: "Shokida" } ] as Array {class: "java.util.ArrayList"} ``` ## [](#java_support)Java サポート バージョン 2.6 以降、DataWeave は Java 17 をサポートしています。Java 17 では、 [Java 形式](https://docs.mulesoft.com/dataweave/latest/dataweave-formats-java)​に影響する制限がカプセル化とリフレクティブアクセスに追加されています。DataWeave は、Java のリフレクション API を使用して Java オブジェクトの読み取りと書き込みを行うため、アプリケーションで使用するオブジェクトが以下を含む Plain Old Java Object (POJO) であることを確認してください。 - デフォルトのコンストラクター - すべてのプロパティの getter - すべてのプロパティの setter ## [](#java17_examples)Java サポートの例 次の例は、Java 17 と [言語レベル 2.6](https://docs.mulesoft.com/dataweave/latest/dataweave-versioning-behavior.adoc)​ を使用して実行されます。 - [例: Java オブジェクトインスタンスを作成する](#example4) - [例: Java プロパティの値にアクセスする](#example5) ### [](#example4)例: Java オブジェクトインスタンスを作成する 次の例では、Java オブジェクトインスタンスを作成する方法を示します。 #### [](#user-クラス)User クラス この Java の例では、次のクラスを使用します。 ```java public class User { private String name; private String lastName; public User(){ } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` #### [](#dataweave-スクリプト)DataWeave スクリプト ```java {name: "Tomo", lastName: "Chibana" } as Object {class: "User"} ``` #### [](#出力-2)出力 期待される出力は、User クラスのインスタンスです。User クラス定義に適切な setter がないため、出力は ​`IllegalAccessException`​ になります。 ```java java.lang.IllegalAccessException - class org.mule.weave.v2.module.pojo.reader.PropertyDefinition (in module org.mule.weave.module.java) cannot access a member of class User with modifiers "private ``` ### [](#example5)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#item-クラス)Item クラス この Java の例では、次のクラスを使用します。 ```java public class Item { private String name; private int quantity; public Item() { } public Item(String name, int quantity) { this.name = name; this.quantity = quantity; } public void setName(String name) { this.name = name; } public void setQuantity(int quantity) { this.quantity = quantity; } } ``` #### [](#入力-2)入力 new Item("Pencil", 5) #### [](#dataweave-スクリプト-2)DataWeave スクリプト ```dataweave output application/json --- { "name": "payload.name", "quantity": "payload.quantity" } ``` #### [](#出力-3)出力 期待される出力は JSON オブジェクトです。 ```json { "name": "Pencil", "quantity": "5" } ``` Item クラス定義に適切な getter がないため、出力は ​`IllegalAccessException`​ になります。 ```java java.lang.IllegalAccessException: class org.mule.weave.v2.module.pojo.reader.PropertyDefinition (in module org.mule.weave.module.java) cannot access a member of class Item with modifiers "private" ``` ### [](#一般的なエラーのトラブルシューティング)一般的なエラーのトラブルシューティング 競合を解決するには、以下を行っていることを確認します。 - POJO 構造に従うようにクラス定義を更新する (推奨)。 - 互換性フラグ ​`com.mulesoft.dw.java.disable_set_accessible=false`​ を使用して、リフレクションオブジェクトのアクセス可能なフラグ変更を許可する。 このアプローチは回避策であり、顧客ドメインクラスに対してのみ機能します。この互換性フラグの使用は、将来のバージョンでは機能しない可能性があります。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/java

# Java 形式 MIME タイプ: `application/java` ID: `java` Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。 ## [](#java-値のマッピング)Java 値のマッピング 次の表に、Java クラスと DataWeave の型のマッピングを示します。
Java クラス DataWeave

java.lang.String

String

Enum

String

Class

String

UUID

String

CharSequence

String

Char

String

java.sql.Clob

String

java.io.Reader

String

int

Number

long

Number

double

Number

short

Number

BigInteger

Number

BigDecimal

Number

AtomicInteger

Number

AtomicLong

Number

boolean

Boolean

AtomicBoolean

Boolean

java.util.Collection

Array

java.lang.Iterable

Array

java.util.Iterator

Array

java.util.Map

Object

java.util.Optional

Null​ または ​Value

java.util.OptionalInt

Null​ または ​Number

java.util.OptionalDouble

Null​ または ​Number

java.util.OptionalLong

Null​ または ​Number

byte[]

Binary

java.lang.InputStream

Binary

java.nio.ByteBuffer

Binary

byte

Binary

java.lang.File

Binary

java.time.Instant

LocalDateTime

java.time.LocalDateTime

LocalDateTime

java.sql.Timestamp

LocalDateTime

java.sql.Date

LocalDateTime

java.util.Date

LocalDateTime

java.time.ZonedDateTime

DateTime

java.time.LocalTime

LocalTime

java.time.OffsetTime

Time

java.time.LocalDate

Date

java.time.ZoneOffset

TimeZone

java.util.Calendar

DateTime

java.util.XMLGregorianCalendar

DateTime

*[]

Array

表に存在しない Java クラスは、DataWeave で ​JavaBean​ として処理され、​Object​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。
## [](#metadata)メタデータ DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。 すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。 `payload.^class`​ は、​`payload`​ のクラスの名前を返します。 Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。 ## [](#format_enum)Enum カスタム型 Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。 ## [](#format_examples)例 次の例は、Java 形式の使用方法を示しています。 - [例: Java プロパティの値にアクセスする](#example1) - [例: Customer オブジェクトを作成する](#example2) - [例: 汎用型を使用する](#example3) ### [](#クラス定義)クラス定義 この Java の例では、次のクラス定義を使用します。 - [`User`](#class_user) - [`Customer`](#class_customer)​ (​`User`​ を拡張) User クラス: ```java class User { private String name; private String lastName; public User(){ } public User(String name, String lastName){ this.name = name; this.lastName = lastName; } public void setName(String name){ this.name = name; } public void setLastName(String lastName){ this.lastName = lastName; } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` 次のクラスは ​`User`​ を拡張します。 Customer クラス: ```java import java.util.Calendar; class Customer extends User { private Calendar expirationDate; private User salesRepr; public User(){ } public User(String name, String lastName,Calendar expirationDate){ super(name,lastName); this.expirationDate = expirationDate; } public void setSalesRepr(User salesRepr){ this.salesRepr = salesRepr; } public User getSalesRepr(){ return this.salesRepr; } public void setExpirationDate(Calendar expirationDate){ this.expirationDate = expirationDate; } public Calendar getExpirationDate(){ return this.expirationDate; } } ``` ### [](#example1)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#入力)入力 `User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。 ```groovy new User("Leandro", "Shokida") ``` #### [](#ソース)ソース この DataWeave スクリプトは、入力値を JSON に変換します。 ```dataweave output application/json --- { a: payload.name, b: payload.lastName } ``` #### [](#出力)出力 出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。 ```json { "a": "Leandro", "b": "Shokida" } ``` ### [](#example2)例: Customer オブジェクトを作成する 次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。 クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。 ```dataweave output application/json --- { name: "Tomo", lastName: "Chibana", expirationDate: now(), salesRepr: { name: "Mariano", lastName: "de Achaval", } } as Object {class: "Customer"} ``` ### [](#example3)例: 汎用型を使用する この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。 各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。 ```dataweave output application/json --- [{ name: "Tomo", lastName: "Chibana" }, { name: "Ana", lastName: "Felissati" }, { name: "Leandro", lastName: "Shokida" } ] as Array {class: "java.util.ArrayList"} ``` ## [](#java_support)Java サポート バージョン 2.6 以降、DataWeave は Java 17 をサポートしています。Java 17 では、 [Java 形式](https://docs.mulesoft.com/dataweave/latest/dataweave-formats-java)​に影響する制限がカプセル化とリフレクティブアクセスに追加されています。DataWeave は、Java のリフレクション API を使用して Java オブジェクトの読み取りと書き込みを行うため、アプリケーションで使用するオブジェクトが以下を含む Plain Old Java Object (POJO) であることを確認してください。 - デフォルトのコンストラクター - すべてのプロパティの getter - すべてのプロパティの setter ## [](#java17_examples)Java サポートの例 次の例は、Java 17 と [言語レベル 2.6](https://docs.mulesoft.com/dataweave/latest/dataweave-versioning-behavior.adoc)​ を使用して実行されます。 - [例: Java オブジェクトインスタンスを作成する](#example4) - [例: Java プロパティの値にアクセスする](#example5) ### [](#example4)例: Java オブジェクトインスタンスを作成する 次の例では、Java オブジェクトインスタンスを作成する方法を示します。 #### [](#user-クラス)User クラス この Java の例では、次のクラスを使用します。 ```java public class User { private String name; private String lastName; public User(){ } public String getName(){ return name; } public String getLastName(){ return lastName; } } ``` #### [](#dataweave-スクリプト)DataWeave スクリプト ```java {name: "Tomo", lastName: "Chibana" } as Object {class: "User"} ``` #### [](#出力-2)出力 期待される出力は、User クラスのインスタンスです。User クラス定義に適切な setter がないため、出力は ​`IllegalAccessException`​ になります。 ```java java.lang.IllegalAccessException - class org.mule.weave.v2.module.pojo.reader.PropertyDefinition (in module org.mule.weave.module.java) cannot access a member of class User with modifiers "private ``` ### [](#example5)例: Java プロパティの値にアクセスする 次の例は、Java プロパティの値にアクセスする方法を示しています。 #### [](#item-クラス)Item クラス この Java の例では、次のクラスを使用します。 ```java public class Item { private String name; private int quantity; public Item() { } public Item(String name, int quantity) { this.name = name; this.quantity = quantity; } public void setName(String name) { this.name = name; } public void setQuantity(int quantity) { this.quantity = quantity; } } ``` #### [](#入力-2)入力 new Item("Pencil", 5) #### [](#dataweave-スクリプト-2)DataWeave スクリプト ```dataweave output application/json --- { "name": "payload.name", "quantity": "payload.quantity" } ``` #### [](#出力-3)出力 期待される出力は JSON オブジェクトです。 ```json { "name": "Pencil", "quantity": "5" } ``` Item クラス定義に適切な getter がないため、出力は ​`IllegalAccessException`​ になります。 ```java java.lang.IllegalAccessException: class org.mule.weave.v2.module.pojo.reader.PropertyDefinition (in module org.mule.weave.module.java) cannot access a member of class Item with modifiers "private" ``` ### [](#一般的なエラーのトラブルシューティング)一般的なエラーのトラブルシューティング 競合を解決するには、以下を行っていることを確認します。 - POJO 構造に従うようにクラス定義を更新する (推奨)。 - 互換性フラグ ​`com.mulesoft.dw.java.disable_set_accessible=false`​ を使用して、リフレクションオブジェクトのアクセス可能なフラグ変更を許可する。 このアプローチは回避策であり、顧客ドメインクラスに対してのみ機能します。この互換性フラグの使用は、将来のバージョンでは機能しない可能性があります。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/java

# join ## [](#join1)join(Array, Array, (leftValue: L) -> String, (rightValue: R) -> String): Array> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `join`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する右の項目を ID によってマージします。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​left

オブジェクトの左側配列。

​right

オブジェクトの右側配列。

​leftCriteria

左のコレクションの ID を抽出するために使用する条件。

​rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトのみが含まれます。 関数の出力には ​`"l"`​ キーと ​`"r"`​ キーが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- join(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } } ] ``` # join ## [](#join1)join(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `join`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​left

オブジェクトの左側配列。

​right

オブジェクトの右側配列。

​leftCriteria

左のコレクションの ID を抽出するために使用する条件。

​rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトのみが含まれます。 関数の出力には ​`"l"`​ キーと ​`"r"`​ キーが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- join(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } } ] ``` # join ## [](#join1)join(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `join`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトのみが含まれます。 関数の出力には ​`"l"`​ キーと ​`"r"`​ キーが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- join(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } } ] ``` # join ## [](#join1)join(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `join`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトのみが含まれます。 関数の出力には ​`"l"`​ キーと ​`"r"`​ キーが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- join(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } } ] ``` # join ## [](#join1)join(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `join`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトのみが含まれます。 関数の出力には ​`"l"`​ キーと ​`"r"`​ キーが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- join(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } } ] ``` # join ## [](#join1)join(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `join`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトのみが含まれます。 関数の出力には ​`"l"`​ キーと ​`"r"`​ キーが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- join(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } } ] ``` # joinBy ## [](#joinby1)joinBy(Array, String): String 配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。 `joinBy`​ は ​`splitBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

​elements

入力配列。

​separator

リストの要素を結合するために使用する ​String​ (文字列)。

### [](#例)例 次の例では、ハイフン (​`-`​) で要素を結合します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "hyphenate" : ["a","b","c"] joinBy "-" } ``` #### [](#出力)出力 ```JSON { "hyphenate": "a-b-c" } ``` # joinBy ## [](#joinby1)joinBy(elements: Array, separator: String): String 配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。 `joinBy`​ は ​`splitBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

​elements

入力配列。

​separator

リストの要素を結合するために使用する ​String​ (文字列)。

### [](#例)例 次の例では、ハイフン (​`-`​) で要素を結合します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "hyphenate" : ["a","b","c"] joinBy "-" } ``` #### [](#出力)出力 ```JSON { "hyphenate": "a-b-c" } ``` ## [](#joinby2)joinBy(n: Null, separator: Any): Null `joinBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # joinBy ## [](#joinby1)joinBy(elements: Array, separator: String): String 配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。 `joinBy`​ は ​`splitBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

elements

入力配列。

separator

リストの要素を結合するために使用する ​String​ (文字列)。

### [](#例)例 次の例では、ハイフン (​`-`​) で要素を結合します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "hyphenate" : ["a","b","c"] joinBy "-" } ``` #### [](#出力)出力 ```JSON { "hyphenate": "a-b-c" } ``` ## [](#joinby2)joinBy(n: Null, separator: Any): Null `joinBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # joinBy ## [](#joinby1)joinBy(elements: Array, separator: String): String 配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。 `joinBy`​ は ​`splitBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

elements

入力配列。

separator

リストの要素を結合するために使用する ​String​ (文字列)。

### [](#例)例 次の例では、ハイフン (​`-`​) で要素を結合します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "hyphenate" : ["a","b","c"] joinBy "-" } ``` #### [](#出力)出力 ```JSON { "hyphenate": "a-b-c" } ``` ## [](#joinby2)joinBy(n: Null, separator: Any): Null `joinBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # joinBy ## [](#joinby1)joinBy(elements: Array, separator: String): String 配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。 `joinBy`​ は ​`splitBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

elements

入力配列。

separator

リストの要素を結合するために使用する ​String​ (文字列)。

### [](#例)例 次の例では、ハイフン (​`-`​) で要素を結合します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "hyphenate" : ["a","b","c"] joinBy "-" } ``` #### [](#出力)出力 ```JSON { "hyphenate": "a-b-c" } ``` ## [](#joinby2)joinBy(n: Null, separator: Any): Null `joinBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # joinBy ## [](#joinby1)joinBy(@StreamCapable elements: Array, separator: String): String 配列を 1 つの文字列値にマージし、指定された文字列をリストの各項目間の区切り文字として使用します。 `joinBy`​ は ​`splitBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

elements

入力配列。

separator

リストの要素を結合するために使用する ​String​ (文字列)。

### [](#例)例 次の例では、ハイフン (​`-`​) で要素を結合します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "hyphenate" : ["a","b","c"] joinBy "-" } ``` #### [](#出力)出力 ```JSON { "hyphenate": "a-b-c" } ``` ## [](#joinby2)joinBy(n: Null, separator: Any): Null `joinBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # JSON キーの名前変更 この DataWeave の例では、JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、次の関数を使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - どのような場合にキーの名前を変更するのかを単独で決定する ​`if`​。 - 新しい名前の 2 つのキーを除くすべてのキーの名前を保持する ​`if`​ と ​`and`​。 - キーの型を String (文字列) に強制変換する ​`as`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.flights map (flight) -> { (flight mapObject (value, key) -> { (emptySeats: value) if(key as String == 'availableSeats'), (airline: value) if(key as String == 'airlineName'), ((key):value) if(key as String !='availableSeats' and key as String != 'airlineName') }) } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` より管理しやすい方法で同じ出力を生成するには、DataWeave パターン一致を使用します。 この例では、以下の関数とステートメントを使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - 入力の各キーに対する ​`match`​。 - 入力内の一致するキーの名前を変更する ​`case`​ ステートメント。 - 名前の変更を必要としないキーの名前を保持する ​`else`​ ステートメント。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun renameKey(key: Key) = key match { case "availableSeats" -> "emptySeats" case "airlineName" -> "airline" else -> (key) } --- payload.flights map (flight) -> flight mapObject (value, key) -> { (renameKey(key)) : value } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-a-field-when-present) - [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map-based-on-an-external-definition) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # JSON キーの名前変更 この DataWeave の例では、JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - どのような場合にキーの名前を変更するのかを単独で決定する ​`if`​。 - 新しい名前の 2 つのキーを除くすべてのキーの名前を保持する ​`if`​ と ​`and`​。 - キーの型を String (文字列) に強制変換する ​`as`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.flights map (flight) -> { (flight mapObject (value, key) -> { (emptySeats: value) if(key as String == 'availableSeats'), (airline: value) if(key as String == 'airlineName'), ((key):value) if(key as String !='availableSeats' and key as String != 'airlineName') }) } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` より管理しやすい方法で同じ出力を生成するには、DataWeave パターン一致を使用します。 この例では、以下の関数とステートメントを使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - 入力の各キーに対する ​`match`​。 - 入力内の一致するキーの名前を変更する ​`case`​ ステートメント。 - 名前の変更を必要としないキーの名前を保持する ​`else`​ ステートメント。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun renameKey(key: Key) = key match { case "availableSeats" -> "emptySeats" case "airlineName" -> "airline" else -> (key) } --- payload.flights map (flight) -> flight mapObject (value, key) -> { (renameKey(key)) : value } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-a-field-when-present) - [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-based-on-an-external-definition) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # JSON キーの名前変更 この DataWeave の例では、JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - どのような場合にキーの名前を変更するのかを単独で決定する ​`if`​。 - 新しい名前の 2 つのキーを除くすべてのキーの名前を保持する ​`if`​ と ​`and`​。 - キーの型を String (文字列) に強制変換する ​`as`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.flights map (flight) -> { (flight mapObject (value, key) -> { (emptySeats: value) if(key as String == 'availableSeats'), (airline: value) if(key as String == 'airlineName'), ((key):value) if(key as String !='availableSeats' and key as String != 'airlineName') }) } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` より管理しやすい方法で同じ出力を生成するには、DataWeave パターン一致を使用します。 この例では、以下の関数とステートメントを使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - 入力の各キーに対する ​`match`​。 - 入力内の一致するキーの名前を変更する ​`case`​ ステートメント。 - 名前の変更を必要としないキーの名前を保持する ​`else`​ ステートメント。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun renameKey(key: Key) = key match { case "availableSeats" -> "emptySeats" case "airlineName" -> "airline" else -> (key) } --- payload.flights map (flight) -> flight mapObject (value, key) -> { (renameKey(key)) : value } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-a-field-when-present) - [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map-based-on-an-external-definition) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # JSON キーの名前変更 この DataWeave の例では、JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - どのような場合にキーの名前を変更するのかを単独で決定する ​`if`​。 - 新しい名前の 2 つのキーを除くすべてのキーの名前を保持する ​`if`​ と ​`and`​。 - キーの型を String (文字列) に強制変換する ​`as`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.flights map (flight) -> { (flight mapObject (value, key) -> { (emptySeats: value) if(key as String == 'availableSeats'), (airline: value) if(key as String == 'airlineName'), ((key):value) if(key as String !='availableSeats' and key as String != 'airlineName') }) } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` より管理しやすい方法で同じ出力を生成するには、DataWeave パターン一致を使用します。 この例では、以下の関数とステートメントを使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - 入力の各キーに対する ​`match`​。 - 入力内の一致するキーの名前を変更する ​`case`​ ステートメント。 - 名前の変更を必要としないキーの名前を保持する ​`else`​ ステートメント。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun renameKey(key: Key) = key match { case "availableSeats" -> "emptySeats" case "airlineName" -> "airline" else -> (key) } --- payload.flights map (flight) -> flight mapObject (value, key) -> { (renameKey(key)) : value } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-a-field-when-present) - [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-based-on-an-external-definition) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # JSON キーの名前変更 この DataWeave の例では、JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - どのような場合にキーの名前を変更するのかを単独で決定する ​`if`​。 - 新しい名前の 2 つのキーを除くすべてのキーの名前を保持する ​`if`​ と ​`and`​。 - キーの型を String (文字列) に強制変換する ​`as`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.flights map (flight) -> { (flight mapObject (value, key) -> { (emptySeats: value) if(key as String == 'availableSeats'), (airline: value) if(key as String == 'airlineName'), ((key):value) if(key as String !='availableSeats' and key as String != 'airlineName') }) } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` より管理しやすい方法で同じ出力を生成するには、DataWeave パターン一致を使用します。 この例では、以下の関数とステートメントを使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - 入力の各キーに対する ​`match`​。 - 入力内の一致するキーの名前を変更する ​`case`​ ステートメント。 - 名前の変更を必要としないキーの名前を保持する ​`else`​ ステートメント。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun renameKey(key: Key) = key match { case "availableSeats" -> "emptySeats" case "airlineName" -> "airline" else -> (key) } --- payload.flights map (flight) -> flight mapObject (value, key) -> { (renameKey(key)) : value } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-a-field-when-present) - [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map-based-on-an-external-definition) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # JSON キーの名前変更 この DataWeave の例では、JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - どのような場合にキーの名前を変更するのかを単独で決定する ​`if`​。 - 新しい名前の 2 つのキーを除くすべてのキーの名前を保持する ​`if`​ と ​`and`​。 - キーの型を String (文字列) に強制変換する ​`as`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.flights map (flight) -> { (flight mapObject (value, key) -> { (emptySeats: value) if(key as String == 'availableSeats'), (airline: value) if(key as String == 'airlineName'), ((key):value) if(key as String !='availableSeats' and key as String != 'airlineName') }) } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` より管理しやすい方法で同じ出力を生成するには、DataWeave パターン一致を使用します。 この例では、以下の関数とステートメントを使用します。 - JSON オブジェクトの ​`key:value`​ ペアを調べる ​`mapObject`​。 - 入力の各キーに対する ​`match`​。 - 入力内の一致するキーの名前を変更する ​`case`​ ステートメント。 - 名前の変更を必要としないキーの名前を保持する ​`else`​ ステートメント。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun renameKey(key: Key) = key match { case "availableSeats" -> "emptySeats" case "airlineName" -> "airline" else -> (key) } --- payload.flights map (flight) -> flight mapObject (value, key) -> { (renameKey(key)) : value } ``` 入力 JSON ペイロード: ```json { "flights":[ { "availableSeats":45, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"737", "departureDate":"12/14/2017", "origin":"BCN", "destination":"FCO" }, { "availableSeats":15, "airlineName":"Ryan Air", "aircraftBrand":"Boeing", "aircraftType":"747", "departureDate":"08/03/2017", "origin":"FCO", "destination":"DFW" }] } ``` 出力 JSON: ```json [ { "emptySeats": 45, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "737", "departureDate": "12/14/2017", "origin": "BCN", "destination": "FCO" }, { "emptySeats": 15, "airline": "Ryan Air", "aircraftBrand": "Boeing", "aircraftType": "747", "departureDate": "08/03/2017", "origin": "FCO", "destination": "DFW" } ] ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-a-field-when-present) - [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-based-on-an-external-definition) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # JSON スキーマの型の再利用 JSON スキーマは、特定のアプリケーションで必要な JSON データの形式とそのやりとりの方法を提供する標準です。多くの既存のデータ形式または型は、この標準を使用して表されます。具体的な例を挙げると、RAML ファイルで記述される REST API の型は JSON スキーマで定義されることが多いです。 定義済みの型を再利用するには、JSON スキーマを DataWeave に読み込み、各自のスクリプトで型構造を使用できるようにします。 JSON スキーマローダーは、 [JSON スキーマの Draft 7ˆ](https://json-schema.org/specification-links.html#draft-7)​ を使用してスキーマを解析します。 ## [](#json-スキーマの型のインポート)JSON スキーマの型のインポート 次の例は、リソースディレクトリの JSON スキーマ (​`Person.json`​) を示しています。 JSON スキーマ (​`example/schema/Person.json`​): ```JSON { "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Person", "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": ["firstName", "lastName"] } ``` 次の例は、JSON スキーマローダーを使用して型をインポートする方法を示しています。 DataWeave スクリプトヘッダー: import \* from jsonschema!example::schema::Person ## [](#インポート構文)インポート構文 JSON スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を単独で使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の JSON スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToJsonSchema`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.json`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.json`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from jsonschema!\_pathToJsonSchema\_ 次の例は、型をインポートする方法を示しています。 import \* from jsonschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 上記の例のインポートディレクティブをスクリプトヘッダーに含めると、JSON スキーマの既存のすべての型が読み込まれます。​`import * from jsonschema!example::schema::Person`​ の既存の型は、ルートで指定されている ​`Root`​ 型のみです。この型では、3 つのプロパティ (​`firstName`​、​`lastName`​、​`age`​) を含めることができるオブジェクトが記述されています。これは、DataWeave スクリプトで次の型を宣言することに相当します。 DataWeave スクリプト: ```dataweave %dw 2.0 type Root = { firstName: String, lastName: String, age?: Number } ``` `age`​ は、唯一の省略可能な項目 (​`?`​ で示される) になります。 型を使用して、値が JSON スキーマで定義された構造に従っているかどうかを判断できます。 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれているため、値 ​`true`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", lastName: "Doe" } is Root ``` 出力: "true" 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれていないため、値 ​`false`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", age: 20 } is Root ``` 出力: "false" ## [](#スキーマ内の定義の使用)スキーマ内の定義の使用 DataWeave は、モジュールのインポート時に JSON スキーマ内の定義を読み込みます。 JSON スキーマ (​`example/schema/Account.json`​): ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "address": { "type": "object", "properties": { "street_address": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" } }, "required": [ "street_address", "city", "state" ] }, "person": { "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": [ "firstName", "lastName" ] } }, "type": "object", "properties": { "person": { "$ref": "#/definitions/person" }, "address": { "$ref": "#/definitions/address" } } } ``` 次のディレクティブを使用して、そのスキーマの型をインポートできます。 import \* from jsonschema!example::schema::Account スキーマで定義された型には、次の型の宣言と同じ効果があります。 type Root = { address?: address, person?: person } type address = { street\_address: String, city: String, state: String } type person = { firstName: String, lastName: String, age?: Number } インポートディレクティブを使用して、スキーマの 1 つの型をインポートします。 import address from jsonschema!example::schema::Account 型名の競合を回避するために、​`as`​ キーワードを使用して、インポートされた型名を別の名前に変更できます。 import address as Account\_Address from jsonschema!example::schema::Account ## [](#パターン一致での使用の促進)パターン一致での使用の促進 JSON スキーマからインポートされた型を使用して、特定の型の入力である場合に特定のアクションを実行できます。これらのインポートされた型は、パターン一致で役立ちます。 次の例では、値 ​`person`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { firstName: "John", lastName: "Doe" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "PERSON" 次の例では、値 ​`address`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { street_address: "742 Evergreen Terrace", city: "Gotham", State: "OH" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "ADDRESS" ### [](#組み込みの-json-スキーマの型)組み込みの JSON スキーマの型 DataWeave は、DataWeave 型に変換される次の JSON スキーマ型をサポートしています。
JSON スキーマ型 DataWeave 型

number

Number

integer

Number

string

String

boolean

Boolean

array

Array

enum

Union

null

Null

object

Object

### [](#制限事項)制限事項 - DataWeave は、JSON スキーマ文字列型の形式をサポートしておらず、検証や制限なしにこれらの型を ​`String`​ に変換します。 - DataWeave は、最大値や最小値などの数値型に対する制限をサポートしておらず、検証や制限なしでこれらの型を ​`Number`​ に変換します。 - DataWeave は、パターンをサポートしていません。 ### [](#オブジェクト種別)オブジェクト種別 DataWeave は、JSON スキーマオブジェクト種別の必須ではないプロパティを、DataWeave オブジェクト種別の省略可能なプロパティとしてマークします。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "address": { "type": "string" }, "telephone": { "type": "string" } }, "required": ["name", "email"] } ``` 出力: ```dataweave %dw 2.0 type Root = { address?: String, name: String, telephone?: String, email: String } ``` 追加プロパティが許可される場合、DataWeave はオープンオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": true } ``` 出力: ```dataweave %dw 2.0 type Root = { number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String } ``` 逆に、追加プロパティが許可されない場合、DataWeave はクローズドオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": false } ``` 出力: ```dataweave %dw 2.0 type Root = {| number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String |} ``` ### [](#サブスキーマキーワードの組み込み-json-スキーマサポート)サブスキーマキーワードの組み込み JSON スキーマサポート JSON スキーマでサブスキーマキーワードを使用すると、提供されたサブスキーマに基づいて複合型が生成されます。
JSON スキーマキーワード DataWeave 型

allOf

Intersection

anyOf

Union

oneOf

Union

次の例では、DataWeave 型を出力します。 .JSON スキーマ: ```JSON { "anyOf": [ { "type": "string" }, { "type": "number" } ] } ``` 出力: ```dataweave %dw 2.0 type Root = (String | Number) ``` # JSON スキーマの型の再利用 JSON スキーマは、特定のアプリケーションで必要な JSON データの形式とそのやりとりの方法を提供する標準です。多くの既存のデータ形式または型は、この標準を使用して表されます。具体的な例を挙げると、RAML ファイルで記述される REST API の型は JSON スキーマで定義されることが多いです。 定義済みの型を再利用するには、JSON スキーマを DataWeave に読み込み、各自のスクリプトで型構造を使用できるようにします。 JSON スキーマローダーは、 [JSON スキーマの Draft 7ˆ](https://json-schema.org/specification-links.html#draft-7)​ を使用してスキーマを解析します。 ## [](#json-スキーマの型のインポート)JSON スキーマの型のインポート 次の例は、リソースディレクトリの JSON スキーマ (​`Person.json`​) を示しています。 JSON スキーマ (​`example/schema/Person.json`​): ```JSON { "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Person", "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": ["firstName", "lastName"] } ``` 次の例は、JSON スキーマローダーを使用して型をインポートする方法を示しています。 DataWeave スクリプトヘッダー: import \* from jsonschema!example::schema::Person ## [](#インポート構文)インポート構文 JSON スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を単独で使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の JSON スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToJsonSchema`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.json`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.json`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from jsonschema!\_pathToJsonSchema\_ 次の例は、型をインポートする方法を示しています。 import \* from jsonschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 上記の例のインポートディレクティブをスクリプトヘッダーに含めると、JSON スキーマの既存のすべての型が読み込まれます。​`import * from jsonschema!example::schema::Person`​ の既存の型は、ルートで指定されている ​`Root`​ 型のみです。この型では、3 つのプロパティ (​`firstName`​、​`lastName`​、​`age`​) を含めることができるオブジェクトが記述されています。これは、DataWeave スクリプトで次の型を宣言することに相当します。 DataWeave スクリプト: ```dataweave %dw 2.0 type Root = { firstName: String, lastName: String, age?: Number } ``` `age`​ は、唯一の省略可能な項目 (​`?`​ で示される) になります。 型を使用して、値が JSON スキーマで定義された構造に従っているかどうかを判断できます。 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれているため、値 ​`true`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", lastName: "Doe" } is Root ``` 出力: "true" 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれていないため、値 ​`false`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", age: 20 } is Root ``` 出力: "false" ## [](#スキーマ内の定義の使用)スキーマ内の定義の使用 DataWeave は、モジュールのインポート時に JSON スキーマ内の定義を読み込みます。 JSON スキーマ (​`example/schema/Account.json`​): ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "address": { "type": "object", "properties": { "street_address": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" } }, "required": [ "street_address", "city", "state" ] }, "person": { "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": [ "firstName", "lastName" ] } }, "type": "object", "properties": { "person": { "$ref": "#/definitions/person" }, "address": { "$ref": "#/definitions/address" } } } ``` 次のディレクティブを使用して、そのスキーマの型をインポートできます。 import \* from jsonschema!example::schema::Account スキーマで定義された型には、次の型の宣言と同じ効果があります。 type Root = { address?: address, person?: person } type address = { street\_address: String, city: String, state: String } type person = { firstName: String, lastName: String, age?: Number } インポートディレクティブを使用して、スキーマの 1 つの型をインポートします。 import address from jsonschema!example::schema::Account 型名の競合を回避するために、​`as`​ キーワードを使用して、インポートされた型名を別の名前に変更できます。 import address as Account\_Address from jsonschema!example::schema::Account ## [](#パターン一致での使用の促進)パターン一致での使用の促進 JSON スキーマからインポートされた型を使用して、特定の型の入力である場合に特定のアクションを実行できます。これらのインポートされた型は、パターン一致で役立ちます。 次の例では、値 ​`person`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { firstName: "John", lastName: "Doe" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "PERSON" 次の例では、値 ​`address`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { street_address: "742 Evergreen Terrace", city: "Gotham", State: "OH" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "ADDRESS" ### [](#組み込みの-json-スキーマの型)組み込みの JSON スキーマの型 DataWeave は、DataWeave 型に変換される次の JSON スキーマ型をサポートしています。
JSON スキーマ型 DataWeave 型

number

Number

integer

Number

string

String

boolean

Boolean

array

Array

enum

Union

null

Null

object

Object

### [](#制限事項)制限事項 - DataWeave は、JSON スキーマ文字列型の形式をサポートしておらず、検証や制限なしにこれらの型を ​`String`​ に変換します。 - DataWeave は、最大値や最小値などの数値型に対する制限をサポートしておらず、検証や制限なしでこれらの型を ​`Number`​ に変換します。 - DataWeave は、パターンをサポートしていません。 ### [](#オブジェクト種別)オブジェクト種別 DataWeave は、JSON スキーマオブジェクト種別の必須ではないプロパティを、DataWeave オブジェクト種別の省略可能なプロパティとしてマークします。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "address": { "type": "string" }, "telephone": { "type": "string" } }, "required": ["name", "email"] } ``` 出力: ```dataweave %dw 2.0 type Root = { address?: String, name: String, telephone?: String, email: String } ``` 追加プロパティが許可される場合、DataWeave はオープンオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": true } ``` 出力: ```dataweave %dw 2.0 type Root = { number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String } ``` 逆に、追加プロパティが許可されない場合、DataWeave はクローズドオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": false } ``` 出力: ```dataweave %dw 2.0 type Root = {| number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String |} ``` ### [](#サブスキーマキーワードの組み込み-json-スキーマサポート)サブスキーマキーワードの組み込み JSON スキーマサポート JSON スキーマでサブスキーマキーワードを使用すると、提供されたサブスキーマに基づいて複合型が生成されます。
JSON スキーマキーワード DataWeave 型

allOf

Intersection

anyOf

Union

oneOf

Union

次の例では、DataWeave 型を出力します。 .JSON スキーマ: ```JSON { "anyOf": [ { "type": "string" }, { "type": "number" } ] } ``` 出力: ```dataweave %dw 2.0 type Root = (String | Number) ``` # JSON スキーマの型の再利用 JSON スキーマは、特定のアプリケーションで必要な JSON データの形式とそのやりとりの方法を提供する標準です。多くの既存のデータ形式または型は、この標準を使用して表されます。具体的な例を挙げると、RAML ファイルで記述される REST API の型は JSON スキーマで定義されることが多いです。 定義済みの型を再利用するには、JSON スキーマを DataWeave に読み込み、各自のスクリプトで型構造を使用できるようにします。 JSON スキーマローダーは、 [JSON スキーマの Draft 7ˆ](https://json-schema.org/specification-links.html#draft-7)​ を使用してスキーマを解析します。 ## [](#json-スキーマの型のインポート)JSON スキーマの型のインポート 次の例は、リソースディレクトリの JSON スキーマ (​`Person.json`​) を示しています。 JSON スキーマ (​`example/schema/Person.json`​): ```JSON { "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Person", "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": ["firstName", "lastName"] } ``` 次の例は、JSON スキーマローダーを使用して型をインポートする方法を示しています。 DataWeave スクリプトヘッダー: import \* from jsonschema!example::schema::Person ## [](#インポート構文)インポート構文 JSON スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を単独で使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の JSON スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToJsonSchema`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.json`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.json`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from jsonschema!\_pathToJsonSchema\_ 次の例は、型をインポートする方法を示しています。 import \* from jsonschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 上記の例のインポートディレクティブをスクリプトヘッダーに含めると、JSON スキーマの既存のすべての型が読み込まれます。​`import * from jsonschema!example::schema::Person`​ の既存の型は、ルートで指定されている ​`Root`​ 型のみです。この型では、3 つのプロパティ (​`firstName`​、​`lastName`​、​`age`​) を含めることができるオブジェクトが記述されています。これは、DataWeave スクリプトで次の型を宣言することに相当します。 DataWeave スクリプト: ```dataweave %dw 2.0 type Root = { firstName: String, lastName: String, age?: Number } ``` `age`​ は、唯一の省略可能な項目 (​`?`​ で示される) になります。 型を使用して、値が JSON スキーマで定義された構造に従っているかどうかを判断できます。 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれているため、値 ​`true`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", lastName: "Doe" } is Root ``` 出力: "true" 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれていないため、値 ​`false`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", age: 20 } is Root ``` 出力: "false" ## [](#スキーマ内の定義の使用)スキーマ内の定義の使用 DataWeave は、モジュールのインポート時に JSON スキーマ内の定義を読み込みます。 JSON スキーマ (​`example/schema/Account.json`​): ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "address": { "type": "object", "properties": { "street_address": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" } }, "required": [ "street_address", "city", "state" ] }, "person": { "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": [ "firstName", "lastName" ] } }, "type": "object", "properties": { "person": { "$ref": "#/definitions/person" }, "address": { "$ref": "#/definitions/address" } } } ``` 次のディレクティブを使用して、そのスキーマの型をインポートできます。 import \* from jsonschema!example::schema::Account スキーマで定義された型には、次の型の宣言と同じ効果があります。 type Root = { address?: address, person?: person } type address = { street\_address: String, city: String, state: String } type person = { firstName: String, lastName: String, age?: Number } インポートディレクティブを使用して、スキーマの 1 つの型をインポートします。 import address from jsonschema!example::schema::Account 型名の競合を回避するために、​`as`​ キーワードを使用して、インポートされた型名を別の名前に変更できます。 import address as Account\_Address from jsonschema!example::schema::Account ## [](#パターン一致での使用の促進)パターン一致での使用の促進 JSON スキーマからインポートされた型を使用して、特定の型の入力である場合に特定のアクションを実行できます。これらのインポートされた型は、パターン一致で役立ちます。 次の例では、値 ​`person`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { firstName: "John", lastName: "Doe" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "PERSON" 次の例では、値 ​`address`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { street_address: "742 Evergreen Terrace", city: "Gotham", State: "OH" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "ADDRESS" ### [](#組み込みの-json-スキーマの型)組み込みの JSON スキーマの型 DataWeave は、DataWeave 型に変換される次の JSON スキーマ型をサポートしています。
JSON スキーマ型 DataWeave 型

number

Number

integer

Number

string

String

boolean

Boolean

array

Array

enum

Union

null

Null

object

Object

### [](#制限事項)制限事項 - DataWeave は、JSON スキーマ文字列型の形式をサポートしておらず、検証や制限なしにこれらの型を ​`String`​ に変換します。 - DataWeave は、最大値や最小値などの数値型に対する制限をサポートしておらず、検証や制限なしでこれらの型を ​`Number`​ に変換します。 - DataWeave は、パターンをサポートしていません。 ### [](#オブジェクト種別)オブジェクト種別 DataWeave は、JSON スキーマオブジェクト種別の必須ではないプロパティを、DataWeave オブジェクト種別の省略可能なプロパティとしてマークします。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "address": { "type": "string" }, "telephone": { "type": "string" } }, "required": ["name", "email"] } ``` 出力: ```dataweave %dw 2.0 type Root = { address?: String, name: String, telephone?: String, email: String } ``` 追加プロパティが許可される場合、DataWeave はオープンオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": true } ``` 出力: ```dataweave %dw 2.0 type Root = { number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String } ``` 逆に、追加プロパティが許可されない場合、DataWeave はクローズドオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": false } ``` 出力: ```dataweave %dw 2.0 type Root = {| number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String |} ``` ### [](#サブスキーマキーワードの組み込み-json-スキーマサポート)サブスキーマキーワードの組み込み JSON スキーマサポート JSON スキーマでサブスキーマキーワードを使用すると、提供されたサブスキーマに基づいて複合型が生成されます。
JSON スキーマキーワード DataWeave 型

allOf

Intersection

anyOf

Union

oneOf

Union

次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "anyOf": [ { "type": "string" }, { "type": "number" } ] } ``` 出力: ```dataweave %dw 2.0 type Root = (String | Number) ``` # JSON スキーマの型の再利用 JSON スキーマは、特定のアプリケーションで必要な JSON データの形式とそのやりとりの方法を提供する標準です。多くの既存のデータ形式または型は、この標準を使用して表されます。具体的な例を挙げると、RAML ファイルで記述される REST API の型は JSON スキーマで定義されることが多いです。 定義済みの型を再利用するには、JSON スキーマを DataWeave に読み込み、各自のスクリプトで型構造を使用できるようにします。 JSON スキーマローダーは、 [JSON スキーマの Draft 7ˆ](https://json-schema.org/specification-links.html#draft-7)​ を使用してスキーマを解析します。 ## [](#json-スキーマの型のインポート)JSON スキーマの型のインポート 次の例は、リソースディレクトリの JSON スキーマ (​`Person.json`​) を示しています。 JSON スキーマ (​`example/schema/Person.json`​): ```JSON { "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Person", "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": ["firstName", "lastName"] } ``` 次の例は、JSON スキーマローダーを使用して型をインポートする方法を示しています。 DataWeave スクリプトヘッダー: import \* from jsonschema!example::schema::Person ## [](#インポート構文)インポート構文 JSON スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を単独で使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の JSON スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToJsonSchema`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.json`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.json`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from jsonschema!\_pathToJsonSchema\_ 次の例は、型をインポートする方法を示しています。 import \* from jsonschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 上記の例のインポートディレクティブをスクリプトヘッダーに含めると、JSON スキーマの既存のすべての型が読み込まれます。​`import * from jsonschema!example::schema::Person`​ の既存の型は、ルートで指定されている ​`Root`​ 型のみです。この型では、3 つのプロパティ (​`firstName`​、​`lastName`​、​`age`​) を含めることができるオブジェクトが記述されています。これは、DataWeave スクリプトで次の型を宣言することに相当します。 DataWeave スクリプト: ```dataweave %dw 2.0 type Root = { firstName: String, lastName: String, age?: Number } ``` `age`​ は、唯一の省略可能な項目 (​`?`​ で示される) になります。 型を使用して、値が JSON スキーマで定義された構造に従っているかどうかを判断できます。 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれているため、値 ​`true`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", lastName: "Doe" } is Root ``` 出力: "true" 次の例では、オブジェクトに必須項目 ​`firstName`​ および ​`lastName`​ が含まれていないため、値 ​`false`​ が出力されます。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!jsonschema!example::schema::Person --- { firstName: "John", age: 20 } is Root ``` 出力: "false" ## [](#スキーマ内の定義の使用)スキーマ内の定義の使用 DataWeave は、モジュールのインポート時に JSON スキーマ内の定義を読み込みます。 JSON スキーマ (​`example/schema/Account.json`​): ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "address": { "type": "object", "properties": { "street_address": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" } }, "required": [ "street_address", "city", "state" ] }, "person": { "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years, which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } }, "required": [ "firstName", "lastName" ] } }, "type": "object", "properties": { "person": { "$ref": "#/definitions/person" }, "address": { "$ref": "#/definitions/address" } } } ``` 次のディレクティブを使用して、そのスキーマの型をインポートできます。 import \* from jsonschema!example::schema::Account スキーマで定義された型には、次の型の宣言と同じ効果があります。 type Root = { address?: address, person?: person } type address = { street\_address: String, city: String, state: String } type person = { firstName: String, lastName: String, age?: Number } インポートディレクティブを使用して、スキーマの 1 つの型をインポートします。 import address from jsonschema!example::schema::Account 型名の競合を回避するために、​`as`​ キーワードを使用して、インポートされた型名を別の名前に変更できます。 import address as Account\_Address from jsonschema!example::schema::Account ## [](#パターン一致での使用の促進)パターン一致での使用の促進 JSON スキーマからインポートされた型を使用して、特定の型の入力である場合に特定のアクションを実行できます。これらのインポートされた型は、パターン一致で役立ちます。 次の例では、値 ​`person`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { firstName: "John", lastName: "Doe" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "PERSON" 次の例では、値 ​`address`​ が出力されます (オブジェクトでその型定義がインポートされるため)。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from jsonschema!example::schema::Account --- { street_address: "742 Evergreen Terrace", city: "Gotham", State: "OH" } match { case is person -> "PERSON" case is address -> "ADDRESS" else -> "NO TYPE MATCHED" } ``` 出力: "ADDRESS" ### [](#組み込みの-json-スキーマの型)組み込みの JSON スキーマの型 DataWeave は、DataWeave 型に変換される次の JSON スキーマ型をサポートしています。
JSON スキーマ型 DataWeave 型

number

Number

integer

Number

string

String

boolean

Boolean

array

Array

enum

Union

null

Null

object

Object

### [](#制限事項)制限事項 - DataWeave は、JSON スキーマ文字列型の形式をサポートしておらず、検証や制限なしにこれらの型を ​`String`​ に変換します。 - DataWeave は、最大値や最小値などの数値型に対する制限をサポートしておらず、検証や制限なしでこれらの型を ​`Number`​ に変換します。 - DataWeave は、パターンをサポートしていません。 ### [](#オブジェクト種別)オブジェクト種別 DataWeave は、JSON スキーマオブジェクト種別の必須ではないプロパティを、DataWeave オブジェクト種別の省略可能なプロパティとしてマークします。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "address": { "type": "string" }, "telephone": { "type": "string" } }, "required": ["name", "email"] } ``` 出力: ```dataweave %dw 2.0 type Root = { address?: String, name: String, telephone?: String, email: String } ``` 追加プロパティが許可される場合、DataWeave はオープンオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": true } ``` 出力: ```dataweave %dw 2.0 type Root = { number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String } ``` 逆に、追加プロパティが許可されない場合、DataWeave はクローズドオブジェクト定義を生成します。 次の例では、DataWeave 型を出力します。 JSON スキーマ: ```JSON { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "number": { "type": "number" }, "street_name": { "type": "string" }, "street_type": { "type": "string", "enum": ["Street", "Avenue", "Boulevard"] } }, "required": ["number"], "additionalProperties": false } ``` 出力: ```dataweave %dw 2.0 type Root = {| number: Number, street_type?: "Street" | "Avenue" | "Boulevard", street_name?: String |} ``` ### [](#サブスキーマキーワードの組み込み-json-スキーマサポート)サブスキーマキーワードの組み込み JSON スキーマサポート JSON スキーマでサブスキーマキーワードを使用すると、提供されたサブスキーマに基づいて複合型が生成されます。
JSON スキーマキーワード DataWeave 型

allOf

Intersection

anyOf

Union

oneOf

Union

次の例では、DataWeave 型を出力します。 .JSON スキーマ: ```JSON { "anyOf": [ { "type": "string" }, { "type": "number" } ] } ``` 出力: ```dataweave %dw 2.0 type Root = (String | Number) ``` # JSON 形式 MIME タイプ: `application/json`​ ID: `json`​ JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。 JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#examples)例 次の例は、JSON 形式の使用方法を示しています。 - [例: JSON を DataWeave (dw) 形式で表す](#example1)​ - [例: 繰り返される XML 要素を JSON に変換する](#example2)​ - [例: JSON データをストリーミングする](#example3) ### [](#example1)例: JSON を DataWeave (dw) 形式で表す 次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。 #### [](#入力)入力 次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Matias", "age": 8, "male": true, "kids": null, "brothers": ["Pedro", "Sara"] } ``` #### [](#ソース)ソース この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave output application/dw --- payload ``` #### [](#出力)出力 JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data#valid-keys)​を参照してください。 ```dataweave { name: "Matias", age: 8, male: true, kids: null, brothers: [ "Pedro", "Sara" ] } ``` ### [](#example2)例: 繰り返される XML 要素を JSON に変換する 次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。 XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 #### [](#入力-2)入力 次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。 ```xml Mariano Shoki Tomo Ana ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。 スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。 ```dataweave %dw 2.0 output application/json --- friends: payload.friends.*name map ( (item, index) -> {name: item} ) ``` #### [](#出力-2)出力 この DataWeave スクリプトは、次の JSON オブジェクトを出力します。 ```json { "friends": [ { "name": "Mariano" }, { "name": "Shoki" }, { "name": "Tomo" }, { "name": "Ana" } ] } ``` ### [](#example3)例: JSON データをストリーミングする ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。 #### [](#入力-3)入力 JSON 入力ペイロードは、XML 設定の入力として機能します。 JSON 入力 (切り捨てられています): ```json { "myJsonExample" : [ { "name" : "Shoki", "zipcode": "95838" }, { "name" : "Leandro", "zipcode": "95823" }, { "name" : "Mariano", "zipcode": "95815" }, { "name" : "Cristian", "zipcode": "95815" }, { "name" : "Kevin", "zipcode": "95824" }, { "name" : "Stanley", "zipcode": "95841" } ] } ``` #### [](#xml-設定)XML 設定 次の XML 設定は、JSON 入力をストリーミングします。 ```xml { returnedElement : element.zipcode })]]> ``` - このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-3)出力 この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。 ```json [ { "returnedElement": "95838" }, { "returnedElement": "95823" }, { "returnedElement": "95815" }, { "returnedElement": "95815" }, { "returnedElement": "95824" }, { "returnedElement": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、JSON の次の設定プロパティがサポートされています。 ### [](#リーダープロパティ-json)リーダープロパティ (JSON) JSON 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​streaming

​Boolean

​false

入力をストリーミングするためのプロパティ。エントリを順次アクセスする場合のみ使用します。有効な値は、​true​ または ​false​ です。 入力は最上位の配列である必要があります。DataWeave のストリーミングについての詳細は、​「DataWeave リーダー」​を参照してください。

### [](#ライタープロパティ-json)ライタープロパティ (JSON) JSON 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。有効な値は、​true​ または ​false​ です。

​duplicateKeyAsArray

​Boolean

​false

オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。 有効な値は、​true​ または ​false​ です。JSON 言語では、1 つの同じ親を持つ重複キーは許可されないため、通常重複により例外が発生します。

​encoding

​String

​UTF-8

出力で使用する文字セット。

​indent

​Boolean

​true

JSON コードをインデントして読みやすくするか、JSON を 1 行に圧縮するかを示します。 有効な値は、​true​ または ​false​ です。

​skipNullOn

​String

​null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトでは、値をスキップしません。有効な値は、​arrays​、​objects​、​everywhere​ です。

  • arrays
    JSON 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/json skipNullOn="arrays"​ のようにします。

  • objects
    値が ​null​ のキー-値ペア (例: output application/json skipNullOn="objects"​) を無視します。

  • everywhere
    skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/json skipNullOn="everywhere"​ のようにします。

writeAttributes

​Boolean

​false

キーの属性をキーの子に追加するかどうかを指定します。新しい属性キー名の先頭は @ になります。有効なオプションは、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ (JSON) JSON 形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/json​

/+json​

# JSON 形式 MIME タイプ: `application/json`​ ID: `json`​ JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。 JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#examples)例 次の例は、JSON 形式の使用方法を示しています。 - [例: JSON を DataWeave (dw) 形式で表す](#example1)​ - [例: 繰り返される XML 要素を JSON に変換する](#example2)​ - [例: JSON データをストリーミングする](#example3) ### [](#example1)例: JSON を DataWeave (dw) 形式で表す 次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。 #### [](#入力)入力 次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Matias", "age": 8, "male": true, "kids": null, "brothers": ["Pedro", "Sara"] } ``` #### [](#ソース)ソース DataWeave スクリプトは JSON 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave output application/dw --- payload ``` #### [](#出力)出力 JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-extract-data#valid-keys)​を参照してください。 ```dataweave { name: "Matias", age: 8, male: true, kids: null, brothers: [ "Pedro", "Sara" ] } ``` ### [](#example2)例: 繰り返される XML 要素を JSON に変換する 次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。 XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 #### [](#入力-2)入力 次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。 ```xml Mariano Shoki Tomo Ana ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。 スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。 ```dataweave %dw 2.0 output application/json --- friends: payload.friends.*name map ( (item, index) -> {name: item} ) ``` #### [](#出力-2)出力 この DataWeave スクリプトは、次の JSON オブジェクトを出力します。 ```json { "friends": [ { "name": "Mariano" }, { "name": "Shoki" }, { "name": "Tomo" }, { "name": "Ana" } ] } ``` ### [](#example3)例: JSON データをストリーミングする ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。 #### [](#入力-3)入力 JSON 入力ペイロードは、XML 設定の入力として機能します。 JSON 入力 (切り捨てられています): ```json { "myJsonExample" : [ { "name" : "Shoki", "zipcode": "95838" }, { "name" : "Leandro", "zipcode": "95823" }, { "name" : "Mariano", "zipcode": "95815" }, { "name" : "Cristian", "zipcode": "95815" }, { "name" : "Kevin", "zipcode": "95824" }, { "name" : "Stanley", "zipcode": "95841" } ] } ``` #### [](#xml-configuration-tls-設定)XML Configuration (TLS 設定) 次の XML 設定は、JSON 入力をストリーミングします。 ```xml { returnedElement : element.zipcode })]]> ``` - このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-3)出力 この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。 ```json [ { "returnedElement": "95838" }, { "returnedElement": "95823" }, { "returnedElement": "95815" }, { "returnedElement": "95815" }, { "returnedElement": "95824" }, { "returnedElement": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

streaming​

Boolean​

​false​

​true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

duplicateKeyAsArray​

Boolean​

​false​

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

encoding​

String​

​'UTF-8'​

出力で使用する文字セット (UTF-8 など)。

indent​

Boolean​

​true​

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

skipNullOn​

String​

​null​

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + JSON 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/json skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/json skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/json skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeAttributes​

Boolean​

​false​

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/json​

/+json​

# JSON 形式 MIME タイプ: `application/json` ID: `json` JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。 JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#examples)例 次の例は、JSON 形式の使用方法を示しています。 - [例: JSON を DataWeave (dw) 形式で表す](#example1) - [例: 繰り返される XML 要素を JSON に変換する](#example2) - [例: JSON データをストリーミングする](#example3) ### [](#example1)例: JSON を DataWeave (dw) 形式で表す 次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。 #### [](#入力)入力 次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Matias", "age": 8, "male": true, "kids": null, "brothers": ["Pedro", "Sara"] } ``` #### [](#ソース)ソース この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave output application/dw --- payload ``` #### [](#出力)出力 JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-extract-data#valid-keys)​を参照してください。 ```dataweave { name: "Matias", age: 8, male: true, kids: null, brothers: [ "Pedro", "Sara" ] } ``` ### [](#example2)例: 繰り返される XML 要素を JSON に変換する 次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。 XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 #### [](#入力-2)入力 次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。 ```xml Mariano Shoki Tomo Ana ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。 スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。 ```dataweave %dw 2.0 output application/json --- friends: payload.friends.*name map ( (item, index) -> {name: item} ) ``` #### [](#出力-2)出力 この DataWeave スクリプトは、次の JSON オブジェクトを出力します。 ```json { "friends": [ { "name": "Mariano" }, { "name": "Shoki" }, { "name": "Tomo" }, { "name": "Ana" } ] } ``` ### [](#example3)例: JSON データをストリーミングする ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。 #### [](#入力-3)入力 JSON 入力ペイロードは、XML 設定の入力として機能します。 JSON 入力 (切り捨てられています): ```json { "myJsonExample" : [ { "name" : "Shoki", "zipcode": "95838" }, { "name" : "Leandro", "zipcode": "95823" }, { "name" : "Mariano", "zipcode": "95815" }, { "name" : "Cristian", "zipcode": "95815" }, { "name" : "Kevin", "zipcode": "95824" }, { "name" : "Stanley", "zipcode": "95841" } ] } ``` #### [](#xml-設定)XML 設定 次の XML 設定は、JSON 入力をストリーミングします。 ```xml { returnedElement : element.zipcode })]]> ``` - このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-3)出力 この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。 ```json [ { "returnedElement": "95838" }, { "returnedElement": "95823" }, { "returnedElement": "95815" }, { "returnedElement": "95815" }, { "returnedElement": "95824" }, { "returnedElement": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + JSON 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/json skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/json skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/json skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/json

/​+json

# JSON 形式 MIME タイプ: `application/json` ID: `json` JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。 JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#examples)例 次の例は、JSON 形式の使用方法を示しています。 - [例: JSON を DataWeave (dw) 形式で表す](#example1) - [例: 繰り返される XML 要素を JSON に変換する](#example2) - [例: JSON データをストリーミングする](#example3) ### [](#example1)例: JSON を DataWeave (dw) 形式で表す 次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。 #### [](#入力)入力 次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Matias", "age": 8, "male": true, "kids": null, "brothers": ["Pedro", "Sara"] } ``` #### [](#ソース)ソース この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave output application/dw --- payload ``` #### [](#出力)出力 JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data#valid-keys)​を参照してください。 ```dataweave { name: "Matias", age: 8, male: true, kids: null, brothers: [ "Pedro", "Sara" ] } ``` ### [](#example2)例: 繰り返される XML 要素を JSON に変換する 次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。 XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 #### [](#入力-2)入力 次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。 ```xml Mariano Shoki Tomo Ana ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。 スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。 ```dataweave %dw 2.0 output application/json --- friends: payload.friends.*name map ( (item, index) -> {name: item} ) ``` #### [](#出力-2)出力 この DataWeave スクリプトは、次の JSON オブジェクトを出力します。 ```json { "friends": [ { "name": "Mariano" }, { "name": "Shoki" }, { "name": "Tomo" }, { "name": "Ana" } ] } ``` ### [](#example3)例: JSON データをストリーミングする ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。 #### [](#入力-3)入力 JSON 入力ペイロードは、XML 設定の入力として機能します。 JSON 入力 (切り捨てられています): ```json { "myJsonExample" : [ { "name" : "Shoki", "zipcode": "95838" }, { "name" : "Leandro", "zipcode": "95823" }, { "name" : "Mariano", "zipcode": "95815" }, { "name" : "Cristian", "zipcode": "95815" }, { "name" : "Kevin", "zipcode": "95824" }, { "name" : "Stanley", "zipcode": "95841" } ] } ``` #### [](#xml-設定)XML 設定 次の XML 設定は、JSON 入力をストリーミングします。 ```xml { returnedElement : element.zipcode })]]> ``` - このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-3)出力 この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。 ```json [ { "returnedElement": "95838" }, { "returnedElement": "95823" }, { "returnedElement": "95815" }, { "returnedElement": "95815" }, { "returnedElement": "95824" }, { "returnedElement": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + JSON 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/json skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/json skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/json skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/json

/​+json

# JSON 形式 MIME タイプ: `application/json` ID: `json` JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。 JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#examples)例 次の例は、JSON 形式の使用方法を示しています。 - [例: JSON を DataWeave (dw) 形式で表す](#example1) - [例: 繰り返される XML 要素を JSON に変換する](#example2) - [例: JSON データをストリーミングする](#example3) ### [](#example1)例: JSON を DataWeave (dw) 形式で表す 次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。 #### [](#入力)入力 次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Matias", "age": 8, "male": true, "kids": null, "brothers": ["Pedro", "Sara"] } ``` #### [](#ソース)ソース この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave output application/dw --- payload ``` #### [](#出力)出力 JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-extract-data#valid-keys)​を参照してください。 ```dataweave { name: "Matias", age: 8, male: true, kids: null, brothers: [ "Pedro", "Sara" ] } ``` ### [](#example2)例: 繰り返される XML 要素を JSON に変換する 次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。 XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 #### [](#入力-2)入力 次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。 ```xml Mariano Shoki Tomo Ana ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。 スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。 ```dataweave %dw 2.0 output application/json --- friends: payload.friends.*name map ( (item, index) -> {name: item} ) ``` #### [](#出力-2)出力 この DataWeave スクリプトは、次の JSON オブジェクトを出力します。 ```json { "friends": [ { "name": "Mariano" }, { "name": "Shoki" }, { "name": "Tomo" }, { "name": "Ana" } ] } ``` ### [](#example3)例: JSON データをストリーミングする ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。 #### [](#入力-3)入力 JSON 入力ペイロードは、XML 設定の入力として機能します。 JSON 入力 (切り捨てられています): ```json { "myJsonExample" : [ { "name" : "Shoki", "zipcode": "95838" }, { "name" : "Leandro", "zipcode": "95823" }, { "name" : "Mariano", "zipcode": "95815" }, { "name" : "Cristian", "zipcode": "95815" }, { "name" : "Kevin", "zipcode": "95824" }, { "name" : "Stanley", "zipcode": "95841" } ] } ``` #### [](#xml-設定)XML 設定 次の XML 設定は、JSON 入力をストリーミングします。 ```xml { returnedElement : element.zipcode })]]> ``` - このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-3)出力 この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。 ```json [ { "returnedElement": "95838" }, { "returnedElement": "95823" }, { "returnedElement": "95815" }, { "returnedElement": "95815" }, { "returnedElement": "95824" }, { "returnedElement": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + JSON 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/json skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/json skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/json skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/json

/​+json

# JSON 形式 MIME タイプ: `application/json` ID: `json` JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。 JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#examples)例 次の例は、JSON 形式の使用方法を示しています。 - [例: JSON を DataWeave (dw) 形式で表す](#example1) - [例: 繰り返される XML 要素を JSON に変換する](#example2) - [例: JSON データをストリーミングする](#example3) ### [](#example1)例: JSON を DataWeave (dw) 形式で表す 次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。 #### [](#入力)入力 次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Matias", "age": 8, "male": true, "kids": null, "brothers": ["Pedro", "Sara"] } ``` #### [](#ソース)ソース この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。 ```dataweave output application/dw --- payload ``` #### [](#出力)出力 JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-extract-data#valid-keys)​を参照してください。 ```dataweave { name: "Matias", age: 8, male: true, kids: null, brothers: [ "Pedro", "Sara" ] } ``` ### [](#example2)例: 繰り返される XML 要素を JSON に変換する 次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。 XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 #### [](#入力-2)入力 次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。 ```xml Mariano Shoki Tomo Ana ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。 スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。 ```dataweave %dw 2.0 output application/json --- friends: payload.friends.*name map ( (item, index) -> {name: item} ) ``` #### [](#出力-2)出力 この DataWeave スクリプトは、次の JSON オブジェクトを出力します。 ```json { "friends": [ { "name": "Mariano" }, { "name": "Shoki" }, { "name": "Tomo" }, { "name": "Ana" } ] } ``` ### [](#example3)例: JSON データをストリーミングする ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。 #### [](#入力-3)入力 JSON 入力ペイロードは、XML 設定の入力として機能します。 JSON 入力 (切り捨てられています): ```json { "myJsonExample" : [ { "name" : "Shoki", "zipcode": "95838" }, { "name" : "Leandro", "zipcode": "95823" }, { "name" : "Mariano", "zipcode": "95815" }, { "name" : "Cristian", "zipcode": "95815" }, { "name" : "Kevin", "zipcode": "95824" }, { "name" : "Stanley", "zipcode": "95841" } ] } ``` #### [](#xml-設定)XML 設定 次の XML 設定は、JSON 入力をストリーミングします。 ```xml { returnedElement : element.zipcode })]]> ``` - このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。 - **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。 - Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。 - Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。 #### [](#出力-3)出力 この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。 ```json [ { "returnedElement": "95838" }, { "returnedElement": "95823" }, { "returnedElement": "95815" }, { "returnedElement": "95815" }, { "returnedElement": "95824" }, { "returnedElement": "95841" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

duplicateKeyAsArray

Boolean

false

オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + JSON 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/json skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/json skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/json skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeAttributes

Boolean

false

キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/json

/​+json

# keySet ## [](#keyset1)keySet(T): ? オブジェクトからのキー名の配列を返します。 このメソッドは​**非推奨**​です。代わりに、Core モジュールの ​`keysOf`​ を使用してください。 ### [](#パラメーター)パラメーター
名前 説明

​object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "keySet" : keySet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keySet" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keySet`​ と ​`nameSet`​ の違いを示しています。 `keySet`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`nameSet`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read(' ', 'application/xml') output application/json --- { keySetExample: flatten([keySet(myVar.users) map $.#, keySet(myVar.users) map $.@]) } ++ { nameSet: flatten([nameSet(myVar.users) map $.#, nameSet(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keySet": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "nameSet": [ null, null, null, null ] } ``` # keySet ## [](#keyset1)keySet(obj: { (K)?: V }​): Array オブジェクトからのキー名の配列を返します。 _この関数は​**非推奨**​です。代わりに [dw::Core::keysOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-keysof) を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

​object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "keySet" : keySet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keySet" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keySet`​ と ​`nameSet`​ の違いを示しています。 `keySet`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`nameSet`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read(' ', 'application/xml') output application/json --- { keySetExample: flatten([keySet(myVar.users) map $.#, keySet(myVar.users) map $.@]) } ++ { nameSet: flatten([nameSet(myVar.users) map $.#, nameSet(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keySet": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "nameSet": [ null, null, null, null ] } ``` # keySet ## [](#keyset1)keySet(obj: { (K)?: V }): Array オブジェクトからのキー名の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::keysOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-keysof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "keySet" : keySet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keySet" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keySet`​ と ​`nameSet`​ の違いを示しています。 `keySet`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`nameSet`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read(' ', 'application/xml') output application/json --- { keySetExample: flatten([keySet(myVar.users) map $.#, keySet(myVar.users) map $.@]) } ++ { nameSet: flatten([nameSet(myVar.users) map $.#, nameSet(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keySet": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "nameSet": [ null, null, null, null ] } ``` # keySet ## [](#keyset1)keySet(obj: { (K)?: V }): Array オブジェクトからのキー名の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::keysOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-keysof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "keySet" : keySet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keySet" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keySet`​ と ​`nameSet`​ の違いを示しています。 `keySet`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`nameSet`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read(' ', 'application/xml') output application/json --- { keySetExample: flatten([keySet(myVar.users) map $.#, keySet(myVar.users) map $.@]) } ++ { nameSet: flatten([nameSet(myVar.users) map $.#, nameSet(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keySet": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "nameSet": [ null, null, null, null ] } ``` # keySet ## [](#keyset1)keySet(obj: { (K)?: V }): Array オブジェクトからのキー名の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::keysOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-keysof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "keySet" : keySet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keySet" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keySet`​ と ​`nameSet`​ の違いを示しています。 `keySet`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`nameSet`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read(' ', 'application/xml') output application/json --- { keySetExample: flatten([keySet(myVar.users) map $.#, keySet(myVar.users) map $.@]) } ++ { nameSet: flatten([nameSet(myVar.users) map $.#, nameSet(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keySet": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "nameSet": [ null, null, null, null ] } ``` # keySet ## [](#keyset1)keySet(obj: { (K)?: V }): Array オブジェクトからのキー名の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::keysOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-keysof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "keySet" : keySet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keySet" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keySet`​ と ​`nameSet`​ の違いを示しています。 `keySet`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`nameSet`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects var myVar = read(' ', 'application/xml') output application/json --- { keySetExample: flatten([keySet(myVar.users) map $.#, keySet(myVar.users) map $.@]) } ++ { nameSet: flatten([nameSet(myVar.users) map $.#, nameSet(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keySet": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "nameSet": [ null, null, null, null ] } ``` # keysOf ## [](#keysof1)keysOf(Object): Array 入力オブジェクト内のキー - 値ペアからのキーの配列を返します。 返されるキーは Key (キー) 型に属します。各キーを文字列として返すには、代わりに ​`namesOf`​ を使用します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "keysOf" : keysOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keysOf" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keysOf`​ と ​`namesOf`​ の違いを示しています。 `keysOf`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`namesOf`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = read(' ', 'application/xml') output application/json --- { keysOfExample: flatten([keysOf(myVar.users) map $.#, keysOf(myVar.users) map $.@]) } ++ { namesOfExample: flatten([namesOf(myVar.users) map $.#, namesOf(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keysOfExample": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "namesOfExample": [ null, null, null, null ] } ``` # keysOf ## [](#keysof1)keysOf(obj: { (K)?: V }​): Array 入力オブジェクト内のキー - 値ペアからのキーの配列を返します。 返されるキーは Key (キー) 型に属します。各キーを文字列として返すには、代わりに ​`namesOf`​ を使用します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "keysOf" : keysOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keysOf" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keysOf`​ と ​`namesOf`​ の違いを示しています。 `keysOf`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`namesOf`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = read(' ', 'application/xml') output application/json --- { keysOfExample: flatten([keysOf(myVar.users) map $.#, keysOf(myVar.users) map $.@]) } ++ { namesOfExample: flatten([namesOf(myVar.users) map $.#, namesOf(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keysOfExample": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "namesOfExample": [ null, null, null, null ] } ``` ## [](#keysof2)keysOf(obj: Null): Null `keysOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # keysOf ## [](#keysof1)keysOf(obj: { (K)?: V }): Array 入力オブジェクト内のキー - 値ペアからのキーの配列を返します。 返されるキーは Key (キー) 型に属します。各キーを文字列として返すには、代わりに ​`namesOf`​ を使用します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "keysOf" : keysOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keysOf" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keysOf`​ と ​`namesOf`​ の違いを示しています。 `keysOf`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`namesOf`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = read(' ', 'application/xml') output application/json --- { keysOfExample: flatten([keysOf(myVar.users) map $.#, keysOf(myVar.users) map $.@]) } ++ { namesOfExample: flatten([namesOf(myVar.users) map $.#, namesOf(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keysOfExample": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "namesOfExample": [ null, null, null, null ] } ``` ## [](#keysof2)keysOf(obj: Null): Null `keysOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # keysOf ## [](#keysof1)keysOf(obj: { (K)?: V }): Array 入力オブジェクト内のキー - 値ペアからのキーの配列を返します。 返されるキーは Key (キー) 型に属します。各キーを文字列として返すには、代わりに ​`namesOf`​ を使用します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "keysOf" : keysOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keysOf" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keysOf`​ と ​`namesOf`​ の違いを示しています。 `keysOf`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`namesOf`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = read(' ', 'application/xml') output application/json --- { keysOfExample: flatten([keysOf(myVar.users) map $.#, keysOf(myVar.users) map $.@]) } ++ { namesOfExample: flatten([namesOf(myVar.users) map $.#, namesOf(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keysOfExample": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "namesOfExample": [ null, null, null, null ] } ``` ## [](#keysof2)keysOf(obj: Null): Null `keysOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # keysOf ## [](#keysof1)keysOf(obj: { (K)?: V }): Array 入力オブジェクト内のキー - 値ペアからのキーの配列を返します。 返されるキーは Key (キー) 型に属します。各キーを文字列として返すには、代わりに ​`namesOf`​ を使用します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "keysOf" : keysOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keysOf" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keysOf`​ と ​`namesOf`​ の違いを示しています。 `keysOf`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`namesOf`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = read(' ', 'application/xml') output application/json --- { keysOfExample: flatten([keysOf(myVar.users) map $.#, keysOf(myVar.users) map $.@]) } ++ { namesOfExample: flatten([namesOf(myVar.users) map $.#, namesOf(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keysOfExample": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "namesOfExample": [ null, null, null, null ] } ``` ## [](#keysof2)keysOf(obj: Null): Null `keysOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # keysOf ## [](#keysof1)keysOf(obj: { (K)?: V }): Array 入力オブジェクト内のキー - 値ペアからのキーの配列を返します。 返されるキーは Key (キー) 型に属します。各キーを文字列として返すには、代わりに ​`namesOf`​ を使用します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

object

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "keysOf" : keysOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "keysOf" : ["a","b"] } ``` ### [](#例-2)例 次の例は、​`keysOf`​ と ​`namesOf`​ の違いを示しています。 `keysOf`​ は XML 入力からの属性 (​`name`​ と ​`lastName`​) と名前空間 (​`xmlns`​) を保持していますが、​`namesOf`​ はそれらを保持しないため、​`null`​ を返しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = read(' ', 'application/xml') output application/json --- { keysOfExample: flatten([keysOf(myVar.users) map $.#, keysOf(myVar.users) map $.@]) } ++ { namesOfExample: flatten([namesOf(myVar.users) map $.#, namesOf(myVar.users) map $.@]) } ``` #### [](#出力-2)出力 ```JSON { "keysOfExample": [ "http://test.com", "http://test.com", { "name": "Mariano", "lastName": "Achaval" }, { "name": "Stacey", "lastName": "Duke" } ], "namesOfExample": [ null, null, null, null ] } ``` ## [](#keysof2)keysOf(obj: Null): Null `keysOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # last (最後) ## [](#last1)last(text: String, amount: Number): String 文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

処理する文字列。

​amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り上げられます。

### [](#例)例 次の例では、文字列内の最後の 6 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import last from dw::core::Strings output application/json --- "hello world!" last 6 ``` #### [](#出力)出力 ```Json "world!" ``` ## [](#last2)last(text: Null, amount: Any): Null `last`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # last (最後) ## [](#last1)last(text: String, amount: Number): String 文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り上げられます。

### [](#例)例 次の例では、文字列内の最後の 6 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import last from dw::core::Strings output application/json --- "hello world!" last 6 ``` #### [](#出力)出力 ```Json "world!" ``` ## [](#last2)last(text: Null, amount: Any): Null `last`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # last (最後) ## [](#last1)last(text: String, amount: Number): String 文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り上げられます。

### [](#例)例 次の例では、文字列内の最後の 6 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import last from dw::core::Strings output application/json --- "hello world!" last 6 ``` #### [](#出力)出力 ```Json "world!" ``` ## [](#last2)last(text: Null, amount: Any): Null `last`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # last (最後) ## [](#last1)last(text: String, amount: Number): String 文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り上げられます。

### [](#例)例 次の例では、文字列内の最後の 6 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import last from dw::core::Strings output application/json --- "hello world!" last 6 ``` #### [](#出力)出力 ```Json "world!" ``` ## [](#last2)last(text: Null, amount: Any): Null `last`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # last (最後) ## [](#last1)last(text: String, amount: Number): String 文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

処理する文字列。

amount

返す文字の数。負の数と ​0​ では空の文字列が返されます。小数は最も近い整数に切り上げられます。

### [](#例)例 次の例では、文字列内の最後の 6 文字を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import last from dw::core::Strings output application/json --- "hello world!" last 6 ``` #### [](#出力)出力 ```Json "world!" ``` ## [](#last2)last(text: Null, amount: Any): Null `last`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lastIndexOf ## [](#lastindexof1)lastIndexOf(array: Array, value: Any): Number 特定の配列の指定された要素の​_最後_​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

検索する要素の配列。

​value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] lastIndexOf "c", notPresent: ["x","w","x"] lastIndexOf "c", presentMoreThanOnce: ["a","b","c","c"] lastIndexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 3 } ``` ## [](#lastindexof2)lastIndexOf(array: String, value: String): Number 文字列を入力として取得し、入力内の特定の検索文字列の​_最後_​の出現のインデックスを返します。検索文字列が入力に存在しない場合、この関数では ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​string

検索する文字列。

​value

入力文字列内で検索する文字列値。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" lastIndexOf "c", notPresent: "xyz" lastIndexOf "c", presentMoreThanOnce: "abcdc" lastIndexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 4 } ``` ## [](#lastindexof3)lastIndexOf(array: Null, value: Any): Number `lastIndexOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # lastIndexOf ## [](#lastindexof1)lastIndexOf(array: Array, value: Any): Number 特定の配列の指定された要素の​_最後_​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] lastIndexOf "c", notPresent: ["x","w","x"] lastIndexOf "c", presentMoreThanOnce: ["a","b","c","c"] lastIndexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 3 } ``` ## [](#lastindexof2)lastIndexOf(array: String, value: String): Number 文字列を入力として取得し、入力内の特定の検索文字列の​_最後_​の出現のインデックスを返します。検索文字列が入力に存在しない場合、この関数では ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

string

検索する文字列。

value

入力文字列内で検索する文字列値。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" lastIndexOf "c", notPresent: "xyz" lastIndexOf "c", presentMoreThanOnce: "abcdc" lastIndexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 4 } ``` ## [](#lastindexof3)lastIndexOf(array: Null, value: Any): Number `lastIndexOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lastIndexOf ## [](#lastindexof1)lastIndexOf(array: Array, value: Any): Number 特定の配列の指定された要素の​_最後_​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] lastIndexOf "c", notPresent: ["x","w","x"] lastIndexOf "c", presentMoreThanOnce: ["a","b","c","c"] lastIndexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 3 } ``` ## [](#lastindexof2)lastIndexOf(array: String, value: String): Number 文字列を入力として取得し、入力内の特定の検索文字列の​_最後_​の出現のインデックスを返します。検索文字列が入力に存在しない場合、この関数では ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

string

検索する文字列。

value

入力文字列内で検索する文字列値。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" lastIndexOf "c", notPresent: "xyz" lastIndexOf "c", presentMoreThanOnce: "abcdc" lastIndexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 4 } ``` ## [](#lastindexof3)lastIndexOf(array: Null, value: Any): Number `lastIndexOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lastIndexOf ## [](#lastindexof1)lastIndexOf(array: Array, value: Any): Number 特定の配列の指定された要素の​_最後_​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] lastIndexOf "c", notPresent: ["x","w","x"] lastIndexOf "c", presentMoreThanOnce: ["a","b","c","c"] lastIndexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 3 } ``` ## [](#lastindexof2)lastIndexOf(array: String, value: String): Number 文字列を入力として取得し、入力内の特定の検索文字列の​_最後_​の出現のインデックスを返します。検索文字列が入力に存在しない場合、この関数では ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

string

検索する文字列。

value

入力文字列内で検索する文字列値。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" lastIndexOf "c", notPresent: "xyz" lastIndexOf "c", presentMoreThanOnce: "abcdc" lastIndexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 4 } ``` ## [](#lastindexof3)lastIndexOf(array: Null, value: Any): Number `lastIndexOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lastIndexOf ## [](#lastindexof1)lastIndexOf(array: Array, value: Any): Number 特定の配列の指定された要素の​_最後_​の出現のインデックスを返し、この配列に要素が含まれていない場合は ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

検索する要素の配列。

value

検索する値。

### [](#例)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { present: ["a","b","c","d"] lastIndexOf "c", notPresent: ["x","w","x"] lastIndexOf "c", presentMoreThanOnce: ["a","b","c","c"] lastIndexOf "c", } ``` #### [](#出力)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 3 } ``` ## [](#lastindexof2)lastIndexOf(array: String, value: String): Number 文字列を入力として取得し、入力内の特定の検索文字列の​_最後_​の出現のインデックスを返します。検索文字列が入力に存在しない場合、この関数では ​`-1`​ を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

string

検索する文字列。

value

入力文字列内で検索する文字列値。

### [](#例-2)例 次の例では、さまざまな入力での ​`indexOf`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { present: "abcd" lastIndexOf "c", notPresent: "xyz" lastIndexOf "c", presentMoreThanOnce: "abcdc" lastIndexOf "c", } ``` #### [](#出力-2)出力 ```Json { "present": 2, "notPresent": -1, "presentMoreThanOnce": 4 } ``` ## [](#lastindexof3)lastIndexOf(array: Null, value: Any): Number `lastIndexOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # leftJoin ## [](#leftjoin1)leftJoin(Array, Array, (leftValue: L) -> String, (rightValue: R) -> String): Array<​{ l: L, r?: R }​> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `leftJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、結合条件に一致する右の項目を ID によってマージします。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​left

オブジェクトの左側配列。

​right

オブジェクトの右側配列。

​leftCriteria

左のコレクションの ID を抽出するために使用する条件。

​rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。これは左側配列 (​`left`​) のすべてのオブジェクトを返しますが、右側配列 (​`right`​) の項目は、左側の ​`user.id`​ と右側の ​`product.ownerId`​ の値が一致した場合にのみ結合されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } } ] ``` # leftJoin ## [](#leftjoin1)leftJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<​{ l: L, r?: R }​> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `leftJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、結合条件に一致する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​left

オブジェクトの左側配列。

​right

オブジェクトの右側配列。

​leftCriteria

左のコレクションの ID を抽出するために使用する条件。

​rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。これは左側配列 (​`left`​) のすべてのオブジェクトを返しますが、右側配列 (​`right`​) の項目は、左側の ​`user.id`​ と右側の ​`product.ownerId`​ の値が一致した場合にのみ結合されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } } ] ``` # leftJoin ## [](#leftjoin1)leftJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l: L, r?: R }> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `leftJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、結合条件に一致する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。これは左側配列 (​`left`​) のすべてのオブジェクトを返しますが、右側配列 (​`right`​) の項目は、左側の ​`user.id`​ と右側の ​`product.ownerId`​ の値が一致した場合にのみ結合されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } } ] ``` # leftJoin ## [](#leftjoin1)leftJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l: L, r?: R }> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `leftJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、結合条件に一致する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。これは左側配列 (​`left`​) のすべてのオブジェクトを返しますが、右側配列 (​`right`​) の項目は、左側の ​`user.id`​ と右側の ​`product.ownerId`​ の値が一致した場合にのみ結合されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } } ] ``` # leftJoin ## [](#leftjoin1)leftJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l: L, r?: R }> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `leftJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、結合条件に一致する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。これは左側配列 (​`left`​) のすべてのオブジェクトを返しますが、右側配列 (​`right`​) の項目は、左側の ​`user.id`​ と右側の ​`product.ownerId`​ の値が一致した場合にのみ結合されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } } ] ``` # leftJoin ## [](#leftjoin1)leftJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l: L, r?: R }> オブジェクトの 2 つの配列を、指定された ID 条件で結合します。 `leftJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、結合条件に一致する右の項目を ID によってマージします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。これは左側配列 (​`left`​) のすべてのオブジェクトを返しますが、右側配列 (​`right`​) の項目は、左側の ​`user.id`​ と右側の ​`product.ownerId`​ の値が一致した場合にのみ結合されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- leftJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } } ] ``` # leftPad ## [](#leftpad1)leftPad(String, Number, String): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_左_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 左側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​size

パディングの目的のサイズ。

​padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`leftPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": leftPad(null, 3), "b": leftPad("", 3), "c": leftPad("bat", 5), "d": leftPad("bat", 3), "e": leftPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": " bat", "d": "bat", "e": "bat" } ``` ## [](#leftpad2)leftPad(Null, Number, String): Null `leftPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # leftPad ## [](#leftpad1)leftPad(text: String, size: Number, padText: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_左_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 左側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​size

パディングの目的のサイズ。

​padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`leftPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": leftPad(null, 3), "b": leftPad("", 3), "c": leftPad("bat", 5), "d": leftPad("bat", 3), "e": leftPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": " bat", "d": "bat", "e": "bat" } ``` ## [](#leftpad2)leftPad(text: Null, size: Any, padText: Any = " "): Null `leftPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # leftPad ## [](#leftpad1)leftPad(text: String, size: Number, padText: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_左_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 左側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`leftPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": leftPad(null, 3), "b": leftPad("", 3), "c": leftPad("bat", 5), "d": leftPad("bat", 3), "e": leftPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": " bat", "d": "bat", "e": "bat" } ``` ## [](#leftpad2)leftPad(text: Null, size: Any, padText: Any = " "): Null `leftPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # leftPad ## [](#leftpad1)leftPad(text: String, size: Number, padText: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_左_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 左側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`leftPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": leftPad(null, 3), "b": leftPad("", 3), "c": leftPad("bat", 5), "d": leftPad("bat", 3), "e": leftPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": " bat", "d": "bat", "e": "bat" } ``` ## [](#leftpad2)leftPad(text: Null, size: Any, padText: Any = " "): Null `leftPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # leftPad ## [](#leftpad1)leftPad(text: String, size: Number, padText: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_左_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 左側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`leftPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": leftPad(null, 3), "b": leftPad("", 3), "c": leftPad("bat", 5), "d": leftPad("bat", 3), "e": leftPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": " bat", "d": "bat", "e": "bat" } ``` ## [](#leftpad2)leftPad(text: Null, size: Any, padText: Any = " "): Null `leftPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # leftPad ## [](#leftpad1)leftPad(text: String, size: Number, padText: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_左_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 左側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`leftPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": leftPad(null, 3), "b": leftPad("", 3), "c": leftPad("bat", 5), "d": leftPad("bat", 3), "e": leftPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": " bat", "d": "bat", "e": "bat" } ``` ## [](#leftpad2)leftPad(text: Null, size: Any, padText: Any = " "): Null `leftPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # levenshteinDistance ## [](#levenshteindistance1)levenshteinDistance(a: String, b: String): Number 2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​a

最初の文字列。

​b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`levenshteinDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import levenshteinDistance from dw::core::Strings output application/json --- "kitten" levenshteinDistance "sitting" ``` #### [](#出力)出力 ```Json 3 ``` # levenshteinDistance ## [](#levenshteindistance1)levenshteinDistance(a: String, b: String): Number 2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`levenshteinDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import levenshteinDistance from dw::core::Strings output application/json --- "kitten" levenshteinDistance "sitting" ``` #### [](#出力)出力 ```Json 3 ``` # levenshteinDistance ## [](#levenshteindistance1)levenshteinDistance(a: String, b: String): Number 2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`levenshteinDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import levenshteinDistance from dw::core::Strings output application/json --- "kitten" levenshteinDistance "sitting" ``` #### [](#出力)出力 ```Json 3 ``` # levenshteinDistance ## [](#levenshteindistance1)levenshteinDistance(a: String, b: String): Number 2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`levenshteinDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import levenshteinDistance from dw::core::Strings output application/json --- "kitten" levenshteinDistance "sitting" ``` #### [](#出力)出力 ```Json 3 ``` # levenshteinDistance ## [](#levenshteindistance1)levenshteinDistance(a: String, b: String): Number 2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

最初の文字列。

b

2 番目の文字列。

### [](#例)例 次の例では、さまざまな文字列での ​`levenshteinDistance`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import levenshteinDistance from dw::core::Strings output application/json --- "kitten" levenshteinDistance "sitting" ``` #### [](#出力)出力 ```Json 3 ``` # lines (品目) ## [](#lines1)lines(text: String): Array 文字列からの行の配列を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

行に分割する文字列。

### [](#例)例 次の例では、文字列を行に分割しています。 `\n`​ は改行を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import lines from dw::core::Strings output application/json --- lines("hello world\n\nhere data-weave") ``` #### [](#出力)出力 ```Json ["hello world", "", "here data-weave"] ``` ## [](#lines2)lines(text: Null): Null `lines`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # lines (品目) ## [](#lines1)lines(text: String): Array 文字列からの行の配列を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

行に分割する文字列。

### [](#例)例 次の例では、文字列を行に分割しています。 `\n`​ は改行を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import lines from dw::core::Strings output application/json --- lines("hello world\n\nhere data-weave") ``` #### [](#出力)出力 ```Json ["hello world", "", "here data-weave"] ``` ## [](#lines2)lines(text: Null): Null `lines`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lines (品目) ## [](#lines1)lines(text: String): Array 文字列からの行の配列を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

行に分割する文字列。

### [](#例)例 次の例では、文字列を行に分割しています。 `\n`​ は改行を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import lines from dw::core::Strings output application/json --- lines("hello world\n\nhere data-weave") ``` #### [](#出力)出力 ```Json ["hello world", "", "here data-weave"] ``` ## [](#lines2)lines(text: Null): Null `lines`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lines (品目) ## [](#lines1)lines(text: String): Array 文字列からの行の配列を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

行に分割する文字列。

### [](#例)例 次の例では、文字列を行に分割しています。 `\n`​ は改行を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import lines from dw::core::Strings output application/json --- lines("hello world\n\nhere data-weave") ``` #### [](#出力)出力 ```Json ["hello world", "", "here data-weave"] ``` ## [](#lines2)lines(text: Null): Null `lines`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # lines (品目) ## [](#lines1)lines(text: String): Array 文字列からの行の配列を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

行に分割する文字列。

### [](#例)例 次の例では、文字列を行に分割しています。 `\n`​ は改行を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import lines from dw::core::Strings output application/json --- lines("hello world\n\nhere data-weave") ``` #### [](#出力)出力 ```Json ["hello world", "", "here data-weave"] ``` ## [](#lines2)lines(text: Null): Null `lines`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # literalValueOf ## [](#literalvalueof1)literalValueOf(Type): String | Number | Boolean Literal (リテラル) 型に属する入力の値を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`literalValueOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = "Mariano" output application/json --- { a: literalValueOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "Mariano" } ``` # literalValueOf ## [](#literalvalueof1)literalValueOf(t: Type): String | Number | Boolean Literal (リテラル) 型に属する入力の値を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`literalValueOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = "Mariano" output application/json --- { a: literalValueOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "Mariano" } ``` # literalValueOf ## [](#literalvalueof1)literalValueOf(t: Type): String | Number | Boolean Literal (リテラル) 型に属する入力の値を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`literalValueOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = "Mariano" output application/json --- { a: literalValueOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "Mariano" } ``` # literalValueOf ## [](#literalvalueof1)literalValueOf(t: Type): String | Number | Boolean Literal (リテラル) 型に属する入力の値を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`literalValueOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = "Mariano" output application/json --- { a: literalValueOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "Mariano" } ``` # literalValueOf ## [](#literalvalueof1)literalValueOf(t: Type): String | Number | Boolean Literal (リテラル) 型に属する入力の値を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`literalValueOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = "Mariano" output application/json --- { a: literalValueOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "Mariano" } ``` # literalValueOf ## [](#literalvalueof1)literalValueOf(t: Type): String | Number | Boolean Literal (リテラル) 型に属する入力の値を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`literalValueOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = "Mariano" output application/json --- { a: literalValueOf(AType) } ``` #### [](#出力)出力 ```Json { "a": "Mariano" } ``` # localDateTime ## [](#localdatetime1)localDateTime(parts: LocalDateTimeFactory): LocalDateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalDateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​parts

​year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​month​ 項目では 1 ~ 12、​day​ 項目では 1 ~ 31、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalDateTime​ 値として並び替えられます (​2012-10-11T10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalDateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalDateTime: localDateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalDateTime": "2012-10-11T12:30:40" } ``` # localDateTime ## [](#localdatetime1)localDateTime(parts: LocalDateTimeFactory): LocalDateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalDateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​month​ 項目では 1 ~ 12、​day​ 項目では 1 ~ 31、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalDateTime​ 値として並び替えられます (​2012-10-11T10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalDateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalDateTime: localDateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalDateTime": "2012-10-11T12:30:40" } ``` # localDateTime ## [](#localdatetime1)localDateTime(parts: LocalDateTimeFactory): LocalDateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalDateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​month​ 項目では 1 ~ 12、​day​ 項目では 1 ~ 31、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalDateTime​ 値として並び替えられます (​2012-10-11T10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalDateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalDateTime: localDateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalDateTime": "2012-10-11T12:30:40" } ``` # localDateTime ## [](#localdatetime1)localDateTime(parts: LocalDateTimeFactory): LocalDateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalDateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​month​ 項目では 1 ~ 12、​day​ 項目では 1 ~ 31、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalDateTime​ 値として並び替えられます (​2012-10-11T10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalDateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalDateTime: localDateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalDateTime": "2012-10-11T12:30:40" } ``` # localDateTime ## [](#localdatetime1)localDateTime(parts: LocalDateTimeFactory): LocalDateTime `year`​ 項目、​`month`​ 項目、​`day`​ 項目、​`hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalDateTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

year​ 項目、​month​ 項目、​day​ 項目、​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​month​ 項目では 1 ~ 12、​day​ 項目では 1 ~ 31、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalDateTime​ 値として並び替えられます (​2012-10-11T10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalDateTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalDateTime: localDateTime({year: 2012, month: 10, day: 11, hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalDateTime": "2012-10-11T12:30:40" } ``` # localTime ## [](#localtime1)localTime(parts: LocalTimeFactory): LocalTime `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​parts

​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalTime​ 値として並び替えられます (​10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalTime: localTime({ hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalTime": "12:30:40" } ``` # localTime ## [](#localtime1)localTime(parts: LocalTimeFactory): LocalTime `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalTime​ 値として並び替えられます (​10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalTime: localTime({ hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalTime": "12:30:40" } ``` # localTime ## [](#localtime1)localTime(parts: LocalTimeFactory): LocalTime `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalTime​ 値として並び替えられます (​10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalTime: localTime({ hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalTime": "12:30:40" } ``` # localTime ## [](#localtime1)localTime(parts: LocalTimeFactory): LocalTime `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalTime​ 値として並び替えられます (​10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalTime: localTime({ hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalTime": "12:30:40" } ``` # localTime ## [](#localtime1)localTime(parts: LocalTimeFactory): LocalTime `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目について指定された値から ​`LocalTime`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。 名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​LocalTime​ 値として並び替えられます (​10:10:10​ など)。入力項目は ​LocalDateTimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`LocalTime`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newLocalTime: localTime({ hour: 12, minutes: 30, seconds: 40}) } ``` #### [](#出力)出力 ```Json { "newLocalTime": "12:30:40" } ``` # locationString ## [](#locationstring1)locationString(Any): String 指定された値の位置の文字列を返します。 ### [](#パラメーター)パラメーター
名前 説明

​value

任意の型の値。

### [](#例)例 次の例では、DataWeave スクリプトのヘッダー内で変数 ​`a`​ を定義する行 (位置) のコンテンツを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var a = 123 output application/json --- locationString(a) ``` #### [](#出力)出力 ```JSON "var a = 123" ``` # locationString ## [](#locationstring1)locationString(value: Any): String 指定された値の位置の文字列を返します。 ### [](#パラメーター)パラメーター
名前 説明

​value

任意の型の値。

### [](#例)例 次の例では、DataWeave スクリプトのヘッダー内で変数 ​`a`​ を定義する行 (位置) のコンテンツを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var a = 123 output application/json --- locationString(a) ``` #### [](#出力)出力 ```JSON "var a = 123" ``` # locationString ## [](#locationstring1)locationString(value: Any): String 指定された値の位置の文字列を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

任意の型の値。

### [](#例)例 次の例では、DataWeave スクリプトのヘッダー内で変数 ​`a`​ を定義する行 (位置) のコンテンツを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var a = 123 output application/json --- locationString(a) ``` #### [](#出力)出力 ```JSON "var a = 123" ``` # locationString ## [](#locationstring1)locationString(value: Any): String 指定された値の位置の文字列を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

任意の型の値。

### [](#例)例 次の例では、DataWeave スクリプトのヘッダー内で変数 ​`a`​ を定義する行 (位置) のコンテンツを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var a = 123 output application/json --- locationString(a) ``` #### [](#出力)出力 ```JSON "var a = 123" ``` # locationString ## [](#locationstring1)locationString(value: Any): String 指定された値の位置の文字列を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

任意の型の値。

### [](#例)例 次の例では、DataWeave スクリプトのヘッダー内で変数 ​`a`​ を定義する行 (位置) のコンテンツを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var a = 123 output application/json --- locationString(a) ``` #### [](#出力)出力 ```JSON "var a = 123" ``` # locationString ## [](#locationstring1)locationString(value: Any): String 指定された値の位置の文字列を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

任意の型の値。

### [](#例)例 次の例では、DataWeave スクリプトのヘッダー内で変数 ​`a`​ を定義する行 (位置) のコンテンツを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var a = 123 output application/json --- locationString(a) ``` #### [](#出力)出力 ```JSON "var a = 123" ``` # log ## [](#log1)log(String, T): T 入力の値を変更することなく、​`log`​ は入力をシステムログとして返します。 この関数を使用して、DataWeave スクリプトのデバッグを容易にします。Mule アプリケーションは ​`DefaultLoggingService`​ を介して結果を出力し、結果は Studio コンソールで参照できます。 ### [](#パラメーター)パラメーター
名前 説明

​prefix

通常はログを説明する文字列 (省略可能)。

​value

ログに記録する値。

### [](#例)例 次の例では、指定されたメッセージをログに記録します。Studio で実行されている Mule アプリケーションの ​`DefaultLoggingService`​ は、プレフィックスと値の間にダッシュ ​`-`​ を追加したメッセージ ​`WARNING - "Houston, we have a problem,"`​ を返します。Logger コンポーネントの ​`LoggerMessageProcessor`​ は、​`WARNING`​ プレフィックスのない入力文字列 ​`"Houston, we have a problem."`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- log("WARNING", "Houston, we have a problem.") ``` #### [](#コンソールの出力)コンソールの出力 ```XML WARNING - "Houston, we have a problem." ``` #### [](#式の出力)式の出力 ```XML "Houston, we have a problem." ``` ### [](#例-2)例 この例は、元の式 ​`myUser.user.friend.name`​ を変更せずに式 ​`myUser.user`​ の結果をログに記録する方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } --- log("User", myUser.user).friend.name ``` #### [](#コンソールの出力-2)コンソールの出力 ```linenums User - { friend: { name: "Shoki" }, id: 1, name: "Tomo" } ``` #### [](#式の出力-2)式の出力 ```linenums "Shoki" ``` # log ## [](#log1)log(prefix: String = "", value: T): T 入力の値を変更することなく、​`log`​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​**log**​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format. The prefix parameter is optional and allows to easily find the log output. この関数を使用して、DataWeave スクリプトのデバッグを容易にします。Mule アプリケーションは ​`DefaultLoggingService`​ を介して結果を出力し、結果は Studio コンソールで参照できます。 ### [](#パラメーター)パラメーター
名前 説明

​prefix

通常はログを説明する文字列 (省略可能)。

​value

ログに記録する値。

### [](#例)例 次の例では、指定されたメッセージをログに記録します。Studio で実行されている Mule アプリケーションの ​`DefaultLoggingService`​ は、プレフィックスと値の間にダッシュ ​`-`​ を追加したメッセージ ​`WARNING - "Houston, we have a problem,"`​ を返します。Logger コンポーネントの ​`LoggerMessageProcessor`​ は、​`WARNING`​ プレフィックスのない入力文字列 ​`"Houston, we have a problem."`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- log("WARNING", "Houston, we have a problem") ``` #### [](#出力)出力 `Console Output`​ ```XML "WARNING - Houston, we have a problem" ``` `Expression Output`​ ```XML "Houston, we have a problem" ``` ### [](#例-2)例 この例は、元の式 ​`myUser.user.friend.name`​ を変更せずに式 ​`myUser.user`​ の結果をログに記録する方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } --- log("User", myUser.user).friend.name ``` #### [](#出力-2)出力 `Console output`​ ```console User - { friend: { name: "Shoki" }, id: 1, name: "Tomo" } ``` `Expression Output`​ ```DataWeave "Shoki" ``` # log ## [](#log1)log(prefix: String = "", value: T): T 入力の値を変更することなく、​`log`​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​**log**​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format. The prefix parameter is optional and allows to easily find the log output. この関数を使用して、DataWeave スクリプトのデバッグを容易にします。Mule アプリケーションは ​`DefaultLoggingService`​ を介して結果を出力し、結果は Studio コンソールで参照できます。 ### [](#パラメーター)パラメーター
名前 説明

prefix

通常はログを説明する文字列 (省略可能)。

value

ログに記録する値。

### [](#例)例 次の例では、指定されたメッセージをログに記録します。Studio で実行されている Mule アプリケーションの ​`DefaultLoggingService`​ は、プレフィックスと値の間にダッシュ ​`-`​ を追加したメッセージ ​`WARNING - "Houston, we have a problem,"`​ を返します。Logger コンポーネントの ​`LoggerMessageProcessor`​ は、​`WARNING`​ プレフィックスのない入力文字列 ​`"Houston, we have a problem."`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- log("WARNING", "Houston, we have a problem") ``` #### [](#出力)出力 `Console Output` ```XML "WARNING - Houston, we have a problem" ``` `Expression Output` ```XML "Houston, we have a problem" ``` ### [](#例-2)例 この例は、元の式 ​`myUser.user.friend.name`​ を変更せずに式 ​`myUser.user`​ の結果をログに記録する方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } --- log("User", myUser.user).friend.name ``` #### [](#出力-2)出力 `Console output` ```console User - { friend: { name: "Shoki" }, id: 1, name: "Tomo" } ``` `Expression Output` ```DataWeave "Shoki" ``` # log ## [](#log1)log(prefix: String = "", value: T): T 入力の値を変更することなく、​`log`​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​**log**​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format. The prefix parameter is optional and allows to easily find the log output. この関数を使用して、DataWeave スクリプトのデバッグを容易にします。Mule アプリケーションは ​`DefaultLoggingService`​ を介して結果を出力し、結果は Studio コンソールで参照できます。 ### [](#パラメーター)パラメーター
名前 説明

prefix

通常はログを説明する文字列 (省略可能)。

value

ログに記録する値。

### [](#例)例 次の例では、指定されたメッセージをログに記録します。Studio で実行されている Mule アプリケーションの ​`DefaultLoggingService`​ は、プレフィックスと値の間にダッシュ ​`-`​ を追加したメッセージ ​`WARNING - "Houston, we have a problem,"`​ を返します。Logger コンポーネントの ​`LoggerMessageProcessor`​ は、​`WARNING`​ プレフィックスのない入力文字列 ​`"Houston, we have a problem."`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- log("WARNING", "Houston, we have a problem") ``` #### [](#出力)出力 `Console Output` ```XML "WARNING - Houston, we have a problem" ``` `Expression Output` ```XML "Houston, we have a problem" ``` ### [](#例-2)例 この例は、元の式 ​`myUser.user.friend.name`​ を変更せずに式 ​`myUser.user`​ の結果をログに記録する方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } --- log("User", myUser.user).friend.name ``` #### [](#出力-2)出力 `Console output` ```console User - { friend: { name: "Shoki" }, id: 1, name: "Tomo" } ``` `Expression Output` ```DataWeave "Shoki" ``` # log ## [](#log1)log(prefix: String = "", value: T): T 入力の値を変更することなく、​`log`​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​**log**​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format. The prefix parameter is optional and allows to easily find the log output. この関数を使用して、DataWeave スクリプトのデバッグを容易にします。Mule アプリケーションは ​`DefaultLoggingService`​ を介して結果を出力し、結果は Studio コンソールで参照できます。 ### [](#パラメーター)パラメーター
名前 説明

prefix

通常はログを説明する文字列 (省略可能)。

value

ログに記録する値。

### [](#例)例 次の例では、指定されたメッセージをログに記録します。Studio で実行されている Mule アプリケーションの ​`DefaultLoggingService`​ は、プレフィックスと値の間にダッシュ ​`-`​ を追加したメッセージ ​`WARNING - "Houston, we have a problem,"`​ を返します。Logger コンポーネントの ​`LoggerMessageProcessor`​ は、​`WARNING`​ プレフィックスのない入力文字列 ​`"Houston, we have a problem."`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- log("WARNING", "Houston, we have a problem") ``` #### [](#出力)出力 `Console Output` ```XML "WARNING - Houston, we have a problem" ``` `Expression Output` ```XML "Houston, we have a problem" ``` ### [](#例-2)例 この例は、元の式 ​`myUser.user.friend.name`​ を変更せずに式 ​`myUser.user`​ の結果をログに記録する方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } --- log("User", myUser.user).friend.name ``` #### [](#出力-2)出力 `Console output` ```console User - { friend: { name: "Shoki" }, id: 1, name: "Tomo" } ``` `Expression Output` ```DataWeave "Shoki" ``` # log ## [](#log1)log(prefix: String = "", value: T): T 入力の値を変更することなく、​`log`​ は入力をシステムログとして返します。そのため、任意の式またはサブ式を ​**log**​ でラップでき、式の結果を変更することなく結果が出力されることから、コードのデバッグが非常に単純になります。 The output is going to be printed in application/dw format. The prefix parameter is optional and allows to easily find the log output. この関数を使用して、DataWeave スクリプトのデバッグを容易にします。Mule アプリケーションは ​`DefaultLoggingService`​ を介して結果を出力し、結果は Studio コンソールで参照できます。 ### [](#パラメーター)パラメーター
名前 説明

prefix

通常はログを説明する文字列 (省略可能)。

value

ログに記録する値。

### [](#例)例 次の例では、指定されたメッセージをログに記録します。Studio で実行されている Mule アプリケーションの ​`DefaultLoggingService`​ は、プレフィックスと値の間にダッシュ ​`-`​ を追加したメッセージ ​`WARNING - "Houston, we have a problem,"`​ を返します。Logger コンポーネントの ​`LoggerMessageProcessor`​ は、​`WARNING`​ プレフィックスのない入力文字列 ​`"Houston, we have a problem."`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- log("WARNING", "Houston, we have a problem") ``` #### [](#出力)出力 `Console Output` ```XML "WARNING - Houston, we have a problem" ``` `Expression Output` ```XML "Houston, we have a problem" ``` ### [](#例-2)例 この例は、元の式 ​`myUser.user.friend.name`​ を変更せずに式 ​`myUser.user`​ の結果をログに記録する方法を示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } --- log("User", myUser.user).friend.name ``` #### [](#出力-2)出力 `Console output` ```console User - { friend: { name: "Shoki" }, id: 1, name: "Tomo" } ``` `Expression Output` ```DataWeave "Shoki" ``` # log10 ## [](#log101)log10(a: Number): Number | NaN 数値の 10 を底とする対数を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​a

関数の入力として機能する ​Number​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`log10`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "log1010": log10(10), "log1013": log10(0.13), "log10-20": log10(-20) } ``` #### [](#出力)出力 ```Json { "log1010": 1.0, "log1013": -0.8860566476931632, "log10-20": null } ``` # log10 ## [](#log101)log10(a: Number): Number | NaN 数値の 10 を底とする対数を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

関数の入力として機能する ​Number​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`log10`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "log1010": log10(10), "log1013": log10(0.13), "log10-20": log10(-20) } ``` #### [](#出力)出力 ```Json { "log1010": 1.0, "log1013": -0.8860566476931632, "log10-20": null } ``` # log10 ## [](#log101)log10(a: Number): Number | NaN 数値の 10 を底とする対数を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

関数の入力として機能する ​Number​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`log10`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "log1010": log10(10), "log1013": log10(0.13), "log10-20": log10(-20) } ``` #### [](#出力)出力 ```Json { "log1010": 1.0, "log1013": -0.8860566476931632, "log10-20": null } ``` # log10 ## [](#log101)log10(a: Number): Number | NaN 数値の 10 を底とする対数を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

関数の入力として機能する ​Number​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`log10`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "log1010": log10(10), "log1013": log10(0.13), "log10-20": log10(-20) } ``` #### [](#出力)出力 ```Json { "log1010": 1.0, "log1013": -0.8860566476931632, "log10-20": null } ``` # log10 ## [](#log101)log10(a: Number): Number | NaN 数値の 10 を底とする対数を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

関数の入力として機能する ​Number​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`log10`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "log1010": log10(10), "log1013": log10(0.13), "log10-20": log10(-20) } ``` #### [](#出力)出力 ```Json { "log1010": 1.0, "log1013": -0.8860566476931632, "log10-20": null } ``` # logn ## [](#logn1)logn(a: Number): Number | NaN 数値の自然対数 (​`e`​ を底とする) を返します。 入力値が 0 以下の場合、結果は ​`NaN`​ (または ​`null`​) になります。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​a

自然対数に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`logn`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "logn10": logn(10), "logn13": logn(0.13), "logn-20": logn(-20) } ``` #### [](#出力)出力 ```Json { "logn10": 2.302585092994046, "logn13": -2.0402208285265546, "logn-20": null } ``` # logn ## [](#logn1)logn(a: Number): Number | NaN 数値の自然対数 (​`e`​ を底とする) を返します。 入力値が 0 以下の場合、結果は ​`NaN`​ (または ​`null`​) になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

自然対数に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`logn`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "logn10": logn(10), "logn13": logn(0.13), "logn-20": logn(-20) } ``` #### [](#出力)出力 ```Json { "logn10": 2.302585092994046, "logn13": -2.0402208285265546, "logn-20": null } ``` # logn ## [](#logn1)logn(a: Number): Number | NaN 数値の自然対数 (​`e`​ を底とする) を返します。 入力値が 0 以下の場合、結果は ​`NaN`​ (または ​`null`​) になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

自然対数に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`logn`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "logn10": logn(10), "logn13": logn(0.13), "logn-20": logn(-20) } ``` #### [](#出力)出力 ```Json { "logn10": 2.302585092994046, "logn13": -2.0402208285265546, "logn-20": null } ``` # logn ## [](#logn1)logn(a: Number): Number | NaN 数値の自然対数 (​`e`​ を底とする) を返します。 入力値が 0 以下の場合、結果は ​`NaN`​ (または ​`null`​) になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

自然対数に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`logn`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "logn10": logn(10), "logn13": logn(0.13), "logn-20": logn(-20) } ``` #### [](#出力)出力 ```Json { "logn10": 2.302585092994046, "logn13": -2.0402208285265546, "logn-20": null } ``` # logn ## [](#logn1)logn(a: Number): Number | NaN 数値の自然対数 (​`e`​ を底とする) を返します。 入力値が 0 以下の場合、結果は ​`NaN`​ (または ​`null`​) になります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

a

自然対数に変換する数値。

### [](#例)例 次の例では、さまざまな入力での ​`logn`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "logn10": logn(10), "logn13": logn(0.13), "logn-20": logn(-20) } ``` #### [](#出力)出力 ```Json { "logn10": 2.302585092994046, "logn13": -2.0402208285265546, "logn-20": null } ``` # lookup ## [](#lookup1)lookup(String, Any, Number) この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。 これは、Mule Runtime バージョン 4.1.4 以降で実行されている Mule アプリケーションで動作します。 Flow Reference コンポーネント (推奨) と同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ 関数と並行して呼び出されたり、一切呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#パラメーター)パラメーター
名前 説明

​flowName

対象フローを識別する文字列。

​payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

​timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが ​CPU_LIGHT​ または ​CPU_INTENSIVE​ の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

### [](#例)例 次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 #### [](#ソース)ソース ```XML ``` # lookup ## [](#lookup1)lookup(flowName: String, payload: Any, timeoutMillis: Number = 2000) この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。 これは、Mule Runtime バージョン 4.1.4 以降で実行されている Mule アプリケーションで動作します。 Flow Reference コンポーネント (推奨) と同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。
lookup​ 関数では、サブフローのコールはサポートされません。

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ 関数と並行して呼び出されたり、一切呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

### [](#例)例 次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 #### [](#ソース)ソース ```XML ``` # lookup ## [](#lookup1)lookup(flowName: String, payload: Any, timeoutMillis: Number = 2000) この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。 これは、Mule Runtime バージョン 4.1.4 以降で実行されている Mule アプリケーションで動作します。 Flow Reference コンポーネント (推奨) と同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールは​_サポートされません_​。

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ 関数と並行して呼び出されたり、一切呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

_この関数は​**非推奨**​です。_ ### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

### [](#例)例 次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 #### [](#ソース)ソース ```XML ``` # lookup ## [](#lookup1)lookup(flowName: String, payload: Any, timeoutMillis: Number = 2000) この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。 これは、Mule Runtime バージョン 4.1.4 以降で実行されている Mule アプリケーションで動作します。 Flow Reference コンポーネント (推奨) と同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールは​_サポートされません_​。

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ 関数と並行して呼び出されたり、一切呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

_この関数は​**非推奨**​です。_ ### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

### [](#例)例 次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 #### [](#ソース)ソース ```XML ``` # lookup ## [](#lookup1)lookup(flowName: String, payload: Any, timeoutMillis: Number = 2000) この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。 これは、Mule Runtime バージョン 4.1.4 以降で実行されている Mule アプリケーションで動作します。 Flow Reference コンポーネント (推奨) と同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールは​_サポートされません_​。

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ 関数と並行して呼び出されたり、一切呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

_この関数は​**非推奨**​です。_ ### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

### [](#例)例 次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 #### [](#ソース)ソース ```XML ``` # lookup ## [](#lookup1)lookup(flowName: String, payload: Any, timeoutMillis: Number = 2000) この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。 これは、Mule Runtime バージョン 4.1.4 以降で実行されている Mule アプリケーションで動作します。 Flow Reference コンポーネント (推奨) と同様に、​`lookup`​ 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、​`lookup("anotherFlow", payload)`​ は、​`anotherFlow`​ という名前のフローを実行します。 この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。 `lookup`​ 関数では、サブフローのコールはサポートされません。

DataWeave のような関数型言語では、​lookup​ 関数の呼び出しに副作用が​ない​ことが期待されることを常に覚えておくことが重要です。このため、DataWeave エンジン内部の動作により、​lookup​ 関数が他の ​lookup​ 関数と並行して呼び出されたり、一切呼び出されなかったりすることがあります。

Flow Ref (​flow-ref​) コンポーネントを使用してフローを呼び出して、​target​ 属性を使用してフローの結果を ​var​ に配置し、その ​var​ を DataWeave スクリプト内から参照することをお勧めします。

_この関数は​**非推奨**​です。代わりに、​[https://docs.mulesoft.com/dataweave/latest/dataweave-functions](https://docs.mulesoft.com/dataweave/latest/dataweave-functions) を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

flowName

対象フローを識別する文字列。

payload

対象フローに送信するペイロード。任意 (​Any​) 型を使用できます。

timeoutMillis

省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの ​2000​ ミリ秒 (2 秒) に設定され、他のスレッドから実行している場合は 1 分に設定されます。lookup の実行に、指定された ​timeoutMillis​ 値よりも長い時間がかかっている場合、エラーが発生します。

### [](#例)例 次の例は、2 つのフローの XML を示しています。​`flow1`​ の ​`lookup`​ 関数は ​`flow2`​ を実行し、オブジェクト ​`{test:'hello '}`​ をそのペイロードとして ​`flow2`​ に渡します。次に、​`flow2`​ の Set Payload コンポーネント (​``​) は ​`{test:'hello '}`​ の値を文字列 ​`world`​ と連結し、​`hello world`​ を出力して記録します。 #### [](#ソース)ソース ```XML ``` # lower ## [](#lower1)lower(String): String 指定された文字列を小文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#パラメーター-2)パラメーター
名前 説明

​text

文字列。

### [](#例)例 次の例では、大文字を小文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : lower("MULESOFT") } ``` #### [](#出力)出力 ```JSON { "name": "mulesoft" } ``` ## [](#lower2)lower(Null): Null `lower`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # lower ## [](#lower1)lower(text: String): String 指定された文字列を小文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、大文字を小文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : lower("MULESOFT") } ``` #### [](#出力)出力 ```JSON { "name": "mulesoft" } ``` ## [](#lower2)lower(value: Null): Null `lower`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # lower ## [](#lower1)lower(text: String): String 指定された文字列を小文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、大文字を小文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : lower("MULESOFT") } ``` #### [](#出力)出力 ```JSON { "name": "mulesoft" } ``` ## [](#lower2)lower(value: Null): Null `lower`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # lower ## [](#lower1)lower(text: String): String 指定された文字列を小文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、大文字を小文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : lower("MULESOFT") } ``` #### [](#出力)出力 ```JSON { "name": "mulesoft" } ``` ## [](#lower2)lower(value: Null): Null `lower`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # lower ## [](#lower1)lower(text: String): String 指定された文字列を小文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、大文字を小文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : lower("MULESOFT") } ``` #### [](#出力)出力 ```JSON { "name": "mulesoft" } ``` ## [](#lower2)lower(value: Null): Null `lower`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # lower ## [](#lower1)lower(text: String): String 指定された文字列を小文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、大文字を小文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : lower("MULESOFT") } ``` #### [](#出力)出力 ```JSON { "name": "mulesoft" } ``` ## [](#lower2)lower(value: Null): Null `lower`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # map ## [](#map1)map(Array, (item: T, index: Number) -> R): Array 配列の項目を反復処理し、結果を新しい配列に出力します。 ### [](#パラメーター)パラメーター
名前 説明

​items

マップする配列。

​mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

### [](#例)例 次の例では、入力配列 (​`["jose", "pedro", "mateo"]`​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​`(value, index) → {index: value}`​ は、入力内の各項目をオブジェクトにマップします。 `{index: value}`​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["jose", "pedro", "mateo"] map (value, index) -> { (index) : value} ``` #### [](#出力)出力 ```JSON [ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ] ``` ### [](#例-2)例 次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​`['a', 'b', 'c']`​) を反復処理します。入力配列の項目ごとに ​`index + 1`​ (​`index`​ プラス 1) をアンダースコア (​`_`​) および対応する ​`value`​ と連結し、配列 ​`[ "1_a", "2_b", "3_c" ]`​ を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value) ``` #### [](#出力-2)出力 ```JSON [ "1_a", "2_b", "3_c" ] ``` ### [](#例-3)例 `mapper`​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​`$$`​、値は ​`$`​ で参照できます。次の例では、入力配列 ​`['joe', 'pete', 'matt']`​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​`$$`​ を引用符で囲む必要があります。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ['joe', 'pete', 'matt'] map ( "$$" : $) ``` #### [](#出力-3)出力 ```JSON [ { "0": "joe" }, { "1": "pete" }, { "2": "matt" } ] ``` ### [](#例-4)例 次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​`map`​ 操作では、リスト内の各エントリの ​`age`​ と ​`address`​ を使用してオブジェクトを生成します。​`$`​ は反復処理での暗黙的な変数を表します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/csv --- [{ "age": 14 , "name": "Claire" }, { "age": 56, "name": "Max" }, { "age": 89, "name": "John" }] map { age: $.age, name: $.name } ``` #### [](#出力-4)出力 ```CSV age,name 14,Claire 56,Max 89,John ``` ## [](#map2)map(Null, (item: Nothing, index: Nothing) -> Any): Null `map`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # map ## [](#map1)map(@StreamCapable items: Array, mapper: (item: T, index: Number) -> R): Array 配列の項目を反復処理し、結果を新しい配列に出力します。 ### [](#パラメーター)パラメーター
名前 説明

​items

マップする配列。

​mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

### [](#例)例 次の例では、入力配列 (​`["jose", "pedro", "mateo"]`​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​`(value, index) → {index: value}`​ は、入力内の各項目をオブジェクトにマップします。 `{index: value}`​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["jose", "pedro", "mateo"] map (value, index) -> { (index) : value} ``` #### [](#出力)出力 ```JSON [ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ] ``` ### [](#例-2)例 次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​`['a', 'b', 'c']`​) を反復処理します。入力配列の項目ごとに ​`index + 1`​ (​`index`​ プラス 1) をアンダースコア (​`_`​) および対応する ​`value`​ と連結し、配列 ​`[ "1_a", "2_b", "3_c" ]`​ を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value) ``` #### [](#出力-2)出力 ```JSON [ "1_a", "2_b", "3_c" ] ``` ### [](#例-3)例 `mapper`​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​`$$`​、値は ​`$`​ で参照できます。次の例では、入力配列 ​`['joe', 'pete', 'matt']`​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​`$$`​ を引用符で囲む必要があります。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ['joe', 'pete', 'matt'] map ( "$$" : $) ``` #### [](#出力-3)出力 ```JSON [ { "0": "joe" }, { "1": "pete" }, { "2": "matt" } ] ``` ### [](#例-4)例 次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​`map`​ 操作では、リスト内の各エントリの ​`age`​ と ​`address`​ を使用してオブジェクトを生成します。​`$`​ は反復処理での暗黙的な変数を表します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/csv --- [{ "age": 14 , "name": "Claire" }, { "age": 56, "name": "Max" }, { "age": 89, "name": "John" }] map { age: $.age, name: $.name } ``` #### [](#出力-4)出力 ```CSV age,name 14,Claire 56,Max 89,John ``` ## [](#map2)map(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `map`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # map ## [](#map1)map(@StreamCapable items: Array, mapper: (item: T, index: Number) -> R): Array 配列の項目を反復処理し、結果を新しい配列に出力します。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

### [](#例)例 次の例では、入力配列 (​`["jose", "pedro", "mateo"]`​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​`(value, index) → {index: value}`​ は、入力内の各項目をオブジェクトにマップします。 `{index: value}`​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["jose", "pedro", "mateo"] map (value, index) -> { (index) : value} ``` #### [](#出力)出力 ```JSON [ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ] ``` ### [](#例-2)例 次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​`['a', 'b', 'c']`​) を反復処理します。入力配列の項目ごとに ​`index + 1`​ (​`index`​ プラス 1) をアンダースコア (​`_`​) および対応する ​`value`​ と連結し、配列 ​`[ "1_a", "2_b", "3_c" ]`​ を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value) ``` #### [](#出力-2)出力 ```JSON [ "1_a", "2_b", "3_c" ] ``` ### [](#例-3)例 `mapper`​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​`$$`​、値は ​`$`​ で参照できます。次の例では、入力配列 ​`['joe', 'pete', 'matt']`​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​`$$`​ を引用符で囲む必要があります。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ['joe', 'pete', 'matt'] map ( "$$" : $) ``` #### [](#出力-3)出力 ```JSON [ { "0": "joe" }, { "1": "pete" }, { "2": "matt" } ] ``` ### [](#例-4)例 次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​`map`​ 操作では、リスト内の各エントリの ​`age`​ と ​`address`​ を使用してオブジェクトを生成します。 `$`​ は反復処理での暗黙的な変数を表します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/csv --- [{ "age": 14 , "name": "Claire" }, { "age": 56, "name": "Max" }, { "age": 89, "name": "John" }] map { age: $.age, name: $.name } ``` #### [](#出力-4)出力 ```CSV age,name 14,Claire 56,Max 89,John ``` ## [](#map2)map(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `map`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # map ## [](#map1)map(@StreamCapable items: Array, mapper: (item: T, index: Number) -> R): Array 配列の項目を反復処理し、結果を新しい配列に出力します。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

### [](#例)例 次の例では、入力配列 (​`["jose", "pedro", "mateo"]`​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​`(value, index) → {index: value}`​ は、入力内の各項目をオブジェクトにマップします。 `{index: value}`​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["jose", "pedro", "mateo"] map (value, index) -> { (index) : value} ``` #### [](#出力)出力 ```JSON [ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ] ``` ### [](#例-2)例 次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​`['a', 'b', 'c']`​) を反復処理します。入力配列の項目ごとに ​`index + 1`​ (​`index`​ プラス 1) をアンダースコア (​`_`​) および対応する ​`value`​ と連結し、配列 ​`[ "1_a", "2_b", "3_c" ]`​ を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value) ``` #### [](#出力-2)出力 ```JSON [ "1_a", "2_b", "3_c" ] ``` ### [](#例-3)例 `mapper`​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​`$$`​、値は ​`$`​ で参照できます。次の例では、入力配列 ​`['joe', 'pete', 'matt']`​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​`$$`​ を引用符で囲む必要があります。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ['joe', 'pete', 'matt'] map ( "$$" : $) ``` #### [](#出力-3)出力 ```JSON [ { "0": "joe" }, { "1": "pete" }, { "2": "matt" } ] ``` ### [](#例-4)例 次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​`map`​ 操作では、リスト内の各エントリの ​`age`​ と ​`address`​ を使用してオブジェクトを生成します。 `$`​ は反復処理での暗黙的な変数を表します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/csv --- [{ "age": 14 , "name": "Claire" }, { "age": 56, "name": "Max" }, { "age": 89, "name": "John" }] map { age: $.age, name: $.name } ``` #### [](#出力-4)出力 ```CSV age,name 14,Claire 56,Max 89,John ``` ## [](#map2)map(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `map`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # map ## [](#map1)map(@StreamCapable items: Array, mapper: (item: T, index: Number) -> R): Array 配列の項目を反復処理し、結果を新しい配列に出力します。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

### [](#例)例 次の例では、入力配列 (​`["jose", "pedro", "mateo"]`​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​`(value, index) → {index: value}`​ は、入力内の各項目をオブジェクトにマップします。 `{index: value}`​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["jose", "pedro", "mateo"] map (value, index) -> { (index) : value} ``` #### [](#出力)出力 ```JSON [ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ] ``` ### [](#例-2)例 次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​`['a', 'b', 'c']`​) を反復処理します。入力配列の項目ごとに ​`index + 1`​ (​`index`​ プラス 1) をアンダースコア (​`_`​) および対応する ​`value`​ と連結し、配列 ​`[ "1_a", "2_b", "3_c" ]`​ を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value) ``` #### [](#出力-2)出力 ```JSON [ "1_a", "2_b", "3_c" ] ``` ### [](#例-3)例 `mapper`​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​`$$`​、値は ​`$`​ で参照できます。次の例では、入力配列 ​`['joe', 'pete', 'matt']`​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​`$$`​ を引用符で囲む必要があります。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ['joe', 'pete', 'matt'] map ( "$$" : $) ``` #### [](#出力-3)出力 ```JSON [ { "0": "joe" }, { "1": "pete" }, { "2": "matt" } ] ``` ### [](#例-4)例 次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​`map`​ 操作では、リスト内の各エントリの ​`age`​ と ​`address`​ を使用してオブジェクトを生成します。 `$`​ は反復処理での暗黙的な変数を表します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/csv --- [{ "age": 14 , "name": "Claire" }, { "age": 56, "name": "Max" }, { "age": 89, "name": "John" }] map { age: $.age, name: $.name } ``` #### [](#出力-4)出力 ```CSV age,name 14,Claire 56,Max 89,John ``` ## [](#map2)map(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `map`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # map ## [](#map1)map(@StreamCapable items: Array, mapper: (item: T, index: Number) -> R): Array 配列の項目を反復処理し、結果を新しい配列に出力します。 ### [](#パラメーター)パラメーター
名前 説明

items

マップする配列。

mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

### [](#例)例 次の例では、入力配列 (​`["jose", "pedro", "mateo"]`​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​`(value, index) → {index: value}`​ は、入力内の各項目をオブジェクトにマップします。 `{index: value}`​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["jose", "pedro", "mateo"] map (value, index) -> { (index) : value} ``` #### [](#出力)出力 ```JSON [ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ] ``` ### [](#例-2)例 次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​`['a', 'b', 'c']`​) を反復処理します。入力配列の項目ごとに ​`index + 1`​ (​`index`​ プラス 1) をアンダースコア (​`_`​) および対応する ​`value`​ と連結し、配列 ​`[ "1_a", "2_b", "3_c" ]`​ を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- ['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value) ``` #### [](#出力-2)出力 ```JSON [ "1_a", "2_b", "3_c" ] ``` ### [](#例-3)例 `mapper`​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​`$$`​、値は ​`$`​ で参照できます。次の例では、入力配列 ​`['joe', 'pete', 'matt']`​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​`$$`​ を引用符で囲む必要があります。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ['joe', 'pete', 'matt'] map ( "$$" : $) ``` #### [](#出力-3)出力 ```JSON [ { "0": "joe" }, { "1": "pete" }, { "2": "matt" } ] ``` ### [](#例-4)例 次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​`map`​ 操作では、リスト内の各エントリの ​`age`​ と ​`address`​ を使用してオブジェクトを生成します。 `$`​ は反復処理での暗黙的な変数を表します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/csv --- [{ "age": 14 , "name": "Claire" }, { "age": 56, "name": "Max" }, { "age": 89, "name": "John" }] map { age: $.age, name: $.name } ``` #### [](#出力-4)出力 ```CSV age,name 14,Claire 56,Max 89,John ``` ## [](#map2)map(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null `map`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # mapLeafValues ## [](#mapleafvalues1)mapLeafValues(Any, (value: Any, path: Path) -> Any): Any ツリー内のターミナル (リーフ) ノードをマップします。 リーフノードはオブジェクトまたは配列を値として持つことはできません。 ### [](#パラメーター)パラメーター
名前 説明

​value

マップする値。

​callback

マッパー関数。

### [](#例)例 次の例では、すべての文字列値を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval" }], group: "data-weave" } mapLeafValues (value, path) -> upper(value) ``` #### [](#出力)出力 ```Json { "user": [ { "name": "MARIANO", "lastName": "ACHAVAL" } ], "group": "DATA-WEAVE" } ``` # mapLeafValues ## [](#mapleafvalues1)mapLeafValues(value: Any, callback: (value: Any, path: Path) -> Any): Any ツリー内のターミナル (リーフ) ノードをマップします。 リーフノードはオブジェクトまたは配列を値として持つことはできません。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​value

マップする値。

​callback

マッパー関数。

### [](#例)例 次の例では、すべての文字列値を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval" }], group: "data-weave" } mapLeafValues (value, path) -> upper(value) ``` #### [](#出力)出力 ```Json { "user": [ { "name": "MARIANO", "lastName": "ACHAVAL" } ], "group": "DATA-WEAVE" } ``` ### [](#例-2)例 次の例では、オブジェクト、配列、または属性の新しい値を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Tree --- { name: "Mariano", test: [1,2,3] } mapLeafValues ((value, path) -> if(isObjectType(path)) "***" else if(isArrayType(path)) "In an array" else "Is an attribute") ``` #### [](#出力-2)出力 ```Json { "name": "***", "test": [ "In an array", "In an array", "In an array" ] } ``` # mapLeafValues ## [](#mapleafvalues1)mapLeafValues(value: Any, callback: (value: Any, path: Path) -> Any): Any ツリー内のターミナル (リーフ) ノードをマップします。 リーフノードはオブジェクトまたは配列を値として持つことはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マップする値。

callback

マッパー関数。

### [](#例)例 次の例では、すべての文字列値を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval" }], group: "data-weave" } mapLeafValues (value, path) -> upper(value) ``` #### [](#出力)出力 ```Json { "user": [ { "name": "MARIANO", "lastName": "ACHAVAL" } ], "group": "DATA-WEAVE" } ``` ### [](#例-2)例 次の例では、オブジェクト、配列、または属性の新しい値を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Tree --- { name: "Mariano", test: [1,2,3] } mapLeafValues ((value, path) -> if(isObjectType(path)) "***" else if(isArrayType(path)) "In an array" else "Is an attribute") ``` #### [](#出力-2)出力 ```Json { "name": "***", "test": [ "In an array", "In an array", "In an array" ] } ``` # mapLeafValues ## [](#mapleafvalues1)mapLeafValues(value: Any, callback: (value: Any, path: Path) -> Any): Any ツリー内のターミナル (リーフ) ノードをマップします。 リーフノードはオブジェクトまたは配列を値として持つことはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マップする値。

callback

マッパー関数。

### [](#例)例 次の例では、すべての文字列値を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval" }], group: "data-weave" } mapLeafValues (value, path) -> upper(value) ``` #### [](#出力)出力 ```Json { "user": [ { "name": "MARIANO", "lastName": "ACHAVAL" } ], "group": "DATA-WEAVE" } ``` ### [](#例-2)例 次の例では、オブジェクト、配列、または属性の新しい値を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Tree --- { name: "Mariano", test: [1,2,3] } mapLeafValues ((value, path) -> if(isObjectType(path)) "***" else if(isArrayType(path)) "In an array" else "Is an attribute") ``` #### [](#出力-2)出力 ```Json { "name": "***", "test": [ "In an array", "In an array", "In an array" ] } ``` # mapLeafValues ## [](#mapleafvalues1)mapLeafValues(value: Any, callback: (value: Any, path: Path) -> Any): Any ツリー内のターミナル (リーフ) ノードをマップします。 リーフノードはオブジェクトまたは配列を値として持つことはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マップする値。

callback

マッパー関数。

### [](#例)例 次の例では、すべての文字列値を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval" }], group: "data-weave" } mapLeafValues (value, path) -> upper(value) ``` #### [](#出力)出力 ```Json { "user": [ { "name": "MARIANO", "lastName": "ACHAVAL" } ], "group": "DATA-WEAVE" } ``` ### [](#例-2)例 次の例では、オブジェクト、配列、または属性の新しい値を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Tree --- { name: "Mariano", test: [1,2,3] } mapLeafValues ((value, path) -> if(isObjectType(path)) "***" else if(isArrayType(path)) "In an array" else "Is an attribute") ``` #### [](#出力-2)出力 ```Json { "name": "***", "test": [ "In an array", "In an array", "In an array" ] } ``` # mapLeafValues ## [](#mapleafvalues1)mapLeafValues(value: Any, callback: (value: Any, path: Path) -> Any): Any ツリー内のターミナル (リーフ) ノードをマップします。 リーフノードはオブジェクトまたは配列を値として持つことはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マップする値。

callback

マッパー関数。

### [](#例)例 次の例では、すべての文字列値を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval" }], group: "data-weave" } mapLeafValues (value, path) -> upper(value) ``` #### [](#出力)出力 ```Json { "user": [ { "name": "MARIANO", "lastName": "ACHAVAL" } ], "group": "DATA-WEAVE" } ``` ### [](#例-2)例 次の例では、オブジェクト、配列、または属性の新しい値を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Tree --- { name: "Mariano", test: [1,2,3] } mapLeafValues ((value, path) -> if(isObjectType(path)) "***" else if(isArrayType(path)) "In an array" else "Is an attribute") ``` #### [](#出力-2)出力 ```Json { "name": "***", "test": [ "In an array", "In an array", "In an array" ] } ``` # mapObject ## [](#mapobject1)mapObject(​{ (K)?: V }, (value: V, key: K, index: Number) -> Object): Object オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。 ### [](#パラメーター)パラメーター
名前 説明

​object

マップするオブジェクト。

​mapper

指定されたオブジェクトを出力オブジェクトにマップするために使用する ​key​、​value​、または ​index​ を提供する式またはセレクター。

### [](#例)例 次の例では、入力の ​`{ "a":"b","c":"d"}`​ を反復処理し、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して、指定された各オブジェクトのキーと値を反転し、オブジェクトのインデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、入力オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON { "0": { "b": "a" }, "1": { "d": "c" } } ``` ### [](#例-2)例 次の例では、各価格に 5 を加え、常に小数点以下 2 桁が表示されるように数値に書式を設定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { prices: payload.prices mapObject (value, key) -> { (key): (value + 5) as Number {format: "##.00"} } } ``` #### [](#入力)入力 ```XML 9.99 53 398.99 ``` #### [](#出力-2)出力 ```XML 14.99 58.00 403.99 ``` ## [](#mapobject2)mapObject(Null, (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `mapObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ### [](#例-3)例 前述の例を使用して、​`mapObject`​ の入力が ​`null`​ の場合に出力結果も ​`null`​ であることをテストできます。XML では、​`null`​ 値は空のタグとして記述されます。この値は、ライタープロパティ ​`writeNilOnNull=true`​ を使用して変更できます。 #### [](#入力-2)入力 ```XML ``` #### [](#出力-3)出力 ```XML ``` # mapObject ## [](#mapobject1)mapObject(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> Object): Object オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。 ### [](#パラメーター)パラメーター
名前 説明

​object

マップするオブジェクト。

​mapper

指定されたオブジェクトを出力オブジェクトにマップするために使用する ​key​、​value​、または ​index​ を提供する式またはセレクター。

### [](#例)例 次の例では、入力の ​`{ "a":"b","c":"d"}`​ を反復処理し、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して、指定された各オブジェクトのキーと値を反転し、オブジェクトのインデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、入力オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON { "0": { "b": "a" }, "1": { "d": "c" } } ``` ### [](#例-2)例 次の例では、各価格に 5 を加え、常に小数点以下 2 桁が表示されるように数値に書式を設定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { prices: payload.prices mapObject (value, key) -> { (key): (value + 5) as Number {format: "##.00"} } } ``` #### [](#入力)入力 ```XML 9.99 53 398.99 ``` #### [](#出力-2)出力 ```XML 14.99 58.00 403.99 ``` ## [](#mapobject2)mapObject(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `mapObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ### [](#例-3)例 前述の例を使用して、​`mapObject`​ の入力が ​`null`​ の場合に出力結果も ​`null`​ であることをテストできます。XML では、​`null`​ 値は空のタグとして記述されます。この値は、ライタープロパティ ​`writeNilOnNull=true`​ を使用して変更できます。 #### [](#入力-2)入力 ```XML ``` #### [](#出力-3)出力 ```XML ``` # mapObject ## [](#mapobject1)mapObject(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> Object): Object オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを出力オブジェクトにマップするために使用する ​key​、​value​、または ​index​ を提供する式またはセレクター。

### [](#例)例 次の例では、入力の ​`{ "a":"b","c":"d"}`​ を反復処理し、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して、指定された各オブジェクトのキーと値を反転し、オブジェクトのインデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、入力オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON { "0": { "b": "a" }, "1": { "d": "c" } } ``` ### [](#例-2)例 次の例では、各価格に 5 を加え、常に小数点以下 2 桁が表示されるように数値に書式を設定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { prices: payload.prices mapObject (value, key) -> { (key): (value + 5) as Number {format: "##.00"} } } ``` #### [](#入力)入力 ```XML 9.99 53 398.99 ``` #### [](#出力-2)出力 ```XML 14.99 58.00 403.99 ``` ## [](#mapobject2)mapObject(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `mapObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ### [](#例-3)例 前述の例を使用して、​`mapObject`​ の入力が ​`null`​ の場合に出力結果も ​`null`​ であることをテストできます。XML では、​`null`​ 値は空のタグとして記述されます。この値は、ライタープロパティ ​`writeNilOnNull=true`​ を使用して変更できます。 #### [](#入力-2)入力 ```XML ``` #### [](#出力-3)出力 ```XML ``` # mapObject ## [](#mapobject1)mapObject(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> Object): Object オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを出力オブジェクトにマップするために使用する ​key​、​value​、または ​index​ を提供する式またはセレクター。

### [](#例)例 次の例では、入力の ​`{ "a":"b","c":"d"}`​ を反復処理し、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して、指定された各オブジェクトのキーと値を反転し、オブジェクトのインデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、入力オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON { "0": { "b": "a" }, "1": { "d": "c" } } ``` ### [](#例-2)例 次の例では、各価格に 5 を加え、常に小数点以下 2 桁が表示されるように数値に書式を設定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { prices: payload.prices mapObject (value, key) -> { (key): (value + 5) as Number {format: "##.00"} } } ``` #### [](#入力)入力 ```XML 9.99 53 398.99 ``` #### [](#出力-2)出力 ```XML 14.99 58.00 403.99 ``` ## [](#mapobject2)mapObject(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `mapObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ### [](#例-3)例 前述の例を使用して、​`mapObject`​ の入力が ​`null`​ の場合に出力結果も ​`null`​ であることをテストできます。XML では、​`null`​ 値は空のタグとして記述されます。この値は、ライタープロパティ ​`writeNilOnNull=true`​ を使用して変更できます。 #### [](#入力-2)入力 ```XML ``` #### [](#出力-3)出力 ```XML ``` # mapObject ## [](#mapobject1)mapObject(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> Object): Object オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを出力オブジェクトにマップするために使用する ​key​、​value​、または ​index​ を提供する式またはセレクター。

### [](#例)例 次の例では、入力の ​`{ "a":"b","c":"d"}`​ を反復処理し、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して、指定された各オブジェクトのキーと値を反転し、オブジェクトのインデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、入力オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON { "0": { "b": "a" }, "1": { "d": "c" } } ``` ### [](#例-2)例 次の例では、各価格に 5 を加え、常に小数点以下 2 桁が表示されるように数値に書式を設定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { prices: payload.prices mapObject (value, key) -> { (key): (value + 5) as Number {format: "##.00"} } } ``` #### [](#入力)入力 ```XML 9.99 53 398.99 ``` #### [](#出力-2)出力 ```XML 14.99 58.00 403.99 ``` ## [](#mapobject2)mapObject(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `mapObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ### [](#例-3)例 前述の例を使用して、​`mapObject`​ の入力が ​`null`​ の場合に出力結果も ​`null`​ であることをテストできます。XML では、​`null`​ 値は空のタグとして記述されます。この値は、ライタープロパティ ​`writeNilOnNull=true`​ を使用して変更できます。 #### [](#入力-2)入力 ```XML ``` #### [](#出力-3)出力 ```XML ``` # mapObject ## [](#mapobject1)mapObject(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> Object): Object オブジェクトのキー、値、またはインデックスで動作するマッパーを使用して、オブジェクトを反復処理します。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを出力オブジェクトにマップするために使用する ​key​、​value​、または ​index​ を提供する式またはセレクター。

### [](#例)例 次の例では、入力の ​`{ "a":"b","c":"d"}`​ を反復処理し、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して、指定された各オブジェクトのキーと値を反転し、オブジェクトのインデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、入力オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON { "0": { "b": "a" }, "1": { "d": "c" } } ``` ### [](#例-2)例 次の例では、各価格に 5 を加え、常に小数点以下 2 桁が表示されるように数値に書式を設定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { prices: payload.prices mapObject (value, key) -> { (key): (value + 5) as Number {format: "##.00"} } } ``` #### [](#入力)入力 ```XML 9.99 53 398.99 ``` #### [](#出力-2)出力 ```XML 14.99 58.00 403.99 ``` ## [](#mapobject2)mapObject(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `mapObject`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ### [](#例-3)例 前述の例を使用して、​`mapObject`​ の入力が ​`null`​ の場合に出力結果も ​`null`​ であることをテストできます。XML では、​`null`​ 値は空のタグとして記述されます。この値は、ライタープロパティ ​`writeNilOnNull=true`​ を使用して変更できます。 #### [](#入力-2)入力 ```XML ``` #### [](#出力-3)出力 ```XML ``` # mapString ## [](#mapstring1)mapString(@StreamCapable text: String, mapper: (character: String, index: Number) -> String): String 文字列のすべての文字に式を適用します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

対応付ける文字列。

​mapper

​text​ 文字列の各文字 (​$​) またはインデックス (​$​) に適用して文字列を返す式。

### [](#例)例 次の例では、文字列の機密データを編集しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { balance: ("\$234" mapString if (isNumeric($)) "~" else $) } ``` #### [](#出力)出力 ```Json { "balance": "$~~~" } ``` ## [](#mapstring2)mapString(@StreamCapable text: Null, mapper: (character: Nothing, index: Nothing) -> Any): Null `mapString`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # mapString ## [](#mapstring1)mapString(@StreamCapable text: String, mapper: (character: String, index: Number) -> String): String 文字列のすべての文字に式を適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

対応付ける文字列。

mapper

text​ 文字列の各文字 (​$​) またはインデックス (​$​) に適用して文字列を返す式。

### [](#例)例 次の例では、文字列の機密データを編集しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { balance: ("\$234" mapString if (isNumeric($)) "~" else $) } ``` #### [](#出力)出力 ```Json { "balance": "$~~~" } ``` ## [](#mapstring2)mapString(@StreamCapable text: Null, mapper: (character: Nothing, index: Nothing) -> Any): Null `mapString`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # mapString ## [](#mapstring1)mapString(@StreamCapable text: String, mapper: (character: String, index: Number) -> String): String 文字列のすべての文字に式を適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

対応付ける文字列。

mapper

text​ 文字列の各文字 (​$​) またはインデックス (​$​) に適用して文字列を返す式。

### [](#例)例 次の例では、文字列の機密データを編集しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { balance: ("\$234" mapString if (isNumeric($)) "~" else $) } ``` #### [](#出力)出力 ```Json { "balance": "$~~~" } ``` ## [](#mapstring2)mapString(@StreamCapable text: Null, mapper: (character: Nothing, index: Nothing) -> Any): Null `mapString`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # mapString ## [](#mapstring1)mapString(@StreamCapable text: String, mapper: (character: String, index: Number) -> String): String 文字列のすべての文字に式を適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

対応付ける文字列。

mapper

text​ 文字列の各文字 (​$​) またはインデックス (​$​) に適用して文字列を返す式。

### [](#例)例 次の例では、文字列の機密データを編集しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { balance: ("\$234" mapString if (isNumeric($)) "~" else $) } ``` #### [](#出力)出力 ```Json { "balance": "$~~~" } ``` ## [](#mapstring2)mapString(@StreamCapable text: Null, mapper: (character: Nothing, index: Nothing) -> Any): Null `mapString`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # mapString ## [](#mapstring1)mapString(@StreamCapable text: String, mapper: (character: String, index: Number) -> String): String 文字列のすべての文字に式を適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

対応付ける文字列。

mapper

text​ 文字列の各文字 (​$​) またはインデックス (​$​) に適用して文字列を返す式。

### [](#例)例 次の例では、文字列の機密データを編集しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { balance: ("\$234" mapString if (isNumeric($)) "~" else $) } ``` #### [](#出力)出力 ```Json { "balance": "$~~~" } ``` ## [](#mapstring2)mapString(@StreamCapable text: Null, mapper: (character: Nothing, index: Nothing) -> Any): Null `mapString`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # mask ## [](#mask1)mask(Null, String | Number | PathElement): Any `mask`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mask2)mask(Any, PathElement): Any この ​`mask`​ 関数は、指定された条件に一致するすべての​_単純_​要素を置き換えます。 単純要素に子要素はありません。また、単純要素をオブジェクトまたは配列にすることはできません。 ### [](#パラメーター)パラメーター
名前 説明

​value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

​selector

​PathElement​ セレクター。

### [](#例)例 次の例は、オブジェクトの配列内の ​`password`​ 項目の値をマスクする方法を示しています。これは ​`field("password")`​ を使用して ​`PathElement`​ を返し、それを ​`mask`​ に渡します。​`with "**"**`**​ を使用して、マスクで使用する値 (​**​) を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask field("password") with "*****" ``` #### [](#出力)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask3)mask(Any, String): Any この ​`mask`​ 関数は、項目をその名前で選択します。 ### [](#パラメーター-2)パラメーター
名前 説明

​value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

​fieldName

マスクする項目の名前を指定する文字列。

### [](#例-2)例 次の例は、入力内の項目の名前を使用してマスクを実行する方法を示しています。この値を持つすべての項目の値を変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask "password" with "*****" ``` #### [](#出力-2)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask4)mask(Any, Number): Any この ​`mask`​ 関数は、配列の要素をそのインデックスで選択します。 ### [](#パラメーター-3)パラメーター
名前 説明

​value

マスクする値。値には任意の DataWeave 型を使用できます。

​index

マスクするインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例は、ネストされた配列内のすべての要素に対して ​`mask`​ がどのように動作するかを示しています。 インデックス ​`1`​ の位置にある各要素の値を ​`false`​ に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [[123, true], [456, true]] mask 1 with false ``` #### [](#出力-3)出力 ```Json [ [ 123, false ], [ 456, false ] ] ``` # mask ## [](#mask1)mask(value: Null, fieldName: String | Number | PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Null `mask`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_​ ## [](#mask2)mask(value: Any, selector: PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、指定された条件に一致するすべての​_単純_​要素を置き換えます。 単純要素に子要素はありません。また、単純要素をオブジェクトまたは配列にすることはできません。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

​selector

​PathElement​ セレクター。

### [](#例)例 次の例は、オブジェクトの配列内の ​`password`​ 項目の値をマスクする方法を示しています。これは ​`field("password")`​ を使用して ​`PathElement`​ を返し、それを ​`mask`​ に渡します。​`with "**"**`**​ を使用して、マスクで使用する値 (​**​) を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask field("password") with "*****" ``` #### [](#出力)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask3)mask(value: Any, fieldName: String): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、項目をその名前で選択します。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

​fieldName

マスクする項目の名前を指定する文字列。

### [](#例-2)例 次の例は、入力内の項目の名前を使用してマスクを実行する方法を示しています。この値を持つすべての項目の値を変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask "password" with "*****" ``` #### [](#出力-2)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask4)mask(value: Any, i: Number): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、配列の要素をそのインデックスで選択します。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター-3)パラメーター
名前 説明

​value

マスクする値。値には任意の DataWeave 型を使用できます。

​index

マスクするインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例は、ネストされた配列内のすべての要素に対して ​`mask`​ がどのように動作するかを示しています。 インデックス ​`1`​ の位置にある各要素の値を ​`false`​ に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [[123, true], [456, true]] mask 1 with false ``` #### [](#出力-3)出力 ```Json [ [ 123, false ], [ 456, false ] ] ``` # mask ## [](#mask1)mask(value: Null, fieldName: String | Number | PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Null `mask`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#mask2)mask(value: Any, selector: PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、指定された条件に一致するすべての​_単純_​要素を置き換えます。 単純要素に子要素はありません。また、単純要素をオブジェクトまたは配列にすることはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

selector

PathElement​ セレクター。

### [](#例)例 次の例は、オブジェクトの配列内の ​`password`​ 項目の値をマスクする方法を示しています。これは ​`field("password")`​ を使用して ​`PathElement`​ を返し、それを ​`mask`​ に渡します。​`with "**"**`**​ を使用して、マスクで使用する値 (​**​) を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask field("password") with "*****" ``` #### [](#出力)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask3)mask(value: Any, fieldName: String): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、項目をその名前で選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

fieldName

マスクする項目の名前を指定する文字列。

### [](#例-2)例 次の例は、入力内の項目の名前を使用してマスクを実行する方法を示しています。この値を持つすべての項目の値を変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask "password" with "*****" ``` #### [](#出力-2)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask4)mask(value: Any, i: Number): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、配列の要素をそのインデックスで選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

value

マスクする値。値には任意の DataWeave 型を使用できます。

index

マスクするインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例は、ネストされた配列内のすべての要素に対して ​`mask`​ がどのように動作するかを示しています。 インデックス ​`1`​ の位置にある各要素の値を ​`false`​ に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [[123, true], [456, true]] mask 1 with false ``` #### [](#出力-3)出力 ```Json [ [ 123, false ], [ 456, false ] ] ``` # mask ## [](#mask1)mask(value: Null, fieldName: String | Number | PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Null `mask`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#mask2)mask(value: Any, selector: PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、指定された条件に一致するすべての​_単純_​要素を置き換えます。 単純要素に子要素はありません。また、単純要素をオブジェクトまたは配列にすることはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

selector

PathElement​ セレクター。

### [](#例)例 次の例は、オブジェクトの配列内の ​`password`​ 項目の値をマスクする方法を示しています。これは ​`field("password")`​ を使用して ​`PathElement`​ を返し、それを ​`mask`​ に渡します。​`with "**"**`**​ を使用して、マスクで使用する値 (​**​) を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask field("password") with "*****" ``` #### [](#出力)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask3)mask(value: Any, fieldName: String): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、項目をその名前で選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

fieldName

マスクする項目の名前を指定する文字列。

### [](#例-2)例 次の例は、入力内の項目の名前を使用してマスクを実行する方法を示しています。この値を持つすべての項目の値を変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask "password" with "*****" ``` #### [](#出力-2)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask4)mask(value: Any, i: Number): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、配列の要素をそのインデックスで選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

value

マスクする値。値には任意の DataWeave 型を使用できます。

index

マスクするインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例は、ネストされた配列内のすべての要素に対して ​`mask`​ がどのように動作するかを示しています。 インデックス ​`1`​ の位置にある各要素の値を ​`false`​ に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [[123, true], [456, true]] mask 1 with false ``` #### [](#出力-3)出力 ```Json [ [ 123, false ], [ 456, false ] ] ``` # mask ## [](#mask1)mask(value: Null, fieldName: String | Number | PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Null `mask`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#mask2)mask(value: Any, selector: PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、指定された条件に一致するすべての​_単純_​要素を置き換えます。 単純要素に子要素はありません。また、単純要素をオブジェクトまたは配列にすることはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

selector

PathElement​ セレクター。

### [](#例)例 次の例は、オブジェクトの配列内の ​`password`​ 項目の値をマスクする方法を示しています。これは ​`field("password")`​ を使用して ​`PathElement`​ を返し、それを ​`mask`​ に渡します。​`with "**"**`**​ を使用して、マスクで使用する値 (​**​) を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask field("password") with "*****" ``` #### [](#出力)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask3)mask(value: Any, fieldName: String): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、項目をその名前で選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

fieldName

マスクする項目の名前を指定する文字列。

### [](#例-2)例 次の例は、入力内の項目の名前を使用してマスクを実行する方法を示しています。この値を持つすべての項目の値を変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask "password" with "*****" ``` #### [](#出力-2)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask4)mask(value: Any, i: Number): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、配列の要素をそのインデックスで選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

value

マスクする値。値には任意の DataWeave 型を使用できます。

index

マスクするインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例は、ネストされた配列内のすべての要素に対して ​`mask`​ がどのように動作するかを示しています。 インデックス ​`1`​ の位置にある各要素の値を ​`false`​ に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [[123, true], [456, true]] mask 1 with false ``` #### [](#出力-3)出力 ```Json [ [ 123, false ], [ 456, false ] ] ``` # mask ## [](#mask1)mask(value: Null, fieldName: String | Number | PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Null `mask`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#mask2)mask(value: Any, selector: PathElement): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、指定された条件に一致するすべての​_単純_​要素を置き換えます。 単純要素に子要素はありません。また、単純要素をオブジェクトまたは配列にすることはできません。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

selector

PathElement​ セレクター。

### [](#例)例 次の例は、オブジェクトの配列内の ​`password`​ 項目の値をマスクする方法を示しています。これは ​`field("password")`​ を使用して ​`PathElement`​ を返し、それを ​`mask`​ に渡します。​`with "**"**`**​ を使用して、マスクで使用する値 (​**​) を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask field("password") with "*****" ``` #### [](#出力)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask3)mask(value: Any, fieldName: String): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、項目をその名前で選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

value

マスクで使用する値。値には任意の DataWeave 型を使用できます。

fieldName

マスクする項目の名前を指定する文字列。

### [](#例-2)例 次の例は、入力内の項目の名前を使用してマスクを実行する方法を示しています。この値を持つすべての項目の値を変更します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [{name: "Peter Parker", password: "spiderman"}, {name: "Bruce Wayne", password: "batman"}] mask "password" with "*****" ``` #### [](#出力-2)出力 ```Json [ { "name": "Peter Parker", "password": "*****" }, { "name": "Bruce Wayne", "password": "*****" } ] ``` ## [](#mask4)mask(value: Any, i: Number): (newValueProvider: (oldValue: Any, path: Path) -> Any) -> Any この ​`mask`​ 関数は、配列の要素をそのインデックスで選択します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

value

マスクする値。値には任意の DataWeave 型を使用できます。

index

マスクするインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例は、ネストされた配列内のすべての要素に対して ​`mask`​ がどのように動作するかを示しています。 インデックス ​`1`​ の位置にある各要素の値を ​`false`​ に変更します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json import * from dw::util::Values --- [[123, true], [456, true]] mask 1 with false ``` #### [](#出力-3)出力 ```Json [ [ 123, false ], [ 456, false ] ] ``` # match ## [](#match1)match(String, Regex): Array Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。 `match`​ は、 [case ステートメント](https://docs.mulesoft.com/mule-runtime/4.3/dataweave-pattern-matching)を含むパターン一致式で使用できます。 ### [](#パラメーター)パラメーター
名前 説明

​text

文字列。

​matcher

​text​ 内の文字を照合する Java 正規表現。

### [](#例)例 次の例の正規表現は入力のメールアドレスを照合し、括弧内に 2 つのキャプチャグループ (​`@`​ の前と後) を含みます。結果は要素の配列です。1 つ目は正規表現全体と一致し、2 つ目は正規表現内の最初のキャプチャグループ (​**​) と一致し、3 つ目は最後のキャプチャグループ (​`[a-z]`**​) と一致します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "me@mulesoft.com" match(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力)出力 ```JSON [ "me@mulesoft.com", "me", "mulesoft" ] ``` ### [](#例-2)例 次の例では、末尾が ​`4`​ である配列内の値への一致を出力します。これは ​`flatMap`​ を使用して、リストを反復処理し、フラット化します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var a = '192.88.99.0/24' var b = '192.168.0.0/16' var c = '192.175.48.0/24' output application/json --- [ a, b, c ] flatMap ( $ match(/.*[$4]/) ) ``` #### [](#出力-2)出力 ```JSON [ "192.88.99.0/24", "192.175.48.0/24" ] ``` # match ## [](#match1)match(text: String, matcher: Regex): Array Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。 `match`​ は、​[case ステートメント](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)を含むパターン一致式で使用できます。 ### [](#パラメーター)パラメーター
名前 説明

​text

文字列。

​matcher

​text​ 内の文字を照合する Java 正規表現。

### [](#例)例 次の例の正規表現は入力のメールアドレスを照合し、括弧内に 2 つのキャプチャグループ (​`@`​ の前と後) を含みます。結果は要素の配列です。1 つ目は正規表現全体と一致し、2 つ目は正規表現内の最初のキャプチャグループ (​**​) と一致し、3 つ目は最後のキャプチャグループ (​`[a-z]`**​) と一致します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "me@mulesoft.com" match(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力)出力 ```JSON [ "me@mulesoft.com", "me", "mulesoft" ] ``` ### [](#例-2)例 次の例では、末尾が ​`4`​ である配列内の値への一致を出力します。これは ​`flatMap`​ を使用して、リストを反復処理し、フラット化します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var a = '192.88.99.0/24' var b = '192.168.0.0/16' var c = '192.175.48.0/24' output application/json --- [ a, b, c ] flatMap ( $ match(/.*[$4]/) ) ``` #### [](#出力-2)出力 ```JSON [ "192.88.99.0/24", "192.175.48.0/24" ] ``` ## [](#match2)match(text: Null, matcher: Any): Null `match`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # match ## [](#match1)match(text: String, matcher: Regex): Array Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。 `match`​ は、​ [case ステートメント](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を含むパターン一致式で使用できます。 ### [](#パラメーター)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例)例 次の例の正規表現は入力のメールアドレスを照合し、括弧内に 2 つのキャプチャグループ (​`@`​ の前と後) を含みます。結果は要素の配列です。1 つ目は正規表現全体と一致し、2 つ目は正規表現内の最初のキャプチャグループ (​**​) と一致し、3 つ目は最後のキャプチャグループ (​`[a-z]`**​) と一致します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "me@mulesoft.com" match(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力)出力 ```JSON [ "me@mulesoft.com", "me", "mulesoft" ] ``` ### [](#例-2)例 次の例では、末尾が ​`4`​ である配列内の値への一致を出力します。これは ​`flatMap`​ を使用して、リストを反復処理し、フラット化します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var a = '192.88.99.0/24' var b = '192.168.0.0/16' var c = '192.175.48.0/24' output application/json --- [ a, b, c ] flatMap ( $ match(/.*[$4]/) ) ``` #### [](#出力-2)出力 ```JSON [ "192.88.99.0/24", "192.175.48.0/24" ] ``` ## [](#match2)match(text: Null, matcher: Any): Null `match`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # match ## [](#match1)match(text: String, matcher: Regex): Array Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。 `match`​ は、​ [case ステートメント](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を含むパターン一致式で使用できます。 ### [](#パラメーター)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例)例 次の例の正規表現は入力のメールアドレスを照合し、括弧内に 2 つのキャプチャグループ (​`@`​ の前と後) を含みます。結果は要素の配列です。1 つ目は正規表現全体と一致し、2 つ目は正規表現内の最初のキャプチャグループ (​**​) と一致し、3 つ目は最後のキャプチャグループ (​`[a-z]`**​) と一致します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "me@mulesoft.com" match(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力)出力 ```JSON [ "me@mulesoft.com", "me", "mulesoft" ] ``` ### [](#例-2)例 次の例では、末尾が ​`4`​ である配列内の値への一致を出力します。これは ​`flatMap`​ を使用して、リストを反復処理し、フラット化します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var a = '192.88.99.0/24' var b = '192.168.0.0/16' var c = '192.175.48.0/24' output application/json --- [ a, b, c ] flatMap ( $ match(/.*[$4]/) ) ``` #### [](#出力-2)出力 ```JSON [ "192.88.99.0/24", "192.175.48.0/24" ] ``` ## [](#match2)match(text: Null, matcher: Any): Null `match`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # match ## [](#match1)match(text: String, matcher: Regex): Array Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。 `match`​ は、​ [case ステートメント](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を含むパターン一致式で使用できます。 ### [](#パラメーター)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例)例 次の例の正規表現は入力のメールアドレスを照合し、括弧内に 2 つのキャプチャグループ (​`@`​ の前と後) を含みます。結果は要素の配列です。1 つ目は正規表現全体と一致し、2 つ目は正規表現内の最初のキャプチャグループ (​**​) と一致し、3 つ目は最後のキャプチャグループ (​`[a-z]`**​) と一致します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "me@mulesoft.com" match(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力)出力 ```JSON [ "me@mulesoft.com", "me", "mulesoft" ] ``` ### [](#例-2)例 次の例では、末尾が ​`4`​ である配列内の値への一致を出力します。これは ​`flatMap`​ を使用して、リストを反復処理し、フラット化します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var a = '192.88.99.0/24' var b = '192.168.0.0/16' var c = '192.175.48.0/24' output application/json --- [ a, b, c ] flatMap ( $ match(/.*[$4]/) ) ``` #### [](#出力-2)出力 ```JSON [ "192.88.99.0/24", "192.175.48.0/24" ] ``` ## [](#match2)match(text: Null, matcher: Any): Null `match`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # match ## [](#match1)match(text: String, matcher: Regex): Array Java 正規表現 (regex) を使用して文字列を照合して各キャプチャグループに分割します。結果を配列で返します。 `match`​ は、​ [case ステートメント](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を含むパターン一致式で使用できます。 ### [](#パラメーター)パラメーター
名前 説明

text

文字列。

matcher

text​ 内の文字を照合する Java 正規表現。

### [](#例)例 次の例の正規表現は入力のメールアドレスを照合し、括弧内に 2 つのキャプチャグループ (​`@`​ の前と後) を含みます。結果は要素の配列です。1 つ目は正規表現全体と一致し、2 つ目は正規表現内の最初のキャプチャグループ (​**​) と一致し、3 つ目は最後のキャプチャグループ (​`[a-z]`**​) と一致します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "me@mulesoft.com" match(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力)出力 ```JSON [ "me@mulesoft.com", "me", "mulesoft" ] ``` ### [](#例-2)例 次の例では、末尾が ​`4`​ である配列内の値への一致を出力します。これは ​`flatMap`​ を使用して、リストを反復処理し、フラット化します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var a = '192.88.99.0/24' var b = '192.168.0.0/16' var c = '192.175.48.0/24' output application/json --- [ a, b, c ] flatMap ( $ match(/.*[$4]/) ) ``` #### [](#出力-2)出力 ```JSON [ "192.88.99.0/24", "192.175.48.0/24" ] ``` ## [](#match2)match(text: Null, matcher: Any): Null `match`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # match ステートメントを使用した DataWeave のパターン一致 `match`​ ステートメントは、他の言語 (Java や C++ など) の ​`match`​ または ​`switch`​ ステートメントのように動作し、何らかの条件に基づいて入力式を特定の出力式にルーティングします。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 match ステートメントの構文: ```dataweave inputExpression match { case -> case -> else -> } ``` 他の言語と同様に、DataWeave の ​`match`​ ステートメントには、複数の連鎖した ​`if-else`​ ステートメントを整理するためのコンパクトな方法が用意されています。​`match`​ 式は、必要に応じて ​`else`​ ステートメントで終了する ​`case`​ ステートメントのリストで構成されます。 各 ​`case`​ ステートメントは、​`true`​ または ​`false`​ に評価されるセレクター条件式で構成されます。この条件式は ​`if`​ ステートメントで表される条件に対応します。その後に対応する DataWeave ルーティング式が続きます。この式には ​`match`​ ステートメントの入力式を含めることができます。 各 ​`case`​ ステートメントは ​`if`​ ステートメントにすることができます。また、​`case`​ ステートメントで他のパターン一致のショートカットを使用して、​`case`​ ステートメントの条件を定義することもできます。​`case`​ ステートメントが ​`false`​ の場合、ルーティング式は無視されます。 DataWeave では、​`case`​ ステートメントの条件として 4 つの種別のパターンがサポートされます。 - [式](#pattern_match_expressions)​ - [リテラル値](#pattern_match_literals)​ - [データ型](#pattern_match_data_types)​ - [正規表現](#pattern_match_regex) 各 case に名前を付けても名前を付けなくても構いません。case に名前を付けると、その名前で入力式がローカル変数として保存され、その case ステートメントの条件式と、対応するルーティング式の両方で使用できるようになります。 match ステートメントの構造 ```dataweave value match { case (:) -> case (:) -> else -> } ``` この例のように、式は最初に一致した ​`case`​ ステートメントの結果を返します。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] as String ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case hasOne if( hasOne is Object and hasOne.three? ) -> hasOne.three else -> $ } ``` 出力 ```json "hello was matched" ``` 入力式 ("hello world") は、各 ​`case`​ ステートメントのローカル変数名 (​`word`​ または ​`literalMatch`​) で参照できます。​`else`​ ステートメントの場合、デフォルトのパラメーター名 ​`$`​ (名前のないパラメーター) を使用して入力式を参照できます。 `else`​ ステートメントの入力式に名前を付けるには、​`else`​ ステートメントを常に ​`true`​ になる ​`case`​ ステートメントに置き換えます。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case last if(true) -> last } ``` 入力が String (文字列) 型のユースケースの場合、​`dw::Core`​ モジュールの ​[match](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-match)​ ​_関数_​を使用して、正規表現パターンに対して文字列をテストすることもできます。この関数は、正規表現全体とキャプチャグループに一致する文字列を含む配列を返します。 文字列が正規表現パターンに一致するかどうかに基づいてブール値の結果が必要なユースケースの場合、パターン一致やモジュールの ​`match`​ 関数を使用する代わりに、​`dw::Core`​ モジュールの ​[matches](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-matches)​ ​_関数_​を使用できます。 ## [](#pattern_match_literals)リテラル値とのパターン一致 評価された値が単純なリテラル値に等しい場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値と照合し、ブール値を返します。2 番目の項目では同じ照合が実行されますが、ブール値と、検証された値への参照の両方を含むオブジェクトを返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano" } output application/json --- { a: myInput.string match { case "Emiliano" -> true case "Mariano" -> false }, b: myInput.string match { case str: "Emiliano" -> { "matches": true, value: str } case str: "Mariano" -> { "matches": false, value: str } } } ``` 出力 ```json { "a": true, "b": { "matches": true, "value": "Emiliano" } } ``` ## [](#pattern_match_expressions)式に対するパターン一致 提供された式が ​`true`​ を返す場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値の 2 つの選択肢と照合し、条件に応じて別の文字列を追加します。2 番目の項目では、3 と比較して ​`myInput.number`​ の値が「より大」 (​`>`​)、「より小」 (​`<`​)、または「等しい」 (​`==`​) かどうかを評価し、対応する文字列を返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano", "number": 3.14 } output application/json --- { a: myInput.string match { case str if str == "Mariano" -> str ++ " de Achaval" case str if str == "Emiliano" -> str ++ " Lesende" }, b: myInput.number match { case num if num == 3 -> "equal" case num if num > 3 -> "greater than" case num if num < 3 -> "less than" } } ``` 出力 ```json { "a": "Emiliano Lesende", "b": "greater than" } ``` ## [](#pattern_match_data_types)データ型に対するパターン一致 評価された値が、指定されたデータ型の場合に一致します。 次の例では、1 番目の項目で ​`myInput.a`​ のデータ型を評価し、対応する型名の文字列を返します。2 番目の項目でも同様ですが、​`myInput.b`​ の値も返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "a": "Emiliano", "b": 3.14 } output application/json --- { a: myInput.a match { case is Object -> 'OBJECT' case is String -> 'STRING' case is Number -> 'NUMBER' case is Boolean -> 'BOOLEAN' case is Array -> 'ARRAY' case is Null -> 'NULL' else -> 'ANOTHER TYPE' }, b: myInput.b match { case y is Object -> { 'Type': { 'OBJECT' : y} } case y is String -> { 'Type': { 'STRING' : y} } case y is Number -> { 'Type': { 'NUMBER' : y} } case y is Boolean -> { 'Type': { 'BOOLEAN' : y} } case y is Array -> { 'Type': { 'ARRAY' : y} } case y is Null -> { 'Type': { 'NULL' : y} } else -> { 'Type': { 'ANOTHER TYPE' : myInput.b} } } } ``` 出力 ```json { "a": "STRING", "b": { "Type": { "NUMBER": 3.14 } } } ``` ## [](#pattern_match_regex)正規表現に対するパターン一致 評価された値が、提供された正規表現 (具体的には Java でサポートされる正規表現の「フレーバー」) に適合する場合に一致します。次の例では、入力変数 (​`myInput`​) に文字列の配列が含まれます。スクリプトは ​`map`​ 関数を使用して配列を反復処理します。Java 正規表現に対して各要素を評価し、入力との一致に基づいてオブジェクトを出力します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "phones": [ "+1 (415) 229-2009", "(647) 456-7008" ] } output application/json --- { a: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1]} case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }), b: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1], area: phone[2], number: phone[3] } case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }) } ``` 出力 ```json { "a": [ { "country": "1" }, { "area": "647", "number": "456-7008" } ], "b": [ { "country": "1", "area": "415", "number": "229-2009" }, { "area": "647", "number": "456-7008" } ] } ``` ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-quickstart) # match ステートメントを使用した DataWeave のパターン一致 `match`​ ステートメントは、他の言語 (Java や C++ など) の ​`match`​ または ​`switch`​ ステートメントのように動作し、何らかの条件に基づいて入力式を特定の出力式にルーティングします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 match ステートメントの構文: ```dataweave inputExpression match { case -> case -> else -> } ``` 他の言語と同様に、DataWeave の ​`match`​ ステートメントには、複数の連鎖した ​`if-else`​ ステートメントを整理するためのコンパクトな方法が用意されています。​`match`​ 式は、必要に応じて ​`else`​ ステートメントで終了する ​`case`​ ステートメントのリストで構成されます。 各 ​`case`​ ステートメントは、​`true`​ または ​`false`​ に評価されるセレクター条件式で構成されます。この条件式は ​`if`​ ステートメントで表される条件に対応します。その後に対応する DataWeave ルーティング式が続きます。この式には ​`match`​ ステートメントの入力式を含めることができます。 各 ​`case`​ ステートメントは ​`if`​ ステートメントにすることができます。また、​`case`​ ステートメントで他のパターン一致のショートカットを使用して、​`case`​ ステートメントの条件を定義することもできます。​`case`​ ステートメントが ​`false`​ の場合、ルーティング式は無視されます。 DataWeave では、​`case`​ ステートメントの条件として 4 つの種別のパターンがサポートされます。 - [式](#pattern_match_expressions) - [リテラル値](#pattern_match_literals) - [データ型](#pattern_match_data_types) - [正規表現](#pattern_match_regex) 各 case に名前を付けても名前を付けなくても構いません。case に名前を付けると、その名前で入力式がローカル変数として保存され、その case ステートメントの条件式と、対応するルーティング式の両方で使用できるようになります。 match ステートメントの構造 ```dataweave value match { case (:) -> case (:) -> else -> } ``` この例のように、式は最初に一致した ​`case`​ ステートメントの結果を返します。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] as String ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case hasOne if( hasOne is Object and hasOne.three? ) -> hasOne.three else -> $ } ``` 出力 ```json "hello was matched" ``` 入力式 ("hello world") は、各 ​`case`​ ステートメントのローカル変数名 (​`word`​ または ​`literalMatch`​) で参照できます。​`else`​ ステートメントの場合、デフォルトのパラメーター名 ​`$`​ (名前のないパラメーター) を使用して入力式を参照できます。 `else`​ ステートメントの入力式に名前を付けるには、​`else`​ ステートメントを常に ​`true`​ になる ​`case`​ ステートメントに置き換えます。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case last if(true) -> last } ``` 入力が String (文字列) 型のユースケースの場合、​`dw::Core`​ モジュールの ​[match](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-match)​ ​_関数_​を使用して、正規表現パターンに対して文字列をテストすることもできます。この関数は、正規表現全体とキャプチャグループに一致する文字列を含む配列を返します。 文字列が正規表現パターンに一致するかどうかに基づいてブール値の結果が必要なユースケースの場合、パターン一致やモジュールの ​`match`​ 関数を使用する代わりに、​`dw::Core`​ モジュールの ​[matches](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-matches)​ ​_関数_​を使用できます。 ## [](#pattern_match_literals)リテラル値とのパターン一致 評価された値が単純なリテラル値に等しい場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値と照合し、ブール値を返します。2 番目の項目では同じ照合が実行されますが、ブール値と、検証された値への参照の両方を含むオブジェクトを返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano" } output application/json --- { a: myInput.string match { case "Emiliano" -> true case "Mariano" -> false }, b: myInput.string match { case str: "Emiliano" -> { "matches": true, value: str } case str: "Mariano" -> { "matches": false, value: str } } } ``` 出力 ```json { "a": true, "b": { "matches": true, "value": "Emiliano" } } ``` ## [](#pattern_match_expressions)式に対するパターン一致 提供された式が ​`true`​ を返す場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値の 2 つの選択肢と照合し、条件に応じて別の文字列を追加します。2 番目の項目では、3 と比較して ​`myInput.number`​ の値が「より大」 (​`>`​)、「より小」 (​`<`​)、または「等しい」 (​`==`​) かどうかを評価し、対応する文字列を返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano", "number": 3.14 } output application/json --- { a: myInput.string match { case str if str == "Mariano" -> str ++ " de Achaval" case str if str == "Emiliano" -> str ++ " Lesende" }, b: myInput.number match { case num if num == 3 -> "equal" case num if num > 3 -> "greater than" case num if num < 3 -> "less than" } } ``` 出力 ```json { "a": "Emiliano Lesende", "b": "greater than" } ``` ## [](#pattern_match_data_types)データ型に対するパターン一致 評価された値が、指定されたデータ型の場合に一致します。 次の例では、1 番目の項目で ​`myInput.a`​ のデータ型を評価し、対応する型名の文字列を返します。2 番目の項目でも同様ですが、​`myInput.b`​ の値も返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "a": "Emiliano", "b": 3.14 } output application/json --- { a: myInput.a match { case is Object -> 'OBJECT' case is String -> 'STRING' case is Number -> 'NUMBER' case is Boolean -> 'BOOLEAN' case is Array -> 'ARRAY' case is Null -> 'NULL' else -> 'ANOTHER TYPE' }, b: myInput.b match { case y is Object -> { 'Type': { 'OBJECT' : y} } case y is String -> { 'Type': { 'STRING' : y} } case y is Number -> { 'Type': { 'NUMBER' : y} } case y is Boolean -> { 'Type': { 'BOOLEAN' : y} } case y is Array -> { 'Type': { 'ARRAY' : y} } case y is Null -> { 'Type': { 'NULL' : y} } else -> { 'Type': { 'ANOTHER TYPE' : myInput.b} } } } ``` 出力 ```json { "a": "STRING", "b": { "Type": { "NUMBER": 3.14 } } } ``` ## [](#pattern_match_regex)正規表現に対するパターン一致 評価された値が、提供された正規表現 (具体的には Java でサポートされる正規表現の「フレーバー」) に適合する場合に一致します。次の例では、入力変数 (​`myInput`​) に文字列の配列が含まれます。スクリプトは ​`map`​ 関数を使用して配列を反復処理します。Java 正規表現に対して各要素を評価し、入力との一致に基づいてオブジェクトを出力します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "phones": [ "+1 (415) 229-2009", "(647) 456-7008" ] } output application/json --- { a: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1]} case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }), b: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1], area: phone[2], number: phone[3] } case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }) } ``` 出力 ```json { "a": [ { "country": "1" }, { "area": "647", "number": "456-7008" } ], "b": [ { "country": "1", "area": "415", "number": "229-2009" }, { "area": "647", "number": "456-7008" } ] } ``` ## [](#dataweave-でのコレクションのデコンストラクター)DataWeave でのコレクションのデコンストラクター DataWeave は、配列とオブジェクトの 2 つの種別のコレクションをサポートしています。配列は値のシーケンスで、オブジェクトはキー-値ペアのシーケンスです。 ### [](#配列の分解)配列の分解 配列は、ヘッド (配列の最初の要素) とテール (残りの要素を含む新しい配列) とみなすことができます。たとえば、配列 ​`[1,2,3,4]`​ では、​`1`​ がヘッドで、​`2,3,4`​ がテールです。 配列を照合するには、次の構文を使用します。このスクリプトは、配列の最初の要素を取得するか、配列が空の場合は null を返します。 DataWeave スクリプト ```dataweave [1,2,3,4] match { case [head ~ tail] -> head case [] -> null } ``` このような分解は、再帰的関数で使用する場合に役立ちます。 #### [](#例-joinby-関数の構築)例: `joinBy`​ 関数の構築 この例では、文字列の配列を取得し、指定された区切り文字で連結された配列のすべての要素を含む文字列を返す ​`joinBy`​ 関数を構築します。 DataWeave スクリプト ```dataweave fun joinBy(elements: Array, separator: String): String = elements match { case [head ~ tail] -> head ++ separator ++ joinBy(tail, separator) //When head and tail append and recursively case [] -> "" //When the array is empty return empty array } ``` #### [](#例-filter-関数の構築)例: filter 関数の構築 この例では、高次 filter 関数を構築します。 DataWeave スクリプト ```dataweave fun filter(elements: Array, predicate: (item:T) -> Boolean): Array = elements match { case [head ~ tail] -> if(predicate(head)) [head] ++ filter(tail, predicate) else filter(tail, predicate) case [] -> [] } ``` ### [](#オブジェクトの分解)オブジェクトの分解 DataWeave のオブジェクトは配列に似ていますが、各要素はキーと値で構成されます。オブジェクトも、ヘッド (最初のキー-値ペア) とテール (残りのキー-値ペアを含む新しいオブジェクト) としてみなすことができます。 オブジェクトを照合するには、次の構文を使用します。このスクリプトは、オブジェクトの最初の値 (この場合は「Word」) を取得します。 DataWeave スクリプト ```dataweave {hello: "world", test: true} match { case {headKey: headValue ~ tail} -> headValue case {} -> null } ``` ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-quickstart) # match ステートメントを使用した DataWeave のパターン一致 `match`​ ステートメントは、他の言語 (Java や C++ など) の ​`match`​ または ​`switch`​ ステートメントのように動作し、何らかの条件に基づいて入力式を特定の出力式にルーティングします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 match ステートメントの構文: ```dataweave inputExpression match { case -> case -> else -> } ``` 他の言語と同様に、DataWeave の ​`match`​ ステートメントには、複数の連鎖した ​`if-else`​ ステートメントを整理するためのコンパクトな方法が用意されています。​`match`​ 式は、必要に応じて ​`else`​ ステートメントで終了する ​`case`​ ステートメントのリストで構成されます。 各 ​`case`​ ステートメントは、​`true`​ または ​`false`​ に評価されるセレクター条件式で構成されます。この条件式は ​`if`​ ステートメントで表される条件に対応します。その後に対応する DataWeave ルーティング式が続きます。この式には ​`match`​ ステートメントの入力式を含めることができます。 各 ​`case`​ ステートメントは ​`if`​ ステートメントにすることができます。また、​`case`​ ステートメントで他のパターン一致のショートカットを使用して、​`case`​ ステートメントの条件を定義することもできます。​`case`​ ステートメントが ​`false`​ の場合、ルーティング式は無視されます。 DataWeave では、​`case`​ ステートメントの条件として 4 つの種別のパターンがサポートされます。 - [式](#pattern_match_expressions) - [リテラル値](#pattern_match_literals) - [データ型](#pattern_match_data_types) - [正規表現](#pattern_match_regex) 各 case に名前を付けても名前を付けなくても構いません。case に名前を付けると、その名前で入力式がローカル変数として保存され、その case ステートメントの条件式と、対応するルーティング式の両方で使用できるようになります。 match ステートメントの構造 ```dataweave value match { case (:) -> case (:) -> else -> } ``` この例のように、式は最初に一致した ​`case`​ ステートメントの結果を返します。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] as String ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case hasOne if( hasOne is Object and hasOne.three? ) -> hasOne.three else -> $ } ``` 出力 ```json "hello was matched" ``` 入力式 ("hello world") は、各 ​`case`​ ステートメントのローカル変数名 (​`word`​ または ​`literalMatch`​) で参照できます。​`else`​ ステートメントの場合、デフォルトのパラメーター名 ​`$`​ (名前のないパラメーター) を使用して入力式を参照できます。 `else`​ ステートメントの入力式に名前を付けるには、​`else`​ ステートメントを常に ​`true`​ になる ​`case`​ ステートメントに置き換えます。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case last if(true) -> last } ``` 入力が String (文字列) 型のユースケースの場合、​`dw::Core`​ モジュールの ​[match](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-match)​ ​_関数_​を使用して、正規表現パターンに対して文字列をテストすることもできます。この関数は、正規表現全体とキャプチャグループに一致する文字列を含む配列を返します。 文字列が正規表現パターンに一致するかどうかに基づいてブール値の結果が必要なユースケースの場合、パターン一致やモジュールの ​`match`​ 関数を使用する代わりに、​`dw::Core`​ モジュールの ​[matches](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-matches)​ ​_関数_​を使用できます。 ## [](#pattern_match_literals)リテラル値とのパターン一致 評価された値が単純なリテラル値に等しい場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値と照合し、ブール値を返します。2 番目の項目では同じ照合が実行されますが、ブール値と、検証された値への参照の両方を含むオブジェクトを返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano" } output application/json --- { a: myInput.string match { case "Emiliano" -> true case "Mariano" -> false }, b: myInput.string match { case str: "Emiliano" -> { "matches": true, value: str } case str: "Mariano" -> { "matches": false, value: str } } } ``` 出力 ```json { "a": true, "b": { "matches": true, "value": "Emiliano" } } ``` ## [](#pattern_match_expressions)式に対するパターン一致 提供された式が ​`true`​ を返す場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値の 2 つの選択肢と照合し、条件に応じて別の文字列を追加します。2 番目の項目では、3 と比較して ​`myInput.number`​ の値が「より大」 (​`>`​)、「より小」 (​`<`​)、または「等しい」 (​`==`​) かどうかを評価し、対応する文字列を返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano", "number": 3.14 } output application/json --- { a: myInput.string match { case str if str == "Mariano" -> str ++ " de Achaval" case str if str == "Emiliano" -> str ++ " Lesende" }, b: myInput.number match { case num if num == 3 -> "equal" case num if num > 3 -> "greater than" case num if num < 3 -> "less than" } } ``` 出力 ```json { "a": "Emiliano Lesende", "b": "greater than" } ``` ## [](#pattern_match_data_types)データ型に対するパターン一致 評価された値が、指定されたデータ型の場合に一致します。 次の例では、1 番目の項目で ​`myInput.a`​ のデータ型を評価し、対応する型名の文字列を返します。2 番目の項目でも同様ですが、​`myInput.b`​ の値も返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "a": "Emiliano", "b": 3.14 } output application/json --- { a: myInput.a match { case is Object -> 'OBJECT' case is String -> 'STRING' case is Number -> 'NUMBER' case is Boolean -> 'BOOLEAN' case is Array -> 'ARRAY' case is Null -> 'NULL' else -> 'ANOTHER TYPE' }, b: myInput.b match { case y is Object -> { 'Type': { 'OBJECT' : y} } case y is String -> { 'Type': { 'STRING' : y} } case y is Number -> { 'Type': { 'NUMBER' : y} } case y is Boolean -> { 'Type': { 'BOOLEAN' : y} } case y is Array -> { 'Type': { 'ARRAY' : y} } case y is Null -> { 'Type': { 'NULL' : y} } else -> { 'Type': { 'ANOTHER TYPE' : myInput.b} } } } ``` 出力 ```json { "a": "STRING", "b": { "Type": { "NUMBER": 3.14 } } } ``` ## [](#pattern_match_regex)正規表現に対するパターン一致 評価された値が、提供された正規表現 (具体的には Java でサポートされる正規表現の「フレーバー」) に適合する場合に一致します。次の例では、入力変数 (​`myInput`​) に文字列の配列が含まれます。スクリプトは ​`map`​ 関数を使用して配列を反復処理します。Java 正規表現に対して各要素を評価し、入力との一致に基づいてオブジェクトを出力します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "phones": [ "+1 (415) 229-2009", "(647) 456-7008" ] } output application/json --- { a: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1]} case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }), b: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1], area: phone[2], number: phone[3] } case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }) } ``` 出力 ```json { "a": [ { "country": "1" }, { "area": "647", "number": "456-7008" } ], "b": [ { "country": "1", "area": "415", "number": "229-2009" }, { "area": "647", "number": "456-7008" } ] } ``` ## [](#dataweave-でのコレクションのデコンストラクター)DataWeave でのコレクションのデコンストラクター DataWeave は、配列とオブジェクトの 2 つの種別のコレクションをサポートしています。配列は値のシーケンスで、オブジェクトはキー-値ペアのシーケンスです。 ### [](#配列の分解)配列の分解 配列は、ヘッド (配列の最初の要素) とテール (残りの要素を含む新しい配列) とみなすことができます。たとえば、配列 ​`[1,2,3,4]`​ では、​`1`​ がヘッドで、​`2,3,4`​ がテールです。 配列を照合するには、次の構文を使用します。このスクリプトは、配列の最初の要素を取得するか、配列が空の場合は null を返します。 DataWeave スクリプト ```dataweave [1,2,3,4] match { case [head ~ tail] -> head case [] -> null } ``` このような分解は、再帰的関数で使用する場合に役立ちます。 #### [](#例-joinby-関数の構築)例: `joinBy`​ 関数の構築 この例では、文字列の配列を取得し、指定された区切り文字で連結された配列のすべての要素を含む文字列を返す ​`joinBy`​ 関数を構築します。 DataWeave スクリプト ```dataweave fun joinBy(elements: Array, separator: String): String = elements match { case [head ~ tail] -> head ++ separator ++ joinBy(tail, separator) //When head and tail append and recursively case [] -> "" //When the array is empty return empty array } ``` #### [](#例-filter-関数の構築)例: filter 関数の構築 この例では、高次 filter 関数を構築します。 DataWeave スクリプト ```dataweave fun filter(elements: Array, predicate: (item:T) -> Boolean): Array = elements match { case [head ~ tail] -> if(predicate(head)) [head] ++ filter(tail, predicate) else filter(tail, predicate) case [] -> [] } ``` ### [](#オブジェクトの分解)オブジェクトの分解 DataWeave のオブジェクトは配列に似ていますが、各要素はキーと値で構成されます。オブジェクトも、ヘッド (最初のキー-値ペア) とテール (残りのキー-値ペアを含む新しいオブジェクト) としてみなすことができます。 オブジェクトを照合するには、次の構文を使用します。このスクリプトは、オブジェクトの最初の値 (この場合は「Word」) を取得します。 DataWeave スクリプト ```dataweave {hello: "world", test: true} match { case {headKey: headValue ~ tail} -> headValue case {} -> null } ``` ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-quickstart) # match ステートメントを使用した DataWeave のパターン一致 `match`​ ステートメントは、他の言語 (Java や C++ など) の ​`match`​ または ​`switch`​ ステートメントのように動作し、何らかの条件に基づいて入力式を特定の出力式にルーティングします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 match ステートメントの構文: ```dataweave inputExpression match { case -> case -> else -> } ``` 他の言語と同様に、DataWeave の ​`match`​ ステートメントには、複数の連鎖した ​`if-else`​ ステートメントを整理するためのコンパクトな方法が用意されています。​`match`​ 式は、必要に応じて ​`else`​ ステートメントで終了する ​`case`​ ステートメントのリストで構成されます。 各 ​`case`​ ステートメントは、​`true`​ または ​`false`​ に評価されるセレクター条件式で構成されます。この条件式は ​`if`​ ステートメントで表される条件に対応します。その後に対応する DataWeave ルーティング式が続きます。この式には ​`match`​ ステートメントの入力式を含めることができます。 各 ​`case`​ ステートメントは ​`if`​ ステートメントにすることができます。また、​`case`​ ステートメントで他のパターン一致のショートカットを使用して、​`case`​ ステートメントの条件を定義することもできます。​`case`​ ステートメントが ​`false`​ の場合、ルーティング式は無視されます。 DataWeave では、​`case`​ ステートメントの条件として 4 つの種別のパターンがサポートされます。 - [式](#pattern_match_expressions) - [リテラル値](#pattern_match_literals) - [データ型](#pattern_match_data_types) - [正規表現](#pattern_match_regex) 各 case に名前を付けても名前を付けなくても構いません。case に名前を付けると、その名前で入力式がローカル変数として保存され、その case ステートメントの条件式と、対応するルーティング式の両方で使用できるようになります。 match ステートメントの構造 ```dataweave value match { case (:) -> case (:) -> else -> } ``` この例のように、式は最初に一致した ​`case`​ ステートメントの結果を返します。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] as String ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case hasOne if( hasOne is Object and hasOne.three? ) -> hasOne.three else -> $ } ``` 出力 ```json "hello was matched" ``` 入力式 ("hello world") は、各 ​`case`​ ステートメントのローカル変数名 (​`word`​ または ​`literalMatch`​) で参照できます。​`else`​ ステートメントの場合、デフォルトのパラメーター名 ​`$`​ (名前のないパラメーター) を使用して入力式を参照できます。 `else`​ ステートメントの入力式に名前を付けるには、​`else`​ ステートメントを常に ​`true`​ になる ​`case`​ ステートメントに置き換えます。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case last if(true) -> last } ``` 入力が String (文字列) 型のユースケースの場合、​`dw::Core`​ モジュールの ​[match](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-match)​ ​_関数_​を使用して、正規表現パターンに対して文字列をテストすることもできます。この関数は、正規表現全体とキャプチャグループに一致する文字列を含む配列を返します。 文字列が正規表現パターンに一致するかどうかに基づいてブール値の結果が必要なユースケースの場合、パターン一致やモジュールの ​`match`​ 関数を使用する代わりに、​`dw::Core`​ モジュールの ​[matches](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-matches)​ ​_関数_​を使用できます。 ## [](#pattern_match_literals)リテラル値とのパターン一致 評価された値が単純なリテラル値に等しい場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値と照合し、ブール値を返します。2 番目の項目では同じ照合が実行されますが、ブール値と、検証された値への参照の両方を含むオブジェクトを返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano" } output application/json --- { a: myInput.string match { case "Emiliano" -> true case "Mariano" -> false }, b: myInput.string match { case str: "Emiliano" -> { "matches": true, value: str } case str: "Mariano" -> { "matches": false, value: str } } } ``` 出力 ```json { "a": true, "b": { "matches": true, "value": "Emiliano" } } ``` ## [](#pattern_match_expressions)式に対するパターン一致 提供された式が ​`true`​ を返す場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値の 2 つの選択肢と照合し、条件に応じて別の文字列を追加します。2 番目の項目では、3 と比較して ​`myInput.number`​ の値が「より大」 (​`>`​)、「より小」 (​`<`​)、または「等しい」 (​`==`​) かどうかを評価し、対応する文字列を返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano", "number": 3.14 } output application/json --- { a: myInput.string match { case str if str == "Mariano" -> str ++ " de Achaval" case str if str == "Emiliano" -> str ++ " Lesende" }, b: myInput.number match { case num if num == 3 -> "equal" case num if num > 3 -> "greater than" case num if num < 3 -> "less than" } } ``` 出力 ```json { "a": "Emiliano Lesende", "b": "greater than" } ``` ## [](#pattern_match_data_types)データ型に対するパターン一致 評価された値が、指定されたデータ型の場合に一致します。 次の例では、1 番目の項目で ​`myInput.a`​ のデータ型を評価し、対応する型名の文字列を返します。2 番目の項目でも同様ですが、​`myInput.b`​ の値も返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "a": "Emiliano", "b": 3.14 } output application/json --- { a: myInput.a match { case is Object -> 'OBJECT' case is String -> 'STRING' case is Number -> 'NUMBER' case is Boolean -> 'BOOLEAN' case is Array -> 'ARRAY' case is Null -> 'NULL' else -> 'ANOTHER TYPE' }, b: myInput.b match { case y is Object -> { 'Type': { 'OBJECT' : y} } case y is String -> { 'Type': { 'STRING' : y} } case y is Number -> { 'Type': { 'NUMBER' : y} } case y is Boolean -> { 'Type': { 'BOOLEAN' : y} } case y is Array -> { 'Type': { 'ARRAY' : y} } case y is Null -> { 'Type': { 'NULL' : y} } else -> { 'Type': { 'ANOTHER TYPE' : myInput.b} } } } ``` 出力 ```json { "a": "STRING", "b": { "Type": { "NUMBER": 3.14 } } } ``` ## [](#pattern_match_regex)正規表現に対するパターン一致 評価された値が、提供された正規表現 (具体的には Java でサポートされる正規表現の「フレーバー」) に適合する場合に一致します。次の例では、入力変数 (​`myInput`​) に文字列の配列が含まれます。スクリプトは ​`map`​ 関数を使用して配列を反復処理します。Java 正規表現に対して各要素を評価し、入力との一致に基づいてオブジェクトを出力します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "phones": [ "+1 (415) 229-2009", "(647) 456-7008" ] } output application/json --- { a: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1]} case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }), b: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1], area: phone[2], number: phone[3] } case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }) } ``` 出力 ```json { "a": [ { "country": "1" }, { "area": "647", "number": "456-7008" } ], "b": [ { "country": "1", "area": "415", "number": "229-2009" }, { "area": "647", "number": "456-7008" } ] } ``` ## [](#dataweave-でのコレクションのデコンストラクター)DataWeave でのコレクションのデコンストラクター DataWeave は、配列とオブジェクトの 2 つの種別のコレクションをサポートしています。配列は値のシーケンスで、オブジェクトはキー-値ペアのシーケンスです。 ### [](#配列の分解)配列の分解 配列は、ヘッド (配列の最初の要素) とテール (残りの要素を含む新しい配列) とみなすことができます。たとえば、配列 ​`[1,2,3,4]`​ では、​`1`​ がヘッドで、​`2,3,4`​ がテールです。 配列を照合するには、次の構文を使用します。このスクリプトは、配列の最初の要素を取得するか、配列が空の場合は null を返します。 DataWeave スクリプト ```dataweave [1,2,3,4] match { case [head ~ tail] -> head case [] -> null } ``` このような分解は、再帰的関数で使用する場合に役立ちます。 #### [](#例-joinby-関数の構築)例: `joinBy`​ 関数の構築 この例では、文字列の配列を取得し、指定された区切り文字で連結された配列のすべての要素を含む文字列を返す ​`joinBy`​ 関数を構築します。 DataWeave スクリプト ```dataweave fun joinBy(elements: Array, separator: String): String = elements match { case [head ~ tail] -> head ++ separator ++ joinBy(tail, separator) //When head and tail append and recursively case [] -> "" //When the array is empty return empty array } ``` #### [](#例-filter-関数の構築)例: filter 関数の構築 この例では、高次 filter 関数を構築します。 DataWeave スクリプト ```dataweave fun filter(elements: Array, predicate: (item:T) -> Boolean): Array = elements match { case [head ~ tail] -> if(predicate(head)) [head] ++ filter(tail, predicate) else filter(tail, predicate) case [] -> [] } ``` ### [](#オブジェクトの分解)オブジェクトの分解 DataWeave のオブジェクトは配列に似ていますが、各要素はキーと値で構成されます。オブジェクトも、ヘッド (最初のキー-値ペア) とテール (残りのキー-値ペアを含む新しいオブジェクト) としてみなすことができます。 オブジェクトを照合するには、次の構文を使用します。このスクリプトは、オブジェクトの最初の値 (この場合は「Word」) を取得します。 DataWeave スクリプト ```dataweave {hello: "world", test: true} match { case {headKey: headValue ~ tail} -> headValue case {} -> null } ``` ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-quickstart) # match ステートメントを使用した DataWeave のパターン一致 `match`​ ステートメントは、他の言語 (Java や C++ など) の ​`match`​ または ​`switch`​ ステートメントのように動作し、何らかの条件に基づいて入力式を特定の出力式にルーティングします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 match ステートメントの構文: ```dataweave inputExpression match { case -> case -> else -> } ``` 他の言語と同様に、DataWeave の ​`match`​ ステートメントには、複数の連鎖した ​`if-else`​ ステートメントを整理するためのコンパクトな方法が用意されています。​`match`​ 式は、必要に応じて ​`else`​ ステートメントで終了する ​`case`​ ステートメントのリストで構成されます。 各 ​`case`​ ステートメントは、​`true`​ または ​`false`​ に評価されるセレクター条件式で構成されます。この条件式は ​`if`​ ステートメントで表される条件に対応します。その後に対応する DataWeave ルーティング式が続きます。この式には ​`match`​ ステートメントの入力式を含めることができます。 各 ​`case`​ ステートメントは ​`if`​ ステートメントにすることができます。また、​`case`​ ステートメントで他のパターン一致のショートカットを使用して、​`case`​ ステートメントの条件を定義することもできます。​`case`​ ステートメントが ​`false`​ の場合、ルーティング式は無視されます。 DataWeave では、​`case`​ ステートメントの条件として 4 つの種別のパターンがサポートされます。 - [式](#pattern_match_expressions) - [リテラル値](#pattern_match_literals) - [データ型](#pattern_match_data_types) - [正規表現](#pattern_match_regex) 各 case に名前を付けても名前を付けなくても構いません。case に名前を付けると、その名前で入力式がローカル変数として保存され、その case ステートメントの条件式と、対応するルーティング式の両方で使用できるようになります。 match ステートメントの構造 ```dataweave value match { case (:) -> case (:) -> else -> } ``` この例のように、式は最初に一致した ​`case`​ ステートメントの結果を返します。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] as String ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case hasOne if( hasOne is Object and hasOne.three? ) -> hasOne.three else -> $ } ``` 出力 ```json "hello was matched" ``` 入力式 ("hello world") は、各 ​`case`​ ステートメントのローカル変数名 (​`word`​ または ​`literalMatch`​) で参照できます。​`else`​ ステートメントの場合、デフォルトのパラメーター名 ​`$`​ (名前のないパラメーター) を使用して入力式を参照できます。 `else`​ ステートメントの入力式に名前を付けるには、​`else`​ ステートメントを常に ​`true`​ になる ​`case`​ ステートメントに置き換えます。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case last if(true) -> last } ``` 入力が String (文字列) 型のユースケースの場合、​`dw::Core`​ モジュールの ​[match](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-match)​ ​_関数_​を使用して、正規表現パターンに対して文字列をテストすることもできます。この関数は、正規表現全体とキャプチャグループに一致する文字列を含む配列を返します。 文字列が正規表現パターンに一致するかどうかに基づいてブール値の結果が必要なユースケースの場合、パターン一致やモジュールの ​`match`​ 関数を使用する代わりに、​`dw::Core`​ モジュールの ​[matches](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-matches)​ ​_関数_​を使用できます。 ## [](#pattern_match_literals)リテラル値とのパターン一致 評価された値が単純なリテラル値に等しい場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値と照合し、ブール値を返します。2 番目の項目では同じ照合が実行されますが、ブール値と、検証された値への参照の両方を含むオブジェクトを返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano" } output application/json --- { a: myInput.string match { case "Emiliano" -> true case "Mariano" -> false }, b: myInput.string match { case str: "Emiliano" -> { "matches": true, value: str } case str: "Mariano" -> { "matches": false, value: str } } } ``` 出力 ```json { "a": true, "b": { "matches": true, "value": "Emiliano" } } ``` ## [](#pattern_match_expressions)式に対するパターン一致 提供された式が ​`true`​ を返す場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値の 2 つの選択肢と照合し、条件に応じて別の文字列を追加します。2 番目の項目では、3 と比較して ​`myInput.number`​ の値が「より大」 (​`>`​)、「より小」 (​`<`​)、または「等しい」 (​`==`​) かどうかを評価し、対応する文字列を返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano", "number": 3.14 } output application/json --- { a: myInput.string match { case str if str == "Mariano" -> str ++ " de Achaval" case str if str == "Emiliano" -> str ++ " Lesende" }, b: myInput.number match { case num if num == 3 -> "equal" case num if num > 3 -> "greater than" case num if num < 3 -> "less than" } } ``` 出力 ```json { "a": "Emiliano Lesende", "b": "greater than" } ``` ## [](#pattern_match_data_types)データ型に対するパターン一致 評価された値が、指定されたデータ型の場合に一致します。 次の例では、1 番目の項目で ​`myInput.a`​ のデータ型を評価し、対応する型名の文字列を返します。2 番目の項目でも同様ですが、​`myInput.b`​ の値も返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "a": "Emiliano", "b": 3.14 } output application/json --- { a: myInput.a match { case is Object -> 'OBJECT' case is String -> 'STRING' case is Number -> 'NUMBER' case is Boolean -> 'BOOLEAN' case is Array -> 'ARRAY' case is Null -> 'NULL' else -> 'ANOTHER TYPE' }, b: myInput.b match { case y is Object -> { 'Type': { 'OBJECT' : y} } case y is String -> { 'Type': { 'STRING' : y} } case y is Number -> { 'Type': { 'NUMBER' : y} } case y is Boolean -> { 'Type': { 'BOOLEAN' : y} } case y is Array -> { 'Type': { 'ARRAY' : y} } case y is Null -> { 'Type': { 'NULL' : y} } else -> { 'Type': { 'ANOTHER TYPE' : myInput.b} } } } ``` 出力 ```json { "a": "STRING", "b": { "Type": { "NUMBER": 3.14 } } } ``` ## [](#pattern_match_regex)正規表現に対するパターン一致 評価された値が、提供された正規表現 (具体的には Java でサポートされる正規表現の「フレーバー」) に適合する場合に一致します。次の例では、入力変数 (​`myInput`​) に文字列の配列が含まれます。スクリプトは ​`map`​ 関数を使用して配列を反復処理します。Java 正規表現に対して各要素を評価し、入力との一致に基づいてオブジェクトを出力します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "phones": [ "+1 (415) 229-2009", "(647) 456-7008" ] } output application/json --- { a: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1]} case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }), b: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1], area: phone[2], number: phone[3] } case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }) } ``` 出力 ```json { "a": [ { "country": "1" }, { "area": "647", "number": "456-7008" } ], "b": [ { "country": "1", "area": "415", "number": "229-2009" }, { "area": "647", "number": "456-7008" } ] } ``` ## [](#dataweave-でのコレクションのデコンストラクター)DataWeave でのコレクションのデコンストラクター DataWeave は、配列とオブジェクトの 2 つの種別のコレクションをサポートしています。配列は値のシーケンスで、オブジェクトはキー-値ペアのシーケンスです。 ### [](#配列の分解)配列の分解 配列は、ヘッド (配列の最初の要素) とテール (残りの要素を含む新しい配列) とみなすことができます。たとえば、配列 ​`[1,2,3,4]`​ では、​`1`​ がヘッドで、​`2,3,4`​ がテールです。 配列を照合するには、次の構文を使用します。このスクリプトは、配列の最初の要素を取得するか、配列が空の場合は null を返します。 DataWeave スクリプト ```dataweave [1,2,3,4] match { case [head ~ tail] -> head case [] -> null } ``` このような分解は、再帰的関数で使用する場合に役立ちます。 #### [](#例-joinby-関数の構築)例: `joinBy`​ 関数の構築 この例では、文字列の配列を取得し、指定された区切り文字で連結された配列のすべての要素を含む文字列を返す ​`joinBy`​ 関数を構築します。 DataWeave スクリプト ```dataweave fun joinBy(elements: Array, separator: String): String = elements match { case [head ~ tail] -> head ++ separator ++ joinBy(tail, separator) //When head and tail append and recursively case [] -> "" //When the array is empty return empty array } ``` #### [](#例-filter-関数の構築)例: filter 関数の構築 この例では、高次 filter 関数を構築します。 DataWeave スクリプト ```dataweave fun filter(elements: Array, predicate: (item:T) -> Boolean): Array = elements match { case [head ~ tail] -> if(predicate(head)) [head] ++ filter(tail, predicate) else filter(tail, predicate) case [] -> [] } ``` ### [](#オブジェクトの分解)オブジェクトの分解 DataWeave のオブジェクトは配列に似ていますが、各要素はキーと値で構成されます。オブジェクトも、ヘッド (最初のキー-値ペア) とテール (残りのキー-値ペアを含む新しいオブジェクト) としてみなすことができます。 オブジェクトを照合するには、次の構文を使用します。このスクリプトは、オブジェクトの最初の値 (この場合は「Word」) を取得します。 DataWeave スクリプト ```dataweave {hello: "world", test: true} match { case {headKey: headValue ~ tail} -> headValue case {} -> null } ``` ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-quickstart) # match ステートメントを使用した DataWeave のパターン一致 `match`​ ステートメントは、他の言語 (Java や C++ など) の ​`match`​ または ​`switch`​ ステートメントのように動作し、何らかの条件に基づいて入力式を特定の出力式にルーティングします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 match ステートメントの構文: ```dataweave inputExpression match { case -> case -> else -> } ``` 他の言語と同様に、DataWeave の ​`match`​ ステートメントには、複数の連鎖した ​`if-else`​ ステートメントを整理するためのコンパクトな方法が用意されています。​`match`​ 式は、必要に応じて ​`else`​ ステートメントで終了する ​`case`​ ステートメントのリストで構成されます。 各 ​`case`​ ステートメントは、​`true`​ または ​`false`​ に評価されるセレクター条件式で構成されます。この条件式は ​`if`​ ステートメントで表される条件に対応します。その後に対応する DataWeave ルーティング式が続きます。この式には ​`match`​ ステートメントの入力式を含めることができます。 各 ​`case`​ ステートメントは ​`if`​ ステートメントにすることができます。また、​`case`​ ステートメントで他のパターン一致のショートカットを使用して、​`case`​ ステートメントの条件を定義することもできます。​`case`​ ステートメントが ​`false`​ の場合、ルーティング式は無視されます。 DataWeave では、​`case`​ ステートメントの条件として 4 つの種別のパターンがサポートされます。 - [式](#pattern_match_expressions) - [リテラル値](#pattern_match_literals) - [データ型](#pattern_match_data_types) - [正規表現](#pattern_match_regex) 各 case に名前を付けても名前を付けなくても構いません。case に名前を付けると、その名前で入力式がローカル変数として保存され、その case ステートメントの条件式と、対応するルーティング式の両方で使用できるようになります。 match ステートメントの構造 ```dataweave value match { case (:) -> case (:) -> else -> } ``` この例のように、式は最初に一致した ​`case`​ ステートメントの結果を返します。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] as String ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case hasOne if( hasOne is Object and hasOne.three? ) -> hasOne.three else -> $ } ``` 出力 ```json "hello was matched" ``` 入力式 ("hello world") は、各 ​`case`​ ステートメントのローカル変数名 (​`word`​ または ​`literalMatch`​) で参照できます。​`else`​ ステートメントの場合、デフォルトのパラメーター名 ​`$`​ (名前のないパラメーター) を使用して入力式を参照できます。 `else`​ ステートメントの入力式に名前を付けるには、​`else`​ ステートメントを常に ​`true`​ になる ​`case`​ ステートメントに置き換えます。 match ステートメントの例 ```dataweave %dw 2.0 output application/json --- "hello world" match { case word matches /(hello)\s\w+/ -> word[1] ++ " was matched" case literalMatch: "hello world" -> upper(literalMatch) case last if(true) -> last } ``` 入力が String (文字列) 型のユースケースの場合、​`dw::Core`​ モジュールの ​[match](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-match)​ ​_関数_​を使用して、正規表現パターンに対して文字列をテストすることもできます。この関数は、正規表現全体とキャプチャグループに一致する文字列を含む配列を返します。 文字列が正規表現パターンに一致するかどうかに基づいてブール値の結果が必要なユースケースの場合、パターン一致やモジュールの ​`match`​ 関数を使用する代わりに、​`dw::Core`​ モジュールの ​[matches](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-matches)​ ​_関数_​を使用できます。 ## [](#pattern_match_literals)リテラル値とのパターン一致 評価された値が単純なリテラル値に等しい場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値と照合し、ブール値を返します。2 番目の項目では同じ照合が実行されますが、ブール値と、検証された値への参照の両方を含むオブジェクトを返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano" } output application/json --- { a: myInput.string match { case "Emiliano" -> true case "Mariano" -> false }, b: myInput.string match { case str: "Emiliano" -> { "matches": true, value: str } case str: "Mariano" -> { "matches": false, value: str } } } ``` 出力 ```json { "a": true, "b": { "matches": true, "value": "Emiliano" } } ``` ## [](#pattern_match_expressions)式に対するパターン一致 提供された式が ​`true`​ を返す場合に一致します。 次の例では、1 番目の項目で ​`myInput.string`​ の値の 2 つの選択肢と照合し、条件に応じて別の文字列を追加します。2 番目の項目では、3 と比較して ​`myInput.number`​ の値が「より大」 (​`>`​)、「より小」 (​`<`​)、または「等しい」 (​`==`​) かどうかを評価し、対応する文字列を返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "string": "Emiliano", "number": 3.14 } output application/json --- { a: myInput.string match { case str if str == "Mariano" -> str ++ " de Achaval" case str if str == "Emiliano" -> str ++ " Lesende" }, b: myInput.number match { case num if num == 3 -> "equal" case num if num > 3 -> "greater than" case num if num < 3 -> "less than" } } ``` 出力 ```json { "a": "Emiliano Lesende", "b": "greater than" } ``` ## [](#pattern_match_data_types)データ型に対するパターン一致 評価された値が、指定されたデータ型の場合に一致します。 次の例では、1 番目の項目で ​`myInput.a`​ のデータ型を評価し、対応する型名の文字列を返します。2 番目の項目でも同様ですが、​`myInput.b`​ の値も返します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "a": "Emiliano", "b": 3.14 } output application/json --- { a: myInput.a match { case is Object -> 'OBJECT' case is String -> 'STRING' case is Number -> 'NUMBER' case is Boolean -> 'BOOLEAN' case is Array -> 'ARRAY' case is Null -> 'NULL' else -> 'ANOTHER TYPE' }, b: myInput.b match { case y is Object -> { 'Type': { 'OBJECT' : y} } case y is String -> { 'Type': { 'STRING' : y} } case y is Number -> { 'Type': { 'NUMBER' : y} } case y is Boolean -> { 'Type': { 'BOOLEAN' : y} } case y is Array -> { 'Type': { 'ARRAY' : y} } case y is Null -> { 'Type': { 'NULL' : y} } else -> { 'Type': { 'ANOTHER TYPE' : myInput.b} } } } ``` 出力 ```json { "a": "STRING", "b": { "Type": { "NUMBER": 3.14 } } } ``` ## [](#pattern_match_regex)正規表現に対するパターン一致 評価された値が、提供された正規表現 (具体的には Java でサポートされる正規表現の「フレーバー」) に適合する場合に一致します。次の例では、入力変数 (​`myInput`​) に文字列の配列が含まれます。スクリプトは ​`map`​ 関数を使用して配列を反復処理します。Java 正規表現に対して各要素を評価し、入力との一致に基づいてオブジェクトを出力します。 DataWeave スクリプト ```dataweave %dw 2.0 var myInput = { "phones": [ "+1 (415) 229-2009", "(647) 456-7008" ] } output application/json --- { a: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1]} case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }), b: myInput.phones map ($ match { case phone matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: phone[1], area: phone[2], number: phone[3] } case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] } }) } ``` 出力 ```json { "a": [ { "country": "1" }, { "area": "647", "number": "456-7008" } ], "b": [ { "country": "1", "area": "415", "number": "229-2009" }, { "area": "647", "number": "456-7008" } ] } ``` ## [](#dataweave-でのコレクションのデコンストラクター)DataWeave でのコレクションのデコンストラクター DataWeave は、配列とオブジェクトの 2 つの種別のコレクションをサポートしています。配列は値のシーケンスで、オブジェクトはキー-値ペアのシーケンスです。 ### [](#配列の分解)配列の分解 配列は、ヘッド (配列の最初の要素) とテール (残りの要素を含む新しい配列) とみなすことができます。たとえば、配列 ​`[1,2,3,4]`​ では、​`1`​ がヘッドで、​`2,3,4`​ がテールです。 配列を照合するには、次の構文を使用します。このスクリプトは、配列の最初の要素を取得するか、配列が空の場合は null を返します。 DataWeave スクリプト ```dataweave [1,2,3,4] match { case [head ~ tail] -> head case [] -> null } ``` このような分解は、再帰的関数で使用する場合に役立ちます。 #### [](#例-joinby-関数の構築)例: `joinBy`​ 関数の構築 この例では、文字列の配列を取得し、指定された区切り文字で連結された配列のすべての要素を含む文字列を返す ​`joinBy`​ 関数を構築します。 DataWeave スクリプト ```dataweave fun joinBy(elements: Array, separator: String): String = elements match { case [head ~ tail] -> head ++ separator ++ joinBy(tail, separator) //When head and tail append and recursively case [] -> "" //When the array is empty return empty array } ``` #### [](#例-filter-関数の構築)例: filter 関数の構築 この例では、高次 filter 関数を構築します。 DataWeave スクリプト ```dataweave fun filter(elements: Array, predicate: (item:T) -> Boolean): Array = elements match { case [head ~ tail] -> if(predicate(head)) [head] ++ filter(tail, predicate) else filter(tail, predicate) case [] -> [] } ``` ### [](#オブジェクトの分解)オブジェクトの分解 DataWeave のオブジェクトは配列に似ていますが、各要素はキーと値で構成されます。オブジェクトも、ヘッド (最初のキー-値ペア) とテール (残りのキー-値ペアを含む新しいオブジェクト) としてみなすことができます。 オブジェクトを照合するには、次の構文を使用します。このスクリプトは、オブジェクトの最初の値 (この場合は「Word」) を取得します。 DataWeave スクリプト ```dataweave {hello: "world", test: true} match { case {headKey: headValue ~ tail} -> headValue case {} -> null } ``` ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-quickstart) # matches ## [](#matches1)matches(String, Regex): Boolean 式が入力文字列全体に一致するかどうかを確認します。 一致した値を出力するか、条件付きで処理する必要があるユースケースの場合は、 [「DataWeave のパターン一致」](https://docs.mulesoft.com/mule-runtime/4.3/dataweave-pattern-matching)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​matcher

文字列内の文字を照合する Java 正規表現。

### [](#例)例 次の例は、正規表現が入力文字列と一致するかどうかを示します。 `matches(text,matcher)`​ 表記 (​`matches("admin123", /a.*\d+/)`​ など) を使用することも できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ("admin123" matches /a.*\d+/), ("admin123" matches /^b.+/) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` # matches ## [](#matches1)matches(text: String, matcher: Regex): Boolean 式が入力文字列全体に一致するかどうかを確認します。 一致した値を出力するか、条件付きで処理する必要があるユースケースの場合は、 [「DataWeave のパターン一致」](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​matcher

文字列内の文字を照合する Java 正規表現。

### [](#例)例 次の例は、正規表現が入力文字列と一致するかどうかを示します。 `matches(text,matcher)`​ 表記 (​`matches("admin123", /a.*\d+/)`​ など) を使用することも できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ("admin123" matches /a.*\d+/), ("admin123" matches /^b.+/) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#matches2)matches(text: Null, matcher: Any): false `matches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # matches ## [](#matches1)matches(text: String, matcher: Regex): Boolean 式が入力文字列全体に一致するかどうかを確認します。 一致した値を出力するか、条件付きで処理する必要があるユースケースの場合は、 [「DataWeave のパターン一致」](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

matcher

文字列内の文字を照合する Java 正規表現。

### [](#例)例 次の例は、正規表現が入力文字列と一致するかどうかを示します。 `matches(text,matcher)`​ 表記 (​`matches("admin123", /a.*\d+/)`​ など) を使用することも できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ("admin123" matches /a.*\d+/), ("admin123" matches /^b.+/) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#matches2)matches(text: Null, matcher: Any): false `matches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # matches ## [](#matches1)matches(text: String, matcher: Regex): Boolean 式が入力文字列全体に一致するかどうかを確認します。 一致した値を出力するか、条件付きで処理する必要があるユースケースの場合は、 [「DataWeave のパターン一致」](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

matcher

文字列内の文字を照合する Java 正規表現。

### [](#例)例 次の例は、正規表現が入力文字列と一致するかどうかを示します。 `matches(text,matcher)`​ 表記 (​`matches("admin123", /a.*\d+/)`​ など) を使用することも できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ("admin123" matches /a.*\d+/), ("admin123" matches /^b.+/) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#matches2)matches(text: Null, matcher: Any): false `matches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # matches ## [](#matches1)matches(text: String, matcher: Regex): Boolean 式が入力文字列全体に一致するかどうかを確認します。 一致した値を出力するか、条件付きで処理する必要があるユースケースの場合は、 [「DataWeave のパターン一致」](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

matcher

文字列内の文字を照合する Java 正規表現。

### [](#例)例 次の例は、正規表現が入力文字列と一致するかどうかを示します。 `matches(text,matcher)`​ 表記 (​`matches("admin123", /a.*\d+/)`​ など) を使用することも できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ("admin123" matches /a.*\d+/), ("admin123" matches /^b.+/) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#matches2)matches(text: Null, matcher: Any): false `matches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # matches ## [](#matches1)matches(text: String, matcher: Regex): Boolean 式が入力文字列全体に一致するかどうかを確認します。 一致した値を出力するか、条件付きで処理する必要があるユースケースの場合は、 [「DataWeave のパターン一致」](https://docs.mulesoft.com/dataweave/latest/dataweave-pattern-matching)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

matcher

文字列内の文字を照合する Java 正規表現。

### [](#例)例 次の例は、正規表現が入力文字列と一致するかどうかを示します。 `matches(text,matcher)`​ 表記 (​`matches("admin123", /a.*\d+/)`​ など) を使用することも できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ ("admin123" matches /a.*\d+/), ("admin123" matches /^b.+/) ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#matches2)matches(text: Null, matcher: Any): false `matches`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # Math (dw::util::Math) 数学関数を提供するユーティリティモジュール。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Math`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ## [](#関数)関数
名前 説明

​acos

​0.0​ からパイまでの逆余弦値を返します。

​asin

​-pi/2​ から ​pi/2​ までの逆正弦値を返します。

​atan

​-pi/2​ から ​pi/2​ までの逆正接値を返します。

​cos

ラジアンの特定の数値から角度の三角法の余弦を返します。

​log10

数値の 10 を底とする対数を返します。

​logn

数値の自然対数 (​e​ を底とする) を返します。

​sin

ラジアンの特定の数値から角度の三角法の正弦を返します。

​tan

ラジアンの特定の数値から角度の三角法の正接を返します。

​toDegrees

ラジアンで測定される角度をほぼ同じ度数に変換します。

​toRadians

角度の特定の度数をほぼ同じラジアン数に変換します。

## [](#変数)変数 - [数学変数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-math-variables) # Math (dw::util::Math) 数学関数を提供するユーティリティモジュール。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Math`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

acos

0.0​ からパイまでの逆余弦値を返します。

asin

-pi/2​ から ​pi/2​ までの逆正弦値を返します。

atan

-pi/2​ から ​pi/2​ までの逆正接値を返します。

cos

ラジアンの特定の数値から角度の三角法の余弦を返します。

log10

数値の 10 を底とする対数を返します。

logn

数値の自然対数 (​e​ を底とする) を返します。

sin

ラジアンの特定の数値から角度の三角法の正弦を返します。

tan

ラジアンの特定の数値から角度の三角法の正接を返します。

toDegrees

ラジアンで測定される角度をほぼ同じ度数に変換します。

toRadians

角度の特定の度数をほぼ同じラジアン数に変換します。

## [](#変数)変数 - [数学変数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-math-variables) # Math (dw::util::Math) 数学関数を提供するユーティリティモジュール。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Math`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

acos

0.0​ からパイまでの逆余弦値を返します。

asin

-pi/2​ から ​pi/2​ までの逆正弦値を返します。

atan

-pi/2​ から ​pi/2​ までの逆正接値を返します。

cos

ラジアンの特定の数値から角度の三角法の余弦を返します。

log10

数値の 10 を底とする対数を返します。

logn

数値の自然対数 (​e​ を底とする) を返します。

sin

ラジアンの特定の数値から角度の三角法の正弦を返します。

tan

ラジアンの特定の数値から角度の三角法の正接を返します。

toDegrees

ラジアンで測定される角度をほぼ同じ度数に変換します。

toRadians

角度の特定の度数をほぼ同じラジアン数に変換します。

## [](#変数)変数 - [数学変数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-math-variables) # Math (dw::util::Math) 数学関数を提供するユーティリティモジュール。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Math`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

acos

0.0​ からパイまでの逆余弦値を返します。

asin

-pi/2​ から ​pi/2​ までの逆正弦値を返します。

atan

-pi/2​ から ​pi/2​ までの逆正接値を返します。

cos

ラジアンの特定の数値から角度の三角法の余弦を返します。

log10

数値の 10 を底とする対数を返します。

logn

数値の自然対数 (​e​ を底とする) を返します。

sin

ラジアンの特定の数値から角度の三角法の正弦を返します。

tan

ラジアンの特定の数値から角度の三角法の正接を返します。

toDegrees

ラジアンで測定される角度をほぼ同じ度数に変換します。

toRadians

角度の特定の度数をほぼ同じラジアン数に変換します。

## [](#変数)変数 - [数学変数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-math-variables) # Math (dw::util::Math) 数学関数を提供するユーティリティモジュール。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Math`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#関数)関数
名前 説明

acos

0.0​ からパイまでの逆余弦値を返します。

asin

-pi/2​ から ​pi/2​ までの逆正弦値を返します。

atan

-pi/2​ から ​pi/2​ までの逆正接値を返します。

cos

ラジアンの特定の数値から角度の三角法の余弦を返します。

log10

数値の 10 を底とする対数を返します。

logn

数値の自然対数 (​e​ を底とする) を返します。

sin

ラジアンの特定の数値から角度の三角法の正弦を返します。

tan

ラジアンの特定の数値から角度の三角法の正接を返します。

toDegrees

ラジアンで測定される角度をほぼ同じ度数に変換します。

toRadians

角度の特定の度数をほぼ同じラジアン数に変換します。

## [](#変数)変数 - [数学変数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-math-variables) # Math 変数 (dw::util::Math)
変数 定義 説明

E

​E​

変数 ​E​ では、自然対数の底である数学定数 ​e​ の値を設定します。

DataWeave バージョン 2.4.0 で導入されました。​

PI

​PI​

変数 ​PI​ では、円の直径に対する円周率である定数値パイの値を設定します。

DataWeave バージョン 2.4.0 で導入されました。​

# Math 変数 (dw::util::Math)
変数 定義 説明

E

E

変数 ​E​ では、自然対数の底である数学定数 ​e​ の値を設定します。

DataWeave バージョン 2.4.0 で導入されました。​

PI

PI

変数 ​PI​ では、円の直径に対する円周率である定数値パイの値を設定します。

DataWeave バージョン 2.4.0 で導入されました。

# Math 変数 (dw::util::Math)
変数 定義 説明

E

E

変数 ​E​ では、自然対数の底である数学定数 ​e​ の値を設定します。

DataWeave バージョン 2.4.0 で導入されました。​

PI

PI

変数 ​PI​ では、円の直径に対する円周率である定数値パイの値を設定します。

DataWeave バージョン 2.4.0 で導入されました。

# Math 変数 (dw::util::Math)
変数 定義 説明

E

E

変数 ​E​ では、自然対数の底である数学定数 ​e​ の値を設定します。

DataWeave バージョン 2.4.0 で導入されました。​

PI

PI

変数 ​PI​ では、円の直径に対する円周率である定数値パイの値を設定します。

DataWeave バージョン 2.4.0 で導入されました。

# Math 変数 (dw::util::Math)
変数 定義 説明

E

E

変数 ​E​ では、自然対数の底である数学定数 ​e​ の値を設定します。

DataWeave バージョン 2.4.0 で導入されました。​

PI

PI

変数 ​PI​ では、円の直径に対する円周率である定数値パイの値を設定します。

DataWeave バージョン 2.4.0 で導入されました。

# max ## [](#max1)max(Array): T | Null 配列内の最大の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、関数はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最大値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: max([1, 1000]), b: max([1, 2, 3]), c: max([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1000, "b": 3, "c": 3.5 } ``` # max ## [](#max1)max(@StreamCapable values: Array): T | Null 配列内の最大の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、関数はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最大値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: max([1, 1000]), b: max([1, 2, 3]), c: max([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1000, "b": 3, "c": 3.5 } ``` # max ## [](#max1)max(@StreamCapable values: Array): T | Null 配列内の最大の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、関数はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最大値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: max([1, 1000]), b: max([1, 2, 3]), c: max([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1000, "b": 3, "c": 3.5 } ``` # max ## [](#max1)max(@StreamCapable values: Array): T | Null 配列内の最大の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、関数はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最大値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: max([1, 1000]), b: max([1, 2, 3]), c: max([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1000, "b": 3, "c": 3.5 } ``` # max ## [](#max1)max(@StreamCapable values: Array): T | Null 配列内の最大の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、関数はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最大値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: max([1, 1000]), b: max([1, 2, 3]), c: max([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1000, "b": 3, "c": 3.5 } ``` # max ## [](#max1)max(@StreamCapable values: Array): T | Null 配列内の最大の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、関数はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最大値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: max([1, 1000]), b: max([1, 2, 3]), c: max([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1000, "b": 3, "c": 3.5 } ``` # maxBy ## [](#maxby1)maxBy(Array, (item: T) -> Comparable): T | Null 配列を反復処理し、配列から ​`Comparable`​ 要素の最大値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`maxBy`​ はエラーをスローし、配列が空の場合は、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​array

入力配列。

​criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a) ``` #### [](#出力)出力 ```JSON { "a" : 3 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMaxBy: { byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item), emptyArray: [] maxBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMaxBy": { "byDateTime": "2018-10-01T23:57:59-03:00", "byDate": "2018-10-01", "byTime": "23:57:59-03:00", "emptyArray": null } } ``` # maxBy ## [](#maxby1)maxBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から ​`Comparable`​ 要素の最大値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`maxBy`​ はエラーをスローし、配列が空の場合は、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​array

入力配列。

​criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a) ``` #### [](#出力)出力 ```JSON { "a" : 3 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMaxBy: { byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item), emptyArray: [] maxBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMaxBy": { "byDateTime": "2018-10-01T23:57:59-03:00", "byDate": "2018-10-01", "byTime": "23:57:59-03:00", "emptyArray": null } } ``` # maxBy ## [](#maxby1)maxBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から ​`Comparable`​ 要素の最大値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`maxBy`​ はエラーをスローし、配列が空の場合は、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a) ``` #### [](#出力)出力 ```JSON { "a" : 3 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMaxBy: { byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item), emptyArray: [] maxBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMaxBy": { "byDateTime": "2018-10-01T23:57:59-03:00", "byDate": "2018-10-01", "byTime": "23:57:59-03:00", "emptyArray": null } } ``` # maxBy ## [](#maxby1)maxBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から ​`Comparable`​ 要素の最大値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`maxBy`​ はエラーをスローし、配列が空の場合は、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a) ``` #### [](#出力)出力 ```JSON { "a" : 3 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMaxBy: { byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item), emptyArray: [] maxBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMaxBy": { "byDateTime": "2018-10-01T23:57:59-03:00", "byDate": "2018-10-01", "byTime": "23:57:59-03:00", "emptyArray": null } } ``` # maxBy ## [](#maxby1)maxBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から ​`Comparable`​ 要素の最大値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`maxBy`​ はエラーをスローし、配列が空の場合は、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a) ``` #### [](#出力)出力 ```JSON { "a" : 3 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMaxBy: { byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item), emptyArray: [] maxBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMaxBy": { "byDateTime": "2018-10-01T23:57:59-03:00", "byDate": "2018-10-01", "byTime": "23:57:59-03:00", "emptyArray": null } } ``` # maxBy ## [](#maxby1)maxBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から ​`Comparable`​ 要素の最大値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`maxBy`​ はエラーをスローし、配列が空の場合は、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a) ``` #### [](#出力)出力 ```JSON { "a" : 3 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMaxBy: { byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item), emptyArray: [] maxBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMaxBy": { "byDateTime": "2018-10-01T23:57:59-03:00", "byDate": "2018-10-01", "byTime": "23:57:59-03:00", "emptyArray": null } } ``` # MD5 ## [](#md51)MD5(Binary): String MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、MD5 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md5" : Crypto::MD5("asd" as Binary) } ``` #### [](#出力)出力 ```JSON { "md5": "7815696ecbf1c96e6894b779456d330e" } ``` # MD5 ## [](#md51)MD5(content: Binary): String MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、MD5 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md5" : Crypto::MD5("asd" as Binary) } ``` #### [](#出力)出力 ```JSON { "md5": "7815696ecbf1c96e6894b779456d330e" } ``` # MD5 ## [](#md51)MD5(content: Binary): String MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、MD5 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md5" : Crypto::MD5("asd" as Binary) } ``` #### [](#出力)出力 ```JSON { "md5": "7815696ecbf1c96e6894b779456d330e" } ``` # MD5 ## [](#md51)MD5(content: Binary): String MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、MD5 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md5" : Crypto::MD5("asd" as Binary) } ``` #### [](#出力)出力 ```JSON { "md5": "7815696ecbf1c96e6894b779456d330e" } ``` # MD5 ## [](#md51)MD5(content: Binary): String MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、MD5 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md5" : Crypto::MD5("asd" as Binary) } ``` #### [](#出力)出力 ```JSON { "md5": "7815696ecbf1c96e6894b779456d330e" } ``` # MD5 ## [](#md51)MD5(content: Binary): String MD5 ハッシュを計算し、そのバイナリ結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、MD5 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "md5" : Crypto::MD5("asd" as Binary) } ``` #### [](#出力)出力 ```JSON { "md5": "7815696ecbf1c96e6894b779456d330e" } ``` # mergeWith ## [](#mergewith1)mergeWith(T, V): ? 取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。 取得元オブジェクトと対象オブジェクトに同じキーがあれば、この関数は、その取得元オブジェクトを対象に追加し、その対象オブジェクトを出力から削除します。 ### [](#パラメーター)パラメーター
名前 説明

​source

​target​ に追加するオブジェクト。

​target

​source​ が追加されるオブジェクト。

### [](#例)例 次の例では、取得元オブジェクトを対象に追加します。​`"a" : true,`​ は出力から削除され、​`"a" : false`​ が対象に追加されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import mergeWith from dw::core::Objects output application/json --- { "mergeWith" : { "a" : true, "b" : 1} mergeWith { "a" : false, "c" : "Test"} } ``` #### [](#出力)出力 ```JSON "mergeWith": { "b": 1, "a": false, "c": "Test" } ``` ## [](#mergewith2)mergeWith(Null, T): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mergewith3)mergeWith(T, Null): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # mergeWith ## [](#mergewith1)mergeWith(source: T, target: V): ? 取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。 取得元オブジェクトと対象オブジェクトに同じキーがあれば、この関数は、その取得元オブジェクトを対象に追加し、その対象オブジェクトを出力から削除します。 ### [](#パラメーター)パラメーター
名前 説明

​source

​target​ に追加するオブジェクト。

​target

​source​ が追加されるオブジェクト。

### [](#例)例 次の例では、取得元オブジェクトを対象に追加します。​`"a" : true,`​ は出力から削除され、​`"a" : false`​ が対象に追加されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import mergeWith from dw::core::Objects output application/json --- { "mergeWith" : { "a" : true, "b" : 1} mergeWith { "a" : false, "c" : "Test"} } ``` #### [](#出力)出力 ```JSON "mergeWith": { "b": 1, "a": false, "c": "Test" } ``` ## [](#mergewith2)mergeWith(a: Null, b: T): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mergewith3)mergeWith(a: T, b: Null): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # mergeWith ## [](#mergewith1)mergeWith(source: T, target: V): ? 取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。 取得元オブジェクトと対象オブジェクトに同じキーがあれば、この関数は、その取得元オブジェクトを対象に追加し、その対象オブジェクトを出力から削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

target​ に追加するオブジェクト。

target

source​ が追加されるオブジェクト。

### [](#例)例 次の例では、取得元オブジェクトを対象に追加します。​`"a" : true,`​ は出力から削除され、​`"a" : false`​ が対象に追加されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import mergeWith from dw::core::Objects output application/json --- { "mergeWith" : { "a" : true, "b" : 1} mergeWith { "a" : false, "c" : "Test"} } ``` #### [](#出力)出力 ```JSON "mergeWith": { "b": 1, "a": false, "c": "Test" } ``` ## [](#mergewith2)mergeWith(a: Null, b: T): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mergewith3)mergeWith(a: T, b: Null): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # mergeWith ## [](#mergewith1)mergeWith(source: T, target: V): ? 取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。 取得元オブジェクトと対象オブジェクトに同じキーがあれば、この関数は、その取得元オブジェクトを対象に追加し、その対象オブジェクトを出力から削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

target​ に追加するオブジェクト。

target

source​ が追加されるオブジェクト。

### [](#例)例 次の例では、取得元オブジェクトを対象に追加します。​`"a" : true,`​ は出力から削除され、​`"a" : false`​ が対象に追加されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import mergeWith from dw::core::Objects output application/json --- { "mergeWith" : { "a" : true, "b" : 1} mergeWith { "a" : false, "c" : "Test"} } ``` #### [](#出力)出力 ```JSON "mergeWith": { "b": 1, "a": false, "c": "Test" } ``` ## [](#mergewith2)mergeWith(a: Null, b: T): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mergewith3)mergeWith(a: T, b: Null): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # mergeWith ## [](#mergewith1)mergeWith(source: T, target: V): ? 取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。 取得元オブジェクトと対象オブジェクトに同じキーがあれば、この関数は、その取得元オブジェクトを対象に追加し、その対象オブジェクトを出力から削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

target​ に追加するオブジェクト。

target

source​ が追加されるオブジェクト。

### [](#例)例 次の例では、取得元オブジェクトを対象に追加します。​`"a" : true,`​ は出力から削除され、​`"a" : false`​ が対象に追加されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import mergeWith from dw::core::Objects output application/json --- { "mergeWith" : { "a" : true, "b" : 1} mergeWith { "a" : false, "c" : "Test"} } ``` #### [](#出力)出力 ```JSON "mergeWith": { "b": 1, "a": false, "c": "Test" } ``` ## [](#mergewith2)mergeWith(a: Null, b: T): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mergewith3)mergeWith(a: T, b: Null): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # mergeWith ## [](#mergewith1)mergeWith(source: T, target: V): ? 取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。 取得元オブジェクトと対象オブジェクトに同じキーがあれば、この関数は、その取得元オブジェクトを対象に追加し、その対象オブジェクトを出力から削除します。 ### [](#パラメーター)パラメーター
名前 説明

source

target​ に追加するオブジェクト。

target

source​ が追加されるオブジェクト。

### [](#例)例 次の例では、取得元オブジェクトを対象に追加します。​`"a" : true,`​ は出力から削除され、​`"a" : false`​ が対象に追加されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import mergeWith from dw::core::Objects output application/json --- { "mergeWith" : { "a" : true, "b" : 1} mergeWith { "a" : false, "c" : "Test"} } ``` #### [](#出力)出力 ```JSON "mergeWith": { "b": 1, "a": false, "c": "Test" } ``` ## [](#mergewith2)mergeWith(a: Null, b: T): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 ## [](#mergewith3)mergeWith(a: T, b: Null): T `mergeWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # metadataOf ## [](#metadataof1)metadataOf(Type): Object 特定の型にアタッチされたメタデータを返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`metadataOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: metadataOf(AType) } ``` #### [](#出力)出力 ```Json { "a": {"format": "YYYY-MM-dd"} } ``` # metadataOf ## [](#metadataof1)metadataOf(t: Type): Object 特定の型にアタッチされたメタデータを返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`metadataOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: metadataOf(AType) } ``` #### [](#出力)出力 ```Json { "a": {"format": "YYYY-MM-dd"} } ``` # metadataOf ## [](#metadataof1)metadataOf(t: Type): Object 特定の型にアタッチされたメタデータを返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`metadataOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: metadataOf(AType) } ``` #### [](#出力)出力 ```Json { "a": {"format": "YYYY-MM-dd"} } ``` # metadataOf ## [](#metadataof1)metadataOf(t: Type): Object 特定の型にアタッチされたメタデータを返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`metadataOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: metadataOf(AType) } ``` #### [](#出力)出力 ```Json { "a": {"format": "YYYY-MM-dd"} } ``` # metadataOf ## [](#metadataof1)metadataOf(t: Type): Object 特定の型にアタッチされたメタデータを返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`metadataOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: metadataOf(AType) } ``` #### [](#出力)出力 ```Json { "a": {"format": "YYYY-MM-dd"} } ``` # metadataOf ## [](#metadataof1)metadataOf(t: Type): Object 特定の型にアタッチされたメタデータを返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`metadataOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String {format: "YYYY-MM-dd"} output application/json --- { a: metadataOf(AType) } ``` #### [](#出力)出力 ```Json { "a": {"format": "YYYY-MM-dd"} } ``` # Mime (dw::module::Mime) このモジュールには MIME タイプを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::module::Mime`​ を DataWeave スクリプトのヘッダーに追加します。 _DataWeave バージョン 2.7.0 で導入されました。_ ## [](#関数)関数
名前 説明

fromString

MIME タイプの文字列値表現を ​MimeType​ に変換します。

isHandledBy

指定された ​MimeType​ 値がベース ​MimeType​ 値によって処理される場合、​true​ を返します。

toString

MimeType​ 値を文字列表現に変換します。

## [](#型)型 - [MIME タイプ](https://docs.mulesoft.com/jp/dataweave/2.8/dw-mime-types) # Mime タイプ (dw::module::Mime)
型 定義 説明

MimeType

type MimeType = { "type": String, subtype: String, parameters: MimeTypeParameter }

MIME タイプを表す DataWeave 型。 次の項目がサポートされています。

  • type (型)​: 「ビデオ」や「テキスト」など、データ型がどの汎用カテゴリに該当するかを表します。

  • subtype (サブタイプ)​: MIME タイプで表される指定された型のデータの正確な種類を識別します。

  • parameters (パラメーター)​: MIME タイプに添付されるパラメーター。

DataWeave バージョン 2.7.0 で導入されました。​

MimeTypeError

type MimeTypeError = { message: String }

fromString​ 関数が失敗したときに返すデータの DataWeave 型。 次の項目がサポートされています。

  • message​: エラーメッセージ。

DataWeave バージョン 2.7.0 で導入されました。​

MimeTypeParameter

type MimeTypeParameter = { _?: String }

MIME タイプパラメーターを表す DataWeave 型。

DataWeave バージョン 2.7.0 で導入されました。​

# min ## [](#min1)min(Array): T | Null 配列内の最小の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`min`​ はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最小数値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: min([1, 1000]), b: min([1, 2, 3]), c: min([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1, "b": 1, "c": 1.5 } ``` # min ## [](#min1)min(@StreamCapable values: Array): T | Null 配列内の最小の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`min`​ はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最小数値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: min([1, 1000]), b: min([1, 2, 3]), c: min([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1, "b": 1, "c": 1.5 } ``` # min ## [](#min1)min(@StreamCapable values: Array): T | Null 配列内の最小の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`min`​ はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最小数値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: min([1, 1000]), b: min([1, 2, 3]), c: min([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1, "b": 1, "c": 1.5 } ``` # min ## [](#min1)min(@StreamCapable values: Array): T | Null 配列内の最小の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`min`​ はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最小数値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: min([1, 1000]), b: min([1, 2, 3]), c: min([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1, "b": 1, "c": 1.5 } ``` # min ## [](#min1)min(@StreamCapable values: Array): T | Null 配列内の最小の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`min`​ はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最小数値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: min([1, 1000]), b: min([1, 2, 3]), c: min([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1, "b": 1, "c": 1.5 } ``` # min ## [](#min1)min(@StreamCapable values: Array): T | Null 配列内の最小の ​`Comparable`​ 値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`min`​ はエラーをスローします。配列が空の場合、関数は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

values

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、各入力配列の最小数値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { a: min([1, 1000]), b: min([1, 2, 3]), c: min([1.5, 2.5, 3.5]) } ``` #### [](#出力)出力 ```JSON { "a": 1, "b": 1, "c": 1.5 } ``` # minBy ## [](#minby1)minBy(Array, (item: T) -> Comparable): T | Null 配列を反復処理し、配列から比較可能な要素の最小値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`minBy`​ はエラーを返し、配列が空の場合は、null を返します。 ### [](#パラメーター)パラメーター
名前 説明

​item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最小数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] minBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 2 }, { "a" : 3 } ] minBy (item) -> item.a ``` #### [](#出力)出力 ```JSON { "a" : 1 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMinBy: { byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item), aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $, emptyArray: [] minBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMinBy": { "byDateTime": "2017-10-01T22:57:59-03:00", "byDate": "2017-10-01", "byTime": "22:57:59-03:00", "aBoolean": false, "emptyArray": null } } ``` # minBy ## [](#minby1)minBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から比較可能な要素の最小値を返します。 項目のデータ型は同じである必要があります。同じでない場合、​`minBy`​ はエラーを返し、配列が空の場合は、null を返します。 ### [](#パラメーター)パラメーター
名前 説明

​item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最小数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] minBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 2 }, { "a" : 3 } ] minBy (item) -> item.a ``` #### [](#出力)出力 ```JSON { "a" : 1 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMinBy: { byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item), aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $, emptyArray: [] minBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMinBy": { "byDateTime": "2017-10-01T22:57:59-03:00", "byDate": "2017-10-01", "byTime": "22:57:59-03:00", "aBoolean": false, "emptyArray": null } } ``` # minBy ## [](#minby1)minBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から比較可能な要素の最小値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`minBy`​ はエラーを返し、配列が空の場合は、null を返します。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最小数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] minBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 2 }, { "a" : 3 } ] minBy (item) -> item.a ``` #### [](#出力)出力 ```JSON { "a" : 1 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMinBy: { byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item), aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $, emptyArray: [] minBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMinBy": { "byDateTime": "2017-10-01T22:57:59-03:00", "byDate": "2017-10-01", "byTime": "22:57:59-03:00", "aBoolean": false, "emptyArray": null } } ``` # minBy ## [](#minby1)minBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から比較可能な要素の最小値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`minBy`​ はエラーを返し、配列が空の場合は、null を返します。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最小数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] minBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 2 }, { "a" : 3 } ] minBy (item) -> item.a ``` #### [](#出力)出力 ```JSON { "a" : 1 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMinBy: { byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item), aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $, emptyArray: [] minBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMinBy": { "byDateTime": "2017-10-01T22:57:59-03:00", "byDate": "2017-10-01", "byTime": "22:57:59-03:00", "aBoolean": false, "emptyArray": null } } ``` # minBy ## [](#minby1)minBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から比較可能な要素の最小値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`minBy`​ はエラーを返し、配列が空の場合は、null を返します。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最小数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] minBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 2 }, { "a" : 3 } ] minBy (item) -> item.a ``` #### [](#出力)出力 ```JSON { "a" : 1 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMinBy: { byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item), aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $, emptyArray: [] minBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMinBy": { "byDateTime": "2017-10-01T22:57:59-03:00", "byDate": "2017-10-01", "byTime": "22:57:59-03:00", "aBoolean": false, "emptyArray": null } } ``` # minBy ## [](#minby1)minBy(@StreamCapable array: Array, criteria: (item: T) -> Comparable): T | Null 配列を反復処理し、配列から比較可能な要素の最小値を返します。 項目のデータ型は同じである必要があります。 同じでない場合、​`minBy`​ はエラーを返し、配列が空の場合は、null を返します。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

### [](#例)例 次の例では、配列のオブジェクト (キー-値ペア) 内の最小数値を返します。​`item.a`​ を使用してオブジェクトの値を選択しています。​`[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] minBy $.a`​ のように、匿名パラメーターを使用して同じ式を記述することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ { "a" : 1 }, { "a" : 2 }, { "a" : 3 } ] minBy (item) -> item.a ``` #### [](#出力)出力 ```JSON { "a" : 1 } ``` ### [](#例-2)例 次の例では、変数 ​`myDateTime1`​ および ​`myDateTime2`​ で定義された入力から最新の ​`DateTime`​ (日時)、​`Date`​ (日付)、および ​`Time`​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myDateTime1 = "2017-10-01T22:57:59-03:00" var myDateTime2 = "2018-10-01T23:57:59-03:00" output application/json --- { myMinBy: { byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item), byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item), byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item), aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $, emptyArray: [] minBy ((item) -> item) } } ``` #### [](#出力-2)出力 ```JSON { "myMinBy": { "byDateTime": "2017-10-01T22:57:59-03:00", "byDate": "2017-10-01", "byTime": "22:57:59-03:00", "aBoolean": false, "emptyArray": null } } ``` # minutes ## [](#minutes1)minutes(nMinutes: Number): Period 指定された分数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​nMinutes

整数または小数としての分数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`minutes`​ の動作を示します。 DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4M33.3S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4M`​) にも変換します。​`minutes(-1) + minutes(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMinute: |2020-10-05T20:22:34.385Z| + minutes(1), previousMinute: |2020-10-05T20:22:34.385Z| - minutes(1), decimalInputPeriod: minutes(4.555), wholeNumberInputPeriod: minutes(4), addNegativeValue: minutes(-1) + minutes(2) } ``` #### [](#出力)出力 ```Json { "nextMinute": "2020-10-05T20:23:34.385Z", "previousMinute": "2020-10-05T20:21:34.385Z", "decimalInputPeriod": "PT4M33.3S", "wholeNumberInputPeriod": "PT4M", "addNegativeValue": 60 } ``` # minutes ## [](#minutes1)minutes(nMinutes: Number): Period 指定された分数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMinutes

整数または小数としての分数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`minutes`​ の動作を示します。 DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4M33.3S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4M`​) にも変換します。​`minutes(-1) + minutes(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMinute: |2020-10-05T20:22:34.385Z| + minutes(1), previousMinute: |2020-10-05T20:22:34.385Z| - minutes(1), decimalInputPeriod: minutes(4.555), wholeNumberInputPeriod: minutes(4), addNegativeValue: minutes(-1) + minutes(2) } ``` #### [](#出力)出力 ```Json { "nextMinute": "2020-10-05T20:23:34.385Z", "previousMinute": "2020-10-05T20:21:34.385Z", "decimalInputPeriod": "PT4M33.3S", "wholeNumberInputPeriod": "PT4M", "addNegativeValue": 60 } ``` # minutes ## [](#minutes1)minutes(nMinutes: Number): Period 指定された分数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMinutes

整数または小数としての分数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`minutes`​ の動作を示します。 DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4M33.3S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4M`​) にも変換します。​`minutes(-1) + minutes(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMinute: |2020-10-05T20:22:34.385Z| + minutes(1), previousMinute: |2020-10-05T20:22:34.385Z| - minutes(1), decimalInputPeriod: minutes(4.555), wholeNumberInputPeriod: minutes(4), addNegativeValue: minutes(-1) + minutes(2) } ``` #### [](#出力)出力 ```Json { "nextMinute": "2020-10-05T20:23:34.385Z", "previousMinute": "2020-10-05T20:21:34.385Z", "decimalInputPeriod": "PT4M33.3S", "wholeNumberInputPeriod": "PT4M", "addNegativeValue": 60 } ``` # minutes ## [](#minutes1)minutes(nMinutes: Number): Period 指定された分数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMinutes

整数または小数としての分数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`minutes`​ の動作を示します。 DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4M33.3S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4M`​) にも変換します。​`minutes(-1) + minutes(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMinute: |2020-10-05T20:22:34.385Z| + minutes(1), previousMinute: |2020-10-05T20:22:34.385Z| - minutes(1), decimalInputPeriod: minutes(4.555), wholeNumberInputPeriod: minutes(4), addNegativeValue: minutes(-1) + minutes(2) } ``` #### [](#出力)出力 ```Json { "nextMinute": "2020-10-05T20:23:34.385Z", "previousMinute": "2020-10-05T20:21:34.385Z", "decimalInputPeriod": "PT4M33.3S", "wholeNumberInputPeriod": "PT4M", "addNegativeValue": 60 } ``` # minutes ## [](#minutes1)minutes(nMinutes: Number): Period 指定された分数から Period (期間) 値を作成します。 この関数では、​`duration`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMinutes

整数または小数としての分数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`minutes`​ の動作を示します。 DateTime (日時) 値に対して時間数を加算および減算します。また、小数値 ​`4.555`​ を Period (期間) 形式 (​`PT4M33.3S`​) に、整数 ​`4`​ を Period (期間) 形式 (​`PT4M`​) にも変換します。​`minutes(-1) + minutes(2)`​ では秒数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMinute: |2020-10-05T20:22:34.385Z| + minutes(1), previousMinute: |2020-10-05T20:22:34.385Z| - minutes(1), decimalInputPeriod: minutes(4.555), wholeNumberInputPeriod: minutes(4), addNegativeValue: minutes(-1) + minutes(2) } ``` #### [](#出力)出力 ```Json { "nextMinute": "2020-10-05T20:23:34.385Z", "previousMinute": "2020-10-05T20:21:34.385Z", "decimalInputPeriod": "PT4M33.3S", "wholeNumberInputPeriod": "PT4M", "addNegativeValue": 60 } ``` # mod ## [](#mod1)mod(Number, Number): Number 剰余 (​`dividend`​ (被除数) を ​`divisor`​ (除数) で割った余り) を返します。 ### [](#パラメーター)パラメーター
名前 説明

​dividend

操作の被除数となる数値。

​divisor

操作の除数となる数値。

### [](#例)例 次の例では、入力値の剰余を返します。​`mod(dividend, divisor)`​ 表記を使用することもできます (たとえば、​`mod(3, 2)`​ では ​`1`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (3 mod 2), (4 mod 2), (2.2 mod 2) ] ``` #### [](#出力)出力 ```JSON [ 1, 0, 0.2] ``` # mod ## [](#mod1)mod(dividend: Number, divisor: Number): Number 剰余 (​`dividend`​ (被除数) を ​`divisor`​ (除数) で割った余り) を返します。 ### [](#パラメーター)パラメーター
名前 説明

​dividend

操作の被除数となる数値。

​divisor

操作の除数となる数値。

### [](#例)例 次の例では、入力値の剰余を返します。​`mod(dividend, divisor)`​ 表記を使用することもできます (たとえば、​`mod(3, 2)`​ では ​`1`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (3 mod 2), (4 mod 2), (2.2 mod 2) ] ``` #### [](#出力)出力 ```JSON [ 1, 0, 0.2] ``` # mod ## [](#mod1)mod(dividend: Number, divisor: Number): Number 剰余 (​`dividend`​ (被除数) を ​`divisor`​ (除数) で割った余り) を返します。 ### [](#パラメーター)パラメーター
名前 説明

dividend

操作の被除数となる数値。

divisor

操作の除数となる数値。

### [](#例)例 次の例では、入力値の剰余を返します。​`mod(dividend, divisor)`​ 表記を使用することもできます (たとえば、​`mod(3, 2)`​ では ​`1`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (3 mod 2), (4 mod 2), (2.2 mod 2) ] ``` #### [](#出力)出力 ```JSON [ 1, 0, 0.2] ``` # mod ## [](#mod1)mod(dividend: Number, divisor: Number): Number 剰余 (​`dividend`​ (被除数) を ​`divisor`​ (除数) で割った余り) を返します。 ### [](#パラメーター)パラメーター
名前 説明

dividend

操作の被除数となる数値。

divisor

操作の除数となる数値。

### [](#例)例 次の例では、入力値の剰余を返します。​`mod(dividend, divisor)`​ 表記を使用することもできます (たとえば、​`mod(3, 2)`​ では ​`1`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (3 mod 2), (4 mod 2), (2.2 mod 2) ] ``` #### [](#出力)出力 ```JSON [ 1, 0, 0.2] ``` # mod ## [](#mod1)mod(dividend: Number, divisor: Number): Number 剰余 (​`dividend`​ (被除数) を ​`divisor`​ (除数) で割った余り) を返します。 ### [](#パラメーター)パラメーター
名前 説明

dividend

操作の被除数となる数値。

divisor

操作の除数となる数値。

### [](#例)例 次の例では、入力値の剰余を返します。​`mod(dividend, divisor)`​ 表記を使用することもできます (たとえば、​`mod(3, 2)`​ では ​`1`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (3 mod 2), (4 mod 2), (2.2 mod 2) ] ``` #### [](#出力)出力 ```JSON [ 1, 0, 0.2] ``` # mod ## [](#mod1)mod(dividend: Number, divisor: Number): Number 剰余 (​`dividend`​ (被除数) を ​`divisor`​ (除数) で割った余り) を返します。 ### [](#パラメーター)パラメーター
名前 説明

dividend

操作の被除数となる数値。

divisor

操作の除数となる数値。

### [](#例)例 次の例では、入力値の剰余を返します。​`mod(dividend, divisor)`​ 表記を使用することもできます (たとえば、​`mod(3, 2)`​ では ​`1`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (3 mod 2), (4 mod 2), (2.2 mod 2) ] ``` #### [](#出力)出力 ```JSON [ 1, 0, 0.2] ``` # months ## [](#months1)months(nMonths: Number): Period 指定された月数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​nMonths

整数としての月数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`months`​ の動作を示します。 DateTime (日時) 値に 1 か月を加算し、整数 ​`4`​ を Period (期間) 形式の月数 (​`P4M`​) に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMonth: |2020-10-05T20:22:34.385Z| + months(1), fourMonthPeriod : months(4), addNegativeValue: months(-1) + months(2) } ``` #### [](#出力)出力 ```Json { "nextMonth": "2020-11-05T20:22:34.385Z", "fourMonthPeriod": "P4M", "addNegativeValue": 1 } ``` # months ## [](#months1)months(nMonths: Number): Period 指定された月数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMonths

整数としての月数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`months`​ の動作を示します。 DateTime (日時) 値に 1 か月を加算し、整数 ​`4`​ を Period (期間) 形式の月数 (​`P4M`​) に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMonth: |2020-10-05T20:22:34.385Z| + months(1), fourMonthPeriod : months(4), addNegativeValue: months(-1) + months(2) } ``` #### [](#出力)出力 ```Json { "nextMonth": "2020-11-05T20:22:34.385Z", "fourMonthPeriod": "P4M", "addNegativeValue": 1 } ``` # months ## [](#months1)months(nMonths: Number): Period 指定された月数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMonths

整数としての月数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`months`​ の動作を示します。 DateTime (日時) 値に 1 か月を加算し、整数 ​`4`​ を Period (期間) 形式の月数 (​`P4M`​) に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMonth: |2020-10-05T20:22:34.385Z| + months(1), fourMonthPeriod : months(4), addNegativeValue: months(-1) + months(2) } ``` #### [](#出力)出力 ```Json { "nextMonth": "2020-11-05T20:22:34.385Z", "fourMonthPeriod": "P4M", "addNegativeValue": 1 } ``` # months ## [](#months1)months(nMonths: Number): Period 指定された月数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMonths

整数としての月数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`months`​ の動作を示します。 DateTime (日時) 値に 1 か月を加算し、整数 ​`4`​ を Period (期間) 形式の月数 (​`P4M`​) に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMonth: |2020-10-05T20:22:34.385Z| + months(1), fourMonthPeriod : months(4), addNegativeValue: months(-1) + months(2) } ``` #### [](#出力)出力 ```Json { "nextMonth": "2020-11-05T20:22:34.385Z", "fourMonthPeriod": "P4M", "addNegativeValue": 1 } ``` # months ## [](#months1)months(nMonths: Number): Period 指定された月数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nMonths

整数としての月数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`months`​ の動作を示します。 DateTime (日時) 値に 1 か月を加算し、整数 ​`4`​ を Period (期間) 形式の月数 (​`P4M`​) に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextMonth: |2020-10-05T20:22:34.385Z| + months(1), fourMonthPeriod : months(4), addNegativeValue: months(-1) + months(2) } ``` #### [](#出力)出力 ```Json { "nextMonth": "2020-11-05T20:22:34.385Z", "fourMonthPeriod": "P4M", "addNegativeValue": 1 } ``` # Mule (dw::Mule) この DataWeave モジュールには、Mule Runtime とやりとりする関数が含まれます。 ## [](#関数)関数
名前 説明

​causedBy

この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。

​lookup

この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。

​p

この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。

## [](#型)型 - [Mule 型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-mule-types) # Mule (dw::Mule) この DataWeave モジュールには、Mule Runtime Engine とやりとりする関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Mule`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​causedBy

この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。

​lookup

この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。

​p

この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。

## [](#型)型 - [Mule 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-mule-types) # Mule (dw::Mule) この DataWeave モジュールには、Mule Runtime とやりとりする関数が含まれます。 ## [](#関数)関数
名前 説明

causedBy

この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。

lookup

この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。

p

この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。

## [](#型)型 - [Mule 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-mule-types) # Mule (dw::Mule) この DataWeave モジュールには、Mule Runtime とやりとりする関数が含まれます。 ## [](#関数)関数
名前 説明

causedBy

この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。

lookup

この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。

p

この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。

## [](#型)型 - [Mule 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-mule-types) # Mule (dw::Mule) この DataWeave モジュールには、Mule Runtime とやりとりする関数が含まれます。 ## [](#関数)関数
名前 説明

causedBy

この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。

lookup

この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。

p

この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。

## [](#型)型 - [Mule 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-mule-types) # Mule (dw::Mule) この DataWeave モジュールには、Mule Runtime とやりとりする関数が含まれます。 ## [](#関数)関数
名前 説明

causedBy

この関数は、エラーハンドラーのように、エラーをその種別によって一致させます。

lookup

この関数を使用すると、Mule アプリケーション内でフローを実行し、結果のペイロードを取得できます。

p

この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。

## [](#型)型 - [Mule 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-mule-types) # Mule 型 (dw::Mule)
型 定義 説明

Error (エラー)

type Error = { description?: String, detailedDescription?: String, errorType?: ErrorType, childErrors?: Array<Error> }

エラーを表し、次の項目を含む型。

  • description​ エラーの簡潔な説明。

  • detailedDescription​: エラーの詳細な説明。このメッセージには、Java 例外に固有の情報が含まれる可能性があります。

  • errorType​: エラーの種別を返します。

  • childErrors​: 子エラーが含まれます (ある場合)。 たとえば、Scatter-Gather ルーターは、そのすべてのルートエラーを子として集約し、エラーをスローする場合があります。 失敗したすべてのコンポーネントがエラーを集約するとは限らないため、この型では空のコレクションが返される可能性があります。

ErrorType

type ErrorType = { identifier?: String, namespace?: String, parentErrorType?: ErrorType | Null }

Mule コンポーネントがスローする可能性があるエラーの種別。

エラー種別には、エンドユーザーが Mule 設定で指定できる ​identifier​ 文字列が含まれます。

すべてのエラーが ​namespace​ に属するため、同じ ​identifier​ 文字列を持ち、別の名前空間に属するエラーとの競合が回避されます。

エラー種別はより一般的なエラー種別の特殊化である可能性があり、この場合、​parentErrorType​ はより一般的なエラー種別を返します。この種別は、エラーハンドラー内でエラー種別を照合するときに使用されます。このため、エラー処理で一般的なエラー種別を選択した場合、より特殊化されたエラー種別も処理されます。

Message (メッセージ)

type Message = Object {class: "org.mule.runtime.api.message.Message"}

Mule メッセージを表す型。

# Mule 型 (Mule)
型 定義 説明

Error

​type Error = { description?: String, detailedDescription?: String, errorType?: ErrorType, childErrors?: Array<Error> }

エラーを表す複雑型。

  • description?: String​ (説明): エラーの簡潔な説明。

  • detailedDescription?: String​: エラーの詳細な説明。このメッセージには、Java 例外に固有の情報が含まれる可能性があります。

  • errorType?: ErrorType​: エラーの種別を返します。

  • childErrors?: Array<Error>​: 子エラーが含まれます (ある場合)。たとえば、 Scatter-Gather ルーターは、そのすべてのルーティングエラーを子として集約し、エラーをスローする場合があります。

失敗したすべてのコンポーネントがエラーを集約するとは限らないため、この型では空のコレクションが返される可能性があります。

ErrorType

​type ErrorType = { identifier?: String, namespace?: String, parentErrorType?: ErrorType }

Mule コンポーネントがスローする可能性があるエラーの種別。

  • エラー種別には、エンドユーザーが Mule 設定で指定できる ​identifier​ 文字列が含まれます。

  • すべてのエラーが ​namespace​ に属するため、同じ ​identifier​ 文字列を持ち、別の名前空間に属するエラーとの競合が回避されます。

  • エラー種別はより一般的なエラー種別の特殊化である可能性があり、この場合、​parentErrorType​ はより一般的なエラー種別を返します。この種別は、エラーハンドラー内でエラー種別を照合するときに使用されます。このため、エラー処理で一般的なエラー種別を選択した場合、より特殊化されたエラー種別も処理されます。

Message (メッセージ)

​type Message = Object {class: "org.mule.runtime.api.message.Message"}

Mule メッセージを表す型。

# Mule 型 (Mule)
型 定義 説明

Error

​type Error = { description?: String, detailedDescription?: String, errorType?: ErrorType, childErrors?: Array<Error> }

エラーを表す複雑型。

  • description?: String​ (説明): エラーの簡潔な説明。

  • detailedDescription?: String​: エラーの詳細な説明。このメッセージには、Java 例外に固有の情報が含まれる可能性があります。

  • errorType?: ErrorType​: エラーの種別を返します。

  • childErrors?: Array<Error>​: 子エラーが含まれます (ある場合)。たとえば、 Scatter-Gather ルーターは、そのすべてのルーティングエラーを子として集約し、エラーをスローする場合があります。

失敗したすべてのコンポーネントがエラーを集約するとは限らないため、この型では空のコレクションが返される可能性があります。

ErrorType

​type ErrorType = { identifier?: String, namespace?: String, parentErrorType?: ErrorType }

Mule コンポーネントがスローする可能性があるエラーの種別。

  • エラー種別には、エンドユーザーが Mule 設定で指定できる ​identifier​ 文字列が含まれます。

  • すべてのエラーが ​namespace​ に属するため、同じ ​identifier​ 文字列を持ち、別の名前空間に属するエラーとの競合が回避されます。

  • エラー種別はより一般的なエラー種別の特殊化である可能性があり、この場合、​parentErrorType​ はより一般的なエラー種別を返します。この種別は、エラーハンドラー内でエラー種別を照合するときに使用されます。このため、エラー処理で一般的なエラー種別を選択した場合、より特殊化されたエラー種別も処理されます。

Message (メッセージ)

​type Message = Object {class: "org.mule.runtime.api.message.Message"}

Mule メッセージを表す型。

# Mule 型 (Mule)
型 定義 説明

Error

type Error = { description?: String, detailedDescription?: String, errorType?: ErrorType, childErrors?: Array<Error> }

エラーを表す複雑型。

  • description?: String​ (説明): エラーの簡潔な説明。

  • detailedDescription?: String​: エラーの詳細な説明。このメッセージには、Java 例外に固有の情報が含まれる可能性があります。

  • errorType?: ErrorType​: エラーの種別を返します。

  • childErrors?: Array<Error>​: 子エラーが含まれます (ある場合)。たとえば、Scatter-Gather ルーターは、そのすべてのルーティングエラーを子として集約し、エラーをスローする場合があります。

失敗したすべてのコンポーネントがエラーを集約するとは限らないため、この型では空のコレクションが返される可能性があります。

ErrorType

type ErrorType = { identifier?: String, namespace?: String, parentErrorType?: ErrorType }

Mule コンポーネントがスローする可能性があるエラーの種別。

  • エラー種別には、エンドユーザーが Mule 設定で指定できる ​identifier​ 文字列が含まれます。

  • すべてのエラーが ​namespace​ に属するため、同じ ​identifier​ 文字列を持ち、別の名前空間に属するエラーとの競合が回避されます。

  • エラー種別はより一般的なエラー種別の特殊化である可能性があり、この場合、​parentErrorType​ はより一般的なエラー種別を返します。この種別は、エラーハンドラー内でエラー種別を照合するときに使用されます。このため、エラー処理で一般的なエラー種別を選択した場合、より特殊化されたエラー種別も処理されます。

Message (メッセージ)

type Message = Object {class: "org.mule.runtime.api.message.Message"}

Mule メッセージを表す型。

# Mule 型 (Mule)
型 定義 説明

Error

type Error = { description?: String, detailedDescription?: String, errorType?: ErrorType, childErrors?: Array<Error> }

エラーを表す複雑型。

  • description?: String​ (説明): エラーの簡潔な説明。

  • detailedDescription?: String​: エラーの詳細な説明。このメッセージには、Java 例外に固有の情報が含まれる可能性があります。

  • errorType?: ErrorType​: エラーの種別を返します。

  • childErrors?: Array<Error>​: 子エラーが含まれます (ある場合)。たとえば、Scatter-Gather ルーターは、そのすべてのルーティングエラーを子として集約し、エラーをスローする場合があります。

失敗したすべてのコンポーネントがエラーを集約するとは限らないため、この型では空のコレクションが返される可能性があります。

ErrorType

type ErrorType = { identifier?: String, namespace?: String, parentErrorType?: ErrorType }

Mule コンポーネントがスローする可能性があるエラーの種別。

  • エラー種別には、エンドユーザーが Mule 設定で指定できる ​identifier​ 文字列が含まれます。

  • すべてのエラーが ​namespace​ に属するため、同じ ​identifier​ 文字列を持ち、別の名前空間に属するエラーとの競合が回避されます。

  • エラー種別はより一般的なエラー種別の特殊化である可能性があり、この場合、​parentErrorType​ はより一般的なエラー種別を返します。この種別は、エラーハンドラー内でエラー種別を照合するときに使用されます。このため、エラー処理で一般的なエラー種別を選択した場合、より特殊化されたエラー種別も処理されます。

Message (メッセージ)

type Message = Object {class: "org.mule.runtime.api.message.Message"}

Mule メッセージを表す型。

# Mule 型 (Mule)
型 定義 説明

Error

type Error = { description?: String, detailedDescription?: String, errorType?: ErrorType, childErrors?: Array<Error> }

エラーを表す複雑型。

  • description?: String​ (説明): エラーの簡潔な説明。

  • detailedDescription?: String​: エラーの詳細な説明。このメッセージには、Java 例外に固有の情報が含まれる可能性があります。

  • errorType?: ErrorType​: エラーの種別を返します。

  • childErrors?: Array<Error>​: 子エラーが含まれます (ある場合)。たとえば、Scatter-Gather ルーターは、そのすべてのルーティングエラーを子として集約し、エラーをスローする場合があります。

失敗したすべてのコンポーネントがエラーを集約するとは限らないため、この型では空のコレクションが返される可能性があります。

ErrorType

type ErrorType = { identifier?: String, namespace?: String, parentErrorType?: ErrorType }

Mule コンポーネントがスローする可能性があるエラーの種別。

  • エラー種別には、エンドユーザーが Mule 設定で指定できる ​identifier​ 文字列が含まれます。

  • すべてのエラーが ​namespace​ に属するため、同じ ​identifier​ 文字列を持ち、別の名前空間に属するエラーとの競合が回避されます。

  • エラー種別はより一般的なエラー種別の特殊化である可能性があり、この場合、​parentErrorType​ はより一般的なエラー種別を返します。この種別は、エラーハンドラー内でエラー種別を照合するときに使用されます。このため、エラー処理で一般的なエラー種別を選択した場合、より特殊化されたエラー種別も処理されます。

Message (メッセージ)

type Message = Object {class: "org.mule.runtime.api.message.Message"}

Mule メッセージを表す型。

# Multipart (dw::module::Multipart) このヘルパーモジュールは、マルチパートと形式、およびマルチパート形式のパート (項目と境界を含む) を作成するための関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import dw::module::Multipart`​ を DataWeave スクリプトのヘッダーに追加します。 ## [](#関数)関数
名前 説明

​field

指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​MultipartPart​ データ構造を作成します。

​file

ソースファイルから ​MultipartPart​ データ構造を作成します。

​form

指定されたパートの配列を使用して ​Multipart​ データ構造を作成します。

​generateBoundary

​Multipart​ データ構造の境界を生成するためのヘルパー関数。

## [](#型)型 - [Multipart 型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-multipart-types) # Multipart (dw::module::Multipart) このヘルパーモジュールは、マルチパートと形式、およびマルチパート形式のパート (項目と境界を含む) を作成するための関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import dw::module::Multipart`​ を DataWeave スクリプトのヘッダーに追加します。 ## [](#関数)関数
名前 説明

​field

指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​MultipartPart​ データ構造を作成します。

​file

ソースファイルから ​MultipartPart​ データ構造を作成します。

​form

指定されたパートの配列を使用して ​Multipart​ データ構造を作成します。

​generateBoundary

​Multipart​ データ構造の境界を生成するためのヘルパー関数。

## [](#型)型 - [Multipart 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-multipart-types) # Multipart (dw::module::Multipart) このヘルパーモジュールは、マルチパートと形式、およびマルチパート形式のパート (項目と境界を含む) を作成するための関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import dw::module::Multipart`​ を DataWeave スクリプトのヘッダーに追加します。 ## [](#関数)関数
名前 説明

field

指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​MultipartPart​ データ構造を作成します。

file

ソースファイルから ​MultipartPart​ データ構造を作成します。

form

指定されたパートの配列を使用して ​Multipart​ データ構造を作成します。

generateBoundary

Multipart​ データ構造の境界を生成するためのヘルパー関数。

## [](#型)型 - [Multipart 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-multipart-types) # Multipart (dw::module::Multipart) このヘルパーモジュールは、マルチパートと形式、およびマルチパート形式のパート (項目と境界を含む) を作成するための関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import dw::module::Multipart`​ を DataWeave スクリプトのヘッダーに追加します。 ## [](#関数)関数
名前 説明

field

指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​MultipartPart​ データ構造を作成します。

file

ソースファイルから ​MultipartPart​ データ構造を作成します。

form

指定されたパートの配列を使用して ​Multipart​ データ構造を作成します。

generateBoundary

Multipart​ データ構造の境界を生成するためのヘルパー関数。

## [](#型)型 - [Multipart 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-multipart-types) # Multipart (dw::module::Multipart) このヘルパーモジュールは、マルチパートと形式、およびマルチパート形式のパート (項目と境界を含む) を作成するための関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import dw::module::Multipart`​ を DataWeave スクリプトのヘッダーに追加します。 ## [](#関数)関数
名前 説明

field

指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​MultipartPart​ データ構造を作成します。

file

ソースファイルから ​MultipartPart​ データ構造を作成します。

form

指定されたパートの配列を使用して ​Multipart​ データ構造を作成します。

generateBoundary

Multipart​ データ構造の境界を生成するためのヘルパー関数。

## [](#型)型 - [Multipart 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-multipart-types) # Multipart (dw::module::Multipart) このヘルパーモジュールは、マルチパートと形式、およびマルチパート形式のパート (項目と境界を含む) を作成するための関数を提供します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import dw::module::Multipart`​ を DataWeave スクリプトのヘッダーに追加します。 ## [](#関数)関数
名前 説明

field

指定されたパート名、そのパートの入力コンテンツ、形式 (または MIME タイプ)、および省略可能なファイル名を使用して、​MultipartPart​ データ構造を作成します。

file

ソースファイルから ​MultipartPart​ データ構造を作成します。

form

指定されたパートの配列を使用して ​Multipart​ データ構造を作成します。

generateBoundary

Multipart​ データ構造の境界を生成するためのヘルパー関数。

## [](#型)型 - [Multipart 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-multipart-types) # Multipart 型 (dw::module::Multipart)
型 定義 説明

Multipart

​type Multipart = { preamble?: String, parts: { _?: MultipartPart } }

​MultiPart​ 型: 完全な ​Multipart​ 形式のデータ構造。出力例は、マルチパート ​form​ 関数の ドキュメント​を参照してください。

MultipartPart

​type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any }

​MultipartPart​ 型: MultiPart​ 形式内のパートのデータ構造。 出力例は、マルチパート ​field​ 関数の ドキュメント​を参照してください。

# Multipart 型 (dw::module::Multipart)
型 定義 説明

Multipart

​type Multipart = { preamble?: String, parts: { _?: MultipartPart } }

​MultiPart​ 型: 完全な ​Multipart​ 形式のデータ構造。出力例は、マルチパート ​form​ 関数の ドキュメント​を参照してください。

MultipartPart

​type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any }

​MultipartPart​ 型: MultiPart​ 形式内のパートのデータ構造。 出力例は、マルチパート ​field​ 関数の ドキュメント​を参照してください。

# Multipart 型 (dw::module::Multipart)
型 定義 説明

Multipart

type Multipart = { preamble?: String, parts: { _?: MultipartPart } }

MultiPart​ 型: 完全な ​Multipart​ 形式のデータ構造。出力例は、マルチパート ​form​ 関数の ドキュメント​を参照してください。

MultipartPart

type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any }

MultipartPart​ 型: MultiPart​ 形式内のパートのデータ構造。 出力例は、マルチパート ​field​ 関数の ドキュメント​を参照してください。

# Multipart 型 (dw::module::Multipart)
型 定義 説明

Multipart

type Multipart = { preamble?: String, parts: { _?: MultipartPart } }

MultiPart​ 型: 完全な ​Multipart​ 形式のデータ構造。出力例は、マルチパート ​form​ 関数の ドキュメント​を参照してください。

MultipartPart

type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any }

MultipartPart​ 型: MultiPart​ 形式内のパートのデータ構造。 出力例は、マルチパート ​field​ 関数の ドキュメント​を参照してください。

# Multipart 型 (dw::module::Multipart)
型 定義 説明

Multipart

type Multipart = { preamble?: String, parts: { _?: MultipartPart } }

MultiPart​ 型: 完全な ​Multipart​ 形式のデータ構造。出力例は、マルチパート ​form​ 関数の ドキュメント​を参照してください。

MultipartPart

type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any }

MultipartPart​ 型: MultiPart​ 形式内のパートのデータ構造。 出力例は、マルチパート ​field​ 関数の ドキュメント​を参照してください。

# Multipart 型 (dw::module::Multipart)
型 定義 説明

Multipart

type Multipart = { preamble?: String, parts: { _?: MultipartPart } }

MultiPart​ 型: 完全な ​Multipart​ 形式のデータ構造。出力例は、マルチパート ​form​ 関数の ドキュメント​を参照してください。

MultipartPart

type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any }

MultipartPart​ 型: MultiPart​ 形式内のパートのデータ構造。 出力例は、マルチパート ​field​ 関数の ドキュメント​を参照してください。

# nameOf ## [](#nameof1)nameOf(Type): String 入力種別の名前を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

照会するデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`nameOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: nameOf(AArray), b: nameOf(AArray2), c: nameOf(String) } ``` #### [](#出力)出力 ```Json { "a": "AArray", "b": "AArray2", "c": "String" } ``` # nameOf ## [](#nameof1)nameOf(t: Type): String 入力種別の名前を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

照会するデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`nameOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: nameOf(AArray), b: nameOf(AArray2), c: nameOf(String) } ``` #### [](#出力)出力 ```Json { "a": "AArray", "b": "AArray2", "c": "String" } ``` # nameOf ## [](#nameof1)nameOf(t: Type): String 入力種別の名前を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

照会するデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`nameOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: nameOf(AArray), b: nameOf(AArray2), c: nameOf(String) } ``` #### [](#出力)出力 ```Json { "a": "AArray", "b": "AArray2", "c": "String" } ``` # nameOf ## [](#nameof1)nameOf(t: Type): String 入力種別の名前を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

照会するデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`nameOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: nameOf(AArray), b: nameOf(AArray2), c: nameOf(String) } ``` #### [](#出力)出力 ```Json { "a": "AArray", "b": "AArray2", "c": "String" } ``` # nameOf ## [](#nameof1)nameOf(t: Type): String 入力種別の名前を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

照会するデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`nameOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: nameOf(AArray), b: nameOf(AArray2), c: nameOf(String) } ``` #### [](#出力)出力 ```Json { "a": "AArray", "b": "AArray2", "c": "String" } ``` # nameOf ## [](#nameof1)nameOf(t: Type): String 入力種別の名前を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

照会するデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`nameOf`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Types type AArray = Array {n: 1} type AArray2 = Array --- { a: nameOf(AArray), b: nameOf(AArray2), c: nameOf(String) } ``` #### [](#出力)出力 ```Json { "a": "AArray", "b": "AArray2", "c": "String" } ``` # nameSet ## [](#nameset1)nameSet(Object): Array オブジェクトからのキーの配列を返します。 このメソッドは​**非推奨**​です。代わりに、Core モジュールの ​`namesOf`​ を使用してください。 ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "nameSet" : nameSet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "nameSet" : ["a","b"] } ``` # nameSet ## [](#nameset1)nameSet(obj: Object): Array オブジェクトからのキーの配列を返します。 _この関数は​**非推奨**​です。代わりに [dw::Core::namesOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-namesof) を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "nameSet" : nameSet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "nameSet" : ["a","b"] } ``` # nameSet ## [](#nameset1)nameSet(obj: Object): Array オブジェクトからのキーの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::namesOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-namesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "nameSet" : nameSet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "nameSet" : ["a","b"] } ``` # nameSet ## [](#nameset1)nameSet(obj: Object): Array オブジェクトからのキーの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::namesOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-namesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "nameSet" : nameSet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "nameSet" : ["a","b"] } ``` # nameSet ## [](#nameset1)nameSet(obj: Object): Array オブジェクトからのキーの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::namesOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-namesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "nameSet" : nameSet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "nameSet" : ["a","b"] } ``` # nameSet ## [](#nameset1)nameSet(obj: Object): Array オブジェクトからのキーの配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::namesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-namesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "nameSet" : nameSet({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "nameSet" : ["a","b"] } ``` # namesOf ## [](#namesof1)namesOf(Object): Array 特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "namesOf" : namesOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "namesOf" : ["a","b"] } ``` # namesOf ## [](#namesof1)namesOf(obj: Object): Array 特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "namesOf" : namesOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "namesOf" : ["a","b"] } ``` ## [](#namesof2)namesOf(obj: Null): Null `namesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # namesOf ## [](#namesof1)namesOf(obj: Object): Array 特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "namesOf" : namesOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "namesOf" : ["a","b"] } ``` ## [](#namesof2)namesOf(obj: Null): Null `namesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # namesOf ## [](#namesof1)namesOf(obj: Object): Array 特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "namesOf" : namesOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "namesOf" : ["a","b"] } ``` ## [](#namesof2)namesOf(obj: Null): Null `namesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # namesOf ## [](#namesof1)namesOf(obj: Object): Array 特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "namesOf" : namesOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "namesOf" : ["a","b"] } ``` ## [](#namesof2)namesOf(obj: Null): Null `namesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # namesOf ## [](#namesof1)namesOf(obj: Object): Array 特定のオブジェクト内のすべてのキーの名前が含まれる文字列の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアからのキーを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "namesOf" : namesOf({ "a" : true, "b" : 1}) } ``` #### [](#出力)出力 ```JSON { "namesOf" : ["a","b"] } ``` ## [](#namesof2)namesOf(obj: Null): Null `namesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # native ## [](#native1)native(String): Nothing 関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。 # native ## [](#native1)native(String): Nothing 関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。 # native ## [](#native1)native(String): Nothing 関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。 # native ## [](#native1)native(String): Nothing 関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。 # native ## [](#native1)native(String): Nothing 関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。 # native ## [](#native1)native(String): Nothing 関数の実装が DataWeave ではなく Scala で記述されていることを示す内部メソッド。 # nodeExists ## [](#nodeexists1)nodeExists(Any, (value: Any, path: Path) -> Boolean): Boolean ツリー内のいずれかのノードが、指定された条件に対して検証された場合、​`true`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​value

検索する値。

​callback

条件。

### [](#例)例 次の例では、名前 ​`peter`​ のユーザーがあるかどうかを確認します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree output application/json --- { user: [{ name: "mariano", lastName: "achaval", friends: [ { name: "julian" }, { name: "tom" } ] }, { name: "leandro", lastName: "shokida", friends: [ { name: "peter" }, { name: "robert" } ] } ], } nodeExists ((value, path) -> path[-1].selector == "name" and value == "peter") ``` #### [](#出力)出力 ```Json true ``` # nodeExists ## [](#nodeexists1)nodeExists(value: Any, callback: (value: Any, path: Path) -> Boolean): Boolean 特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​`true`​ を返します。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​value

検索する値。

​callback

入力 ​value​ に適用する条件。

### [](#例)例 次の例では、名前と姓で各ユーザーをチェックします。​`value`​ を ​`$`​ で、​`path`​ を ​`$$`​ で参照することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myObject = { user: [{ name: "mariano", lastName: "achaval", friends: [ { name: "julian" }, { name: "tom" } ] }, { name: "leandro", lastName: "shokida", friends: [ { name: "peter" }, { name: "robert" } ] } ] } output application/json --- { mariano : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "mariano"), julian : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "julian"), tom : myObject nodeExists ($$[-1].selector == "name" and $ == "tom"), leandro : myObject nodeExists ($$[-1].selector == "name" and $ == "leandro"), peter : myObject nodeExists ($$[-1].selector == "name" and $ == "peter"), wrongField: myObject nodeExists ($$[-1].selector == "wrongField"), teo: myObject nodeExists ($$[-1].selector == "name" and $ == "teo") } ``` #### [](#出力)出力 ```Json { "mariano": true, "julian": true, "tom": true, "leandro": true, "peter": true, "wrongField": false, "teo": false } ``` # nodeExists ## [](#nodeexists1)nodeExists(value: Any, callback: (value: Any, path: Path) -> Boolean): Boolean 特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​`true`​ を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

検索する値。

callback

入力 ​value​ に適用する条件。

### [](#例)例 次の例では、名前と姓で各ユーザーをチェックします。​`value`​ を ​`$`​ で、​`path`​ を ​`$$`​ で参照することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myObject = { user: [{ name: "mariano", lastName: "achaval", friends: [ { name: "julian" }, { name: "tom" } ] }, { name: "leandro", lastName: "shokida", friends: [ { name: "peter" }, { name: "robert" } ] } ] } output application/json --- { mariano : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "mariano"), julian : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "julian"), tom : myObject nodeExists ($$[-1].selector == "name" and $ == "tom"), leandro : myObject nodeExists ($$[-1].selector == "name" and $ == "leandro"), peter : myObject nodeExists ($$[-1].selector == "name" and $ == "peter"), wrongField: myObject nodeExists ($$[-1].selector == "wrongField"), teo: myObject nodeExists ($$[-1].selector == "name" and $ == "teo") } ``` #### [](#出力)出力 ```Json { "mariano": true, "julian": true, "tom": true, "leandro": true, "peter": true, "wrongField": false, "teo": false } ``` # nodeExists ## [](#nodeexists1)nodeExists(value: Any, callback: (value: Any, path: Path) -> Boolean): Boolean 特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​`true`​ を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

検索する値。

callback

入力 ​value​ に適用する条件。

### [](#例)例 次の例では、名前と姓で各ユーザーをチェックします。​`value`​ を ​`$`​ で、​`path`​ を ​`$$`​ で参照することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myObject = { user: [{ name: "mariano", lastName: "achaval", friends: [ { name: "julian" }, { name: "tom" } ] }, { name: "leandro", lastName: "shokida", friends: [ { name: "peter" }, { name: "robert" } ] } ] } output application/json --- { mariano : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "mariano"), julian : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "julian"), tom : myObject nodeExists ($$[-1].selector == "name" and $ == "tom"), leandro : myObject nodeExists ($$[-1].selector == "name" and $ == "leandro"), peter : myObject nodeExists ($$[-1].selector == "name" and $ == "peter"), wrongField: myObject nodeExists ($$[-1].selector == "wrongField"), teo: myObject nodeExists ($$[-1].selector == "name" and $ == "teo") } ``` #### [](#出力)出力 ```Json { "mariano": true, "julian": true, "tom": true, "leandro": true, "peter": true, "wrongField": false, "teo": false } ``` # nodeExists ## [](#nodeexists1)nodeExists(value: Any, callback: (value: Any, path: Path) -> Boolean): Boolean 特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​`true`​ を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

検索する値。

callback

入力 ​value​ に適用する条件。

### [](#例)例 次の例では、名前と姓で各ユーザーをチェックします。​`value`​ を ​`$`​ で、​`path`​ を ​`$$`​ で参照することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myObject = { user: [{ name: "mariano", lastName: "achaval", friends: [ { name: "julian" }, { name: "tom" } ] }, { name: "leandro", lastName: "shokida", friends: [ { name: "peter" }, { name: "robert" } ] } ] } output application/json --- { mariano : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "mariano"), julian : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "julian"), tom : myObject nodeExists ($$[-1].selector == "name" and $ == "tom"), leandro : myObject nodeExists ($$[-1].selector == "name" and $ == "leandro"), peter : myObject nodeExists ($$[-1].selector == "name" and $ == "peter"), wrongField: myObject nodeExists ($$[-1].selector == "wrongField"), teo: myObject nodeExists ($$[-1].selector == "name" and $ == "teo") } ``` #### [](#出力)出力 ```Json { "mariano": true, "julian": true, "tom": true, "leandro": true, "peter": true, "wrongField": false, "teo": false } ``` # nodeExists ## [](#nodeexists1)nodeExists(value: Any, callback: (value: Any, path: Path) -> Boolean): Boolean 特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​`true`​ を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

value

検索する値。

callback

入力 ​value​ に適用する条件。

### [](#例)例 次の例では、名前と姓で各ユーザーをチェックします。​`value`​ を ​`$`​ で、​`path`​ を ​`$$`​ で参照することもできます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Tree var myObject = { user: [{ name: "mariano", lastName: "achaval", friends: [ { name: "julian" }, { name: "tom" } ] }, { name: "leandro", lastName: "shokida", friends: [ { name: "peter" }, { name: "robert" } ] } ] } output application/json --- { mariano : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "mariano"), julian : myObject nodeExists ((value, path) -> path[-1].selector == "name" and value == "julian"), tom : myObject nodeExists ($$[-1].selector == "name" and $ == "tom"), leandro : myObject nodeExists ($$[-1].selector == "name" and $ == "leandro"), peter : myObject nodeExists ($$[-1].selector == "name" and $ == "peter"), wrongField: myObject nodeExists ($$[-1].selector == "wrongField"), teo: myObject nodeExists ($$[-1].selector == "name" and $ == "teo") } ``` #### [](#出力)出力 ```Json { "mariano": true, "julian": true, "tom": true, "leandro": true, "peter": true, "wrongField": false, "teo": false } ``` # now ## [](#now1)now(): DateTime 現在の日付と時刻で ​`DateTime`​ (日時) 値を返します。 ### [](#例)例 次の例では、​`now()`​ を使用して、現在の日付と時刻を ​`DateTime`​ (日時) 値として返します。また、特定のタイムゾーンの日時を返す方法も示しています。Java 8 のタイムゾーンがサポートされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { nowCalled: now(), nowCalledSpecificTimeZone: now() >> "America/New_York" } ``` #### [](#出力)出力 ```JSON { "nowCalled": "2019-08-26T13:32:10.64-07:00", "nowCalledSpecificTimeZone": "2019-08-26T16:32:10.643-04:00" } ``` ### [](#例-2)例 次の例では、有効なセレクターによる ​`now()`​ 関数の使用を示します。​`now() as Number`​ でエポック時間を取得する方法も示します。 その他の例は、 [「日時 (dw::Core 型)」](https://docs.mulesoft.com/mule-runtime/4.3/dataweave-types#dw_type_dates)を参照してください。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { now: now(), epochTime : now() as Number, nanoseconds: now().nanoseconds, milliseconds: now().milliseconds, seconds: now().seconds, minutes: now().minutes, hour: now().hour, day: now().day, month: now().month, year: now().year, quarter: now().quarter, dayOfWeek: now().dayOfWeek, dayOfYear: now().dayOfYear, offsetSeconds: now().offsetSeconds, formattedDate: now() as String {format: "y-MM-dd"}, formattedTime: now() as String {format: "hh:m:s"} } ``` #### [](#出力-2)出力 ```JSON { "now": "2019-06-18T16:55:46.678-07:00", "epochTime": 1560902146, "nanoseconds": 678000000, "milliseconds": 678, "seconds": 46, "minutes": 55, "hour": 16, "day": 18, "month": 6, "year": 2019, "quarter": 2, "dayOfWeek": 2, "dayOfYear": 169, "offsetSeconds": -25200, "formattedDate": "2019-06-18", "formattedTime": "04:55:46" } ``` # now ## [](#now1)now(): DateTime 現在の日付と時刻で ​`DateTime`​ (日時) 値を返します。 ### [](#例)例 次の例では、​`now()`​ を使用して、現在の日付と時刻を ​`DateTime`​ (日時) 値として返します。また、特定のタイムゾーンの日時を返す方法も示しています。Java 8 のタイムゾーンがサポートされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { nowCalled: now(), nowCalledSpecificTimeZone: now() >> "America/New_York" } ``` #### [](#出力)出力 ```JSON { "nowCalled": "2019-08-26T13:32:10.64-07:00", "nowCalledSpecificTimeZone": "2019-08-26T16:32:10.643-04:00" } ``` ### [](#例-2)例 次の例では、有効なセレクターによる ​`now()`​ 関数の使用を示します。​`now() as Number`​ でエポック時間を取得する方法も示します。 その他の例は、​[「日時 (dw::Core 型)」](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_dates)を参照してください。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { now: now(), epochTime : now() as Number, nanoseconds: now().nanoseconds, milliseconds: now().milliseconds, seconds: now().seconds, minutes: now().minutes, hour: now().hour, day: now().day, month: now().month, year: now().year, quarter: now().quarter, dayOfWeek: now().dayOfWeek, dayOfYear: now().dayOfYear, offsetSeconds: now().offsetSeconds, formattedDate: now() as String {format: "y-MM-dd"}, formattedTime: now() as String {format: "hh:m:s"} } ``` #### [](#出力-2)出力 ```JSON { "now": "2019-06-18T16:55:46.678-07:00", "epochTime": 1560902146, "nanoseconds": 678000000, "milliseconds": 678, "seconds": 46, "minutes": 55, "hour": 16, "day": 18, "month": 6, "year": 2019, "quarter": 2, "dayOfWeek": 2, "dayOfYear": 169, "offsetSeconds": -25200, "formattedDate": "2019-06-18", "formattedTime": "04:55:46" } ``` # now ## [](#now1)now(): DateTime 現在の日付と時刻で ​`DateTime`​ (日時) 値を返します。 ### [](#例)例 次の例では、​`now()`​ を使用して、現在の日付と時刻を ​`DateTime`​ (日時) 値として返します。また、特定のタイムゾーンの日時を返す方法も示しています。Java 8 のタイムゾーンがサポートされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { nowCalled: now(), nowCalledSpecificTimeZone: now() >> "America/New_York" } ``` #### [](#出力)出力 ```JSON { "nowCalled": "2019-08-26T13:32:10.64-07:00", "nowCalledSpecificTimeZone": "2019-08-26T16:32:10.643-04:00" } ``` ### [](#例-2)例 次の例では、有効なセレクターによる ​`now()`​ 関数の使用を示します。​`now() as Number`​ でエポック時間を取得する方法も示します。 その他の例は、​ [「日時 (dw::Core 型)」](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_dates)​ を参照してください。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { now: now(), epochTime : now() as Number, nanoseconds: now().nanoseconds, milliseconds: now().milliseconds, seconds: now().seconds, minutes: now().minutes, hour: now().hour, day: now().day, month: now().month, year: now().year, quarter: now().quarter, dayOfWeek: now().dayOfWeek, dayOfYear: now().dayOfYear, offsetSeconds: now().offsetSeconds, formattedDate: now() as String {format: "y-MM-dd"}, formattedTime: now() as String {format: "hh:m:s"} } ``` #### [](#出力-2)出力 ```JSON { "now": "2019-06-18T16:55:46.678-07:00", "epochTime": 1560902146, "nanoseconds": 678000000, "milliseconds": 678, "seconds": 46, "minutes": 55, "hour": 16, "day": 18, "month": 6, "year": 2019, "quarter": 2, "dayOfWeek": 2, "dayOfYear": 169, "offsetSeconds": -25200, "formattedDate": "2019-06-18", "formattedTime": "04:55:46" } ``` # now ## [](#now1)now(): DateTime 現在の日付と時刻で ​`DateTime`​ (日時) 値を返します。 ### [](#例)例 次の例では、​`now()`​ を使用して、現在の日付と時刻を ​`DateTime`​ (日時) 値として返します。また、特定のタイムゾーンの日時を返す方法も示しています。Java 8 のタイムゾーンがサポートされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { nowCalled: now(), nowCalledSpecificTimeZone: now() >> "America/New_York" } ``` #### [](#出力)出力 ```JSON { "nowCalled": "2019-08-26T13:32:10.64-07:00", "nowCalledSpecificTimeZone": "2019-08-26T16:32:10.643-04:00" } ``` ### [](#例-2)例 次の例では、有効なセレクターによる ​`now()`​ 関数の使用を示します。​`now() as Number`​ でエポック時間を取得する方法も示します。 その他の例は、​ [「日時 (dw::Core 型)」](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_dates)​ を参照してください。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { now: now(), epochTime : now() as Number, nanoseconds: now().nanoseconds, milliseconds: now().milliseconds, seconds: now().seconds, minutes: now().minutes, hour: now().hour, day: now().day, month: now().month, year: now().year, quarter: now().quarter, dayOfWeek: now().dayOfWeek, dayOfYear: now().dayOfYear, offsetSeconds: now().offsetSeconds, formattedDate: now() as String {format: "y-MM-dd"}, formattedTime: now() as String {format: "hh:m:s"} } ``` #### [](#出力-2)出力 ```JSON { "now": "2019-06-18T16:55:46.678-07:00", "epochTime": 1560902146, "nanoseconds": 678000000, "milliseconds": 678, "seconds": 46, "minutes": 55, "hour": 16, "day": 18, "month": 6, "year": 2019, "quarter": 2, "dayOfWeek": 2, "dayOfYear": 169, "offsetSeconds": -25200, "formattedDate": "2019-06-18", "formattedTime": "04:55:46" } ``` # now ## [](#now1)now(): DateTime 現在の日付と時刻で ​`DateTime`​ (日時) 値を返します。 ### [](#例)例 次の例では、​`now()`​ を使用して、現在の日付と時刻を ​`DateTime`​ (日時) 値として返します。また、特定のタイムゾーンの日時を返す方法も示しています。Java 8 のタイムゾーンがサポートされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { nowCalled: now(), nowCalledSpecificTimeZone: now() >> "America/New_York" } ``` #### [](#出力)出力 ```JSON { "nowCalled": "2019-08-26T13:32:10.64-07:00", "nowCalledSpecificTimeZone": "2019-08-26T16:32:10.643-04:00" } ``` ### [](#例-2)例 次の例では、有効なセレクターによる ​`now()`​ 関数の使用を示します。​`now() as Number`​ でエポック時間を取得する方法も示します。 その他の例は、​ [「日時 (dw::Core 型)」](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_dates)​ を参照してください。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { now: now(), epochTime : now() as Number, nanoseconds: now().nanoseconds, milliseconds: now().milliseconds, seconds: now().seconds, minutes: now().minutes, hour: now().hour, day: now().day, month: now().month, year: now().year, quarter: now().quarter, dayOfWeek: now().dayOfWeek, dayOfYear: now().dayOfYear, offsetSeconds: now().offsetSeconds, formattedDate: now() as String {format: "y-MM-dd"}, formattedTime: now() as String {format: "hh:m:s"} } ``` #### [](#出力-2)出力 ```JSON { "now": "2019-06-18T16:55:46.678-07:00", "epochTime": 1560902146, "nanoseconds": 678000000, "milliseconds": 678, "seconds": 46, "minutes": 55, "hour": 16, "day": 18, "month": 6, "year": 2019, "quarter": 2, "dayOfWeek": 2, "dayOfYear": 169, "offsetSeconds": -25200, "formattedDate": "2019-06-18", "formattedTime": "04:55:46" } ``` # now ## [](#now1)now(): DateTime 現在の日付と時刻で ​`DateTime`​ (日時) 値を返します。 ### [](#例)例 次の例では、​`now()`​ を使用して、現在の日付と時刻を ​`DateTime`​ (日時) 値として返します。また、特定のタイムゾーンの日時を返す方法も示しています。Java 8 のタイムゾーンがサポートされます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { nowCalled: now(), nowCalledSpecificTimeZone: now() >> "America/New_York" } ``` #### [](#出力)出力 ```JSON { "nowCalled": "2019-08-26T13:32:10.64-07:00", "nowCalledSpecificTimeZone": "2019-08-26T16:32:10.643-04:00" } ``` ### [](#例-2)例 次の例では、有効なセレクターによる ​`now()`​ 関数の使用を示します。​`now() as Number`​ でエポック時間を取得する方法も示します。 その他の例は、​ [「日時 (dw::Core 型)」](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_dates)​ を参照してください。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { now: now(), epochTime : now() as Number, nanoseconds: now().nanoseconds, milliseconds: now().milliseconds, seconds: now().seconds, minutes: now().minutes, hour: now().hour, day: now().day, month: now().month, year: now().year, quarter: now().quarter, dayOfWeek: now().dayOfWeek, dayOfYear: now().dayOfYear, offsetSeconds: now().offsetSeconds, formattedDate: now() as String {format: "y-MM-dd"}, formattedTime: now() as String {format: "hh:m:s"} } ``` #### [](#出力-2)出力 ```JSON { "now": "2019-06-18T16:55:46.678-07:00", "epochTime": 1560902146, "nanoseconds": 678000000, "milliseconds": 678, "seconds": 46, "minutes": 55, "hour": 16, "day": 18, "month": 6, "year": 2019, "quarter": 2, "dayOfWeek": 2, "dayOfYear": 169, "offsetSeconds": -25200, "formattedDate": "2019-06-18", "formattedTime": "04:55:46" } ``` # Numbers (dw::core::Numbers) このモジュールには、数値を操作するヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Numbers`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ## [](#関数)関数
名前 説明

​fromBinary

2 進数から 10 進数に変換します。

​fromHex

16 進数を 10 進数に変換します。

​fromRadixNumber

指定された基数の数値を 10 進数に変換します。

​toBinary

10 進数を 2 進数に変換します。

​toHex

10 進数を 16 進数に変換します。

​toRadixNumber

10 進数を他の基数の数値文字列に変換します。

# Numbers (dw::core::Numbers) このモジュールには、数値を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Numbers`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ## [](#関数)関数
名前 説明

​fromBinary

2 進数から 10 進数に変換します。

​fromHex

16 進数を 10 進数に変換します。

​fromRadixNumber

指定された基数の数値を 10 進数に変換します。

​toBinary

10 進数を 2 進数に変換します。

​toHex

10 進数を 16 進数に変換します。

​toRadixNumber

10 進数を他の基数の数値文字列に変換します。

# Numbers (dw::core::Numbers) このモジュールには、数値を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Numbers`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ## [](#関数)関数
名前 説明

fromBinary

2 進数から 10 進数に変換します。

fromHex

16 進数を 10 進数に変換します。

fromRadixNumber

指定された基数の数値を 10 進数に変換します。

toBinary

10 進数を 2 進数に変換します。

toHex

10 進数を 16 進数に変換します。

toRadixNumber

10 進数を他の基数の数値文字列に変換します。

# Numbers (dw::core::Numbers) このモジュールには、数値を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Numbers`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ## [](#関数)関数
名前 説明

fromBinary

2 進数から 10 進数に変換します。

fromHex

16 進数を 10 進数に変換します。

fromRadixNumber

指定された基数の数値を 10 進数に変換します。

toBinary

10 進数を 2 進数に変換します。

toHex

10 進数を 16 進数に変換します。

toRadixNumber

10 進数を他の基数の数値文字列に変換します。

# Numbers (dw::core::Numbers) このモジュールには、数値を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Numbers`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ## [](#関数)関数
名前 説明

fromBinary

2 進数から 10 進数に変換します。

fromHex

16 進数を 10 進数に変換します。

fromRadixNumber

指定された基数の数値を 10 進数に変換します。

toBinary

10 進数を 2 進数に変換します。

toHex

10 進数を 16 進数に変換します。

toRadixNumber

10 進数を他の基数の数値文字列に変換します。

# Numbers (dw::core::Numbers) このモジュールには、数値を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Numbers`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ## [](#関数)関数
名前 説明

fromBinary

2 進数から 10 進数に変換します。

fromHex

16 進数を 10 進数に変換します。

fromRadixNumber

指定された基数の数値を 10 進数に変換します。

toBinary

10 進数を 2 進数に変換します。

toHex

10 進数を 16 進数に変換します。

toRadixNumber

10 進数を他の基数の数値文字列に変換します。

# objectFields ## [](#objectfields1)objectFields(Type): Array 特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`objectFields`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Types ns ns0 http://acme.com type ADictionary = {_ : String} type ASchema = {ns0#name @(ns0#foo: String): {}} type AUser = {name @(foo?: String,l: Number)?: String, lastName*: Number} --- { a: objectFields(ADictionary), b: objectFields(ASchema), c: objectFields(Object), d: objectFields(AUser) } ``` #### [](#出力)出力 ```Json { "a": [ { "key": { "name": { "localName": "_", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": false, "value": "String" } ], "b": [ { "key": { "name": { "localName": "name", "namespace": "http://acme.com" }, "attributes": [ { "name": { "localName": "foo", "namespace": "http://acme.com" }, "value": "String", "required": true } ] }, "required": true, "repeated": false, "value": "Object" } ], "c": [ ], "d": [ { "key": { "name": { "localName": "name", "namespace": null }, "attributes": [ { "name": { "localName": "foo", "namespace": null }, "value": "String", "required": false }, { "name": { "localName": "l", "namespace": null }, "value": "Number", "required": true } ] }, "required": false, "repeated": false, "value": "String" }, { "key": { "name": { "localName": "lastName", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": true, "value": "Number" } ] } ``` # objectFields ## [](#objectfields1)objectFields(t: Type): Array 特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`objectFields`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Types ns ns0 http://acme.com type ADictionary = {_ : String} type ASchema = {ns0#name @(ns0#foo: String): {}} type AUser = {name @(foo?: String,l: Number)?: String, lastName*: Number} --- { a: objectFields(ADictionary), b: objectFields(ASchema), c: objectFields(Object), d: objectFields(AUser) } ``` #### [](#出力)出力 ```Json { "a": [ { "key": { "name": { "localName": "_", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": false, "value": "String" } ], "b": [ { "key": { "name": { "localName": "name", "namespace": "http://acme.com" }, "attributes": [ { "name": { "localName": "foo", "namespace": "http://acme.com" }, "value": "String", "required": true } ] }, "required": true, "repeated": false, "value": "Object" } ], "c": [ ], "d": [ { "key": { "name": { "localName": "name", "namespace": null }, "attributes": [ { "name": { "localName": "foo", "namespace": null }, "value": "String", "required": false }, { "name": { "localName": "l", "namespace": null }, "value": "Number", "required": true } ] }, "required": false, "repeated": false, "value": "String" }, { "key": { "name": { "localName": "lastName", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": true, "value": "Number" } ] } ``` # objectFields ## [](#objectfields1)objectFields(t: Type): Array 特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`objectFields`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Types ns ns0 http://acme.com type ADictionary = {_ : String} type ASchema = {ns0#name @(ns0#foo: String): {}} type AUser = {name @(foo?: String,l: Number)?: String, lastName*: Number} --- { a: objectFields(ADictionary), b: objectFields(ASchema), c: objectFields(Object), d: objectFields(AUser) } ``` #### [](#出力)出力 ```Json { "a": [ { "key": { "name": { "localName": "_", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": false, "value": "String" } ], "b": [ { "key": { "name": { "localName": "name", "namespace": "http://acme.com" }, "attributes": [ { "name": { "localName": "foo", "namespace": "http://acme.com" }, "value": "String", "required": true } ] }, "required": true, "repeated": false, "value": "Object" } ], "c": [ ], "d": [ { "key": { "name": { "localName": "name", "namespace": null }, "attributes": [ { "name": { "localName": "foo", "namespace": null }, "value": "String", "required": false }, { "name": { "localName": "l", "namespace": null }, "value": "Number", "required": true } ] }, "required": false, "repeated": false, "value": "String" }, { "key": { "name": { "localName": "lastName", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": true, "value": "Number" } ] } ``` # objectFields ## [](#objectfields1)objectFields(t: Type): Array 特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`objectFields`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Types ns ns0 http://acme.com type ADictionary = {_ : String} type ASchema = {ns0#name @(ns0#foo: String): {}} type AUser = {name @(foo?: String,l: Number)?: String, lastName*: Number} --- { a: objectFields(ADictionary), b: objectFields(ASchema), c: objectFields(Object), d: objectFields(AUser) } ``` #### [](#出力)出力 ```Json { "a": [ { "key": { "name": { "localName": "_", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": false, "value": "String" } ], "b": [ { "key": { "name": { "localName": "name", "namespace": "http://acme.com" }, "attributes": [ { "name": { "localName": "foo", "namespace": "http://acme.com" }, "value": "String", "required": true } ] }, "required": true, "repeated": false, "value": "Object" } ], "c": [ ], "d": [ { "key": { "name": { "localName": "name", "namespace": null }, "attributes": [ { "name": { "localName": "foo", "namespace": null }, "value": "String", "required": false }, { "name": { "localName": "l", "namespace": null }, "value": "Number", "required": true } ] }, "required": false, "repeated": false, "value": "String" }, { "key": { "name": { "localName": "lastName", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": true, "value": "Number" } ] } ``` # objectFields ## [](#objectfields1)objectFields(t: Type): Array 特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`objectFields`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Types ns ns0 http://acme.com type ADictionary = {_ : String} type ASchema = {ns0#name @(ns0#foo: String): {}} type AUser = {name @(foo?: String,l: Number)?: String, lastName*: Number} --- { a: objectFields(ADictionary), b: objectFields(ASchema), c: objectFields(Object), d: objectFields(AUser) } ``` #### [](#出力)出力 ```Json { "a": [ { "key": { "name": { "localName": "_", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": false, "value": "String" } ], "b": [ { "key": { "name": { "localName": "name", "namespace": "http://acme.com" }, "attributes": [ { "name": { "localName": "foo", "namespace": "http://acme.com" }, "value": "String", "required": true } ] }, "required": true, "repeated": false, "value": "Object" } ], "c": [ ], "d": [ { "key": { "name": { "localName": "name", "namespace": null }, "attributes": [ { "name": { "localName": "foo", "namespace": null }, "value": "String", "required": false }, { "name": { "localName": "l", "namespace": null }, "value": "Number", "required": true } ] }, "required": false, "repeated": false, "value": "String" }, { "key": { "name": { "localName": "lastName", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": true, "value": "Number" } ] } ``` # objectFields ## [](#objectfields1)objectFields(t: Type): Array 特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

関数型。

### [](#例)例 次の例では、さまざまな入力での ​`objectFields`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Types ns ns0 http://acme.com type ADictionary = {_ : String} type ASchema = {ns0#name @(ns0#foo: String): {}} type AUser = {name @(foo?: String,l: Number)?: String, lastName*: Number} --- { a: objectFields(ADictionary), b: objectFields(ASchema), c: objectFields(Object), d: objectFields(AUser) } ``` #### [](#出力)出力 ```Json { "a": [ { "key": { "name": { "localName": "_", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": false, "value": "String" } ], "b": [ { "key": { "name": { "localName": "name", "namespace": "http://acme.com" }, "attributes": [ { "name": { "localName": "foo", "namespace": "http://acme.com" }, "value": "String", "required": true } ] }, "required": true, "repeated": false, "value": "Object" } ], "c": [ ], "d": [ { "key": { "name": { "localName": "name", "namespace": null }, "attributes": [ { "name": { "localName": "foo", "namespace": null }, "value": "String", "required": false }, { "name": { "localName": "l", "namespace": null }, "value": "Number", "required": true } ] }, "required": false, "repeated": false, "value": "String" }, { "key": { "name": { "localName": "lastName", "namespace": null }, "attributes": [ ] }, "required": true, "repeated": true, "value": "Number" } ] } ``` # Objects (dw::core::Objects) このモジュールには、オブジェクトを操作するヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Objects`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​divideBy

オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。

​entrySet

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

​everyEntry

オブジェクト内のすべてのエントリが条件に一致すると ​true​ を返します。

​keySet

オブジェクトからのキー名の配列を返します。

​mergeWith

取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。

​nameSet

オブジェクトからのキーの配列を返します。

​someEntry

オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​true​ を返します。

​takeWhile

条件を満たす場合、オブジェクトからキー - 値ペア選択します。

​valueSet

オブジェクト内のキー-値ペアからの値の配列を返します。

# Objects (dw::core::Objects) このモジュールには、オブジェクトを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Objects`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​divideBy

オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。

​entrySet

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

​everyEntry

オブジェクト内のすべてのエントリが条件に一致すると ​true​ を返します。

​keySet

オブジェクトからのキー名の配列を返します。

​mergeWith

取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。

​nameSet

オブジェクトからのキーの配列を返します。

​someEntry

オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​true​ を返します。

​takeWhile

条件を満たす場合、オブジェクトからキー - 値ペア選択します。

​valueSet

オブジェクト内のキー-値ペアからの値の配列を返します。

# Objects (dw::core::Objects) このモジュールには、オブジェクトを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Objects`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

divideBy

オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。

entrySet

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

everyEntry

オブジェクト内のすべてのエントリが条件に一致すると ​true​ を返します。

keySet

オブジェクトからのキー名の配列を返します。

mergeWith

取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。

nameSet

オブジェクトからのキーの配列を返します。

someEntry

オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​true​ を返します。

takeWhile

条件を満たす場合、オブジェクトからキー - 値ペア選択します。

valueSet

オブジェクト内のキー-値ペアからの値の配列を返します。

# Objects (dw::core::Objects) このモジュールには、オブジェクトを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Objects`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

divideBy

オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。

entrySet

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

everyEntry

オブジェクト内のすべてのエントリが条件に一致すると ​true​ を返します。

keySet

オブジェクトからのキー名の配列を返します。

mergeWith

取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。

nameSet

オブジェクトからのキーの配列を返します。

someEntry

オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​true​ を返します。

takeWhile

条件を満たす場合、オブジェクトからキー - 値ペア選択します。

valueSet

オブジェクト内のキー-値ペアからの値の配列を返します。

# Objects (dw::core::Objects) このモジュールには、オブジェクトを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Objects`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

divideBy

オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。

entrySet

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

everyEntry

オブジェクト内のすべてのエントリが条件に一致すると ​true​ を返します。

keySet

オブジェクトからのキー名の配列を返します。

mergeWith

取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。

nameSet

オブジェクトからのキーの配列を返します。

someEntry

オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​true​ を返します。

takeWhile

条件を満たす場合、オブジェクトからキー - 値ペア選択します。

valueSet

オブジェクト内のキー-値ペアからの値の配列を返します。

# Objects (dw::core::Objects) このモジュールには、オブジェクトを処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Objects`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

divideBy

オブジェクトを、指定された数のキー - 値ペアを含むサブオブジェクトに分割します。

entrySet

入力オブジェクトのキー、値、任意の属性を表すキー - 値ペアの配列を返します。

everyEntry

オブジェクト内のすべてのエントリが条件に一致すると ​true​ を返します。

keySet

オブジェクトからのキー名の配列を返します。

mergeWith

取得元オブジェクトからのすべてのキー - 値ペアを対象オブジェクトに追加します。

nameSet

オブジェクトからのキーの配列を返します。

someEntry

オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​true​ を返します。

takeWhile

条件を満たす場合、オブジェクトからキー - 値ペア選択します。

valueSet

オブジェクト内のキー-値ペアからの値の配列を返します。

# onNull ## [](#onnull1)onNull(previous: Null, callback: () -> R): R 前の式が ​`null`​ 値を返す場合はコールバック関数を実行し、​`null`​ 値をコールバックの結果に置き換えます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​previous

前の式の値。

​callback

​previous​ が ​null​ を返す場合に新しい値を生成するコールバック。

### [](#例)例 次の例では、​`null`​ 値を受け取ったときの ​`onNull`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "onNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) onNull "Empty Text" } ``` #### [](#出力)出力 ```Json { "onNull": "Empty Text" } ``` ## [](#onnull2)onNull(previous: T, callback: () -> Any): T `onNull`​ を​_非 null_​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # onNull ## [](#onnull1)onNull(previous: Null, callback: () -> R): R 前の式が ​`null`​ 値を返す場合はコールバック関数を実行し、​`null`​ 値をコールバックの結果に置き換えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

previous​ が ​null​ を返す場合に新しい値を生成するコールバック。

### [](#例)例 次の例では、​`null`​ 値を受け取ったときの ​`onNull`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "onNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) onNull "Empty Text" } ``` #### [](#出力)出力 ```Json { "onNull": "Empty Text" } ``` ## [](#onnull2)onNull(previous: T, callback: () -> Any): T `onNull`​ を​_非 null_​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # onNull ## [](#onnull1)onNull(previous: Null, callback: () -> R): R 前の式が ​`null`​ 値を返す場合はコールバック関数を実行し、​`null`​ 値をコールバックの結果に置き換えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

previous​ が ​null​ を返す場合に新しい値を生成するコールバック。

### [](#例)例 次の例では、​`null`​ 値を受け取ったときの ​`onNull`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "onNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) onNull "Empty Text" } ``` #### [](#出力)出力 ```Json { "onNull": "Empty Text" } ``` ## [](#onnull2)onNull(previous: T, callback: () -> Any): T `onNull`​ を​_非 null_​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # onNull ## [](#onnull1)onNull(previous: Null, callback: () -> R): R 前の式が ​`null`​ 値を返す場合はコールバック関数を実行し、​`null`​ 値をコールバックの結果に置き換えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

previous​ が ​null​ を返す場合に新しい値を生成するコールバック。

### [](#例)例 次の例では、​`null`​ 値を受け取ったときの ​`onNull`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "onNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) onNull "Empty Text" } ``` #### [](#出力)出力 ```Json { "onNull": "Empty Text" } ``` ## [](#onnull2)onNull(previous: T, callback: () -> Any): T `onNull`​ を​_非 null_​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # onNull ## [](#onnull1)onNull(previous: Null, callback: () -> R): R 前の式が ​`null`​ 値を返す場合はコールバック関数を実行し、​`null`​ 値をコールバックの結果に置き換えます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

previous​ が ​null​ を返す場合に新しい値を生成するコールバック。

### [](#例)例 次の例では、​`null`​ 値を受け取ったときの ​`onNull`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "onNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) onNull "Empty Text" } ``` #### [](#出力)出力 ```Json { "onNull": "Empty Text" } ``` ## [](#onnull2)onNull(previous: T, callback: () -> Any): T `onNull`​ を​_非 null_​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # orderBy ## [](#orderby1)orderBy(O, (value: V, key: K) -> R): O 入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。 このバージョンの ​`orderBy`​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、null 値を処理します。 インデックスは匿名パラメーター ​`$$`​、値は ​`$`​ で参照できます。 ### [](#パラメーター)パラメーター
名前 説明

​object

並び替えるオブジェクト。

​criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

### [](#例)例 次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​`orderBy($.letter)`​ は ​`orderBy($[0])`​ と同じ結果になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [{ letter: "e" }, { letter: "d" }] orderBy($.letter) ``` #### [](#出力)出力 ```JSON [ { "letter": "d" }, { "letter": "e" } ] ``` ### [](#例-2)例 `orderBy`​ 関数には、昇順ではなく降順で並び替えるオプションはありません。この場合は、たとえば ​`-`​ を使用して、結果の配列の順序を単に反転することができます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- orderDescending: ([3,8,1] orderBy -$) ``` #### [](#出力-2)出力 ```JSON { "orderDescending": [8,3,1] } ``` ## [](#orderby2)orderBy(Array, (item: T, index: Number) -> R): Array 指定された条件を使用して配列を並び替えます。 ### [](#パラメーター-2)パラメーター
名前 説明

​array

並び替える配列。

​criteria

関数の結果は、リストを並び替える条件として使用されます。単純な値 (文字列、数値など) を返す必要があります。

### [](#例-3)例 次の例では、数値に基づいて数値の配列を並び替えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [3,2,3] orderBy $ ``` #### [](#出力-3)出力 ```JSON [ 2, 3, 3 ] ``` ### [](#例-4)例 次の例では、age (年齢) に基づいて人の配列を並び替えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age ``` #### [](#出力-4)出力 ```JSON [ { name: "Leandro", age: 29 }, { name: "Mariano", age: 35 }, { name: "Santiago", age: 42 } ] ``` ### [](#例-5)例 この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​`Type`​ キーの値をアルファベット順に並び替えてから、​`[-1 to 0]`​ に基づいて順序を逆にします。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 var myInput = [ { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": {} }, { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": {} } ] output application/json --- (myInput orderBy $.Type)[-1 to 0] ``` #### [](#出力-5)出力 ```JSON [ { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": { } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": { } }, { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } } ] ``` ## [](#orderby3)orderBy(Null, (item: Nothing, index: Nothing) -> Null): Null `orderBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # orderBy ## [](#orderby1)orderBy(object: O, criteria: (value: V, key: K) -> R): O 入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。 このバージョンの ​`orderBy`​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、​`null`​ 値を処理します。 インデックスは匿名パラメーター ​`$$`​、値は ​`$`​ で参照できます。 ### [](#パラメーター)パラメーター
名前 説明

object

並び替えるオブジェクト。

criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

### [](#例)例 次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​`orderBy($.letter)`​ は ​`orderBy($[0])`​ と同じ結果になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { letter: "b", letter: "c", letter: "a" } orderBy ((value, key) -> value) ``` #### [](#出力)出力 ```JSON { "letter": "a", "letter": "b", "letter": "c" } ``` ## [](#orderby2)orderBy(array: Array, criteria: (item: T, index: Number) -> R): Array 指定された条件を使用して配列を並び替えます。 ### [](#パラメーター-2)パラメーター
名前 説明

array

並び替える配列。

criteria

関数の結果は、配列を並び替える条件として機能します。単純な値 (​String​、​Number​、など) を返す必要があります。

### [](#例-2)例 次の例では、数値に基づいて数値の配列を並び替えます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [3,2,3] orderBy $ ``` #### [](#出力-2)出力 ```JSON [ 2, 3, 3 ] ``` ### [](#例-3)例 `orderBy`​ 関数には、昇順ではなく降順で並び替えるオプションはありません。この場合は、たとえば ​`-`​ を使用して、結果の配列の順序を単に反転することができます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- orderDescending: ([3,8,1] orderBy -$) ``` #### [](#出力-3)出力 ```JSON { "orderDescending": [8,3,1] } ``` ### [](#例-4)例 次の例では、age (年齢) に基づいて人の配列を並び替えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age ``` #### [](#出力-4)出力 ```JSON [ { name: "Leandro", age: 29 }, { name: "Mariano", age: 35 }, { name: "Santiago", age: 42 } ] ``` ### [](#例-5)例 次の例では、DateTime の配列を降順に並び替えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- [|2020-10-01T23:57:59.017Z|, |2022-12-22T12:12:12.011Z|, |2020-10-01T12:40:10.012Z|, |2020-10-01T23:57:59.021Z|] orderBy -($ as Number {unit: "milliseconds"}) ``` #### [](#出力-5)出力 ```JSON [ "2022-12-22T12:12:12.011Z", "2020-10-01T23:57:59.021Z", "2020-10-01T23:57:59.017Z", "2020-10-01T12:40:10.012Z" ] ``` ### [](#例-6)例 この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​`Type`​ キーの値をアルファベット順に並び替えてから、​`[-1 to 0]`​ に基づいて順序を逆にします。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myInput = [ { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": {} }, { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": {} } ] output application/json --- (myInput orderBy $.Type)[-1 to 0] ``` #### [](#出力-6)出力 ```JSON [ { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": { } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": { } }, { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } } ] ``` ## [](#orderby3)orderBy(value: Null, criteria: (item: Nothing, index: Nothing) -> Null): Null `orderBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # orderBy ## [](#orderby1)orderBy(object: O, criteria: (value: V, key: K) -> R): O 入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。 このバージョンの ​`orderBy`​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、​`null`​ 値を処理します。 インデックスは匿名パラメーター ​`$$`​、値は ​`$`​ で参照できます。 ### [](#パラメーター)パラメーター
名前 説明

object

並び替えるオブジェクト。

criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

### [](#例)例 次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​`orderBy($.letter)`​ は ​`orderBy($[0])`​ と同じ結果になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { letter: "b", letter: "c", letter: "a" } orderBy ((value, key) -> value) ``` #### [](#出力)出力 ```JSON { "letter": "a", "letter": "b", "letter": "c" } ``` ## [](#orderby2)orderBy(array: Array, criteria: (item: T, index: Number) -> R): Array 指定された条件を使用して配列を並び替えます。 ### [](#パラメーター-2)パラメーター
名前 説明

array

並び替える配列。

criteria

関数の結果は、配列を並び替える条件として機能します。単純な値 (​String​、​Number​、など) を返す必要があります。

### [](#例-2)例 次の例では、数値に基づいて数値の配列を並び替えます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [3,2,3] orderBy $ ``` #### [](#出力-2)出力 ```JSON [ 2, 3, 3 ] ``` ### [](#例-3)例 `orderBy`​ 関数には、昇順ではなく降順で並び替えるオプションはありません。この場合は、たとえば ​`-`​ を使用して、結果の配列の順序を単に反転することができます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- orderDescending: ([3,8,1] orderBy -$) ``` #### [](#出力-3)出力 ```JSON { "orderDescending": [8,3,1] } ``` ### [](#例-4)例 次の例では、age (年齢) に基づいて人の配列を並び替えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age ``` #### [](#出力-4)出力 ```JSON [ { name: "Leandro", age: 29 }, { name: "Mariano", age: 35 }, { name: "Santiago", age: 42 } ] ``` ### [](#例-5)例 次の例では、DateTime の配列を降順に並び替えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- [|2020-10-01T23:57:59.017Z|, |2022-12-22T12:12:12.011Z|, |2020-10-01T12:40:10.012Z|, |2020-10-01T23:57:59.021Z|] orderBy -($ as Number {unit: "milliseconds"}) ``` #### [](#出力-5)出力 ```JSON [ "2022-12-22T12:12:12.011Z", "2020-10-01T23:57:59.021Z", "2020-10-01T23:57:59.017Z", "2020-10-01T12:40:10.012Z" ] ``` ### [](#例-6)例 この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​`Type`​ キーの値をアルファベット順に並び替えてから、​`[-1 to 0]`​ に基づいて順序を逆にします。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myInput = [ { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": {} }, { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": {} } ] output application/json --- (myInput orderBy $.Type)[-1 to 0] ``` #### [](#出力-6)出力 ```JSON [ { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": { } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": { } }, { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } } ] ``` ## [](#orderby3)orderBy(value: Null, criteria: (item: Nothing, index: Nothing) -> Null): Null `orderBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # orderBy ## [](#orderby1)orderBy(object: O, criteria: (value: V, key: K) -> R): O 入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。 このバージョンの ​`orderBy`​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、​`null`​ 値を処理します。 インデックスは匿名パラメーター ​`$$`​、値は ​`$`​ で参照できます。 ### [](#パラメーター)パラメーター
名前 説明

object

並び替えるオブジェクト。

criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

### [](#例)例 次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​`orderBy($.letter)`​ は ​`orderBy($[0])`​ と同じ結果になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { letter: "b", letter: "c", letter: "a" } orderBy ((value, key) -> value) ``` #### [](#出力)出力 ```JSON { "letter": "a", "letter": "b", "letter": "c" } ``` ## [](#orderby2)orderBy(array: Array, criteria: (item: T, index: Number) -> R): Array 指定された条件を使用して配列を並び替えます。 ### [](#パラメーター-2)パラメーター
名前 説明

array

並び替える配列。

criteria

関数の結果は、配列を並び替える条件として機能します。単純な値 (​String​、​Number​、など) を返す必要があります。

### [](#例-2)例 次の例では、数値に基づいて数値の配列を並び替えます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [3,2,3] orderBy $ ``` #### [](#出力-2)出力 ```JSON [ 2, 3, 3 ] ``` ### [](#例-3)例 `orderBy`​ 関数には、昇順ではなく降順で並び替えるオプションはありません。この場合は、たとえば ​`-`​ を使用して、結果の配列の順序を単に反転することができます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- orderDescending: ([3,8,1] orderBy -$) ``` #### [](#出力-3)出力 ```JSON { "orderDescending": [8,3,1] } ``` ### [](#例-4)例 次の例では、age (年齢) に基づいて人の配列を並び替えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age ``` #### [](#出力-4)出力 ```JSON [ { name: "Leandro", age: 29 }, { name: "Mariano", age: 35 }, { name: "Santiago", age: 42 } ] ``` ### [](#例-5)例 次の例では、DateTime の配列を降順に並び替えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- [|2020-10-01T23:57:59.017Z|, |2022-12-22T12:12:12.011Z|, |2020-10-01T12:40:10.012Z|, |2020-10-01T23:57:59.021Z|] orderBy -($ as Number {unit: "milliseconds"}) ``` #### [](#出力-5)出力 ```JSON [ "2022-12-22T12:12:12.011Z", "2020-10-01T23:57:59.021Z", "2020-10-01T23:57:59.017Z", "2020-10-01T12:40:10.012Z" ] ``` ### [](#例-6)例 この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​`Type`​ キーの値をアルファベット順に並び替えてから、​`[-1 to 0]`​ に基づいて順序を逆にします。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myInput = [ { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": {} }, { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": {} } ] output application/json --- (myInput orderBy $.Type)[-1 to 0] ``` #### [](#出力-6)出力 ```JSON [ { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": { } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": { } }, { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } } ] ``` ## [](#orderby3)orderBy(value: Null, criteria: (item: Nothing, index: Nothing) -> Null): Null `orderBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # orderBy ## [](#orderby1)orderBy(object: O, criteria: (value: V, key: K) -> R): O 入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。 このバージョンの ​`orderBy`​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、​`null`​ 値を処理します。 インデックスは匿名パラメーター ​`$$`​、値は ​`$`​ で参照できます。 ### [](#パラメーター)パラメーター
名前 説明

object

並び替えるオブジェクト。

criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

### [](#例)例 次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​`orderBy($.letter)`​ は ​`orderBy($[0])`​ と同じ結果になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { letter: "b", letter: "c", letter: "a" } orderBy ((value, key) -> value) ``` #### [](#出力)出力 ```JSON { "letter": "a", "letter": "b", "letter": "c" } ``` ## [](#orderby2)orderBy(array: Array, criteria: (item: T, index: Number) -> R): Array 指定された条件を使用して配列を並び替えます。 ### [](#パラメーター-2)パラメーター
名前 説明

array

並び替える配列。

criteria

関数の結果は、配列を並び替える条件として機能します。単純な値 (​String​、​Number​、など) を返す必要があります。

### [](#例-2)例 次の例では、数値に基づいて数値の配列を並び替えます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [3,2,3] orderBy $ ``` #### [](#出力-2)出力 ```JSON [ 2, 3, 3 ] ``` ### [](#例-3)例 `orderBy`​ 関数には、昇順ではなく降順で並び替えるオプションはありません。この場合は、たとえば ​`-`​ を使用して、結果の配列の順序を単に反転することができます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- orderDescending: ([3,8,1] orderBy -$) ``` #### [](#出力-3)出力 ```JSON { "orderDescending": [8,3,1] } ``` ### [](#例-4)例 次の例では、age (年齢) に基づいて人の配列を並び替えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age ``` #### [](#出力-4)出力 ```JSON [ { name: "Leandro", age: 29 }, { name: "Mariano", age: 35 }, { name: "Santiago", age: 42 } ] ``` ### [](#例-5)例 次の例では、DateTime の配列を降順に並び替えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- [|2020-10-01T23:57:59.017Z|, |2022-12-22T12:12:12.011Z|, |2020-10-01T12:40:10.012Z|, |2020-10-01T23:57:59.021Z|] orderBy -($ as Number {unit: "milliseconds"}) ``` #### [](#出力-5)出力 ```JSON [ "2022-12-22T12:12:12.011Z", "2020-10-01T23:57:59.021Z", "2020-10-01T23:57:59.017Z", "2020-10-01T12:40:10.012Z" ] ``` ### [](#例-6)例 この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​`Type`​ キーの値をアルファベット順に並び替えてから、​`[-1 to 0]`​ に基づいて順序を逆にします。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myInput = [ { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": {} }, { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": {} } ] output application/json --- (myInput orderBy $.Type)[-1 to 0] ``` #### [](#出力-6)出力 ```JSON [ { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": { } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": { } }, { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } } ] ``` ## [](#orderby3)orderBy(value: Null, criteria: (item: Nothing, index: Nothing) -> Null): Null `orderBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # orderBy ## [](#orderby1)orderBy(object: O, criteria: (value: V, key: K) -> R): O 入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。 このバージョンの ​`orderBy`​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、​`null`​ 値を処理します。 インデックスは匿名パラメーター ​`$$`​、値は ​`$`​ で参照できます。 ### [](#パラメーター)パラメーター
名前 説明

object

並び替えるオブジェクト。

criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

### [](#例)例 次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​`orderBy($.letter)`​ は ​`orderBy($[0])`​ と同じ結果になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [{ letter: "e" }, { letter: "d" }] orderBy($.letter) ``` #### [](#出力)出力 ```JSON [ { "letter": "d" }, { "letter": "e" } ] ``` ### [](#例-2)例 `orderBy`​ 関数には、結果を降順で並び替えるオプションはありません。この場合は、​`-`​ を使用して、結果の配列の順序を反転します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- orderDescending: ([3,8,1] orderBy -$) ``` #### [](#出力-2)出力 ```JSON { "orderDescending": [8,3,1] } ``` ## [](#orderby2)orderBy(array: Array, criteria: (item: T, index: Number) -> R): Array 指定された条件を使用して配列を並び替えます。 ### [](#パラメーター-2)パラメーター
名前 説明

array

並び替える配列。

criteria

関数の結果は、配列を並び替える条件として機能します。単純な値 (​String​、​Number​、など) を返す必要があります。

### [](#例-3)例 次の例では、数値に基づいて数値の配列を並び替えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- [3,2,3] orderBy $ ``` #### [](#出力-3)出力 ```JSON [ 2, 3, 3 ] ``` ### [](#例-4)例 次の例では、age (年齢) に基づいて人の配列を並び替えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- [{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age ``` #### [](#出力-4)出力 ```JSON [ { name: "Leandro", age: 29 }, { name: "Mariano", age: 35 }, { name: "Santiago", age: 42 } ] ``` ### [](#例-5)例 次の例では、DateTime の配列を降順に並び替えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- [|2020-10-01T23:57:59.017Z|, |2022-12-22T12:12:12.011Z|, |2020-10-01T12:40:10.012Z|, |2020-10-01T23:57:59.021Z|] orderBy -($ as Number {unit: "milliseconds"}) ``` #### [](#出力-5)出力 ```JSON [ "2022-12-22T12:12:12.011Z", "2020-10-01T23:57:59.021Z", "2020-10-01T23:57:59.017Z", "2020-10-01T12:40:10.012Z" ] ``` ### [](#例-6)例 この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​`Type`​ キーの値をアルファベット順に並び替えてから、​`[-1 to 0]`​ に基づいて順序を逆にします。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 var myInput = [ { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": {} }, { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": {} } ] output application/json --- (myInput orderBy $.Type)[-1 to 0] ``` #### [](#出力-6)出力 ```JSON [ { "AccountNumber": "32199974", "NameOnAccount": "QA", "Type": "CCCC", "CDetail": { } }, { "AccountNumber": "12399978", "NameOnAccount": "QA", "Type": "BBBB", "CDetail": { } }, { "AccountNumber": "987999321", "NameOnAccount": "QA", "Type": "AAAA", "CDetail": { "Status": "Open" } } ] ``` ## [](#orderby3)orderBy(value: Null, criteria: (item: Nothing, index: Nothing) -> Null): Null `orderBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # ordinalize ## [](#ordinalize1)ordinalize(Number): String 数値を序数 (​`1st`​ や ​`2nd`​ など) として返します。 ### [](#パラメーター)パラメーター
名前 説明

​num

序数として返す入力数値。

### [](#例)例 次の例では、さまざまな入力数値を序数として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : ordinalize(1), "b": ordinalize(2), "c": ordinalize(5), "d": ordinalize(103) } ``` #### [](#出力)出力 ```JSON { "a": "1st", "b": "2nd", "c": "5th", "d": "103rd" } ``` ## [](#ordinalize2)ordinalize(Null): Null `ordinalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # ordinalize ## [](#ordinalize1)ordinalize(num: Number): String 数値を序数 (​`1st`​ や ​`2nd`​ など) として返します。 ### [](#パラメーター)パラメーター
名前 説明

​num

序数として返す入力数値。

### [](#例)例 次の例では、さまざまな入力数値を序数として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : ordinalize(1), "b": ordinalize(2), "c": ordinalize(5), "d": ordinalize(103) } ``` #### [](#出力)出力 ```JSON { "a": "1st", "b": "2nd", "c": "5th", "d": "103rd" } ``` ## [](#ordinalize2)ordinalize(num: Null): Null `ordinalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # ordinalize ## [](#ordinalize1)ordinalize(num: Number): String 数値を序数 (​`1st`​ や ​`2nd`​ など) として返します。 ### [](#パラメーター)パラメーター
名前 説明

num

序数として返す入力数値。

### [](#例)例 次の例では、さまざまな入力数値を序数として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : ordinalize(1), "b": ordinalize(2), "c": ordinalize(5), "d": ordinalize(103) } ``` #### [](#出力)出力 ```JSON { "a": "1st", "b": "2nd", "c": "5th", "d": "103rd" } ``` ## [](#ordinalize2)ordinalize(num: Null): Null `ordinalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # ordinalize ## [](#ordinalize1)ordinalize(num: Number): String 数値を序数 (​`1st`​ や ​`2nd`​ など) として返します。 ### [](#パラメーター)パラメーター
名前 説明

num

序数として返す入力数値。

### [](#例)例 次の例では、さまざまな入力数値を序数として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : ordinalize(1), "b": ordinalize(2), "c": ordinalize(5), "d": ordinalize(103) } ``` #### [](#出力)出力 ```JSON { "a": "1st", "b": "2nd", "c": "5th", "d": "103rd" } ``` ## [](#ordinalize2)ordinalize(num: Null): Null `ordinalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # ordinalize ## [](#ordinalize1)ordinalize(num: Number): String 数値を序数 (​`1st`​ や ​`2nd`​ など) として返します。 ### [](#パラメーター)パラメーター
名前 説明

num

序数として返す入力数値。

### [](#例)例 次の例では、さまざまな入力数値を序数として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : ordinalize(1), "b": ordinalize(2), "c": ordinalize(5), "d": ordinalize(103) } ``` #### [](#出力)出力 ```JSON { "a": "1st", "b": "2nd", "c": "5th", "d": "103rd" } ``` ## [](#ordinalize2)ordinalize(num: Null): Null `ordinalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # ordinalize ## [](#ordinalize1)ordinalize(num: Number): String 数値を序数 (​`1st`​ や ​`2nd`​ など) として返します。 ### [](#パラメーター)パラメーター
名前 説明

num

序数として返す入力数値。

### [](#例)例 次の例では、さまざまな入力数値を序数として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : ordinalize(1), "b": ordinalize(2), "c": ordinalize(5), "d": ordinalize(103) } ``` #### [](#出力)出力 ```JSON { "a": "1st", "b": "2nd", "c": "5th", "d": "103rd" } ``` ## [](#ordinalize2)ordinalize(num: Null): Null `ordinalize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # orElse ## [](#orelse1)orElse(TryResult, () -> R): T | R `previous`​ の try 結果が失敗の場合は ​`orElse`​ の結果を返し、失敗でない場合は ​`previous`​ の結果を返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​previous

前の try 結果

​orElse

前の try が失敗した場合に試行する次のオプション

### [](#例)例 この例は、​`try`​ へのコールが失敗した後に評価する次の式を指定する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {name: "DW"} output application/json --- { a: try(() -> user.name!) orElse "No User Name", b: try(() -> otherUser.name) orElse "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": "No User Name", "b": "DW" } ``` # orElse ## [](#orelse1)orElse(previous: TryResult, orElse: () -> R): T | R `try`​ に対する ​`previous`​ 引数が失敗する場合、​`orElse`​ 引数の結果を返します。それ以外の場合、この関数では ​`previous`​ 引数の値を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​previous

​try​ に対する前のコールの結果。

​orElse

​previous​ 引数が失敗する場合に返す引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {name: "DW"} output application/json --- { a: try(() -> user.name!) orElse "No User Name", b: try(() -> otherUser.name) orElse "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": "No User Name", "b": "DW" } ``` # orElse ## [](#orelse1)orElse(previous: TryResult, orElse: () -> R): T | R `try`​ に対する ​`previous`​ 引数が失敗する場合、​`orElse`​ 引数の結果を返します。それ以外の場合、この関数では ​`previous`​ 引数の値を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElse

previous​ 引数が失敗する場合に返す引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {name: "DW"} output application/json --- { a: try(() -> user.name!) orElse "No User Name", b: try(() -> otherUser.name) orElse "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": "No User Name", "b": "DW" } ``` # orElse ## [](#orelse1)orElse(previous: TryResult, orElse: () -> R): T | R `try`​ に対する ​`previous`​ 引数が失敗する場合、​`orElse`​ 引数の結果を返します。それ以外の場合、この関数では ​`previous`​ 引数の値を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElse

previous​ 引数が失敗する場合に返す引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {name: "DW"} output application/json --- { a: try(() -> user.name!) orElse "No User Name", b: try(() -> otherUser.name) orElse "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": "No User Name", "b": "DW" } ``` # orElse ## [](#orelse1)orElse(previous: TryResult, orElse: () -> R): T | R `try`​ に対する ​`previous`​ 引数が失敗する場合、​`orElse`​ 引数の結果を返します。それ以外の場合、この関数では ​`previous`​ 引数の値を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElse

previous​ 引数が失敗する場合に返す引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {name: "DW"} output application/json --- { a: try(() -> user.name!) orElse "No User Name", b: try(() -> otherUser.name) orElse "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": "No User Name", "b": "DW" } ``` # orElse ## [](#orelse1)orElse(previous: Result, orElse: () -> R): T | R `try`​ に対する ​`previous`​ 引数が失敗する場合、​`orElse`​ 引数の結果を返します。それ以外の場合、この関数では ​`previous`​ 引数の値を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElse

previous​ 引数が失敗する場合に返す引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {name: "DW"} output application/json --- { a: try(() -> user.name!) orElse "No User Name", b: try(() -> otherUser.name) orElse "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": "No User Name", "b": "DW" } ``` # orElseTry ## [](#orelsetry1)orElseTry(TryResult, () -> R): TryResult 複数の ​`try`​ をチェーニングするために try で使用される関数 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​previous

前の try 結果

​orElse

前の try が失敗した場合に試行する次のオプション

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {} output application/json --- { a: try(() -> user.name!) orElseTry otherUser.name!, b: try(() -> user.name!) orElseTry "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": { "success": false, "error": { "kind": "KeyNotFoundException", "message": "There is no key named 'name'", "location": "\n9| a: try(() -> user.name!) orElseTry otherUser.name!,\n ^^^^^^^^^^^^^^", "stack": [ "main (org::mule::weave::v2::engine::transform:9:40)" ] } }, "b": { "success": true, "result": "No User Name" } } ``` # orElseTry ## [](#orelsetry1)orElseTry(previous: TryResult, orElse: () -> R): TryResult 複数の ​`try`​ 要求を連結するために ​`try`​ で使用する関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​previous

​try​ に対する前のコールの結果。

​orElseTry

​previous​ 引数が失敗する場合に試行する引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {} output application/json --- { a: try(() -> user.name!) orElseTry otherUser.name!, b: try(() -> user.name!) orElseTry "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": { "success": false, "error": { "kind": "KeyNotFoundException", "message": "There is no key named 'name'", "location": "\n9| a: try(() -> user.name!) orElseTry otherUser.name!,\n ^^^^^^^^^^^^^^", "stack": [ "main (org::mule::weave::v2::engine::transform:9:40)" ] } }, "b": { "success": true, "result": "No User Name" } } ``` # orElseTry ## [](#orelsetry1)orElseTry(previous: TryResult, orElse: () -> R): TryResult 複数の ​`try`​ 要求を連結するために ​`try`​ で使用する関数。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElseTry

previous​ 引数が失敗する場合に試行する引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {} output application/json --- { a: try(() -> user.name!) orElseTry otherUser.name!, b: try(() -> user.name!) orElseTry "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": { "success": false, "error": { "kind": "KeyNotFoundException", "message": "There is no key named 'name'", "location": "\n9| a: try(() -> user.name!) orElseTry otherUser.name!,\n ^^^^^^^^^^^^^^", "stack": [ "main (org::mule::weave::v2::engine::transform:9:40)" ] } }, "b": { "success": true, "result": "No User Name" } } ``` # orElseTry ## [](#orelsetry1)orElseTry(previous: TryResult, orElse: () -> R): TryResult 複数の ​`try`​ 要求を連結するために ​`try`​ で使用する関数。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElseTry

previous​ 引数が失敗する場合に試行する引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {} output application/json --- { a: try(() -> user.name!) orElseTry otherUser.name!, b: try(() -> user.name!) orElseTry "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": { "success": false, "error": { "kind": "KeyNotFoundException", "message": "There is no key named 'name'", "location": "\n9| a: try(() -> user.name!) orElseTry otherUser.name!,\n ^^^^^^^^^^^^^^", "stack": [ "main (org::mule::weave::v2::engine::transform:9:40)" ] } }, "b": { "success": true, "result": "No User Name" } } ``` # orElseTry ## [](#orelsetry1)orElseTry(previous: TryResult, orElse: () -> R): TryResult 複数の ​`try`​ 要求を連結するために ​`try`​ で使用する関数。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElseTry

previous​ 引数が失敗する場合に試行する引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {} output application/json --- { a: try(() -> user.name!) orElseTry otherUser.name!, b: try(() -> user.name!) orElseTry "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": { "success": false, "error": { "kind": "KeyNotFoundException", "message": "There is no key named 'name'", "location": "\n9| a: try(() -> user.name!) orElseTry otherUser.name!,\n ^^^^^^^^^^^^^^", "stack": [ "main (org::mule::weave::v2::engine::transform:9:40)" ] } }, "b": { "success": true, "result": "No User Name" } } ``` # orElseTry ## [](#orelsetry1)orElseTry(previous: TryResult, orElse: () -> R): TryResult 複数の ​`try`​ 要求を連結するために ​`try`​ で使用する関数。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

try​ に対する前のコールの結果。

orElseTry

previous​ 引数が失敗する場合に試行する引数。

### [](#例)例 次の例は、異なる try をチェーニングする方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime var user = {} var otherUser = {} output application/json --- { a: try(() -> user.name!) orElseTry otherUser.name!, b: try(() -> user.name!) orElseTry "No User Name" } ``` #### [](#出力)出力 ```JSON { "a": { "success": false, "error": { "kind": "KeyNotFoundException", "message": "There is no key named 'name'", "location": "\n9| a: try(() -> user.name!) orElseTry otherUser.name!,\n ^^^^^^^^^^^^^^", "stack": [ "main (org::mule::weave::v2::engine::transform:9:40)" ] } }, "b": { "success": true, "result": "No User Name" } } ``` # outerJoin ## [](#outerjoin1)outerJoin(Array, Array, (leftValue: L) -> String, (rightValue: R) -> String): Array<​{ l?: L, r?: R }​> オブジェクトの 2 つの配列を、指定された ​`ID`​ 条件で結合します。 `outerJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する ​`right`​ 項目を ID によってマージします。また、​`left`​ に存在しない ​`right`​ 項目も返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​left

オブジェクトの左側配列。

​right

オブジェクトの右側配列。

​leftCriteria

左のコレクションの ID を抽出するために使用する条件。

​rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトと、​`user.id`​ または ​`product.ownerId`​ の値に一致しないオブジェクトが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } }, { "r": { "ownerId": "4", "name": "SmartConnectors" } } ] ``` # outerJoin ## [](#outerjoin1)outerJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<​{ l?: L, r?: R }​> オブジェクトの 2 つの配列を、指定された ​`ID`​ 条件で結合します。 `outerJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する ​`right`​ 項目を ID によってマージします。また、​`left`​ に存在しない ​`right`​ 項目も返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​left

オブジェクトの左側配列。

​right

オブジェクトの右側配列。

​leftCriteria

左のコレクションの ID を抽出するために使用する条件。

​rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトと、​`user.id`​ または ​`product.ownerId`​ の値に一致しないオブジェクトが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } }, { "r": { "ownerId": "4", "name": "SmartConnectors" } } ] ``` # outerJoin ## [](#outerjoin1)outerJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l?: L, r?: R }> オブジェクトの 2 つの配列を、指定された ​`ID`​ 条件で結合します。 `outerJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する ​`right`​ 項目を ID によってマージします。また、​`left`​ に存在しない ​`right`​ 項目も返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトと、​`user.id`​ または ​`product.ownerId`​ の値に一致しないオブジェクトが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } }, { "r": { "ownerId": "4", "name": "SmartConnectors" } } ] ``` # outerJoin ## [](#outerjoin1)outerJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l?: L, r?: R }> オブジェクトの 2 つの配列を、指定された ​`ID`​ 条件で結合します。 `outerJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する ​`right`​ 項目を ID によってマージします。また、​`left`​ に存在しない ​`right`​ 項目も返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトと、​`user.id`​ または ​`product.ownerId`​ の値に一致しないオブジェクトが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } }, { "r": { "ownerId": "4", "name": "SmartConnectors" } } ] ``` # outerJoin ## [](#outerjoin1)outerJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l?: L, r?: R }> オブジェクトの 2 つの配列を、指定された ​`ID`​ 条件で結合します。 `outerJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する ​`right`​ 項目を ID によってマージします。また、​`left`​ に存在しない ​`right`​ 項目も返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトと、​`user.id`​ または ​`product.ownerId`​ の値に一致しないオブジェクトが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } }, { "r": { "ownerId": "4", "name": "SmartConnectors" } } ] ``` # outerJoin ## [](#outerjoin1)outerJoin(left: Array, right: Array, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l?: L, r?: R }> オブジェクトの 2 つの配列を、指定された ​`ID`​ 条件で結合します。 `outerJoin`​ は、すべての ​`left`​ 項目を含む配列を返し、存在する ​`right`​ 項目を ID によってマージします。また、​`left`​ に存在しない ​`right`​ 項目も返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

### [](#例)例 次の例は、結合の動作を示しています。出力には、入力の ​`user.id`​ と ​`product.ownerId`​ の値が一致するオブジェクトと、​`user.id`​ または ​`product.ownerId`​ の値に一致しないオブジェクトが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}] var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}] output application/json --- outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId) ``` #### [](#出力)出力 ```json [ { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "DataWeave" } }, { "l": { "id": "1", "name": "Mariano" }, "r": { "ownerId": "1", "name": "BAT" } }, { "l": { "id": "2", "name": "Leandro" } }, { "l": { "id": "3", "name": "Julian" }, "r": { "ownerId": "3", "name": "DataSense" } }, { "l": { "id": "5", "name": "Julian" } }, { "r": { "ownerId": "4", "name": "SmartConnectors" } } ] ``` # p ## [](#p1)p(String): String この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。 プロパティが設定されていない場合やプロパティが見つからない場合は、​`p`​ 関数は ​`null`​ 値を返します。 このトピックについての詳細は、 [「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

​propertyName

プロパティを識別する文字列。

### [](#例)例 次の例では、Logger コンポーネントでプロパティ ​`http.port`​ の値を記録します。 #### [](#ソース)ソース ```xml ``` ### [](#例-2)例 次の例は、Amazon S3 から画像を取得するための Amazon S3 Connector 接続のパスワード設定を示しています。​`p`​ 関数は、​`secure::accessKey`​ および ​`secure::secretKey`​ プロパティの値を識別する文字列を返します。​`secure::`​ プレフィックスは、Mule セキュア設定プロパティにアクセスするために使用されます。 #### [](#ソース-2)ソース ```xml ``` # p ## [](#p1)p(propertyName: String): String この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。 このトピックについての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

プロパティを識別する文字列。

### [](#例)例 次の例では、Logger コンポーネントでプロパティ ​`http.port`​ の値を記録します。 #### [](#ソース)ソース ```xml ``` # p ## [](#p1)p(propertyName: String): String この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。 このトピックについての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

プロパティを識別する文字列。

### [](#例)例 次の例では、Logger コンポーネントでプロパティ ​`http.port`​ の値を記録します。 #### [](#ソース)ソース ```xml ``` # p ## [](#p1)p(propertyName: String): String この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。 このトピックについての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

プロパティを識別する文字列。

### [](#例)例 次の例では、Logger コンポーネントでプロパティ ​`http.port`​ の値を記録します。 #### [](#ソース)ソース ```xml ``` # p ## [](#p1)p(propertyName: String): String この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。 このトピックについての詳細は、​[「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

プロパティを識別する文字列。

### [](#例)例 次の例では、Logger コンポーネントでプロパティ ​`http.port`​ の値を記録します。 #### [](#ソース)ソース ```xml ``` # p ## [](#p1)p(propertyName: String): String この関数は、Mule プロパティプレースホルダー、システムプロパティ、または環境変数のいずれかの入力プロパティの値を識別する文字列を返します。 このトピックについての詳細は、 [「プロパティの設定」](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)​を参照してください。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

プロパティを識別する文字列。

### [](#例)例 次の例では、Logger コンポーネントでプロパティ ​`http.port`​ の値を記録します。 #### [](#ソース)ソース ```xml ``` # parseURI ## [](#parseuri1)parseURI(String): URI URL を解析し、​`URI`​ オブジェクトを返します。 出力 ​`URI`​ オブジェクトの ​`isValid: Boolean`​ プロパティは、解析プロセスが成功したかどうかを示します。このオブジェクトのすべての項目は省略可能で、項目は URL 入力に存在する場合のみ出力に表示されます。 ### [](#パラメーター)パラメーター
名前 説明

​uri

URI 入力。

### [](#例)例 この例では、URL を解析します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { 'composition': parseURI('https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer') } ``` #### [](#出力)出力 ```JSON { "composition": { "isValid": true, "raw": "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer", "host": "en.wikipedia.org", "authority": "en.wikipedia.org", "fragment": "footer", "path": "/wiki/Uniform_Resource_Identifier", "scheme": "https", "isAbsolute": true, "isOpaque": false } } ``` # parseURI ## [](#parseuri1)parseURI(uri: String): URI URL を解析し、​`URI`​ オブジェクトを返します。 出力 ​`URI`​ オブジェクトの ​`isValid: Boolean`​ プロパティは、解析プロセスが成功したかどうかを示します。このオブジェクトのすべての項目は省略可能で、項目は URL 入力に存在する場合のみ出力に表示されます。 ### [](#パラメーター)パラメーター
名前 説明

​uri

URI 入力。

### [](#例)例 この例では、URL を解析します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { 'composition': parseURI('https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer') } ``` #### [](#出力)出力 ```JSON { "composition": { "isValid": true, "raw": "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer", "host": "en.wikipedia.org", "authority": "en.wikipedia.org", "fragment": "footer", "path": "/wiki/Uniform_Resource_Identifier", "scheme": "https", "isAbsolute": true, "isOpaque": false } } ``` # parseURI ## [](#parseuri1)parseURI(uri: String): URI URL を解析し、​`URI`​ オブジェクトを返します。 出力 ​`URI`​ オブジェクトの ​`isValid: Boolean`​ プロパティは、解析プロセスが成功したかどうかを示します。このオブジェクトのすべての項目は省略可能で、項目は URL 入力に存在する場合のみ出力に表示されます。 ### [](#パラメーター)パラメーター
名前 説明

uri

URI 入力。

### [](#例)例 この例では、URL を解析します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { 'composition': parseURI('https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer') } ``` #### [](#出力)出力 ```JSON { "composition": { "isValid": true, "raw": "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer", "host": "en.wikipedia.org", "authority": "en.wikipedia.org", "fragment": "footer", "path": "/wiki/Uniform_Resource_Identifier", "scheme": "https", "isAbsolute": true, "isOpaque": false } } ``` # parseURI ## [](#parseuri1)parseURI(uri: String): URI URL を解析し、​`URI`​ オブジェクトを返します。 出力 ​`URI`​ オブジェクトの ​`isValid: Boolean`​ プロパティは、解析プロセスが成功したかどうかを示します。このオブジェクトのすべての項目は省略可能で、項目は URL 入力に存在する場合のみ出力に表示されます。 ### [](#パラメーター)パラメーター
名前 説明

uri

URI 入力。

### [](#例)例 この例では、URL を解析します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { 'composition': parseURI('https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer') } ``` #### [](#出力)出力 ```JSON { "composition": { "isValid": true, "raw": "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer", "host": "en.wikipedia.org", "authority": "en.wikipedia.org", "fragment": "footer", "path": "/wiki/Uniform_Resource_Identifier", "scheme": "https", "isAbsolute": true, "isOpaque": false } } ``` # parseURI ## [](#parseuri1)parseURI(uri: String): URI URL を解析し、​`URI`​ オブジェクトを返します。 出力 ​`URI`​ オブジェクトの ​`isValid: Boolean`​ プロパティは、解析プロセスが成功したかどうかを示します。このオブジェクトのすべての項目は省略可能で、項目は URL 入力に存在する場合のみ出力に表示されます。 ### [](#パラメーター)パラメーター
名前 説明

uri

URI 入力。

### [](#例)例 この例では、URL を解析します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { 'composition': parseURI('https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer') } ``` #### [](#出力)出力 ```JSON { "composition": { "isValid": true, "raw": "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer", "host": "en.wikipedia.org", "authority": "en.wikipedia.org", "fragment": "footer", "path": "/wiki/Uniform_Resource_Identifier", "scheme": "https", "isAbsolute": true, "isOpaque": false } } ``` # parseURI ## [](#parseuri1)parseURI(uri: String): URI URL を解析し、​`URI`​ オブジェクトを返します。 出力 ​`URI`​ オブジェクトの ​`isValid: Boolean`​ プロパティは、解析プロセスが成功したかどうかを示します。このオブジェクトのすべての項目は省略可能で、項目は URL 入力に存在する場合のみ出力に表示されます。 ### [](#パラメーター)パラメーター
名前 説明

uri

URI 入力。

### [](#例)例 この例では、URL を解析します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::URL output application/json --- { 'composition': parseURI('https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer') } ``` #### [](#出力)出力 ```JSON { "composition": { "isValid": true, "raw": "https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#footer", "host": "en.wikipedia.org", "authority": "en.wikipedia.org", "fragment": "footer", "path": "/wiki/Uniform_Resource_Identifier", "scheme": "https", "isAbsolute": true, "isOpaque": false } } ``` # partition ## [](#partition1)partition(Array, (item: T) -> Boolean): { success: Array, failure: Array } 条件を満たす要素と条件を満たさない要素に配列を分割します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

分割する要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列内で見つかった数字を分割します。偶数は、ラムダ式 ​`(item) → isEven(item)`​ で設定された条件に一致します。奇数は一致しません。関数の出力オブジェクト内では ​`"success"`​ キーと ​`"failure"`​ キーが生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- arr partition (item) -> isEven(item) ``` #### [](#出力)出力 ```json { "success": [ 0, 2, 4 ], "failure": [ 1, 3, 5 ] } ``` # partition ## [](#partition1)partition(array: Array, condition: (item: T) -> Boolean): { success: Array, failure: Array } 条件を満たす要素と条件を満たさない要素に配列を分割します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

分割する要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列内で見つかった数字を分割します。偶数は、ラムダ式 ​`(item) → isEven(item)`​ で設定された条件に一致します。奇数は一致しません。関数の出力オブジェクト内では ​`"success"`​ キーと ​`"failure"`​ キーが生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- arr partition (item) -> isEven(item) ``` #### [](#出力)出力 ```json { "success": [ 0, 2, 4 ], "failure": [ 1, 3, 5 ] } ``` ## [](#partition2)partition(array: Null, condition: (item: Nothing) -> Any): Null `partition`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # partition ## [](#partition1)partition(array: Array, condition: (item: T) -> Boolean): { success: Array, failure: Array } 条件を満たす要素と条件を満たさない要素に配列を分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列内で見つかった数字を分割します。偶数は、ラムダ式 ​`(item) → isEven(item)`​ で設定された条件に一致します。奇数は一致しません。関数の出力オブジェクト内では ​`"success"`​ キーと ​`"failure"`​ キーが生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- arr partition (item) -> isEven(item) ``` #### [](#出力)出力 ```json { "success": [ 0, 2, 4 ], "failure": [ 1, 3, 5 ] } ``` ## [](#partition2)partition(array: Null, condition: (item: Nothing) -> Any): Null `partition`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # partition ## [](#partition1)partition(array: Array, condition: (item: T) -> Boolean): { success: Array, failure: Array } 条件を満たす要素と条件を満たさない要素に配列を分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列内で見つかった数字を分割します。偶数は、ラムダ式 ​`(item) → isEven(item)`​ で設定された条件に一致します。奇数は一致しません。関数の出力オブジェクト内では ​`"success"`​ キーと ​`"failure"`​ キーが生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- arr partition (item) -> isEven(item) ``` #### [](#出力)出力 ```json { "success": [ 0, 2, 4 ], "failure": [ 1, 3, 5 ] } ``` ## [](#partition2)partition(array: Null, condition: (item: Nothing) -> Any): Null `partition`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # partition ## [](#partition1)partition(array: Array, condition: (item: T) -> Boolean): { success: Array, failure: Array } 条件を満たす要素と条件を満たさない要素に配列を分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列内で見つかった数字を分割します。偶数は、ラムダ式 ​`(item) → isEven(item)`​ で設定された条件に一致します。奇数は一致しません。関数の出力オブジェクト内では ​`"success"`​ キーと ​`"failure"`​ キーが生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- arr partition (item) -> isEven(item) ``` #### [](#出力)出力 ```json { "success": [ 0, 2, 4 ], "failure": [ 1, 3, 5 ] } ``` ## [](#partition2)partition(array: Null, condition: (item: Nothing) -> Any): Null `partition`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # partition ## [](#partition1)partition(array: Array, condition: (item: T) -> Boolean): { success: Array, failure: Array } 条件を満たす要素と条件を満たさない要素に配列を分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、入力配列内で見つかった数字を分割します。偶数は、ラムダ式 ​`(item) → isEven(item)`​ で設定された条件に一致します。奇数は一致しません。関数の出力オブジェクト内では ​`"success"`​ キーと ​`"failure"`​ キーが生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- arr partition (item) -> isEven(item) ``` #### [](#出力)出力 ```json { "success": [ 0, 2, 4 ], "failure": [ 1, 3, 5 ] } ``` ## [](#partition2)partition(array: Null, condition: (item: Nothing) -> Any): Null `partition`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # period ## [](#period1)period(period: { years?: Number, months?: Number, days?: Number }​): Period ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​period

​{years:4, months:11, days:28}​ などのオブジェクト。キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"P0D"​ (0 日) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数で、正でも負でも問題ありません。小数値ではエラーメッセージが表示されます。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`period`​ の動作を示します。次の例では、DateTime (日時) 値および Date (日付) 値に対して ​`period`​ 関数の結果を減算および加算します。また、​`period`​ オブジェクトから Period (期間) 値を作成し、オブジェクトから ​`months`​ 値も選択します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Periods --- { dayBeforeDateTime: |2020-10-05T20:22:34.385Z| - period({days:1}), dayAfterDate: |2020-10-05| + period({days:1}), yearMonthDayAfterDate: |2020-10-05| + period({years:1, months:1, days:1}), emptyPeriod: period({}), constructPeriod: period({years:4, months:11, days:28}), selectMonthsFromPeriod: period({years:4, months:11, days:28}).months } ``` #### [](#出力)出力 ```Json { "dayBeforeDateTime": "2020-10-04T20:22:34.385Z", "dayAfterDate": "2020-10-06", "yearMonthDayAfterDate": "2021-11-06", "emptyPeriod": "P0D", "constructPeriod": "P4Y11M28D", "selectMonthsFromPeriod": 11 } ``` # period ## [](#period1)period(period: { years?: Number, months?: Number, days?: Number }): Period ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{years:4, months:11, days:28}​ などのオブジェクト。キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"P0D"​ (0 日) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数で、正でも負でも問題ありません。小数値ではエラーメッセージが表示されます。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`period`​ の動作を示します。次の例では、DateTime (日時) 値および Date (日付) 値に対して ​`period`​ 関数の結果を減算および加算します。また、​`period`​ オブジェクトから Period (期間) 値を作成し、オブジェクトから ​`months`​ 値も選択します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Periods --- { dayBeforeDateTime: |2020-10-05T20:22:34.385Z| - period({days:1}), dayAfterDate: |2020-10-05| + period({days:1}), yearMonthDayAfterDate: |2020-10-05| + period({years:1, months:1, days:1}), emptyPeriod: period({}), constructPeriod: period({years:4, months:11, days:28}), selectMonthsFromPeriod: period({years:4, months:11, days:28}).months } ``` #### [](#出力)出力 ```Json { "dayBeforeDateTime": "2020-10-04T20:22:34.385Z", "dayAfterDate": "2020-10-06", "yearMonthDayAfterDate": "2021-11-06", "emptyPeriod": "P0D", "constructPeriod": "P4Y11M28D", "selectMonthsFromPeriod": 11 } ``` # period ## [](#period1)period(period: { years?: Number, months?: Number, days?: Number }): Period ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{years:4, months:11, days:28}​ などのオブジェクト。キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"P0D"​ (0 日) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数で、正でも負でも問題ありません。小数値ではエラーメッセージが表示されます。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`period`​ の動作を示します。次の例では、DateTime (日時) 値および Date (日付) 値に対して ​`period`​ 関数の結果を減算および加算します。また、​`period`​ オブジェクトから Period (期間) 値を作成し、オブジェクトから ​`months`​ 値も選択します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Periods --- { dayBeforeDateTime: |2020-10-05T20:22:34.385Z| - period({days:1}), dayAfterDate: |2020-10-05| + period({days:1}), yearMonthDayAfterDate: |2020-10-05| + period({years:1, months:1, days:1}), emptyPeriod: period({}), constructPeriod: period({years:4, months:11, days:28}), selectMonthsFromPeriod: period({years:4, months:11, days:28}).months } ``` #### [](#出力)出力 ```Json { "dayBeforeDateTime": "2020-10-04T20:22:34.385Z", "dayAfterDate": "2020-10-06", "yearMonthDayAfterDate": "2021-11-06", "emptyPeriod": "P0D", "constructPeriod": "P4Y11M28D", "selectMonthsFromPeriod": 11 } ``` # period ## [](#period1)period(period: { years?: Number, months?: Number, days?: Number }): Period ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{years:4, months:11, days:28}​ などのオブジェクト。キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"P0D"​ (0 日) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数で、正でも負でも問題ありません。小数値ではエラーメッセージが表示されます。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`period`​ の動作を示します。次の例では、DateTime (日時) 値および Date (日付) 値に対して ​`period`​ 関数の結果を減算および加算します。また、​`period`​ オブジェクトから Period (期間) 値を作成し、オブジェクトから ​`months`​ 値も選択します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Periods --- { dayBeforeDateTime: |2020-10-05T20:22:34.385Z| - period({days:1}), dayAfterDate: |2020-10-05| + period({days:1}), yearMonthDayAfterDate: |2020-10-05| + period({years:1, months:1, days:1}), emptyPeriod: period({}), constructPeriod: period({years:4, months:11, days:28}), selectMonthsFromPeriod: period({years:4, months:11, days:28}).months } ``` #### [](#出力)出力 ```Json { "dayBeforeDateTime": "2020-10-04T20:22:34.385Z", "dayAfterDate": "2020-10-06", "yearMonthDayAfterDate": "2021-11-06", "emptyPeriod": "P0D", "constructPeriod": "P4Y11M28D", "selectMonthsFromPeriod": 11 } ``` # period ## [](#period1)period(period: { years?: Number, months?: Number, days?: Number }): Period ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

period

{years:4, months:11, days:28}​ などのオブジェクト。キー-値のペアは省略可能であり、任意の順序で指定できます。空のオブジェクト (​{}​) では、Period (期間) 値 ​"P0D"​ (0 日) を返します。各キーのデフォルト値は ​0​ です。有効な値は整数で、正でも負でも問題ありません。小数値ではエラーメッセージが表示されます。キー名は選択可能です。

### [](#例)例 次の例では、さまざまな入力での ​`period`​ の動作を示します。次の例では、DateTime (日時) 値および Date (日付) 値に対して ​`period`​ 関数の結果を減算および加算します。また、​`period`​ オブジェクトから Period (期間) 値を作成し、オブジェクトから ​`months`​ 値も選択します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json import * from dw::core::Periods --- { dayBeforeDateTime: |2020-10-05T20:22:34.385Z| - period({days:1}), dayAfterDate: |2020-10-05| + period({days:1}), yearMonthDayAfterDate: |2020-10-05| + period({years:1, months:1, days:1}), emptyPeriod: period({}), constructPeriod: period({years:4, months:11, days:28}), selectMonthsFromPeriod: period({years:4, months:11, days:28}).months } ``` #### [](#出力)出力 ```Json { "dayBeforeDateTime": "2020-10-04T20:22:34.385Z", "dayAfterDate": "2020-10-06", "yearMonthDayAfterDate": "2021-11-06", "emptyPeriod": "P0D", "constructPeriod": "P4Y11M28D", "selectMonthsFromPeriod": 11 } ``` # Periods (dw::core::Periods) このモジュールには、Period (期間) 値を操作して作成するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Periods`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​between

2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。

​days

指定された日数から Period (期間) 値を作成します。

​duration

日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。

​hours

指定された時間数から Period (期間) 値を作成します。

​minutes

指定された分数から Period (期間) 値を作成します。

​months

指定された月数から Period (期間) 値を作成します。

​period

ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。

​seconds

指定された秒数から Period (期間) 値を作成します。

​years

指定された年数から Period (期間) 値を作成します。

# Periods (dw::core::Periods) このモジュールには、Period (期間) 値を操作して作成するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Periods`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

between

2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。

days

指定された日数から Period (期間) 値を作成します。

duration

日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。

hours

指定された時間数から Period (期間) 値を作成します。

minutes

指定された分数から Period (期間) 値を作成します。

months

指定された月数から Period (期間) 値を作成します。

period

ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。

seconds

指定された秒数から Period (期間) 値を作成します。

years

指定された年数から Period (期間) 値を作成します。

# Periods (dw::core::Periods) このモジュールには、Period (期間) 値を操作して作成するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Periods`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

between

2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。

days

指定された日数から Period (期間) 値を作成します。

duration

日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。

hours

指定された時間数から Period (期間) 値を作成します。

minutes

指定された分数から Period (期間) 値を作成します。

months

指定された月数から Period (期間) 値を作成します。

period

ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。

seconds

指定された秒数から Period (期間) 値を作成します。

years

指定された年数から Period (期間) 値を作成します。

# Periods (dw::core::Periods) このモジュールには、Period (期間) 値を操作して作成するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Periods`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

between

2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。

days

指定された日数から Period (期間) 値を作成します。

duration

日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。

hours

指定された時間数から Period (期間) 値を作成します。

minutes

指定された分数から Period (期間) 値を作成します。

months

指定された月数から Period (期間) 値を作成します。

period

ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。

seconds

指定された秒数から Period (期間) 値を作成します。

years

指定された年数から Period (期間) 値を作成します。

# Periods (dw::core::Periods) このモジュールには、Period (期間) 値を操作して作成するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Periods`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

between

2 つの Date (日付) 値間の年数、月数、日数で構成される Period (期間) (P) 値を返します。

days

指定された日数から Period (期間) 値を作成します。

duration

日数、時間数、分数、または秒数を表す Period (期間) 値を作成します。

hours

指定された時間数から Period (期間) 値を作成します。

minutes

指定された分数から Period (期間) 値を作成します。

months

指定された月数から Period (期間) 値を作成します。

period

ISO-8601 カレンダーシステムの日付ベースの年数、月数、日数として Period (期間) 値を作成します。

seconds

指定された秒数から Period (期間) 値を作成します。

years

指定された年数から Period (期間) 値を作成します。

# pluck ## [](#pluck1)pluck(​{ (K)?: V }, (value: V, key: K, index: Number) -> R): Array 1 つのオブジェクトを配列にマップする場合に便利です。​`pluck`​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。 これは、配列ではなくオブジェクトを返す 類似の ​`mapObject`​ の代替となります。 ### [](#パラメーター)パラメーター
名前 説明

​object

マップするオブジェクト。

​mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

### [](#例)例 次の例では、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して ​`{ "a":"b","c":"d"}`​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 ​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ ​`mapObject`​ を使用するほぼ同じ例とは異なり、​`pluck`​ は出力を配列として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON [ { "0": { "b": "a" } }, { "1": { "d": "c" } } ] ``` ### [](#例-2)例 次の例では ​`pluck`​ を使用して、​``​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらを取得します。値を数値に変換するのに ​`as Number`​ が使用されています。それ以外の場合、文字列として返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var readXml = read(" 9.99 53.00 398.99 ", "application/xml") --- "result" : { "keys" : readXml.prices pluck($$), "values" : readXml.prices pluck($) as Number, "indices" : readXml.prices pluck($$$) } ``` #### [](#出力-2)出力 ```JSON { "result": { "keys": [ "basic", "premium", "vip" ], "values": [ 9.99, 53, 398.99 ], "indices": [ 0, 1, 2 ] } } ``` ## [](#pluck2)pluck(Null, (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `pluck`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluck ## [](#pluck1)pluck(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> R): Array 1 つのオブジェクトを配列にマップする場合に便利です。​`pluck`​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。 これは、配列ではなくオブジェクトを返す 類似の ​`mapObject`​ の代替となります。 ### [](#パラメーター)パラメーター
名前 説明

​object

マップするオブジェクト。

​mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

### [](#例)例 次の例では、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して ​`{ "a":"b","c":"d"}`​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。 ​`mapObject`​ を使用するほぼ同じ例とは異なり、​`pluck`​ は出力を配列として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON [ { "0": { "b": "a" } }, { "1": { "d": "c" } } ] ``` ### [](#例-2)例 次の例では ​`pluck`​ を使用して、​``​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらを取得します。値を数値に変換するのに ​`as Number`​ が使用されています。それ以外の場合、文字列として返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var readXml = read(" 9.99 53.00 398.99 ", "application/xml") --- "result" : { "keys" : readXml.prices pluck($$), "values" : readXml.prices pluck($) as Number, "indices" : readXml.prices pluck($$$) } ``` #### [](#出力-2)出力 ```JSON { "result": { "keys": [ "basic", "premium", "vip" ], "values": [ 9.99, 53, 398.99 ], "indices": [ 0, 1, 2 ] } } ``` ## [](#pluck2)pluck(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `pluck`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluck ## [](#pluck1)pluck(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> R): Array 1 つのオブジェクトを配列にマップする場合に便利です。​`pluck`​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。 これは、配列ではなくオブジェクトを返す 類似の ​`mapObject`​ の代替となります。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

### [](#例)例 次の例では、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して ​`{ "a":"b","c":"d"}`​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。​`mapObject`​ を使用するほぼ同じ例とは異なり、​`pluck`​ は出力を配列として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON [ { "0": { "b": "a" } }, { "1": { "d": "c" } } ] ``` ### [](#例-2)例 次の例では ​`pluck`​ を使用して、​``​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらをキャプチャします。値を数値に変換するのに ​`as Number`​ が使用されています。それ以外の場合、文字列として返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var readXml = read(" 9.99 53.00 398.99 ", "application/xml") --- "result" : { "keys" : readXml.prices pluck($$), "values" : readXml.prices pluck($) as Number, "indices" : readXml.prices pluck($$$) } ``` #### [](#出力-2)出力 ```JSON { "result": { "keys": [ "basic", "premium", "vip" ], "values": [ 9.99, 53, 398.99 ], "indices": [ 0, 1, 2 ] } } ``` ## [](#pluck2)pluck(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `pluck`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluck ## [](#pluck1)pluck(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> R): Array 1 つのオブジェクトを配列にマップする場合に便利です。​`pluck`​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。 これは、配列ではなくオブジェクトを返す 類似の ​`mapObject`​ の代替となります。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

### [](#例)例 次の例では、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して ​`{ "a":"b","c":"d"}`​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。​`mapObject`​ を使用するほぼ同じ例とは異なり、​`pluck`​ は出力を配列として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON [ { "0": { "b": "a" } }, { "1": { "d": "c" } } ] ``` ### [](#例-2)例 次の例では ​`pluck`​ を使用して、​``​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらをキャプチャします。値を数値に変換するのに ​`as Number`​ が使用されています。それ以外の場合、文字列として返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var readXml = read(" 9.99 53.00 398.99 ", "application/xml") --- "result" : { "keys" : readXml.prices pluck($$), "values" : readXml.prices pluck($) as Number, "indices" : readXml.prices pluck($$$) } ``` #### [](#出力-2)出力 ```JSON { "result": { "keys": [ "basic", "premium", "vip" ], "values": [ 9.99, 53, 398.99 ], "indices": [ 0, 1, 2 ] } } ``` ## [](#pluck2)pluck(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `pluck`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluck ## [](#pluck1)pluck(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> R): Array 1 つのオブジェクトを配列にマップする場合に便利です。​`pluck`​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。 これは、配列ではなくオブジェクトを返す 類似の ​`mapObject`​ の代替となります。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

### [](#例)例 次の例では、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して ​`{ "a":"b","c":"d"}`​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。​`mapObject`​ を使用するほぼ同じ例とは異なり、​`pluck`​ は出力を配列として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON [ { "0": { "b": "a" } }, { "1": { "d": "c" } } ] ``` ### [](#例-2)例 次の例では ​`pluck`​ を使用して、​``​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらをキャプチャします。値を数値に変換するのに ​`as Number`​ が使用されています。それ以外の場合、文字列として返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var readXml = read(" 9.99 53.00 398.99 ", "application/xml") --- "result" : { "keys" : readXml.prices pluck($$), "values" : readXml.prices pluck($) as Number, "indices" : readXml.prices pluck($$$) } ``` #### [](#出力-2)出力 ```JSON { "result": { "keys": [ "basic", "premium", "vip" ], "values": [ 9.99, 53, 398.99 ], "indices": [ 0, 1, 2 ] } } ``` ## [](#pluck2)pluck(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `pluck`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluck ## [](#pluck1)pluck(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> R): Array 1 つのオブジェクトを配列にマップする場合に便利です。​`pluck`​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。 これは、配列ではなくオブジェクトを返す 類似の ​`mapObject`​ の代替となります。 ### [](#パラメーター)パラメーター
名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

### [](#例)例 次の例では、匿名マッパー関数 (​`(value,key,index) → { (index) : { (value):key} }`​) を使用して ​`{ "a":"b","c":"d"}`​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​`{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }`​ のように、匿名パラメーターを使用して同じ式を記述することができます。​`mapObject`​ を使用するほぼ同じ例とは異なり、​`pluck`​ は出力を配列として返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- {"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} } ``` #### [](#出力)出力 ```JSON [ { "0": { "b": "a" } }, { "1": { "d": "c" } } ] ``` ### [](#例-2)例 次の例では ​`pluck`​ を使用して、​``​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらを取得します。値を数値に変換するのに ​`as Number`​ が使用されています。それ以外の場合、文字列として返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var readXml = read(" 9.99 53.00 398.99 ", "application/xml") --- "result" : { "keys" : readXml.prices pluck($$), "values" : readXml.prices pluck($) as Number, "indices" : readXml.prices pluck($$$) } ``` #### [](#出力-2)出力 ```JSON { "result": { "keys": [ "basic", "premium", "vip" ], "values": [ 9.99, 53, 398.99 ], "indices": [ 0, 1, 2 ] } } ``` ## [](#pluck2)pluck(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null `pluck`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # `Pluck`​ 関数を使用したキー-値ペアの抽出 キー-値ペアを操作する DataWeave 関数 (​[entriesOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-entriesof)​、​[keysOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-keysof)​、​[valuesOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-valuesof)​ など) に加えて、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-pluck)​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​`pluck`​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。 Mule アプリケーションは次のコンポーネントで構成されます。 - フローをトリガーする Scheduler コンポーネント - JSON ペイロードを設定する Set Payload コンポーネント - `pluck`​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント - 配列を反復処理する For Each スコープコンポーネント - 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント - 反復ごとに変数結果を出力する Logger コンポーネント ![Studio キャンバスでの Mule アプリケーションフローの例](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-cookbook-pluck-examples.png) アプリケーション XML ファイル (読みやすいように再書式設定): ```xml { Test:{ Key: key, Value: value } }]]> ``` Transform Message では次の DataWeave スクリプトを設定します。 ```dataweave %dw 2.0 output application/json --- payload pluck (value,key) -> { Test: { Key: key, Value: value } } ``` Mule アプリケーションが次の JSON ペイロードを使用して実行される場合: ```json { "firstName": "jason", "job": "engineer", "dept":"support" } ``` DataWeave の変換結果は次のようになります。 ```json [ { "Test": { "Key": "firstName", "Value": "jason" } }, { "Test": { "Key": "job", "Value": "engineer" } }, { "Test": { "Key": "dept", "Value": "support" } } ] ``` For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。 INFO 2022-06-22 10:11:17,864 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "firstName", "Value": "jason" } INFO 2022-06-22 10:11:17,870 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "jason" INFO 2022-06-22 10:11:17,871 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "job", "Value": "engineer" } INFO 2022-06-22 10:11:17,875 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "engineer" INFO 2022-06-22 10:11:17,877 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "dept", "Value": "support" } INFO 2022-06-22 10:11:17,879 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "support" ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # `Pluck`​ 関数を使用したキー-値ペアの抽出 キー-値ペアを操作する DataWeave 関数 (​[entriesOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-entriesof)​、​[keysOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-keysof)​、​[valuesOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-valuesof)​ など) に加えて、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-pluck)​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​`pluck`​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。 Mule アプリケーションは次のコンポーネントで構成されます。 - フローをトリガーする Scheduler コンポーネント - JSON ペイロードを設定する Set Payload コンポーネント - `pluck`​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント - 配列を反復処理する For Each スコープコンポーネント - 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント - 反復ごとに変数結果を出力する Logger コンポーネント ![Studio キャンバスでの Mule アプリケーションフローの例](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-cookbook-pluck-examples.png) アプリケーション XML ファイル (読みやすいように再書式設定): ```xml { Test:{ Key: key, Value: value } }]]> ``` Transform Message では次の DataWeave スクリプトを設定します。 ```dataweave %dw 2.0 output application/json --- payload pluck (value,key) -> { Test: { Key: key, Value: value } } ``` Mule アプリケーションが次の JSON ペイロードを使用して実行される場合: ```json { "firstName": "jason", "job": "engineer", "dept":"support" } ``` DataWeave の変換結果は次のようになります。 ```json [ { "Test": { "Key": "firstName", "Value": "jason" } }, { "Test": { "Key": "job", "Value": "engineer" } }, { "Test": { "Key": "dept", "Value": "support" } } ] ``` For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。 INFO 2022-06-22 10:11:17,864 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "firstName", "Value": "jason" } INFO 2022-06-22 10:11:17,870 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "jason" INFO 2022-06-22 10:11:17,871 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "job", "Value": "engineer" } INFO 2022-06-22 10:11:17,875 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "engineer" INFO 2022-06-22 10:11:17,877 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "dept", "Value": "support" } INFO 2022-06-22 10:11:17,879 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "support" ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # `Pluck`​ 関数を使用したキー-値ペアの抽出 キー-値ペアを操作する DataWeave 関数 (​[entriesOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-entriesof)​、​[keysOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-keysof)​、​[valuesOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-valuesof)​ など) に加えて、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-pluck)​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​`pluck`​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。 Mule アプリケーションは次のコンポーネントで構成されます。 - フローをトリガーする Scheduler コンポーネント - JSON ペイロードを設定する Set Payload コンポーネント - `pluck`​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント - 配列を反復処理する For Each スコープコンポーネント - 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント - 反復ごとに変数結果を出力する Logger コンポーネント ![Studio キャンバスでの Mule アプリケーションフローの例](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-cookbook-pluck-examples.png) アプリケーション XML ファイル (読みやすいように再書式設定): ```xml { Test:{ Key: key, Value: value } }]]> ``` Transform Message では次の DataWeave スクリプトを設定します。 ```dataweave %dw 2.0 output application/json --- payload pluck (value,key) -> { Test: { Key: key, Value: value } } ``` Mule アプリケーションが次の JSON ペイロードを使用して実行される場合: ```json { "firstName": "jason", "job": "engineer", "dept":"support" } ``` DataWeave の変換結果は次のようになります。 ```json [ { "Test": { "Key": "firstName", "Value": "jason" } }, { "Test": { "Key": "job", "Value": "engineer" } }, { "Test": { "Key": "dept", "Value": "support" } } ] ``` For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。 INFO 2022-06-22 10:11:17,864 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "firstName", "Value": "jason" } INFO 2022-06-22 10:11:17,870 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "jason" INFO 2022-06-22 10:11:17,871 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "job", "Value": "engineer" } INFO 2022-06-22 10:11:17,875 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "engineer" INFO 2022-06-22 10:11:17,877 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "dept", "Value": "support" } INFO 2022-06-22 10:11:17,879 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "support" ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # `Pluck`​ 関数を使用したキー-値ペアの抽出 キー-値ペアを操作する DataWeave 関数 (​[entriesOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-entriesof)​、​[keysOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-keysof)​、​[valuesOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-valuesof)​ など) に加えて、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-pluck)​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​`pluck`​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。 Mule アプリケーションは次のコンポーネントで構成されます。 - フローをトリガーする Scheduler コンポーネント - JSON ペイロードを設定する Set Payload コンポーネント - `pluck`​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント - 配列を反復処理する For Each スコープコンポーネント - 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント - 反復ごとに変数結果を出力する Logger コンポーネント ![Studio キャンバスでの Mule アプリケーションフローの例](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-cookbook-pluck-examples.png) アプリケーション XML ファイル (読みやすいように再書式設定): ```xml { Test:{ Key: key, Value: value } }]]> ``` Transform Message では次の DataWeave スクリプトを設定します。 ```dataweave %dw 2.0 output application/json --- payload pluck (value,key) -> { Test: { Key: key, Value: value } } ``` Mule アプリケーションが次の JSON ペイロードを使用して実行される場合: ```json { "firstName": "jason", "job": "engineer", "dept":"support" } ``` DataWeave の変換結果は次のようになります。 ```json [ { "Test": { "Key": "firstName", "Value": "jason" } }, { "Test": { "Key": "job", "Value": "engineer" } }, { "Test": { "Key": "dept", "Value": "support" } } ] ``` For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。 INFO 2022-06-22 10:11:17,864 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "firstName", "Value": "jason" } INFO 2022-06-22 10:11:17,870 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "jason" INFO 2022-06-22 10:11:17,871 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "job", "Value": "engineer" } INFO 2022-06-22 10:11:17,875 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "engineer" INFO 2022-06-22 10:11:17,877 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "dept", "Value": "support" } INFO 2022-06-22 10:11:17,879 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "support" ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # `Pluck`​ 関数を使用したキー-値ペアの抽出 キー-値ペアを操作する DataWeave 関数 (​[entriesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-entriesof)​、​[keysOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-keysof)​、​[valuesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-valuesof)​ など) に加えて、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-pluck)​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​`pluck`​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。 Mule アプリケーションは次のコンポーネントで構成されます。 - フローをトリガーする Scheduler コンポーネント - JSON ペイロードを設定する Set Payload コンポーネント - `pluck`​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント - 配列を反復処理する For Each スコープコンポーネント - 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント - 反復ごとに変数結果を出力する Logger コンポーネント ![Studio キャンバスでの Mule アプリケーションフローの例](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-cookbook-pluck-examples.png) アプリケーション XML ファイル (読みやすいように再書式設定): ```xml { Test:{ Key: key, Value: value } }]]> ``` Transform Message では次の DataWeave スクリプトを設定します。 ```dataweave %dw 2.0 output application/json --- payload pluck (value,key) -> { Test: { Key: key, Value: value } } ``` Mule アプリケーションが次の JSON ペイロードを使用して実行される場合: ```json { "firstName": "jason", "job": "engineer", "dept":"support" } ``` DataWeave の変換結果は次のようになります。 ```json [ { "Test": { "Key": "firstName", "Value": "jason" } }, { "Test": { "Key": "job", "Value": "engineer" } }, { "Test": { "Key": "dept", "Value": "support" } } ] ``` For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。 INFO 2022-06-22 10:11:17,864 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "firstName", "Value": "jason" } INFO 2022-06-22 10:11:17,870 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "jason" INFO 2022-06-22 10:11:17,871 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "job", "Value": "engineer" } INFO 2022-06-22 10:11:17,875 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "engineer" INFO 2022-06-22 10:11:17,877 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "Key": "dept", "Value": "support" } INFO 2022-06-22 10:11:17,879 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\] \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "support" ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # pluralize ## [](#pluralize1)pluralize(String): String 単数形の文字列を複数形にします。 入力がすでに複数形 (「boxes」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

複数形にする文字列。

### [](#例)例 次の例では、入力文字列「box」を複数形にして「boxes」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "pluralize" : pluralize("box") } ``` #### [](#出力)出力 ```JSON { "pluralize" : "boxes" } ``` ## [](#pluralize2)pluralize(Null): Null `pluralize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluralize ## [](#pluralize1)pluralize(text: String): String 単数形の文字列を複数形にします。 入力がすでに複数形 (「boxes」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

複数形にする文字列。

### [](#例)例 次の例では、入力文字列「box」を複数形にして「boxes」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "pluralize" : pluralize("box") } ``` #### [](#出力)出力 ```JSON { "pluralize" : "boxes" } ``` ## [](#pluralize2)pluralize(text: Null): Null `pluralize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluralize ## [](#pluralize1)pluralize(text: String): String 単数形の文字列を複数形にします。 入力がすでに複数形 (「boxes」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

複数形にする文字列。

### [](#例)例 次の例では、入力文字列「box」を複数形にして「boxes」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "pluralize" : pluralize("box") } ``` #### [](#出力)出力 ```JSON { "pluralize" : "boxes" } ``` ## [](#pluralize2)pluralize(text: Null): Null `pluralize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluralize ## [](#pluralize1)pluralize(text: String): String 単数形の文字列を複数形にします。 入力がすでに複数形 (「boxes」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

複数形にする文字列。

### [](#例)例 次の例では、入力文字列「box」を複数形にして「boxes」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "pluralize" : pluralize("box") } ``` #### [](#出力)出力 ```JSON { "pluralize" : "boxes" } ``` ## [](#pluralize2)pluralize(text: Null): Null `pluralize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluralize ## [](#pluralize1)pluralize(text: String): String 単数形の文字列を複数形にします。 入力がすでに複数形 (「boxes」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

複数形にする文字列。

### [](#例)例 次の例では、入力文字列「box」を複数形にして「boxes」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "pluralize" : pluralize("box") } ``` #### [](#出力)出力 ```JSON { "pluralize" : "boxes" } ``` ## [](#pluralize2)pluralize(text: Null): Null `pluralize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pluralize ## [](#pluralize1)pluralize(text: String): String 単数形の文字列を複数形にします。 入力がすでに複数形 (「boxes」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

複数形にする文字列。

### [](#例)例 次の例では、入力文字列「box」を複数形にして「boxes」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "pluralize" : pluralize("box") } ``` #### [](#出力)出力 ```JSON { "pluralize" : "boxes" } ``` ## [](#pluralize2)pluralize(text: Null): Null `pluralize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # pow ## [](#pow1)pow(Number, Number): Number `base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 ### [](#パラメーター)パラメーター
名前 説明

​base

基数となる数値 (​Number​ (数値) 型)。

​power

指数となる数値 (​Number​ (数値) 型)。

### [](#例)例 次の例では、​`base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 `pow(base,power)`​ 表記を使用することもできます (たとえば、​`pow(2,3)`​ では ​`8`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (2 pow 3), (3 pow 2), (7 pow 3) ] ``` #### [](#出力)出力 ```JSON [ 8, 9, 343 ] ``` # pow ## [](#pow1)pow(base: Number, power: Number): Number `base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 ### [](#パラメーター)パラメーター
名前 説明

​base

基数となる数値 (​Number​ (数値) 型)。

​power

指数となる数値 (​Number​ (数値) 型)。

### [](#例)例 次の例では、​`base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 `pow(base,power)`​ 表記を使用することもできます (たとえば、​`pow(2,3)`​ では ​`8`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (2 pow 3), (3 pow 2), (7 pow 3) ] ``` #### [](#出力)出力 ```JSON [ 8, 9, 343 ] ``` # pow ## [](#pow1)pow(base: Number, power: Number): Number `base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 ### [](#パラメーター)パラメーター
名前 説明

base

基数となる数値 (​Number​ (数値) 型)。

power

指数となる数値 (​Number​ (数値) 型)。

### [](#例)例 次の例では、​`base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 `pow(base,power)`​ 表記を使用することもできます (たとえば、​`pow(2,3)`​ では ​`8`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (2 pow 3), (3 pow 2), (7 pow 3) ] ``` #### [](#出力)出力 ```JSON [ 8, 9, 343 ] ``` # pow ## [](#pow1)pow(base: Number, power: Number): Number `base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 ### [](#パラメーター)パラメーター
名前 説明

base

基数となる数値 (​Number​ (数値) 型)。

power

指数となる数値 (​Number​ (数値) 型)。

### [](#例)例 次の例では、​`base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 `pow(base,power)`​ 表記を使用することもできます (たとえば、​`pow(2,3)`​ では ​`8`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (2 pow 3), (3 pow 2), (7 pow 3) ] ``` #### [](#出力)出力 ```JSON [ 8, 9, 343 ] ``` # pow ## [](#pow1)pow(base: Number, power: Number): Number `base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 ### [](#パラメーター)パラメーター
名前 説明

base

基数となる数値 (​Number​ (数値) 型)。

power

指数となる数値 (​Number​ (数値) 型)。

### [](#例)例 次の例では、​`base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 `pow(base,power)`​ 表記を使用することもできます (たとえば、​`pow(2,3)`​ では ​`8`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (2 pow 3), (3 pow 2), (7 pow 3) ] ``` #### [](#出力)出力 ```JSON [ 8, 9, 343 ] ``` # pow ## [](#pow1)pow(base: Number, power: Number): Number `base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 ### [](#パラメーター)パラメーター
名前 説明

base

基数となる数値 (​Number​ (数値) 型)。

power

指数となる数値 (​Number​ (数値) 型)。

### [](#例)例 次の例では、​`base`​ (基数) の数値を、指定された ​`power`​ (指数) で累乗します。 `pow(base,power)`​ 表記を使用することもできます (たとえば、​`pow(2,3)`​ では ​`8`​ を返します)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ (2 pow 3), (3 pow 2), (7 pow 3) ] ``` #### [](#出力)出力 ```JSON [ 8, 9, 343 ] ``` # prependIfMissing ## [](#prependifmissing1)prependIfMissing(String, String): String `text`​ が ​`prefix`​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​prefix

プレフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`prependIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import prependIfMissing from dw::core::Strings output application/json --- { "a": prependIfMissing(null, ""), "b": prependIfMissing("abc", ""), "c": prependIfMissing("", "xyz"), "d": prependIfMissing("abc", "xyz"), "e": prependIfMissing("xyzabc", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "xyzabc", "e": "xyzabc" } ``` ## [](#prependifmissing2)prependIfMissing(Null, String): Null `prependIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # prependIfMissing ## [](#prependifmissing1)prependIfMissing(text: String, prefix: String): String `text`​ が ​`prefix`​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​prefix

プレフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`prependIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import prependIfMissing from dw::core::Strings output application/json --- { "a": prependIfMissing(null, ""), "b": prependIfMissing("abc", ""), "c": prependIfMissing("", "xyz"), "d": prependIfMissing("abc", "xyz"), "e": prependIfMissing("xyzabc", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "xyzabc", "e": "xyzabc" } ``` ## [](#prependifmissing2)prependIfMissing(text: Null, prefix: String): Null `prependIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # prependIfMissing ## [](#prependifmissing1)prependIfMissing(text: String, prefix: String): String `text`​ が ​`prefix`​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`prependIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import prependIfMissing from dw::core::Strings output application/json --- { "a": prependIfMissing(null, ""), "b": prependIfMissing("abc", ""), "c": prependIfMissing("", "xyz"), "d": prependIfMissing("abc", "xyz"), "e": prependIfMissing("xyzabc", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "xyzabc", "e": "xyzabc" } ``` ## [](#prependifmissing2)prependIfMissing(text: Null, prefix: String): Null `prependIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # prependIfMissing ## [](#prependifmissing1)prependIfMissing(text: String, prefix: String): String `text`​ が ​`prefix`​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`prependIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import prependIfMissing from dw::core::Strings output application/json --- { "a": prependIfMissing(null, ""), "b": prependIfMissing("abc", ""), "c": prependIfMissing("", "xyz"), "d": prependIfMissing("abc", "xyz"), "e": prependIfMissing("xyzabc", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "xyzabc", "e": "xyzabc" } ``` ## [](#prependifmissing2)prependIfMissing(text: Null, prefix: String): Null `prependIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # prependIfMissing ## [](#prependifmissing1)prependIfMissing(text: String, prefix: String): String `text`​ が ​`prefix`​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`prependIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import prependIfMissing from dw::core::Strings output application/json --- { "a": prependIfMissing(null, ""), "b": prependIfMissing("abc", ""), "c": prependIfMissing("", "xyz"), "d": prependIfMissing("abc", "xyz"), "e": prependIfMissing("xyzabc", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "xyzabc", "e": "xyzabc" } ``` ## [](#prependifmissing2)prependIfMissing(text: Null, prefix: String): Null `prependIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # prependIfMissing ## [](#prependifmissing1)prependIfMissing(text: String, prefix: String): String `text`​ が ​`prefix`​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスとして使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`prependIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import prependIfMissing from dw::core::Strings output application/json --- { "a": prependIfMissing(null, ""), "b": prependIfMissing("abc", ""), "c": prependIfMissing("", "xyz"), "d": prependIfMissing("abc", "xyz"), "e": prependIfMissing("xyzabc", "xyz") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "abc", "c": "xyz", "d": "xyzabc", "e": "xyzabc" } ``` ## [](#prependifmissing2)prependIfMissing(text: Null, prefix: String): Null `prependIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # prop ## [](#prop1)prop(String): String | Null 指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​propertyName

取得するプロパティ。

### [](#例)例 次の例では、​`user.timezone`​ プロパティを取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : prop("user.timezone") } ``` #### [](#出力)出力 ```JSON { props: "America/Los_Angeles" as String {class: "java.lang.String"} } ``` # prop ## [](#prop1)prop(propertyName: String): String | Null 指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​propertyName

取得するプロパティ。

### [](#例)例 次の例では、​`user.timezone`​ プロパティを取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : prop("user.timezone") } ``` #### [](#出力)出力 ```JSON { props: "America/Los_Angeles" as String {class: "java.lang.String"} } ``` # prop ## [](#prop1)prop(propertyName: String): String | Null 指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

取得するプロパティ。

### [](#例)例 次の例では、​`user.timezone`​ プロパティを取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : prop("user.timezone") } ``` #### [](#出力)出力 ```JSON { props: "America/Los_Angeles" as String {class: "java.lang.String"} } ``` # prop ## [](#prop1)prop(propertyName: String): String | Null 指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

取得するプロパティ。

### [](#例)例 次の例では、​`user.timezone`​ プロパティを取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : prop("user.timezone") } ``` #### [](#出力)出力 ```JSON { props: "America/Los_Angeles" as String {class: "java.lang.String"} } ``` # prop ## [](#prop1)prop(propertyName: String): String | Null 指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

取得するプロパティ。

### [](#例)例 次の例では、​`user.timezone`​ プロパティを取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : prop("user.timezone") } ``` #### [](#出力)出力 ```JSON { props: "America/Los_Angeles" as String {class: "java.lang.String"} } ``` # prop ## [](#prop1)prop(propertyName: String): String | Null 指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​`null`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

propertyName

取得するプロパティ。

### [](#例)例 次の例では、​`user.timezone`​ プロパティを取得します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : prop("user.timezone") } ``` #### [](#出力)出力 ```JSON { props: "America/Los_Angeles" as String {class: "java.lang.String"} } ``` # props ## [](#props1)props(): Dictionary Mule Runtime に設定されたすべてのプロパティを返します。 ### [](#例)例 次の例では、​`java.util.Properties`​ クラスからのすべてのプロパティを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : props() } ``` #### [](#出力)出力 ```JSON { props: { "java.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, "sun.java.launcher": "SUN_STANDARD" as String {class: "java.lang.String"}, "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers" as String ..., * "os.name": "Mac OS X" as String {class: "java.lang.String"}, "sun.boot.class.path": "/Library/Java/JavaVirtualMachines/ ..., "org.glassfish.grizzly.nio.transport.TCPNIOTransport...": "1048576" ..., "java.vm.specification.vendor": "Oracle Corporation" as String ..., "java.runtime.version": "1.8.0_111-b14" as String {class: "java.lang.String"}, "wrapper.native_library": "wrapper" as String {class: "java.lang.String"}, "wrapper.key": "XlIl4YartmfEU3oKu7o81kNQbwhveXi-" as String ..., "user.name": "me" as String {class: "java.lang.String"}, "mvel2.disable.jit": "TRUE" as String {class: "java.lang.String"}, "user.language": "en" as String {class: "java.lang.String"} ..., "sun.boot.library.path": "/Library/Java/JavaVirtualMachines ... "xpath.provider": "com.mulesoft.licm.DefaultXPathProvider" ..., "wrapper.backend": "pipe" as String {class: "java.lang.String"}, "java.version": "1.8.0_111" as String {class: "java.lang.String"}, "user.timezone": "America/Los_Angeles" as String {class: "java.lang.String"}, "java.net.preferIPv4Stack": "TRUE" as String {class: "java.lang.String"}, "sun.arch.data.model": "64" as String {class: "java.lang.String"}, "java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/..., "sun.cpu.isalist": "" as String {class: "java.lang.String"}, "sun.jnu.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.testingMode": "" as String {class: "java.lang.String"}, "file.encoding.pkg": "sun.io" as String {class: "java.lang.String"}, "file.separator": "/" as String {class: "java.lang.String"}, "java.specification.name": "Java Platform API Specification" ..., "java.class.version": "52.0" as String {class: "java.lang.String"}, "jetty.git.hash": "82b8fb23f757335bb3329d540ce37a2a2615f0a8" ..., "user.country": "US" as String {class: "java.lang.String"}, "mule.agent.configuration.folder": "/Applications/AnypointStudio.app/ ..., "log4j.configurationFactory": "org.apache.logging.log4j.core...", "java.home": "/Library/Java/JavaVirtualMachines/..., "java.vm.info": "mixed mode" as String {class: "java.lang.String"}, "wrapper.version": "3.5.34-st" as String {class: "java.lang.String"}, "os.version": "10.13.4" as String {class: "java.lang.String"}, "org.eclipse.jetty.LEVEL": "WARN" as String {class: "java.lang.String"}, "path.separator": ":" as String {class: "java.lang.String"}, "java.vm.version": "25.111-b14" as String {class: "java.lang.String"}, "wrapper.pid": "5212" as String {class: "java.lang.String"}, "java.util.prefs.PreferencesFactory": "com.mulesoft.licm..."}, "wrapper.java.pid": "5213" as String {class: "java.lang.String"}, "mule.home": "/Applications/AnypointStudio.app/..., "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob" ..., "sun.io.unicode.encoding": "UnicodeBig" as String {class: "java.lang.String"}, "awt.toolkit": "sun.lwawt.macosx.LWCToolkit" ..., "org.glassfish.grizzly.nio.transport...": "1048576" ..., "user.home": "/Users/me" as String {class: "java.lang.String"}, "java.specification.vendor": "Oracle Corporation" ..., "java.library.path": "/Applications/AnypointStudio.app/..., "java.vendor.url": "http://java.oracle.com/" as String ..., "java.vm.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, gopherProxySet: "false" as String {class: "java.lang.String"}, "wrapper.jvmid": "1" as String {class: "java.lang.String"}, "java.runtime.name": "Java(TM) SE Runtime Environment" ..., "mule.encoding": "UTF-8" as String {class: "java.lang.String"}, "sun.java.command": "org.mule.runtime.module.reboot....", "java.class.path": "%MULE_LIB%:/Applications/AnypointStudio.app...", "log4j2.loggerContextFactory": "org.mule.runtime.module.launcher..., "java.vm.specification.name": "Java Virtual Machine Specification" , "java.vm.specification.version": "1.8" as String {class: "java.lang.String"}, "sun.cpu.endian": "little" as String {class: "java.lang.String"}, "sun.os.patch.level": "unknown" as String {class: "java.lang.String"}, "com.ning.http.client.AsyncHttpClientConfig.useProxyProperties": "true" ..., "wrapper.cpu.timeout": "10" as String {class: "java.lang.String"}, "java.io.tmpdir": "/var/folders/42/dd73l3rx7qz0n625hr29kty80000gn/T/" ..., "anypoint.platform.analytics_base_uri": ..., "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/" ..., "os.arch": "x86_64" as String {class: "java.lang.String"}, "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment" ..., "mule.base": "/Applications/AnypointStudio.app...", "java.ext.dirs": "/Users/staceyduke/Library/Java/Extensions: ..."}, "user.dir": "/Applications/AnypointStudio.app/..."}, "line.separator": "\n" as String {class: "java.lang.String"}, "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM" ..., "org.quartz.scheduler.skipUpdateCheck": "true" ..., "file.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.forceConsoleLog": "" as String {class: "java.lang.String"}, "java.specification.version": "1.8" as String {class: "java.lang.String"}, "wrapper.arch": "universal" as String {class: "java.lang.String"} } as Object {class: "java.util.Properties"} ``` # props ## [](#props1)props(): Dictionary 言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。 ### [](#例)例 次の例では、​`java.util.Properties`​ クラスからのすべてのプロパティを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : props() } ``` #### [](#出力)出力 ```JSON { props: { "java.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, "sun.java.launcher": "SUN_STANDARD" as String {class: "java.lang.String"}, "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers" as String ..., * "os.name": "Mac OS X" as String {class: "java.lang.String"}, "sun.boot.class.path": "/Library/Java/JavaVirtualMachines/ ..., "org.glassfish.grizzly.nio.transport.TCPNIOTransport...": "1048576" ..., "java.vm.specification.vendor": "Oracle Corporation" as String ..., "java.runtime.version": "1.8.0_111-b14" as String {class: "java.lang.String"}, "wrapper.native_library": "wrapper" as String {class: "java.lang.String"}, "wrapper.key": "XlIl4YartmfEU3oKu7o81kNQbwhveXi-" as String ..., "user.name": "me" as String {class: "java.lang.String"}, "mvel2.disable.jit": "TRUE" as String {class: "java.lang.String"}, "user.language": "en" as String {class: "java.lang.String"} ..., "sun.boot.library.path": "/Library/Java/JavaVirtualMachines ... "xpath.provider": "com.mulesoft.licm.DefaultXPathProvider" ..., "wrapper.backend": "pipe" as String {class: "java.lang.String"}, "java.version": "1.8.0_111" as String {class: "java.lang.String"}, "user.timezone": "America/Los_Angeles" as String {class: "java.lang.String"}, "java.net.preferIPv4Stack": "TRUE" as String {class: "java.lang.String"}, "sun.arch.data.model": "64" as String {class: "java.lang.String"}, "java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/..., "sun.cpu.isalist": "" as String {class: "java.lang.String"}, "sun.jnu.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.testingMode": "" as String {class: "java.lang.String"}, "file.encoding.pkg": "sun.io" as String {class: "java.lang.String"}, "file.separator": "/" as String {class: "java.lang.String"}, "java.specification.name": "Java Platform API Specification" ..., "java.class.version": "52.0" as String {class: "java.lang.String"}, "jetty.git.hash": "82b8fb23f757335bb3329d540ce37a2a2615f0a8" ..., "user.country": "US" as String {class: "java.lang.String"}, "mule.agent.configuration.folder": "/Applications/AnypointStudio.app/ ..., "log4j.configurationFactory": "org.apache.logging.log4j.core...", "java.home": "/Library/Java/JavaVirtualMachines/..., "java.vm.info": "mixed mode" as String {class: "java.lang.String"}, "wrapper.version": "3.5.34-st" as String {class: "java.lang.String"}, "os.version": "10.13.4" as String {class: "java.lang.String"}, "org.eclipse.jetty.LEVEL": "WARN" as String {class: "java.lang.String"}, "path.separator": ":" as String {class: "java.lang.String"}, "java.vm.version": "25.111-b14" as String {class: "java.lang.String"}, "wrapper.pid": "5212" as String {class: "java.lang.String"}, "java.util.prefs.PreferencesFactory": "com.mulesoft.licm..."}, "wrapper.java.pid": "5213" as String {class: "java.lang.String"}, "mule.home": "/Applications/AnypointStudio.app/..., "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob" ..., "sun.io.unicode.encoding": "UnicodeBig" as String {class: "java.lang.String"}, "awt.toolkit": "sun.lwawt.macosx.LWCToolkit" ..., "org.glassfish.grizzly.nio.transport...": "1048576" ..., "user.home": "/Users/me" as String {class: "java.lang.String"}, "java.specification.vendor": "Oracle Corporation" ..., "java.library.path": "/Applications/AnypointStudio.app/..., "java.vendor.url": "http://java.oracle.com/" as String ..., "java.vm.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, gopherProxySet: "false" as String {class: "java.lang.String"}, "wrapper.jvmid": "1" as String {class: "java.lang.String"}, "java.runtime.name": "Java(TM) SE Runtime Environment" ..., "mule.encoding": "UTF-8" as String {class: "java.lang.String"}, "sun.java.command": "org.mule.runtime.module.reboot....", "java.class.path": "%MULE_LIB%:/Applications/AnypointStudio.app...", "log4j2.loggerContextFactory": "org.mule.runtime.module.launcher..., "java.vm.specification.name": "Java Virtual Machine Specification" , "java.vm.specification.version": "1.8" as String {class: "java.lang.String"}, "sun.cpu.endian": "little" as String {class: "java.lang.String"}, "sun.os.patch.level": "unknown" as String {class: "java.lang.String"}, "com.ning.http.client.AsyncHttpClientConfig.useProxyProperties": "true" ..., "wrapper.cpu.timeout": "10" as String {class: "java.lang.String"}, "java.io.tmpdir": "/var/folders/42/dd73l3rx7qz0n625hr29kty80000gn/T/" ..., "anypoint.platform.analytics_base_uri": ..., "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/" ..., "os.arch": "x86_64" as String {class: "java.lang.String"}, "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment" ..., "mule.base": "/Applications/AnypointStudio.app...", "java.ext.dirs": "/Users/staceyduke/Library/Java/Extensions: ..."}, "user.dir": "/Applications/AnypointStudio.app/..."}, "line.separator": "\n" as String {class: "java.lang.String"}, "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM" ..., "org.quartz.scheduler.skipUpdateCheck": "true" ..., "file.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.forceConsoleLog": "" as String {class: "java.lang.String"}, "java.specification.version": "1.8" as String {class: "java.lang.String"}, "wrapper.arch": "universal" as String {class: "java.lang.String"} } as Object {class: "java.util.Properties"} ``` # props ## [](#props1)props(): Dictionary 言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。 ### [](#例)例 次の例では、​`java.util.Properties`​ クラスからのすべてのプロパティを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : props() } ``` #### [](#出力)出力 ```JSON { props: { "java.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, "sun.java.launcher": "SUN_STANDARD" as String {class: "java.lang.String"}, "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers" as String ..., * "os.name": "Mac OS X" as String {class: "java.lang.String"}, "sun.boot.class.path": "/Library/Java/JavaVirtualMachines/ ..., "org.glassfish.grizzly.nio.transport.TCPNIOTransport...": "1048576" ..., "java.vm.specification.vendor": "Oracle Corporation" as String ..., "java.runtime.version": "1.8.0_111-b14" as String {class: "java.lang.String"}, "wrapper.native_library": "wrapper" as String {class: "java.lang.String"}, "wrapper.key": "XlIl4YartmfEU3oKu7o81kNQbwhveXi-" as String ..., "user.name": "me" as String {class: "java.lang.String"}, "mvel2.disable.jit": "TRUE" as String {class: "java.lang.String"}, "user.language": "en" as String {class: "java.lang.String"} ..., "sun.boot.library.path": "/Library/Java/JavaVirtualMachines ... "xpath.provider": "com.mulesoft.licm.DefaultXPathProvider" ..., "wrapper.backend": "pipe" as String {class: "java.lang.String"}, "java.version": "1.8.0_111" as String {class: "java.lang.String"}, "user.timezone": "America/Los_Angeles" as String {class: "java.lang.String"}, "java.net.preferIPv4Stack": "TRUE" as String {class: "java.lang.String"}, "sun.arch.data.model": "64" as String {class: "java.lang.String"}, "java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/..., "sun.cpu.isalist": "" as String {class: "java.lang.String"}, "sun.jnu.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.testingMode": "" as String {class: "java.lang.String"}, "file.encoding.pkg": "sun.io" as String {class: "java.lang.String"}, "file.separator": "/" as String {class: "java.lang.String"}, "java.specification.name": "Java Platform API Specification" ..., "java.class.version": "52.0" as String {class: "java.lang.String"}, "jetty.git.hash": "82b8fb23f757335bb3329d540ce37a2a2615f0a8" ..., "user.country": "US" as String {class: "java.lang.String"}, "mule.agent.configuration.folder": "/Applications/AnypointStudio.app/ ..., "log4j.configurationFactory": "org.apache.logging.log4j.core...", "java.home": "/Library/Java/JavaVirtualMachines/..., "java.vm.info": "mixed mode" as String {class: "java.lang.String"}, "wrapper.version": "3.5.34-st" as String {class: "java.lang.String"}, "os.version": "10.13.4" as String {class: "java.lang.String"}, "org.eclipse.jetty.LEVEL": "WARN" as String {class: "java.lang.String"}, "path.separator": ":" as String {class: "java.lang.String"}, "java.vm.version": "25.111-b14" as String {class: "java.lang.String"}, "wrapper.pid": "5212" as String {class: "java.lang.String"}, "java.util.prefs.PreferencesFactory": "com.mulesoft.licm..."}, "wrapper.java.pid": "5213" as String {class: "java.lang.String"}, "mule.home": "/Applications/AnypointStudio.app/..., "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob" ..., "sun.io.unicode.encoding": "UnicodeBig" as String {class: "java.lang.String"}, "awt.toolkit": "sun.lwawt.macosx.LWCToolkit" ..., "org.glassfish.grizzly.nio.transport...": "1048576" ..., "user.home": "/Users/me" as String {class: "java.lang.String"}, "java.specification.vendor": "Oracle Corporation" ..., "java.library.path": "/Applications/AnypointStudio.app/..., "java.vendor.url": "http://java.oracle.com/" as String ..., "java.vm.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, gopherProxySet: "false" as String {class: "java.lang.String"}, "wrapper.jvmid": "1" as String {class: "java.lang.String"}, "java.runtime.name": "Java(TM) SE Runtime Environment" ..., "mule.encoding": "UTF-8" as String {class: "java.lang.String"}, "sun.java.command": "org.mule.runtime.module.reboot....", "java.class.path": "%MULE_LIB%:/Applications/AnypointStudio.app...", "log4j2.loggerContextFactory": "org.mule.runtime.module.launcher..., "java.vm.specification.name": "Java Virtual Machine Specification" , "java.vm.specification.version": "1.8" as String {class: "java.lang.String"}, "sun.cpu.endian": "little" as String {class: "java.lang.String"}, "sun.os.patch.level": "unknown" as String {class: "java.lang.String"}, "com.ning.http.client.AsyncHttpClientConfig.useProxyProperties": "true" ..., "wrapper.cpu.timeout": "10" as String {class: "java.lang.String"}, "java.io.tmpdir": "/var/folders/42/dd73l3rx7qz0n625hr29kty80000gn/T/" ..., "anypoint.platform.analytics_base_uri": ..., "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/" ..., "os.arch": "x86_64" as String {class: "java.lang.String"}, "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment" ..., "mule.base": "/Applications/AnypointStudio.app...", "java.ext.dirs": "/Users/staceyduke/Library/Java/Extensions: ..."}, "user.dir": "/Applications/AnypointStudio.app/..."}, "line.separator": "\n" as String {class: "java.lang.String"}, "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM" ..., "org.quartz.scheduler.skipUpdateCheck": "true" ..., "file.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.forceConsoleLog": "" as String {class: "java.lang.String"}, "java.specification.version": "1.8" as String {class: "java.lang.String"}, "wrapper.arch": "universal" as String {class: "java.lang.String"} } as Object {class: "java.util.Properties"} ``` # props ## [](#props1)props(): Dictionary 言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。 ### [](#例)例 次の例では、​`java.util.Properties`​ クラスからのすべてのプロパティを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : props() } ``` #### [](#出力)出力 ```JSON { props: { "java.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, "sun.java.launcher": "SUN_STANDARD" as String {class: "java.lang.String"}, "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers" as String ..., * "os.name": "Mac OS X" as String {class: "java.lang.String"}, "sun.boot.class.path": "/Library/Java/JavaVirtualMachines/ ..., "org.glassfish.grizzly.nio.transport.TCPNIOTransport...": "1048576" ..., "java.vm.specification.vendor": "Oracle Corporation" as String ..., "java.runtime.version": "1.8.0_111-b14" as String {class: "java.lang.String"}, "wrapper.native_library": "wrapper" as String {class: "java.lang.String"}, "wrapper.key": "XlIl4YartmfEU3oKu7o81kNQbwhveXi-" as String ..., "user.name": "me" as String {class: "java.lang.String"}, "mvel2.disable.jit": "TRUE" as String {class: "java.lang.String"}, "user.language": "en" as String {class: "java.lang.String"} ..., "sun.boot.library.path": "/Library/Java/JavaVirtualMachines ... "xpath.provider": "com.mulesoft.licm.DefaultXPathProvider" ..., "wrapper.backend": "pipe" as String {class: "java.lang.String"}, "java.version": "1.8.0_111" as String {class: "java.lang.String"}, "user.timezone": "America/Los_Angeles" as String {class: "java.lang.String"}, "java.net.preferIPv4Stack": "TRUE" as String {class: "java.lang.String"}, "sun.arch.data.model": "64" as String {class: "java.lang.String"}, "java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/..., "sun.cpu.isalist": "" as String {class: "java.lang.String"}, "sun.jnu.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.testingMode": "" as String {class: "java.lang.String"}, "file.encoding.pkg": "sun.io" as String {class: "java.lang.String"}, "file.separator": "/" as String {class: "java.lang.String"}, "java.specification.name": "Java Platform API Specification" ..., "java.class.version": "52.0" as String {class: "java.lang.String"}, "jetty.git.hash": "82b8fb23f757335bb3329d540ce37a2a2615f0a8" ..., "user.country": "US" as String {class: "java.lang.String"}, "mule.agent.configuration.folder": "/Applications/AnypointStudio.app/ ..., "log4j.configurationFactory": "org.apache.logging.log4j.core...", "java.home": "/Library/Java/JavaVirtualMachines/..., "java.vm.info": "mixed mode" as String {class: "java.lang.String"}, "wrapper.version": "3.5.34-st" as String {class: "java.lang.String"}, "os.version": "10.13.4" as String {class: "java.lang.String"}, "org.eclipse.jetty.LEVEL": "WARN" as String {class: "java.lang.String"}, "path.separator": ":" as String {class: "java.lang.String"}, "java.vm.version": "25.111-b14" as String {class: "java.lang.String"}, "wrapper.pid": "5212" as String {class: "java.lang.String"}, "java.util.prefs.PreferencesFactory": "com.mulesoft.licm..."}, "wrapper.java.pid": "5213" as String {class: "java.lang.String"}, "mule.home": "/Applications/AnypointStudio.app/..., "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob" ..., "sun.io.unicode.encoding": "UnicodeBig" as String {class: "java.lang.String"}, "awt.toolkit": "sun.lwawt.macosx.LWCToolkit" ..., "org.glassfish.grizzly.nio.transport...": "1048576" ..., "user.home": "/Users/me" as String {class: "java.lang.String"}, "java.specification.vendor": "Oracle Corporation" ..., "java.library.path": "/Applications/AnypointStudio.app/..., "java.vendor.url": "http://java.oracle.com/" as String ..., "java.vm.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, gopherProxySet: "false" as String {class: "java.lang.String"}, "wrapper.jvmid": "1" as String {class: "java.lang.String"}, "java.runtime.name": "Java(TM) SE Runtime Environment" ..., "mule.encoding": "UTF-8" as String {class: "java.lang.String"}, "sun.java.command": "org.mule.runtime.module.reboot....", "java.class.path": "%MULE_LIB%:/Applications/AnypointStudio.app...", "log4j2.loggerContextFactory": "org.mule.runtime.module.launcher..., "java.vm.specification.name": "Java Virtual Machine Specification" , "java.vm.specification.version": "1.8" as String {class: "java.lang.String"}, "sun.cpu.endian": "little" as String {class: "java.lang.String"}, "sun.os.patch.level": "unknown" as String {class: "java.lang.String"}, "com.ning.http.client.AsyncHttpClientConfig.useProxyProperties": "true" ..., "wrapper.cpu.timeout": "10" as String {class: "java.lang.String"}, "java.io.tmpdir": "/var/folders/42/dd73l3rx7qz0n625hr29kty80000gn/T/" ..., "anypoint.platform.analytics_base_uri": ..., "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/" ..., "os.arch": "x86_64" as String {class: "java.lang.String"}, "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment" ..., "mule.base": "/Applications/AnypointStudio.app...", "java.ext.dirs": "/Users/staceyduke/Library/Java/Extensions: ..."}, "user.dir": "/Applications/AnypointStudio.app/..."}, "line.separator": "\n" as String {class: "java.lang.String"}, "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM" ..., "org.quartz.scheduler.skipUpdateCheck": "true" ..., "file.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.forceConsoleLog": "" as String {class: "java.lang.String"}, "java.specification.version": "1.8" as String {class: "java.lang.String"}, "wrapper.arch": "universal" as String {class: "java.lang.String"} } as Object {class: "java.util.Properties"} ``` # props ## [](#props1)props(): Dictionary 言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。 ### [](#例)例 次の例では、​`java.util.Properties`​ クラスからのすべてのプロパティを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : props() } ``` #### [](#出力)出力 ```JSON { props: { "java.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, "sun.java.launcher": "SUN_STANDARD" as String {class: "java.lang.String"}, "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers" as String ..., * "os.name": "Mac OS X" as String {class: "java.lang.String"}, "sun.boot.class.path": "/Library/Java/JavaVirtualMachines/ ..., "org.glassfish.grizzly.nio.transport.TCPNIOTransport...": "1048576" ..., "java.vm.specification.vendor": "Oracle Corporation" as String ..., "java.runtime.version": "1.8.0_111-b14" as String {class: "java.lang.String"}, "wrapper.native_library": "wrapper" as String {class: "java.lang.String"}, "wrapper.key": "XlIl4YartmfEU3oKu7o81kNQbwhveXi-" as String ..., "user.name": "me" as String {class: "java.lang.String"}, "mvel2.disable.jit": "TRUE" as String {class: "java.lang.String"}, "user.language": "en" as String {class: "java.lang.String"} ..., "sun.boot.library.path": "/Library/Java/JavaVirtualMachines ... "xpath.provider": "com.mulesoft.licm.DefaultXPathProvider" ..., "wrapper.backend": "pipe" as String {class: "java.lang.String"}, "java.version": "1.8.0_111" as String {class: "java.lang.String"}, "user.timezone": "America/Los_Angeles" as String {class: "java.lang.String"}, "java.net.preferIPv4Stack": "TRUE" as String {class: "java.lang.String"}, "sun.arch.data.model": "64" as String {class: "java.lang.String"}, "java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/..., "sun.cpu.isalist": "" as String {class: "java.lang.String"}, "sun.jnu.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.testingMode": "" as String {class: "java.lang.String"}, "file.encoding.pkg": "sun.io" as String {class: "java.lang.String"}, "file.separator": "/" as String {class: "java.lang.String"}, "java.specification.name": "Java Platform API Specification" ..., "java.class.version": "52.0" as String {class: "java.lang.String"}, "jetty.git.hash": "82b8fb23f757335bb3329d540ce37a2a2615f0a8" ..., "user.country": "US" as String {class: "java.lang.String"}, "mule.agent.configuration.folder": "/Applications/AnypointStudio.app/ ..., "log4j.configurationFactory": "org.apache.logging.log4j.core...", "java.home": "/Library/Java/JavaVirtualMachines/..., "java.vm.info": "mixed mode" as String {class: "java.lang.String"}, "wrapper.version": "3.5.34-st" as String {class: "java.lang.String"}, "os.version": "10.13.4" as String {class: "java.lang.String"}, "org.eclipse.jetty.LEVEL": "WARN" as String {class: "java.lang.String"}, "path.separator": ":" as String {class: "java.lang.String"}, "java.vm.version": "25.111-b14" as String {class: "java.lang.String"}, "wrapper.pid": "5212" as String {class: "java.lang.String"}, "java.util.prefs.PreferencesFactory": "com.mulesoft.licm..."}, "wrapper.java.pid": "5213" as String {class: "java.lang.String"}, "mule.home": "/Applications/AnypointStudio.app/..., "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob" ..., "sun.io.unicode.encoding": "UnicodeBig" as String {class: "java.lang.String"}, "awt.toolkit": "sun.lwawt.macosx.LWCToolkit" ..., "org.glassfish.grizzly.nio.transport...": "1048576" ..., "user.home": "/Users/me" as String {class: "java.lang.String"}, "java.specification.vendor": "Oracle Corporation" ..., "java.library.path": "/Applications/AnypointStudio.app/..., "java.vendor.url": "http://java.oracle.com/" as String ..., "java.vm.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, gopherProxySet: "false" as String {class: "java.lang.String"}, "wrapper.jvmid": "1" as String {class: "java.lang.String"}, "java.runtime.name": "Java(TM) SE Runtime Environment" ..., "mule.encoding": "UTF-8" as String {class: "java.lang.String"}, "sun.java.command": "org.mule.runtime.module.reboot....", "java.class.path": "%MULE_LIB%:/Applications/AnypointStudio.app...", "log4j2.loggerContextFactory": "org.mule.runtime.module.launcher..., "java.vm.specification.name": "Java Virtual Machine Specification" , "java.vm.specification.version": "1.8" as String {class: "java.lang.String"}, "sun.cpu.endian": "little" as String {class: "java.lang.String"}, "sun.os.patch.level": "unknown" as String {class: "java.lang.String"}, "com.ning.http.client.AsyncHttpClientConfig.useProxyProperties": "true" ..., "wrapper.cpu.timeout": "10" as String {class: "java.lang.String"}, "java.io.tmpdir": "/var/folders/42/dd73l3rx7qz0n625hr29kty80000gn/T/" ..., "anypoint.platform.analytics_base_uri": ..., "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/" ..., "os.arch": "x86_64" as String {class: "java.lang.String"}, "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment" ..., "mule.base": "/Applications/AnypointStudio.app...", "java.ext.dirs": "/Users/staceyduke/Library/Java/Extensions: ..."}, "user.dir": "/Applications/AnypointStudio.app/..."}, "line.separator": "\n" as String {class: "java.lang.String"}, "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM" ..., "org.quartz.scheduler.skipUpdateCheck": "true" ..., "file.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.forceConsoleLog": "" as String {class: "java.lang.String"}, "java.specification.version": "1.8" as String {class: "java.lang.String"}, "wrapper.arch": "universal" as String {class: "java.lang.String"} } as Object {class: "java.util.Properties"} ``` # props ## [](#props1)props(): Dictionary 言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。 ### [](#例)例 次の例では、​`java.util.Properties`​ クラスからのすべてのプロパティを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw --- { "props" : props() } ``` #### [](#出力)出力 ```JSON { props: { "java.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, "sun.java.launcher": "SUN_STANDARD" as String {class: "java.lang.String"}, "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers" as String ..., * "os.name": "Mac OS X" as String {class: "java.lang.String"}, "sun.boot.class.path": "/Library/Java/JavaVirtualMachines/ ..., "org.glassfish.grizzly.nio.transport.TCPNIOTransport...": "1048576" ..., "java.vm.specification.vendor": "Oracle Corporation" as String ..., "java.runtime.version": "1.8.0_111-b14" as String {class: "java.lang.String"}, "wrapper.native_library": "wrapper" as String {class: "java.lang.String"}, "wrapper.key": "XlIl4YartmfEU3oKu7o81kNQbwhveXi-" as String ..., "user.name": "me" as String {class: "java.lang.String"}, "mvel2.disable.jit": "TRUE" as String {class: "java.lang.String"}, "user.language": "en" as String {class: "java.lang.String"} ..., "sun.boot.library.path": "/Library/Java/JavaVirtualMachines ... "xpath.provider": "com.mulesoft.licm.DefaultXPathProvider" ..., "wrapper.backend": "pipe" as String {class: "java.lang.String"}, "java.version": "1.8.0_111" as String {class: "java.lang.String"}, "user.timezone": "America/Los_Angeles" as String {class: "java.lang.String"}, "java.net.preferIPv4Stack": "TRUE" as String {class: "java.lang.String"}, "sun.arch.data.model": "64" as String {class: "java.lang.String"}, "java.endorsed.dirs": "/Library/Java/JavaVirtualMachines/..., "sun.cpu.isalist": "" as String {class: "java.lang.String"}, "sun.jnu.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.testingMode": "" as String {class: "java.lang.String"}, "file.encoding.pkg": "sun.io" as String {class: "java.lang.String"}, "file.separator": "/" as String {class: "java.lang.String"}, "java.specification.name": "Java Platform API Specification" ..., "java.class.version": "52.0" as String {class: "java.lang.String"}, "jetty.git.hash": "82b8fb23f757335bb3329d540ce37a2a2615f0a8" ..., "user.country": "US" as String {class: "java.lang.String"}, "mule.agent.configuration.folder": "/Applications/AnypointStudio.app/ ..., "log4j.configurationFactory": "org.apache.logging.log4j.core...", "java.home": "/Library/Java/JavaVirtualMachines/..., "java.vm.info": "mixed mode" as String {class: "java.lang.String"}, "wrapper.version": "3.5.34-st" as String {class: "java.lang.String"}, "os.version": "10.13.4" as String {class: "java.lang.String"}, "org.eclipse.jetty.LEVEL": "WARN" as String {class: "java.lang.String"}, "path.separator": ":" as String {class: "java.lang.String"}, "java.vm.version": "25.111-b14" as String {class: "java.lang.String"}, "wrapper.pid": "5212" as String {class: "java.lang.String"}, "java.util.prefs.PreferencesFactory": "com.mulesoft.licm..."}, "wrapper.java.pid": "5213" as String {class: "java.lang.String"}, "mule.home": "/Applications/AnypointStudio.app/..., "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob" ..., "sun.io.unicode.encoding": "UnicodeBig" as String {class: "java.lang.String"}, "awt.toolkit": "sun.lwawt.macosx.LWCToolkit" ..., "org.glassfish.grizzly.nio.transport...": "1048576" ..., "user.home": "/Users/me" as String {class: "java.lang.String"}, "java.specification.vendor": "Oracle Corporation" ..., "java.library.path": "/Applications/AnypointStudio.app/..., "java.vendor.url": "http://java.oracle.com/" as String ..., "java.vm.vendor": "Oracle Corporation" as String {class: "java.lang.String"}, gopherProxySet: "false" as String {class: "java.lang.String"}, "wrapper.jvmid": "1" as String {class: "java.lang.String"}, "java.runtime.name": "Java(TM) SE Runtime Environment" ..., "mule.encoding": "UTF-8" as String {class: "java.lang.String"}, "sun.java.command": "org.mule.runtime.module.reboot....", "java.class.path": "%MULE_LIB%:/Applications/AnypointStudio.app...", "log4j2.loggerContextFactory": "org.mule.runtime.module.launcher..., "java.vm.specification.name": "Java Virtual Machine Specification" , "java.vm.specification.version": "1.8" as String {class: "java.lang.String"}, "sun.cpu.endian": "little" as String {class: "java.lang.String"}, "sun.os.patch.level": "unknown" as String {class: "java.lang.String"}, "com.ning.http.client.AsyncHttpClientConfig.useProxyProperties": "true" ..., "wrapper.cpu.timeout": "10" as String {class: "java.lang.String"}, "java.io.tmpdir": "/var/folders/42/dd73l3rx7qz0n625hr29kty80000gn/T/" ..., "anypoint.platform.analytics_base_uri": ..., "java.vendor.url.bug": "http://bugreport.sun.com/bugreport/" ..., "os.arch": "x86_64" as String {class: "java.lang.String"}, "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment" ..., "mule.base": "/Applications/AnypointStudio.app...", "java.ext.dirs": "/Users/staceyduke/Library/Java/Extensions: ..."}, "user.dir": "/Applications/AnypointStudio.app/..."}, "line.separator": "\n" as String {class: "java.lang.String"}, "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM" ..., "org.quartz.scheduler.skipUpdateCheck": "true" ..., "file.encoding": "UTF-8" as String {class: "java.lang.String"}, "mule.forceConsoleLog": "" as String {class: "java.lang.String"}, "java.specification.version": "1.8" as String {class: "java.lang.String"}, "wrapper.arch": "universal" as String {class: "java.lang.String"} } as Object {class: "java.util.Properties"} ``` # Protobuf 形式 MIME タイプ: `application/protobuf` ID: `protobuf` Protobuf は、DataWeave 値にネイティブにマップできるデータ形式です。ユーザーの観点からは、DataWeave で読み書きするメッセージの記述子ファイルの場所と完全修飾名を常に指定します。設定プロパティを指定するときに、​`descriptorUrl`​ プロパティと ​`messageType`​ プロパティをそれぞれ使用します。 ## [](#example_protobuf_descriptor)例: Protobuf メッセージを読み取るときに記述子を指定する 次の例は、Protobuf メッセージを解析して JSON に変換するための記述子の場所とメッセージ種別を指定する方法を示しています。 ### [](#スキーマ)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.descriptor; message MyMessage { int32 myInt = 3; bool myBool = 13; string myString = 23; } ``` ### [](#入力)入力 Protobuf メッセージは、DataWeave ソースへの入力ペイロードとして機能します。これには、値が ​`42`​ の ​`myInt`​ 項目、値が ​`false`​ の ​`myBool`​ 項目、値が ​`DW + Proto`​ の ​`myString`​ 項目が含まれます。Protobuf メッセージは、表現がわかりづらいため表示していません。 ### [](#ソース)ソース この DataWeave スクリプトは、​`int`​ 項目、​`bool`​ 項目、​`string`​ 項目が含まれる Protobuf メッセージを読み取り、その入力を JSON 形式に変換します。 `messageType`​ は、読み取られるメッセージの完全修飾名 (このケースでは ​`examples.descriptor.MyMessage`​) を参照します。 ​`descriptorUrl`​ は、記述子 (前述の ​`.proto`​ スキーマのコンパイル済みのバージョン) を参照します。 ```dataweave %dw 2.0 output application/json input payload application/x-protobuf messageType='examples.descriptor.MyMessage',descriptorUrl="descriptors/examples.dsc" --- payload ``` ### [](#出力)出力 この DataWeave スクリプトは、3 つの値が含まれる次の JSON オブジェクトを出力します。 ```json { "myInt": 42.0, "myBool": false, "myString": "DW <3 Proto" } ``` ## [](#protobuf_features)Protobuf 機能 Protobuf では、他の形式では一般的でない次の機能がサポートされています。 ### [](#protobuf_enums)列挙 [Protobuf 列挙](https://developers.google.com/protocol-buffers/docs/proto3#enum)​は、列挙インデックスを指定する特定のスキーマで​`文字列`​として読み取られます。​`proto`​ メッセージを解析するときに、列挙値の表示ラベルを抽出するためにこのスキーマが使用されます。多くの表示ラベルで同じインデックスを共有している場合、最初の表示ラベルが使用されます。インデックスに一致する表示ラベルがない場合、特殊な表示ラベル​`「-UNRECOGNIZED」`​が使用されます。 `proto`​ メッセージを書き込むときに、特定の表示ラベルに対応するインデックスの取得に使用されるプロトコルがスキーマによって指定されます。 ### [](#example_protobuf_enum_ok)例: DataWeave を使用して Protobuf 列挙を書き込む 次の例は、特定のスキーマの場合に列挙値が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-2)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#ソース-2)ソース この DataWeave スクリプトは、​`okayLanguage`​ および ​`bestLanguage`​ 値が含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" --- { okayLanguage : "Scala", bestLanguage : "DataWeave" } ``` #### [](#出力-2)出力 この DataWeave スクリプトは、エンコードされた値で指定された 2 つの項目が含まれる Protobuf メッセージを出力します。 ### [](#example_protobuf_enum_unrecognized)例: DataWeave を使用して Protobuf 列挙を読み取る 次の例は、特定のスキーマの場合に一部の列挙値が含まれる ​`proto`​ メッセージを読み取る方法と、メッセージに存在する値がスキーマで指定されていない場合に想定される内容を示しています。 #### [](#スキーマ-3)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#入力-2)入力 DataWeave ソースへの入力ペイロードとして機能する Protobuf メッセージは、バイナリであるため表示していません。これには列挙インデックス 3 (スキーマで指定されていないインデックス) の ​`okayLanguage`​ 項目が含まれますが、​`bestLanguage`​ には想定される値が含まれます。 #### [](#ソース-3)ソース この DataWeave スクリプトは、Protobuf メッセージを読み取り、DataWeave 出力として出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" output application/dw --- payload ``` #### [](#出力-3)出力 この DataWeave スクリプトは、Protobuf メッセージ入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { okayLanguage: "-UNRECOGNIZED" as String {protobufEnumIndex: 3}, bestLanguage: "DataWeave" as String {protobufEnumIndex: 0}, } ``` ### [](#oneof)Oneof [Oneof](https://developers.google.com/protocol-buffers/docs/proto3#oneof)​ 項目 (Protobuf 固有) は、DataWeave の通常の項目として表されます。​`proto`​ メッセージを書き込むときに、特定のスキーマで DataWeave スクリプトで検証する必要がある項目を指定します。複数の項目が定義されている場合、スクリプトは失敗します。 ### [](#example_protobuf_oneof_fail)例: 2 つの排他的な項目を書き込もうとする無効な試行 次の例は、スキーマに従って 2 つの排他的な項目を書き込もうとするとどうなるのか示しています。 #### [](#スキーマ-4)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.oneof; message ThisOrThat { oneof thisOrThat { bool this = 2; bool that = 4; } } ``` #### [](#ソース-4)ソース この DataWeave スクリプトは、​`this`​ と ​`that`​ の両方項目セットが含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.oneof.ThisOrThat',descriptorUrl="descriptors/examples.dsc" --- { this: true, that: false, } ``` #### [](#出力-4)出力 この DataWeave スクリプトは、誤って使用されている ​`oneof`​ を指定する ​`ProtoBufWritingException`​ を出力します。 ### [](#反復項目)反復項目 DataWeave では反復項目が許可されているため、Protobuf 反復項目は DataWeave 反復し項目と一致します (逆の場合も同様)。書き込まれる DataWeave オブジェクトは、使用されるスキーマと一致する必要があります。スキーマで反復として指定されていない項目が DataWeave スクリプトに複数回出現すると、スクリプトは失敗します。 ### [](#example_protobuf_array_to_repeated)例: JSON 配列を Protobuf 反復項目に変換する 次の例は、JSON 配列から取得された反復項目が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-5)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#入力-3)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` #### [](#ソース-5)ソース この DataWeave スクリプトは、​`reduce`​ 関数を使用して、配列の名前ごとに新しい項目を生成します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" --- reduce(payload.names, (item, acc = {}) -> acc ++ {names: item}) ``` #### [](#出力-5)出力 この DataWeave スクリプトは、JSON 配列のすべての名前が含まれる反復項目のある Protobuf メッセージを出力します。 ### [](#example_protobuf_repeated_to_array)例: Protobuf 反復項目を JSON 配列に変換する 次の例は、反復項目が含まれる ​`proto`​ メッセージを JSON 配列に変換する方法を示しています。 #### [](#スキーマ-6)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#ソース-6)ソース この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" output application/json --- names: payload.people.*names ``` #### [](#出力-6)出力 この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` ### [](#不明)不明 Protobuf では、プロトコルの前方互換性と後方互換性を確保する機能が提供されます。これを実現するために、リーダーとライターでメッセージの [不明な項目](https://developers.google.com/protocol-buffers/docs/proto3#unknowns)​が許可されています。DataWeave は、特定のキー名を使用してこの機能に適応します。 Protobuf メッセージを読み取るときに、スキーマにない項目が検出されると、​`"-35": 111111 as Number {wireType: "Varint"},`​ のように読み取られます。​`"-35"`​ は項目インデックスが ​`35`​ であることを意味し、​`wireType: "Varint"`​ はメッセージの項目のワイヤー種別を指定します。​`wireType`​ は、​`"Varint"`​、​`"64Bit"`​、​`"LengthDelimited"`​、​`"Group"`​、または ​`"32Bit"`​ になります。 ### [](#セマンティック解析-一般的に使用されるメッセージ種別)セマンティック解析 (一般的に使用されるメッセージ種別) Protobuf では、 [一般的に使用されるメッセージ種別](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf)​のコレクションが提供されます。DataWeave は、これらの一部を基盤となるメッセージではなく、表される値として解析します。 たとえば、​`google.protobuf.Duration`​ は ​`Period`​ として DataWeave に読み取られますが、​`google.protobuf.NullValue`​ は ​`Null`​ として読み取られます。 次の表で、Protobuf 型と DataWeave 型の対応について説明します。
Protobuf 型 DataWeave 型

BoolValue

Boolean (ブール)

BytesValue

Binary (バイナリ)

DoubleValue

Number (数値)

Duration (所要時間)

Duration Period (期間)

空

{}

FloatValue

Number (数値)

Int32Value

Number (数値)

Int64Value

Number (数値)

ListValue

Array (配列)

NullValue

Null

StringValue

String (文字列)

Struct (構造)

Object (オブジェクト)

Timestamp (タイムスタンプ)

LocalDateTime

UInt32Value

Number (数値)

UInt64Value

Number (数値)

Value (値)

ProtoBufValue

各項目は次のとおりです。 ```dataweave type ProtoBufValue = Null | Number | String | Boolean | { _?: ProtoBufValue } | Array ``` ### [](#マップ)マップ [Protobuf マップ](https://developers.google.com/protocol-buffers/docs/proto3#maps)​により、定義済みのキーセットがなく、各項目の値の型が同じ構造を得られます。 `map`​ は DataWeave オブジェクトにマップされます。キーは文字列として表され、値は対応する値にマップされます。​`proto`​ メッセージを書き込むときに、キーは記述子で指定された ​`keyType`​ にキャストされます。キャストを実行できない場合、スクリプトは失敗します。 ## [](#記述子へのスキーマのコンパイル)記述子へのスキーマのコンパイル DataWeave は、​`*.proto`​ ファイルを直接使用できないため、記述子と呼ばれるコンパイル済みのバージョンが必要になります。​`protoc --descriptor_set_out=./out.dsc file1.proto file2.proto …​`​ のように ​`protoc`​ コンパイラーを使用して記述子を生成します。​`out.dsc`​ は、(DataWeave の ​`descriptorUrl`​ プロパティで想定される) 記述子の出力ファイルで、​`file1.proto`​ と ​`file2.proto`​ は、コンパイラーでコンパイルする必要がある実際のプロトコル仕様です。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/protobuf

application/x-protobuf

# Protobuf 形式 MIME タイプ: `application/protobuf` ID: `protobuf` Protobuf は、DataWeave 値にネイティブにマップできるデータ形式です。ユーザーの観点からは、DataWeave で読み書きするメッセージの記述子ファイルの場所と完全修飾名を常に指定します。設定プロパティを指定するときに、​`descriptorUrl`​ プロパティと ​`messageType`​ プロパティをそれぞれ使用します。 ## [](#example_protobuf_descriptor)例: Protobuf メッセージを読み取るときに記述子を指定する 次の例は、Protobuf メッセージを解析して JSON に変換するための記述子の場所とメッセージ種別を指定する方法を示しています。 ### [](#スキーマ)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.descriptor; message MyMessage { int32 myInt = 3; bool myBool = 13; string myString = 23; } ``` ### [](#入力)入力 Protobuf メッセージは、DataWeave ソースへの入力ペイロードとして機能します。これには、値が ​`42`​ の ​`myInt`​ 項目、値が ​`false`​ の ​`myBool`​ 項目、値が ​`DW + Proto`​ の ​`myString`​ 項目が含まれます。Protobuf メッセージは、表現がわかりづらいため表示していません。 ### [](#ソース)ソース この DataWeave スクリプトは、​`int`​ 項目、​`bool`​ 項目、​`string`​ 項目が含まれる Protobuf メッセージを読み取り、その入力を JSON 形式に変換します。 `messageType`​ は、読み取られるメッセージの完全修飾名 (このケースでは ​`examples.descriptor.MyMessage`​) を参照します。 ​`descriptorUrl`​ は、記述子 (前述の ​`.proto`​ スキーマのコンパイル済みのバージョン) を参照します。 ```dataweave %dw 2.0 output application/json input payload application/x-protobuf messageType='examples.descriptor.MyMessage',descriptorUrl="descriptors/examples.dsc" --- payload ``` ### [](#出力)出力 この DataWeave スクリプトは、3 つの値が含まれる次の JSON オブジェクトを出力します。 ```json { "myInt": 42.0, "myBool": false, "myString": "DW <3 Proto" } ``` ## [](#protobuf_features)Protobuf 機能 Protobuf では、他の形式では一般的でない次の機能がサポートされています。 ### [](#protobuf_enums)列挙 [Protobuf 列挙](https://developers.google.com/protocol-buffers/docs/proto3#enum)​は、列挙インデックスを指定する特定のスキーマで​`文字列`​として読み取られます。​`proto`​ メッセージを解析するときに、列挙値の表示ラベルを抽出するためにこのスキーマが使用されます。多くの表示ラベルで同じインデックスを共有している場合、最初の表示ラベルが使用されます。インデックスに一致する表示ラベルがない場合、特殊な表示ラベル​`「-UNRECOGNIZED」`​が使用されます。 `proto`​ メッセージを書き込むときに、特定の表示ラベルに対応するインデックスの取得に使用されるプロトコルがスキーマによって指定されます。 ### [](#example_protobuf_enum_ok)例: DataWeave を使用して Protobuf 列挙を書き込む 次の例は、特定のスキーマの場合に列挙値が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-2)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#ソース-2)ソース この DataWeave スクリプトは、​`okayLanguage`​ および ​`bestLanguage`​ 値が含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" --- { okayLanguage : "Scala", bestLanguage : "DataWeave" } ``` #### [](#出力-2)出力 この DataWeave スクリプトは、エンコードされた値で指定された 2 つの項目が含まれる Protobuf メッセージを出力します。 ### [](#example_protobuf_enum_unrecognized)例: DataWeave を使用して Protobuf 列挙を読み取る 次の例は、特定のスキーマの場合に一部の列挙値が含まれる ​`proto`​ メッセージを読み取る方法と、メッセージに存在する値がスキーマで指定されていない場合に想定される内容を示しています。 #### [](#スキーマ-3)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#入力-2)入力 DataWeave ソースへの入力ペイロードとして機能する Protobuf メッセージは、バイナリであるため表示していません。これには列挙インデックス 3 (スキーマで指定されていないインデックス) の ​`okayLanguage`​ 項目が含まれますが、​`bestLanguage`​ には想定される値が含まれます。 #### [](#ソース-3)ソース この DataWeave スクリプトは、Protobuf メッセージを読み取り、DataWeave 出力として出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" output application/dw --- payload ``` #### [](#出力-3)出力 この DataWeave スクリプトは、Protobuf メッセージ入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { okayLanguage: "-UNRECOGNIZED" as String {protobufEnumIndex: 3}, bestLanguage: "DataWeave" as String {protobufEnumIndex: 0}, } ``` ### [](#oneof)Oneof [Oneof](https://developers.google.com/protocol-buffers/docs/proto3#oneof)​ 項目 (Protobuf 固有) は、DataWeave の通常の項目として表されます。​`proto`​ メッセージを書き込むときに、特定のスキーマで DataWeave スクリプトで検証する必要がある項目を指定します。複数の項目が定義されている場合、スクリプトは失敗します。 ### [](#example_protobuf_oneof_fail)例: 2 つの排他的な項目を書き込もうとする無効な試行 次の例は、スキーマに従って 2 つの排他的な項目を書き込もうとするとどうなるのか示しています。 #### [](#スキーマ-4)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.oneof; message ThisOrThat { oneof thisOrThat { bool this = 2; bool that = 4; } } ``` #### [](#ソース-4)ソース この DataWeave スクリプトは、​`this`​ と ​`that`​ の両方項目セットが含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.oneof.ThisOrThat',descriptorUrl="descriptors/examples.dsc" --- { this: true, that: false, } ``` #### [](#出力-4)出力 この DataWeave スクリプトは、誤って使用されている ​`oneof`​ を指定する ​`ProtoBufWritingException`​ を出力します。 ### [](#反復項目)反復項目 DataWeave では反復項目が許可されているため、Protobuf 反復項目は DataWeave 反復し項目と一致します (逆の場合も同様)。書き込まれる DataWeave オブジェクトは、使用されるスキーマと一致する必要があります。スキーマで反復として指定されていない項目が DataWeave スクリプトに複数回出現すると、スクリプトは失敗します。 ### [](#example_protobuf_array_to_repeated)例: JSON 配列を Protobuf 反復項目に変換する 次の例は、JSON 配列から取得された反復項目が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-5)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#入力-3)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` #### [](#ソース-5)ソース この DataWeave スクリプトは、​`reduce`​ 関数を使用して、配列の名前ごとに新しい項目を生成します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" --- reduce(payload.names, (item, acc = {}) -> acc ++ {names: item}) ``` #### [](#出力-5)出力 この DataWeave スクリプトは、JSON 配列のすべての名前が含まれる反復項目のある Protobuf メッセージを出力します。 ### [](#example_protobuf_repeated_to_array)例: Protobuf 反復項目を JSON 配列に変換する 次の例は、反復項目が含まれる ​`proto`​ メッセージを JSON 配列に変換する方法を示しています。 #### [](#スキーマ-6)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#ソース-6)ソース この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" output application/json --- names: payload.people.*names ``` #### [](#出力-6)出力 この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` ### [](#不明)不明 Protobuf では、プロトコルの前方互換性と後方互換性を確保する機能が提供されます。これを実現するために、リーダーとライターでメッセージの [不明な項目](https://developers.google.com/protocol-buffers/docs/proto3#unknowns)​が許可されています。DataWeave は、特定のキー名を使用してこの機能に適応します。 Protobuf メッセージを読み取るときに、スキーマにない項目が検出されると、​`"-35": 111111 as Number {wireType: "Varint"},`​ のように読み取られます。​`"-35"`​ は項目インデックスが ​`35`​ であることを意味し、​`wireType: "Varint"`​ はメッセージの項目のワイヤー種別を指定します。​`wireType`​ は、​`"Varint"`​、​`"64Bit"`​、​`"LengthDelimited"`​、​`"Group"`​、または ​`"32Bit"`​ になります。 ### [](#セマンティック解析-一般的に使用されるメッセージ種別)セマンティック解析 (一般的に使用されるメッセージ種別) Protobuf では、 [一般的に使用されるメッセージ種別](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf)​のコレクションが提供されます。DataWeave は、これらの一部を基盤となるメッセージではなく、表される値として解析します。 たとえば、​`google.protobuf.Duration`​ は ​`Period`​ として DataWeave に読み取られますが、​`google.protobuf.NullValue`​ は ​`Null`​ として読み取られます。 次の表で、Protobuf 型と DataWeave 型の対応について説明します。
Protobuf 型 DataWeave 型

BoolValue

Boolean (ブール)

BytesValue

Binary (バイナリ)

DoubleValue

Number (数値)

Duration (所要時間)

Duration Period (期間)

空

{}

FloatValue

Number (数値)

Int32Value

Number (数値)

Int64Value

Number (数値)

ListValue

Array (配列)

NullValue

Null

StringValue

String (文字列)

Struct (構造)

Object (オブジェクト)

Timestamp (タイムスタンプ)

LocalDateTime

UInt32Value

Number (数値)

UInt64Value

Number (数値)

Value (値)

ProtoBufValue

各項目は次のとおりです。 ```dataweave type ProtoBufValue = Null | Number | String | Boolean | { _?: ProtoBufValue } | Array ``` ### [](#マップ)マップ [Protobuf マップ](https://developers.google.com/protocol-buffers/docs/proto3#maps)​により、定義済みのキーセットがなく、各項目の値の型が同じ構造を得られます。 `map`​ は DataWeave オブジェクトにマップされます。キーは文字列として表され、値は対応する値にマップされます。​`proto`​ メッセージを書き込むときに、キーは記述子で指定された ​`keyType`​ にキャストされます。キャストを実行できない場合、スクリプトは失敗します。 ## [](#記述子へのスキーマのコンパイル)記述子へのスキーマのコンパイル DataWeave は、​`*.proto`​ ファイルを直接使用できないため、記述子と呼ばれるコンパイル済みのバージョンが必要になります。​`protoc --descriptor_set_out=./out.dsc file1.proto file2.proto …​`​ のように ​`protoc`​ コンパイラーを使用して記述子を生成します。​`out.dsc`​ は、(DataWeave の ​`descriptorUrl`​ プロパティで想定される) 記述子の出力ファイルで、​`file1.proto`​ と ​`file2.proto`​ は、コンパイラーでコンパイルする必要がある実際のプロトコル仕様です。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/protobuf

application/x-protobuf

# Protobuf 形式 MIME タイプ: `application/protobuf` ID: `protobuf` Protobuf は、DataWeave 値にネイティブにマップできるデータ形式です。ユーザーの観点からは、DataWeave で読み書きするメッセージの記述子ファイルの場所と完全修飾名を常に指定します。設定プロパティを指定するときに、​`descriptorUrl`​ プロパティと ​`messageType`​ プロパティをそれぞれ使用します。 ## [](#example_protobuf_descriptor)例: Protobuf メッセージを読み取るときに記述子を指定する 次の例は、Protobuf メッセージを解析して JSON に変換するための記述子の場所とメッセージ種別を指定する方法を示しています。 ### [](#スキーマ)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.descriptor; message MyMessage { int32 myInt = 3; bool myBool = 13; string myString = 23; } ``` ### [](#入力)入力 Protobuf メッセージは、DataWeave ソースへの入力ペイロードとして機能します。これには、値が ​`42`​ の ​`myInt`​ 項目、値が ​`false`​ の ​`myBool`​ 項目、値が ​`DW + Proto`​ の ​`myString`​ 項目が含まれます。Protobuf メッセージは、表現がわかりづらいため表示していません。 ### [](#ソース)ソース この DataWeave スクリプトは、​`int`​ 項目、​`bool`​ 項目、​`string`​ 項目が含まれる Protobuf メッセージを読み取り、その入力を JSON 形式に変換します。 `messageType`​ は、読み取られるメッセージの完全修飾名 (このケースでは ​`examples.descriptor.MyMessage`​) を参照します。 ​`descriptorUrl`​ は、記述子 (前述の ​`.proto`​ スキーマのコンパイル済みのバージョン) を参照します。 ```dataweave %dw 2.0 output application/json input payload application/x-protobuf messageType='examples.descriptor.MyMessage',descriptorUrl="descriptors/examples.dsc" --- payload ``` ### [](#出力)出力 この DataWeave スクリプトは、3 つの値が含まれる次の JSON オブジェクトを出力します。 ```json { "myInt": 42.0, "myBool": false, "myString": "DW <3 Proto" } ``` ## [](#protobuf_features)Protobuf 機能 Protobuf では、他の形式では一般的でない次の機能がサポートされています。 ### [](#protobuf_enums)列挙 [Protobuf 列挙](https://developers.google.com/protocol-buffers/docs/proto3#enum)​は、列挙インデックスを指定する特定のスキーマで​`文字列`​として読み取られます。​`proto`​ メッセージを解析するときに、列挙値の表示ラベルを抽出するためにこのスキーマが使用されます。多くの表示ラベルで同じインデックスを共有している場合、最初の表示ラベルが使用されます。インデックスに一致する表示ラベルがない場合、特殊な表示ラベル​`「-UNRECOGNIZED」`​が使用されます。 `proto`​ メッセージを書き込むときに、特定の表示ラベルに対応するインデックスの取得に使用されるプロトコルがスキーマによって指定されます。 ### [](#example_protobuf_enum_ok)例: DataWeave を使用して Protobuf 列挙を書き込む 次の例は、特定のスキーマの場合に列挙値が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-2)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#ソース-2)ソース この DataWeave スクリプトは、​`okayLanguage`​ および ​`bestLanguage`​ 値が含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" --- { okayLanguage : "Scala", bestLanguage : "DataWeave" } ``` #### [](#出力-2)出力 この DataWeave スクリプトは、エンコードされた値で指定された 2 つの項目が含まれる Protobuf メッセージを出力します。 ### [](#example_protobuf_enum_unrecognized)例: DataWeave を使用して Protobuf 列挙を読み取る 次の例は、特定のスキーマの場合に一部の列挙値が含まれる ​`proto`​ メッセージを読み取る方法と、メッセージに存在する値がスキーマで指定されていない場合に想定される内容を示しています。 #### [](#スキーマ-3)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#入力-2)入力 DataWeave ソースへの入力ペイロードとして機能する Protobuf メッセージは、バイナリであるため表示していません。これには列挙インデックス 3 (スキーマで指定されていないインデックス) の ​`okayLanguage`​ 項目が含まれますが、​`bestLanguage`​ には想定される値が含まれます。 #### [](#ソース-3)ソース この DataWeave スクリプトは、Protobuf メッセージを読み取り、DataWeave 出力として出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" output application/dw --- payload ``` #### [](#出力-3)出力 この DataWeave スクリプトは、Protobuf メッセージ入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { okayLanguage: "-UNRECOGNIZED" as String {protobufEnumIndex: 3}, bestLanguage: "DataWeave" as String {protobufEnumIndex: 0}, } ``` ### [](#oneof)Oneof [Oneof](https://developers.google.com/protocol-buffers/docs/proto3#oneof)​ 項目 (Protobuf 固有) は、DataWeave の通常の項目として表されます。​`proto`​ メッセージを書き込むときに、特定のスキーマで DataWeave スクリプトで検証する必要がある項目を指定します。複数の項目が定義されている場合、スクリプトは失敗します。 ### [](#example_protobuf_oneof_fail)例: 2 つの排他的な項目を書き込もうとする無効な試行 次の例は、スキーマに従って 2 つの排他的な項目を書き込もうとするとどうなるのか示しています。 #### [](#スキーマ-4)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.oneof; message ThisOrThat { oneof thisOrThat { bool this = 2; bool that = 4; } } ``` #### [](#ソース-4)ソース この DataWeave スクリプトは、​`this`​ と ​`that`​ の両方項目セットが含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.oneof.ThisOrThat',descriptorUrl="descriptors/examples.dsc" --- { this: true, that: false, } ``` #### [](#出力-4)出力 この DataWeave スクリプトは、誤って使用されている ​`oneof`​ を指定する ​`ProtoBufWritingException`​ を出力します。 ### [](#反復項目)反復項目 DataWeave では反復項目が許可されているため、Protobuf 反復項目は DataWeave 反復し項目と一致します (逆の場合も同様)。書き込まれる DataWeave オブジェクトは、使用されるスキーマと一致する必要があります。スキーマで反復として指定されていない項目が DataWeave スクリプトに複数回出現すると、スクリプトは失敗します。 ### [](#example_protobuf_array_to_repeated)例: JSON 配列を Protobuf 反復項目に変換する 次の例は、JSON 配列から取得された反復項目が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-5)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#入力-3)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` #### [](#ソース-5)ソース この DataWeave スクリプトは、​`reduce`​ 関数を使用して、配列の名前ごとに新しい項目を生成します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" --- reduce(payload.names, (item, acc = {}) -> acc ++ {names: item}) ``` #### [](#出力-5)出力 この DataWeave スクリプトは、JSON 配列のすべての名前が含まれる反復項目のある Protobuf メッセージを出力します。 ### [](#example_protobuf_repeated_to_array)例: Protobuf 反復項目を JSON 配列に変換する 次の例は、反復項目が含まれる ​`proto`​ メッセージを JSON 配列に変換する方法を示しています。 #### [](#スキーマ-6)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#ソース-6)ソース この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" output application/json --- names: payload.people.*names ``` #### [](#出力-6)出力 この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` ### [](#不明)不明 Protobuf では、プロトコルの前方互換性と後方互換性を確保する機能が提供されます。これを実現するために、リーダーとライターでメッセージの [不明な項目](https://developers.google.com/protocol-buffers/docs/proto3#unknowns)​が許可されています。DataWeave は、特定のキー名を使用してこの機能に適応します。 Protobuf メッセージを読み取るときに、スキーマにない項目が検出されると、​`"-35": 111111 as Number {wireType: "Varint"},`​ のように読み取られます。​`"-35"`​ は項目インデックスが ​`35`​ であることを意味し、​`wireType: "Varint"`​ はメッセージの項目のワイヤー種別を指定します。​`wireType`​ は、​`"Varint"`​、​`"64Bit"`​、​`"LengthDelimited"`​、​`"Group"`​、または ​`"32Bit"`​ になります。 ### [](#セマンティック解析-一般的に使用されるメッセージ種別)セマンティック解析 (一般的に使用されるメッセージ種別) Protobuf では、 [一般的に使用されるメッセージ種別](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf)​のコレクションが提供されます。DataWeave は、これらの一部を基盤となるメッセージではなく、表される値として解析します。 たとえば、​`google.protobuf.Duration`​ は ​`Period`​ として DataWeave に読み取られますが、​`google.protobuf.NullValue`​ は ​`Null`​ として読み取られます。 次の表で、Protobuf 型と DataWeave 型の対応について説明します。
Protobuf 型 DataWeave 型

BoolValue

Boolean (ブール)

BytesValue

Binary (バイナリ)

DoubleValue

Number (数値)

Duration (所要時間)

Duration Period (期間)

空

{}

FloatValue

Number (数値)

Int32Value

Number (数値)

Int64Value

Number (数値)

ListValue

Array (配列)

NullValue

Null

StringValue

String (文字列)

Struct (構造)

Object (オブジェクト)

Timestamp (タイムスタンプ)

LocalDateTime

UInt32Value

Number (数値)

UInt64Value

Number (数値)

Value (値)

ProtoBufValue

各項目は次のとおりです。 ```dataweave type ProtoBufValue = Null | Number | String | Boolean | { _?: ProtoBufValue } | Array ``` ### [](#マップ)マップ [Protobuf マップ](https://developers.google.com/protocol-buffers/docs/proto3#maps)​により、定義済みのキーセットがなく、各項目の値の型が同じ構造を得られます。 `map`​ は DataWeave オブジェクトにマップされます。キーは文字列として表され、値は対応する値にマップされます。​`proto`​ メッセージを書き込むときに、キーは記述子で指定された ​`keyType`​ にキャストされます。キャストを実行できない場合、スクリプトは失敗します。 ## [](#記述子へのスキーマのコンパイル)記述子へのスキーマのコンパイル DataWeave は、​`*.proto`​ ファイルを直接使用できないため、記述子と呼ばれるコンパイル済みのバージョンが必要になります。​`protoc --descriptor_set_out=./out.dsc file1.proto file2.proto …​`​ のように ​`protoc`​ コンパイラーを使用して記述子を生成します。​`out.dsc`​ は、(DataWeave の ​`descriptorUrl`​ プロパティで想定される) 記述子の出力ファイルで、​`file1.proto`​ と ​`file2.proto`​ は、コンパイラーでコンパイルする必要がある実際のプロトコル仕様です。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/protobuf

application/x-protobuf

# Protobuf 形式 MIME タイプ: `application/protobuf` ID: `protobuf` Protobuf は、DataWeave 値にネイティブにマップできるデータ形式です。ユーザーの観点からは、DataWeave で読み書きするメッセージの記述子ファイルの場所と完全修飾名を常に指定します。設定プロパティを指定するときに、​`descriptorUrl`​ プロパティと ​`messageType`​ プロパティをそれぞれ使用します。 ## [](#example_protobuf_descriptor)例: Protobuf メッセージを読み取るときに記述子を指定する 次の例は、Protobuf メッセージを解析して JSON に変換するための記述子の場所とメッセージ種別を指定する方法を示しています。 ### [](#スキーマ)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.descriptor; message MyMessage { int32 myInt = 3; bool myBool = 13; string myString = 23; } ``` ### [](#入力)入力 Protobuf メッセージは、DataWeave ソースへの入力ペイロードとして機能します。これには、値が ​`42`​ の ​`myInt`​ 項目、値が ​`false`​ の ​`myBool`​ 項目、値が ​`DW + Proto`​ の ​`myString`​ 項目が含まれます。Protobuf メッセージは、表現がわかりづらいため表示していません。 ### [](#ソース)ソース この DataWeave スクリプトは、​`int`​ 項目、​`bool`​ 項目、​`string`​ 項目が含まれる Protobuf メッセージを読み取り、その入力を JSON 形式に変換します。 `messageType`​ は、読み取られるメッセージの完全修飾名 (このケースでは ​`examples.descriptor.MyMessage`​) を参照します。 ​`descriptorUrl`​ は、記述子 (前述の ​`.proto`​ スキーマのコンパイル済みのバージョン) を参照します。 ```dataweave %dw 2.0 output application/json input payload application/x-protobuf messageType='examples.descriptor.MyMessage',descriptorUrl="descriptors/examples.dsc" --- payload ``` ### [](#出力)出力 この DataWeave スクリプトは、3 つの値が含まれる次の JSON オブジェクトを出力します。 ```json { "myInt": 42.0, "myBool": false, "myString": "DW <3 Proto" } ``` ## [](#protobuf_features)Protobuf 機能 Protobuf では、他の形式では一般的でない次の機能がサポートされています。 ### [](#protobuf_enums)列挙 [Protobuf 列挙](https://developers.google.com/protocol-buffers/docs/proto3#enum)​は、列挙インデックスを指定する特定のスキーマで​`文字列`​として読み取られます。​`proto`​ メッセージを解析するときに、列挙値の表示ラベルを抽出するためにこのスキーマが使用されます。多くの表示ラベルで同じインデックスを共有している場合、最初の表示ラベルが使用されます。インデックスに一致する表示ラベルがない場合、特殊な表示ラベル​`「-UNRECOGNIZED」`​が使用されます。 `proto`​ メッセージを書き込むときに、特定の表示ラベルに対応するインデックスの取得に使用されるプロトコルがスキーマによって指定されます。 ### [](#example_protobuf_enum_ok)例: DataWeave を使用して Protobuf 列挙を書き込む 次の例は、特定のスキーマの場合に列挙値が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-2)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#ソース-2)ソース この DataWeave スクリプトは、​`okayLanguage`​ および ​`bestLanguage`​ 値が含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" --- { okayLanguage : "Scala", bestLanguage : "DataWeave" } ``` #### [](#出力-2)出力 この DataWeave スクリプトは、エンコードされた値で指定された 2 つの項目が含まれる Protobuf メッセージを出力します。 ### [](#example_protobuf_enum_unrecognized)例: DataWeave を使用して Protobuf 列挙を読み取る 次の例は、特定のスキーマの場合に一部の列挙値が含まれる ​`proto`​ メッセージを読み取る方法と、メッセージに存在する値がスキーマで指定されていない場合に想定される内容を示しています。 #### [](#スキーマ-3)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.enumerations; message Langs { enum Languages { DataWeave = 0; Scala = 2; Java = 343049039; } Languages okayLanguage = 10; Languages bestLanguage = 11; } ``` #### [](#入力-2)入力 DataWeave ソースへの入力ペイロードとして機能する Protobuf メッセージは、バイナリであるため表示していません。これには列挙インデックス 3 (スキーマで指定されていないインデックス) の ​`okayLanguage`​ 項目が含まれますが、​`bestLanguage`​ には想定される値が含まれます。 #### [](#ソース-3)ソース この DataWeave スクリプトは、Protobuf メッセージを読み取り、DataWeave 出力として出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.enumerations.Langs',descriptorUrl="descriptors/examples.dsc" output application/dw --- payload ``` #### [](#出力-3)出力 この DataWeave スクリプトは、Protobuf メッセージ入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { okayLanguage: "-UNRECOGNIZED" as String {protobufEnumIndex: 3}, bestLanguage: "DataWeave" as String {protobufEnumIndex: 0}, } ``` ### [](#oneof)Oneof [Oneof](https://developers.google.com/protocol-buffers/docs/proto3#oneof)​ 項目 (Protobuf 固有) は、DataWeave の通常の項目として表されます。​`proto`​ メッセージを書き込むときに、特定のスキーマで DataWeave スクリプトで検証する必要がある項目を指定します。複数の項目が定義されている場合、スクリプトは失敗します。 ### [](#example_protobuf_oneof_fail)例: 2 つの排他的な項目を書き込もうとする無効な試行 次の例は、スキーマに従って 2 つの排他的な項目を書き込もうとするとどうなるのか示しています。 #### [](#スキーマ-4)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.oneof; message ThisOrThat { oneof thisOrThat { bool this = 2; bool that = 4; } } ``` #### [](#ソース-4)ソース この DataWeave スクリプトは、​`this`​ と ​`that`​ の両方項目セットが含まれる Protobuf メッセージを出力します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.oneof.ThisOrThat',descriptorUrl="descriptors/examples.dsc" --- { this: true, that: false, } ``` #### [](#出力-4)出力 この DataWeave スクリプトは、誤って使用されている ​`oneof`​ を指定する ​`ProtoBufWritingException`​ を出力します。 ### [](#反復項目)反復項目 DataWeave では反復項目が許可されているため、Protobuf 反復項目は DataWeave 反復し項目と一致します (逆の場合も同様)。書き込まれる DataWeave オブジェクトは、使用されるスキーマと一致する必要があります。スキーマで反復として指定されていない項目が DataWeave スクリプトに複数回出現すると、スクリプトは失敗します。 ### [](#example_protobuf_array_to_repeated)例: JSON 配列を Protobuf 反復項目に変換する 次の例は、JSON 配列から取得された反復項目が含まれる ​`proto`​ メッセージを生成する方法を示しています。 #### [](#スキーマ-5)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#入力-3)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` #### [](#ソース-5)ソース この DataWeave スクリプトは、​`reduce`​ 関数を使用して、配列の名前ごとに新しい項目を生成します。 ```dataweave %dw 2.0 output application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" --- reduce(payload.names, (item, acc = {}) -> acc ++ {names: item}) ``` #### [](#出力-5)出力 この DataWeave スクリプトは、JSON 配列のすべての名前が含まれる反復項目のある Protobuf メッセージを出力します。 ### [](#example_protobuf_repeated_to_array)例: Protobuf 反復項目を JSON 配列に変換する 次の例は、反復項目が含まれる ​`proto`​ メッセージを JSON 配列に変換する方法を示しています。 #### [](#スキーマ-6)スキーマ 次のスキーマでは、この例で使用されるプロトコルを指定します。 ```protobuf syntax = "proto3"; package examples.repeated; message People { repeated string names = 1; } ``` #### [](#ソース-6)ソース この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```dataweave %dw 2.0 input payload application/x-protobuf messageType='examples.repeated.People',descriptorUrl="descriptors/examples.dsc" output application/json --- names: payload.people.*names ``` #### [](#出力-6)出力 この DataWeave スクリプトは、名前の配列が含まれる JSON メッセージを出力します。 ```json { "names": [ "Mariano", "Shoki", "Tomo", "Ana" ] } ``` ### [](#不明)不明 Protobuf では、プロトコルの前方互換性と後方互換性を確保する機能が提供されます。これを実現するために、リーダーとライターでメッセージの [不明な項目](https://developers.google.com/protocol-buffers/docs/proto3#unknowns)​が許可されています。DataWeave は、特定のキー名を使用してこの機能に適応します。 Protobuf メッセージを読み取るときに、スキーマにない項目が検出されると、​`"-35": 111111 as Number {wireType: "Varint"},`​ のように読み取られます。​`"-35"`​ は項目インデックスが ​`35`​ であることを意味し、​`wireType: "Varint"`​ はメッセージの項目のワイヤー種別を指定します。​`wireType`​ は、​`"Varint"`​、​`"64Bit"`​、​`"LengthDelimited"`​、​`"Group"`​、または ​`"32Bit"`​ になります。 ### [](#セマンティック解析-一般的に使用されるメッセージ種別)セマンティック解析 (一般的に使用されるメッセージ種別) Protobuf では、 [一般的に使用されるメッセージ種別](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf)​のコレクションが提供されます。DataWeave は、これらの一部を基盤となるメッセージではなく、表される値として解析します。 たとえば、​`google.protobuf.Duration`​ は ​`Period`​ として DataWeave に読み取られますが、​`google.protobuf.NullValue`​ は ​`Null`​ として読み取られます。 次の表で、Protobuf 型と DataWeave 型の対応について説明します。
Protobuf 型 DataWeave 型

BoolValue

Boolean (ブール)

BytesValue

Binary (バイナリ)

DoubleValue

Number (数値)

Duration (所要時間)

Duration Period (期間)

空

{}

FloatValue

Number (数値)

Int32Value

Number (数値)

Int64Value

Number (数値)

ListValue

Array (配列)

NullValue

Null

StringValue

String (文字列)

Struct (構造)

Object (オブジェクト)

Timestamp (タイムスタンプ)

LocalDateTime

UInt32Value

Number (数値)

UInt64Value

Number (数値)

Value (値)

ProtoBufValue

各項目は次のとおりです。 ```dataweave type ProtoBufValue = Null | Number | String | Boolean | { _?: ProtoBufValue } | Array ``` ### [](#マップ)マップ [Protobuf マップ](https://developers.google.com/protocol-buffers/docs/proto3#maps)​により、定義済みのキーセットがなく、各項目の値の型が同じ構造を得られます。 `map`​ は DataWeave オブジェクトにマップされます。キーは文字列として表され、値は対応する値にマップされます。​`proto`​ メッセージを書き込むときに、キーは記述子で指定された ​`keyType`​ にキャストされます。キャストを実行できない場合、スクリプトは失敗します。 ## [](#記述子へのスキーマのコンパイル)記述子へのスキーマのコンパイル DataWeave は、​`*.proto`​ ファイルを直接使用できないため、記述子と呼ばれるコンパイル済みのバージョンが必要になります。​`protoc --descriptor_set_out=./out.dsc file1.proto file2.proto …​`​ のように ​`protoc`​ コンパイラーを使用して記述子を生成します。​`out.dsc`​ は、(DataWeave の ​`descriptorUrl`​ プロパティで想定される) 記述子の出力ファイルで、​`file1.proto`​ と ​`file2.proto`​ は、コンパイラーでコンパイルする必要がある実際のプロトコル仕様です。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

descriptorUrl​ (必須)

String

''

ProtoBuf 記述子の URL。有効な値は、​classpath://​、​file://​、​http://​ です。

messageType​ (必須)

String

null

特定の記述子から取得されるメッセージ種別の完全名 (そのパッケージを含む)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/protobuf

application/x-protobuf

# random ## [](#random1)random(): Number `0.0`​ 以上 ​`1.0`​ 未満の疑似乱数を返します。 ### [](#例)例 次の例では、疑似乱数を生成して 1000 を掛けます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: random() * 1000 } ``` #### [](#出力)出力 ```JSON { "price": 65.02770292248383 } ``` # random ## [](#random1)random(): Number `0.0`​ 以上 ​`1.0`​ 未満の疑似乱数を返します。 ### [](#例)例 次の例では、疑似乱数を生成して 1000 を掛けます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: random() * 1000 } ``` #### [](#出力)出力 ```JSON { "price": 65.02770292248383 } ``` # random ## [](#random1)random(): Number `0.0`​ 以上 ​`1.0`​ 未満の疑似乱数を返します。 ### [](#例)例 次の例では、疑似乱数を生成して 1000 を掛けます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: random() * 1000 } ``` #### [](#出力)出力 ```JSON { "price": 65.02770292248383 } ``` # random ## [](#random1)random(): Number `0.0`​ 以上 ​`1.0`​ 未満の疑似乱数を返します。 ### [](#例)例 次の例では、疑似乱数を生成して 1000 を掛けます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: random() * 1000 } ``` #### [](#出力)出力 ```JSON { "price": 65.02770292248383 } ``` # random ## [](#random1)random(): Number `0.0`​ 以上 ​`1.0`​ 未満の疑似乱数を返します。 ### [](#例)例 次の例では、疑似乱数を生成して 1000 を掛けます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: random() * 1000 } ``` #### [](#出力)出力 ```JSON { "price": 65.02770292248383 } ``` # random ## [](#random1)random(): Number `0.0`​ 以上 ​`1.0`​ 未満の疑似乱数を返します。 ### [](#例)例 次の例では、疑似乱数を生成して 1000 を掛けます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: random() * 1000 } ``` #### [](#出力)出力 ```JSON { "price": 65.02770292248383 } ``` # randomInt ## [](#randomint1)randomInt(Number): Number `0`​ 以上指定数値未満の整数の疑似乱数を返します。 ### [](#パラメーター)パラメーター
名前 説明

​upperBound

乱数の上限を設定する数値。

### [](#例)例 次の例では、0 以上 1000 未満の整数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: randomInt(1000) } ``` #### [](#出力)出力 ```JSON { "price": 442.0 } ``` # randomInt ## [](#randomint1)randomInt(upperBound: Number): Number `0`​ 以上指定数値未満の整数の疑似乱数を返します。 ### [](#パラメーター)パラメーター
名前 説明

​upperBound

乱数の上限を設定する数値。

### [](#例)例 次の例では、0 以上 1000 未満の整数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: randomInt(1000) } ``` #### [](#出力)出力 ```JSON { "price": 442.0 } ``` # randomInt ## [](#randomint1)randomInt(upperBound: Number): Number `0`​ 以上指定数値未満の整数の疑似乱数を返します。 ### [](#パラメーター)パラメーター
名前 説明

upperBound

乱数の上限を設定する数値。

### [](#例)例 次の例では、0 以上 1000 未満の整数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: randomInt(1000) } ``` #### [](#出力)出力 ```JSON { "price": 442.0 } ``` # randomInt ## [](#randomint1)randomInt(upperBound: Number): Number `0`​ 以上指定数値未満の整数の疑似乱数を返します。 ### [](#パラメーター)パラメーター
名前 説明

upperBound

乱数の上限を設定する数値。

### [](#例)例 次の例では、0 以上 1000 未満の整数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: randomInt(1000) } ``` #### [](#出力)出力 ```JSON { "price": 442.0 } ``` # randomInt ## [](#randomint1)randomInt(upperBound: Number): Number `0`​ 以上指定数値未満の整数の疑似乱数を返します。 ### [](#パラメーター)パラメーター
名前 説明

upperBound

乱数の上限を設定する数値。

### [](#例)例 次の例では、0 以上 1000 未満の整数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: randomInt(1000) } ``` #### [](#出力)出力 ```JSON { "price": 442.0 } ``` # randomInt ## [](#randomint1)randomInt(upperBound: Number): Number `0`​ 以上指定数値未満の整数の疑似乱数を返します。 ### [](#パラメーター)パラメーター
名前 説明

upperBound

乱数の上限を設定する数値。

### [](#例)例 次の例では、0 以上 1000 未満の整数を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { price: randomInt(1000) } ``` #### [](#出力)出力 ```JSON { "price": 442.0 } ``` # read ## [](#read1)read(String | Binary, String, Object): Any 文字列またはバイナリを読み取り、解析後のコンテンツを返します。 この関数は、リーダーのデフォルトではコンテンツタイプを判別できない場合などに役立ちます。 ### [](#パラメーター)パラメーター
名前 説明

​stringToParse

読み取る文字列またはバイナリ。

​contentType

サポートされる形式 (またはコンテンツタイプ)。デフォルト: application/dw​。

​readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、JSON オブジェクト ​`{ "hello" : "world" }'`​ を読み取り、​`"application/json"`​ 引数を使用して​_入力_​コンテンツタイプを示します。対照的に、スクリプトのヘッダーの ​`output application/xml`​ ディレクティブでは、JSON コンテンツを XML 出力に変換するようにスクリプトに指示しています。XML 出力では、​`hello`​ がルート XML 要素として使用され、​`world`​ がその要素の値として使用されています。XML の ​`hello`​ は JSON オブジェクトのキー ​`"hello"`​ に対応し、​`world`​ は JSON 値 ​`"world"`​ に対応します。 #### [](#ソース)ソース ```dw %dw 2.0 output application/xml --- read('{ "hello" : "world" }','application/json') ``` #### [](#出力)出力 ```JSON world ``` ### [](#例-2)例 次の例では、文字列をヘッダーなしの CSV 形式として読み取り、JSON に変換します。列名がキーとして出力オブジェクトに追加されています。また、ここでは ​`[0]`​を関数コールに付加し、結果の配列の最初のインデックスを選択しているため、結果は配列内に生成されません (出力オブジェクト全体が角括弧で囲まれています)。 #### [](#ソース-2)ソース %dw 2.0 var myVar = "Some, Body" output application/json --- read(myVar,"application/csv",{header:false})\[0\] #### [](#出力-2)出力 ```JSON { "column_0": "Some", "column_1": " Body" } ``` ### [](#例-3)例 次の例では、指定された XML を読み取り、リーダープロパティの構文 (この場合は ​`{ indexedReader: "false" }`​) を示しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/xml --- { "XML" : read("9.99", "application/xml", { indexedReader: "false" })."prices" } ``` #### [](#出力-3)出力 ```XML 9.99 ``` ### [](#例-4)例 次の例では、入力パラメーターが XML または JSON 形式の場合は入力パラメーターを返し、それ以外の場合は ​`Not XML or JSON`​ メッセージを返します。 この例では ​`read`​ 関数を使用して、指定された入力文字列が XML または JSON であるかどうかを確認します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/dw var xmlInput = "Max the Mule123XML" var jsonInput = '{"Input": {"name": "Max the Mule", "ID": 123, "Type": "JSON"}}' var stringInput = "name: Max the Mule, ID: 123, Type: String" //This function returns the input parameter if it is in XML or JSON format, otherwise, it returns a static message fun testType(inputMessage) = // Reads the input only if the data is in JSON format try(() -> read(inputMessage,"application/json")) // Reads the input only if the data is in XML format orElseTry(() -> read(inputMessage,"application/xml")) // Return this message if the input data is not either in XML or JSON format orElse("Not XML or JSON") --- { "Test 'xmlInput' ": testType(xmlInput), "Test 'jsonInput' ": testType(jsonInput), "Test 'stringInput' ": testType(stringInput), } ``` #### [](#出力-4)出力 ```dataweave { "Test 'xmlInput' ": { Input: { name: "Max the Mule", ID: "123", Type: "XML" } }, "Test 'jsonInput' ": { Input: { name: "Max the Mule", ID: 123, Type: "JSON" } }, "Test 'stringInput' ": "Not XML or JSON" } ``` # read ## [](#read1)read(stringToParse: String | Binary, contentType: String = "application/dw", readerProperties: Object = ​{}​): Any 文字列またはバイナリを読み取り、解析後のコンテンツを返します。 この関数は、リーダーのデフォルトではコンテンツタイプを判別できない場合などに役立ちます。 ### [](#パラメーター)パラメーター
名前 説明

​stringToParse

読み取る文字列またはバイナリ。

​contentType

サポートされる形式 (またはコンテンツタイプ)。デフォルト: application/dw​。

​readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、JSON オブジェクト ​`{ "hello" : "world" }'`​ を読み取り、​`"application/json"`​ 引数を使用して​_入力_​コンテンツタイプを示します。対照的に、スクリプトのヘッダーの ​`output application/xml`​ ディレクティブでは、JSON コンテンツを XML 出力に変換するようにスクリプトに指示しています。XML 出力では、​`hello`​ がルート XML 要素として使用され、​`world`​ がその要素の値として使用されています。XML の ​`hello`​ は JSON オブジェクトのキー ​`"hello"`​ に対応し、​`world`​ は JSON 値 ​`"world"`​ に対応します。 #### [](#ソース)ソース ```dw %dw 2.0 output application/xml --- read('{ "hello" : "world" }','application/json') ``` #### [](#出力)出力 ```JSON world ``` ### [](#例-2)例 次の例では、文字列をヘッダーなしの CSV 形式として読み取り、JSON に変換します。列名がキーとして出力オブジェクトに追加されています。また、ここでは ​`[0]`​を関数コールに付加し、結果の配列の最初のインデックスを選択しているため、結果は配列内に生成されません (出力オブジェクト全体が角括弧で囲まれています)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Some, Body" output application/json --- read(myVar,"application/csv",{header:false})[0] ``` #### [](#出力-2)出力 ```JSON { "column_0": "Some", "column_1": " Body" } ``` ### [](#例-3)例 次の例では、指定された XML を読み取り、リーダープロパティの構文 (この場合は ​`{ indexedReader: "false" }`​) を示しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/xml --- { "XML" : read("9.99", "application/xml", { indexedReader: "false" })."prices" } ``` #### [](#出力-3)出力 ```XML 9.99 ``` # read ## [](#read1)read(stringToParse: String | Binary, contentType: String = "application/dw", readerProperties: Object = {}): Any 文字列またはバイナリを読み取り、解析後のコンテンツを返します。 この関数は、リーダーのデフォルトではコンテンツタイプを判別できない場合などに役立ちます。 ### [](#パラメーター)パラメーター
名前 説明

stringToParse

読み取る文字列またはバイナリ。

contentType

サポートされる形式 (またはコンテンツタイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、JSON オブジェクト ​`{ "hello" : "world" }'`​ を読み取り、​`"application/json"`​ 引数を使用して​_入力_​コンテンツタイプを示します。対照的に、スクリプトのヘッダーの ​`output application/xml`​ ディレクティブでは、JSON コンテンツを XML 出力に変換するようにスクリプトに指示しています。XML 出力では、​`hello`​ がルート XML 要素として使用され、​`world`​ がその要素の値として使用されています。XML の ​`hello`​ は JSON オブジェクトのキー ​`"hello"`​ に対応し、​`world`​ は JSON 値 ​`"world"`​ に対応します。 #### [](#ソース)ソース ```dw %dw 2.0 output application/xml --- read('{ "hello" : "world" }','application/json') ``` #### [](#出力)出力 ```JSON world ``` ### [](#例-2)例 次の例では、文字列をヘッダーなしの CSV 形式として読み取り、JSON に変換します。列名がキーとして出力オブジェクトに追加されています。また、ここでは ​`[0]`​を関数コールに付加し、結果の配列の最初のインデックスを選択しているため、結果は配列内に生成されません (出力オブジェクト全体が角括弧で囲まれています)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Some, Body" output application/json --- read(myVar,"application/csv",{header:false})[0] ``` #### [](#出力-2)出力 ```JSON { "column_0": "Some", "column_1": " Body" } ``` ### [](#例-3)例 次の例では、指定された XML を読み取り、リーダープロパティの構文 (この場合は ​`{ indexedReader: "false" }`​) を示しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/xml --- { "XML" : read("9.99", "application/xml", { indexedReader: "false" })."prices" } ``` #### [](#出力-3)出力 ```XML 9.99 ``` # read ## [](#read1)read(stringToParse: String | Binary, contentType: String = "application/dw", readerProperties: Object = {}): Any 文字列またはバイナリを読み取り、解析後のコンテンツを返します。 この関数は、リーダーのデフォルトではコンテンツタイプを判別できない場合などに役立ちます。 ### [](#パラメーター)パラメーター
名前 説明

stringToParse

読み取る文字列またはバイナリ。

contentType

サポートされる形式 (またはコンテンツタイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、JSON オブジェクト ​`{ "hello" : "world" }'`​ を読み取り、​`"application/json"`​ 引数を使用して​_入力_​コンテンツタイプを示します。対照的に、スクリプトのヘッダーの ​`output application/xml`​ ディレクティブでは、JSON コンテンツを XML 出力に変換するようにスクリプトに指示しています。XML 出力では、​`hello`​ がルート XML 要素として使用され、​`world`​ がその要素の値として使用されています。XML の ​`hello`​ は JSON オブジェクトのキー ​`"hello"`​ に対応し、​`world`​ は JSON 値 ​`"world"`​ に対応します。 #### [](#ソース)ソース ```dw %dw 2.0 output application/xml --- read('{ "hello" : "world" }','application/json') ``` #### [](#出力)出力 ```JSON world ``` ### [](#例-2)例 次の例では、文字列をヘッダーなしの CSV 形式として読み取り、JSON に変換します。列名がキーとして出力オブジェクトに追加されています。また、ここでは ​`[0]`​を関数コールに付加し、結果の配列の最初のインデックスを選択しているため、結果は配列内に生成されません (出力オブジェクト全体が角括弧で囲まれています)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Some, Body" output application/json --- read(myVar,"application/csv",{header:false})[0] ``` #### [](#出力-2)出力 ```JSON { "column_0": "Some", "column_1": " Body" } ``` ### [](#例-3)例 次の例では、指定された XML を読み取り、リーダープロパティの構文 (この場合は ​`{ indexedReader: "false" }`​) を示しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/xml --- { "XML" : read("9.99", "application/xml", { indexedReader: "false" })."prices" } ``` #### [](#出力-3)出力 ```XML 9.99 ``` # read ## [](#read1)read(stringToParse: String | Binary, contentType: String = "application/dw", readerProperties: Object = {}): Any 文字列またはバイナリを読み取り、解析後のコンテンツを返します。 この関数は、リーダーのデフォルトではコンテンツタイプを判別できない場合などに役立ちます。 ### [](#パラメーター)パラメーター
名前 説明

stringToParse

読み取る文字列またはバイナリ。

contentType

サポートされる形式 (またはコンテンツタイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、JSON オブジェクト ​`{ "hello" : "world" }'`​ を読み取り、​`"application/json"`​ 引数を使用して​_入力_​コンテンツタイプを示します。対照的に、スクリプトのヘッダーの ​`output application/xml`​ ディレクティブでは、JSON コンテンツを XML 出力に変換するようにスクリプトに指示しています。XML 出力では、​`hello`​ がルート XML 要素として使用され、​`world`​ がその要素の値として使用されています。XML の ​`hello`​ は JSON オブジェクトのキー ​`"hello"`​ に対応し、​`world`​ は JSON 値 ​`"world"`​ に対応します。 #### [](#ソース)ソース ```dw %dw 2.0 output application/xml --- read('{ "hello" : "world" }','application/json') ``` #### [](#出力)出力 ```JSON world ``` ### [](#例-2)例 次の例では、文字列をヘッダーなしの CSV 形式として読み取り、JSON に変換します。列名がキーとして出力オブジェクトに追加されています。また、ここでは ​`[0]`​を関数コールに付加し、結果の配列の最初のインデックスを選択しているため、結果は配列内に生成されません (出力オブジェクト全体が角括弧で囲まれています)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Some, Body" output application/json --- read(myVar,"application/csv",{header:false})[0] ``` #### [](#出力-2)出力 ```JSON { "column_0": "Some", "column_1": " Body" } ``` ### [](#例-3)例 次の例では、指定された XML を読み取り、リーダープロパティの構文 (この場合は ​`{ indexedReader: "false" }`​) を示しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/xml --- { "XML" : read("9.99", "application/xml", { indexedReader: "false" })."prices" } ``` #### [](#出力-3)出力 ```XML 9.99 ``` # read ## [](#read1)read(stringToParse: String | Binary, contentType: String = "application/dw", readerProperties: Object = {}): Any 文字列またはバイナリを読み取り、解析後のコンテンツを返します。 この関数は、リーダーのデフォルトではコンテンツタイプを判別できない場合などに役立ちます。 ### [](#パラメーター)パラメーター
名前 説明

stringToParse

読み取る文字列またはバイナリ。

contentType

サポートされる形式 (またはコンテンツタイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、JSON オブジェクト ​`{ "hello" : "world" }'`​ を読み取り、​`"application/json"`​ 引数を使用して​_入力_​コンテンツタイプを示します。対照的に、スクリプトのヘッダーの ​`output application/xml`​ ディレクティブでは、JSON コンテンツを XML 出力に変換するようにスクリプトに指示しています。XML 出力では、​`hello`​ がルート XML 要素として使用され、​`world`​ がその要素の値として使用されています。XML の ​`hello`​ は JSON オブジェクトのキー ​`"hello"`​ に対応し、​`world`​ は JSON 値 ​`"world"`​ に対応します。 #### [](#ソース)ソース ```dw %dw 2.0 output application/xml --- read('{ "hello" : "world" }','application/json') ``` #### [](#出力)出力 ```JSON world ``` ### [](#例-2)例 次の例では、文字列をヘッダーなしの CSV 形式として読み取り、JSON に変換します。列名がキーとして出力オブジェクトに追加されています。また、ここでは ​`[0]`​ を関数コールに付加し、結果の配列の最初のインデックスを選択しているため、結果は配列内に生成されません (出力オブジェクト全体が角括弧で囲まれています)。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Some, Body" output application/json --- read(myVar,"application/csv",{header:false})[0] ``` #### [](#出力-2)出力 ```JSON { "column_0": "Some", "column_1": " Body" } ``` ### [](#例-3)例 次の例では、指定された XML を読み取り、リーダープロパティの構文 (この場合は ​`{ indexedReader: "false" }`​) を示しています。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/xml --- { "XML" : read("9.99", "application/xml", { indexedReader: "false" })."prices" } ``` #### [](#出力-3)出力 ```XML 9.99 ``` # readLinesWith ## [](#readlineswith1)readLinesWith(Binary, String): Array 指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​content

読み取って分割するバイナリデータ。

​charset

読み取るためのエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) で分割されるバイナリコンテンツをカンマ区切りの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries var content = read("Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n", "application/octet-stream") output application/json --- { lines : (content readLinesWith "UTF-8"), showType: typeOf(content) } ``` #### [](#出力)出力 ```JSON { "lines": [ "Line 1", "Line 2", "Line 3", "Line 4", "Line 5" ], "showType": "Binary" } ``` # readLinesWith ## [](#readlineswith1)readLinesWith(content: Binary, charset: String): Array 指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​content

読み取って分割するバイナリデータ。

​charset

読み取るためのエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) で分割されるバイナリコンテンツをカンマ区切りの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries var content = read("Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n", "application/octet-stream") output application/json --- { lines : (content readLinesWith "UTF-8"), showType: typeOf(content) } ``` #### [](#出力)出力 ```JSON { "lines": [ "Line 1", "Line 2", "Line 3", "Line 4", "Line 5" ], "showType": "Binary" } ``` # readLinesWith ## [](#readlineswith1)readLinesWith(content: Binary, charset: String): Array 指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

読み取って分割するバイナリデータ。

charset

読み取るためのエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) で分割されるバイナリコンテンツをカンマ区切りの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries var content = read("Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n", "application/octet-stream") output application/json --- { lines : (content readLinesWith "UTF-8"), showType: typeOf(content) } ``` #### [](#出力)出力 ```JSON { "lines": [ "Line 1", "Line 2", "Line 3", "Line 4", "Line 5" ], "showType": "Binary" } ``` # readLinesWith ## [](#readlineswith1)readLinesWith(content: Binary, charset: String): Array 指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

読み取って分割するバイナリデータ。

charset

読み取るためのエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) で分割されるバイナリコンテンツをカンマ区切りの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries var content = read("Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n", "application/octet-stream") output application/json --- { lines : (content readLinesWith "UTF-8"), showType: typeOf(content) } ``` #### [](#出力)出力 ```JSON { "lines": [ "Line 1", "Line 2", "Line 3", "Line 4", "Line 5" ], "showType": "Binary" } ``` # readLinesWith ## [](#readlineswith1)readLinesWith(content: Binary, charset: String): Array 指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

読み取って分割するバイナリデータ。

charset

読み取るためのエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) で分割されるバイナリコンテンツをカンマ区切りの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries var content = read("Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n", "application/octet-stream") output application/json --- { lines : (content readLinesWith "UTF-8"), showType: typeOf(content) } ``` #### [](#出力)出力 ```JSON { "lines": [ "Line 1", "Line 2", "Line 3", "Line 4", "Line 5" ], "showType": "Binary" } ``` # readLinesWith ## [](#readlineswith1)readLinesWith(content: Binary, charset: String): Array 指定されたバイナリコンテンツを複数の行に分割し、結果を配列で返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

読み取って分割するバイナリデータ。

charset

読み取るためのエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) で分割されるバイナリコンテンツをカンマ区切りの配列に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries var content = read("Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n", "application/octet-stream") output application/json --- { lines : (content readLinesWith "UTF-8"), showType: typeOf(content) } ``` #### [](#出力)出力 ```JSON { "lines": [ "Line 1", "Line 2", "Line 3", "Line 4", "Line 5" ], "showType": "Binary" } ``` # readUrl ## [](#readurl1)readUrl(String, String, Object): Any URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​`read`​ 関数と同様に機能します。 クラスパスベースの URL は ​`` classpath:` ``​ プロトコルプレフィックスを使用します (例: `classpath://myfolder/myFile.txt`​。​`myFolder`​ は Mule プロジェクトの ​`src/main/resources`​ の下に配置されています)。URL 以外の場合、​`readURL`​ は ​`read`​ と同じ引数を受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

​url

読み取る URL 文字列。クラスパスベースの URL も受け入れます。

​contentType

サポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

​readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、​「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、URL から JSON オブジェクトを読み取ります。(読みやすいように、下記の出力値は ​`…​`​ で短縮されています)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json") ``` #### [](#出力)出力 ```JSON { "userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et ..." } ``` ### [](#例-2)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリに配置されている ​`myJsonSnippet.json`​ ファイルから JSON オブジェクトを読み取ります。(このファイルのサンプル JSON コンテンツは以下の「入力」セクションで示されています)。ファイルのコンテンツを読み取ったら、スクリプトは、選択された項目を JSON から CSV に変換します。サンプルデータで DataWeave スクリプトを試す場合、特に取得元データが大きく、スクリプトが複雑なときは、この方法でファイルを読み取ることが役立つ可能性があります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myJsonSnippet = readUrl("classpath://myJsonSnippet.json", "application/json") output application/csv --- (myJsonSnippet.results map(item) -> item.profile) ``` #### [](#入力)入力 ```JSON { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ] } ``` #### [](#出力-2)出力 ```CSV firstName,lastName,email john,doe,johndoe@demo.com jane,doe,janedoe@demo.com ``` ### [](#例-3)例 次の例では、URL から CSV ファイルを読み取り、ヘッダーがないことを示すようにリーダープロパティを設定し、データを JSON に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://mywebsite.com/data.csv", "application/csv", {"header" : false}) ``` #### [](#入力-2)入力 Max,the Mule,MuleSoft #### [](#出力-3)出力 ```JSON [ { "column_0": "Max", "column_1": "the Mule", "column_2": "MuleSoft" } ] ``` ### [](#例-4)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリから単純な ​`dwl`​ ファイルを読み取って、そのファイルからキー ​`name`​ の値を動的に読み取ります。(入力ファイルのサンプルコンテンツは以下の「入力」セクションで示されています)。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- (readUrl("classpath://name.dwl", "application/dw")).firstName ``` #### [](#入力-3)入力 ```JSON { "firstName" : "Somebody", "lastName" : "Special" } ``` #### [](#出力-4)出力 ```CSV "Somebody" ``` # readUrl ## [](#readurl1)readUrl(url: String, contentType: String = "application/dw", readerProperties: Object = ​{}​): Any URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​`read`​ 関数と同様に機能します。 クラスパスベースの URL は ​`classpath:`​ プロトコルプレフィックスを使用します (例: `classpath://myfolder/myFile.txt`​。​`myFolder`​ は Mule プロジェクトの ​`src/main/resources`​ の下に配置されています)。URL 以外の場合、​`readURL`​ は ​`read`​ と同じ引数を受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

​url

読み取る URL 文字列。クラスパスベースの URL も受け入れます。

​contentType

サポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

​readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、URL から JSON オブジェクトを読み取ります。(読みやすいように、下記の出力値は ​`…​`​ で短縮されています)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json") ``` #### [](#出力)出力 ```JSON { "userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et ..." } ``` ### [](#例-2)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリに配置されている ​`myJsonSnippet.json`​ ファイルから JSON オブジェクトを読み取ります。(このファイルのサンプル JSON コンテンツは以下の「入力」セクションで示されています)。ファイルのコンテンツを読み取ったら、スクリプトは、選択された項目を JSON から CSV に変換します。サンプルデータで DataWeave スクリプトを試す場合、特に取得元データが大きく、スクリプトが複雑なときは、この方法でファイルを読み取ることが役立つ可能性があります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myJsonSnippet = readUrl("classpath://myJsonSnippet.json", "application/json") output application/csv --- (myJsonSnippet.results map(item) -> item.profile) ``` #### [](#入力)入力 ```JSON { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ] } ``` #### [](#出力-2)出力 ```CSV firstName,lastName,email john,doe,johndoe@demo.com jane,doe,janedoe@demo.com ``` ### [](#例-3)例 次の例では、URL から CSV ファイルを読み取り、ヘッダーがないことを示すようにリーダープロパティを設定し、データを JSON に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://mywebsite.com/data.csv", "application/csv", {"header" : false}) ``` #### [](#入力-2)入力 Max,the Mule,MuleSoft #### [](#出力-3)出力 ```JSON [ { "column_0": "Max", "column_1": "the Mule", "column_2": "MuleSoft" } ] ``` ### [](#例-4)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリから単純な ​`dwl`​ ファイルを読み取って、そのファイルからキー ​`name`​ の値を動的に読み取ります。(入力ファイルのサンプルコンテンツは以下の「入力」セクションで示されています)。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- (readUrl("classpath://name.dwl", "application/dw")).firstName ``` #### [](#入力-3)入力 ```JSON { "firstName" : "Somebody", "lastName" : "Special" } ``` #### [](#出力-4)出力 ```CSV "Somebody" ``` # readUrl ## [](#readurl1)readUrl(url: String, contentType: String = "application/dw", readerProperties: Object = {}): Any URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​`read`​ 関数と同様に機能します。 クラスパスベースの URL は ​`classpath:`​ プロトコルプレフィックスを使用します (例: `classpath://myfolder/myFile.txt`​。​`myFolder`​ は Mule プロジェクトの ​`src/main/resources`​ の下に配置されています)。URL 以外の場合、​`readURL`​ は ​`read`​ と同じ引数を受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

url

読み取る URL 文字列。クラスパスベースの URL も受け入れます。

contentType

サポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、URL から JSON オブジェクトを読み取ります。(読みやすいように、下記の出力値は ​`…​`​ で短縮されています)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json") ``` #### [](#出力)出力 ```JSON { "userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et ..." } ``` ### [](#例-2)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリに配置されている ​`myJsonSnippet.json`​ ファイルから JSON オブジェクトを読み取ります。(このファイルのサンプル JSON コンテンツは以下の「入力」セクションで示されています)。 ファイルのコンテンツを読み取ったら、スクリプトは、選択された項目を JSON から CSV に変換します。サンプルデータで DataWeave スクリプトを試す場合、特に取得元データが大きく、スクリプトが複雑なときは、この方法でファイルを読み取ることが役立つ可能性があります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myJsonSnippet = readUrl("classpath://myJsonSnippet.json", "application/json") output application/csv --- (myJsonSnippet.results map(item) -> item.profile) ``` #### [](#入力)入力 ```JSON { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ] } ``` #### [](#出力-2)出力 ```CSV firstName,lastName,email john,doe,johndoe@demo.com jane,doe,janedoe@demo.com ``` ### [](#例-3)例 次の例では、URL から CSV ファイルを読み取り、ヘッダーがないことを示すようにリーダープロパティを設定し、データを JSON に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://mywebsite.com/data.csv", "application/csv", {"header" : false}) ``` #### [](#入力-2)入力 Max,the Mule,MuleSoft #### [](#出力-3)出力 ```JSON [ { "column_0": "Max", "column_1": "the Mule", "column_2": "MuleSoft" } ] ``` ### [](#例-4)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリから単純な ​`dwl`​ ファイルを読み取って、そのファイルからキー ​`name`​ の値を動的に読み取ります。(入力ファイルのサンプルコンテンツは以下の「入力」セクションで示されています)。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- (readUrl("classpath://name.dwl", "application/dw")).firstName ``` #### [](#入力-3)入力 ```JSON { "firstName" : "Somebody", "lastName" : "Special" } ``` #### [](#出力-4)出力 ```CSV "Somebody" ``` # readUrl ## [](#readurl1)readUrl(url: String, contentType: String = "application/dw", readerProperties: Object = {}): Any URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​`read`​ 関数と同様に機能します。 クラスパスベースの URL は ​`classpath:`​ プロトコルプレフィックスを使用します (例: `classpath://myfolder/myFile.txt`​。​`myFolder`​ は Mule プロジェクトの ​`src/main/resources`​ の下に配置されています)。URL 以外の場合、​`readURL`​ は ​`read`​ と同じ引数を受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

url

読み取る URL 文字列。クラスパスベースの URL も受け入れます。

contentType

サポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、URL から JSON オブジェクトを読み取ります。(読みやすいように、下記の出力値は ​`…​`​ で短縮されています)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json") ``` #### [](#出力)出力 ```JSON { "userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et ..." } ``` ### [](#例-2)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリに配置されている ​`myJsonSnippet.json`​ ファイルから JSON オブジェクトを読み取ります。(このファイルのサンプル JSON コンテンツは以下の「入力」セクションで示されています)。 ファイルのコンテンツを読み取ったら、スクリプトは、選択された項目を JSON から CSV に変換します。サンプルデータで DataWeave スクリプトを試す場合、特に取得元データが大きく、スクリプトが複雑なときは、この方法でファイルを読み取ることが役立つ可能性があります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myJsonSnippet = readUrl("classpath://myJsonSnippet.json", "application/json") output application/csv --- (myJsonSnippet.results map(item) -> item.profile) ``` #### [](#入力)入力 ```JSON { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ] } ``` #### [](#出力-2)出力 ```CSV firstName,lastName,email john,doe,johndoe@demo.com jane,doe,janedoe@demo.com ``` ### [](#例-3)例 次の例では、URL から CSV ファイルを読み取り、ヘッダーがないことを示すようにリーダープロパティを設定し、データを JSON に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://mywebsite.com/data.csv", "application/csv", {"header" : false}) ``` #### [](#入力-2)入力 Max,the Mule,MuleSoft #### [](#出力-3)出力 ```JSON [ { "column_0": "Max", "column_1": "the Mule", "column_2": "MuleSoft" } ] ``` ### [](#例-4)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリから単純な ​`dwl`​ ファイルを読み取って、そのファイルからキー ​`name`​ の値を動的に読み取ります。(入力ファイルのサンプルコンテンツは以下の「入力」セクションで示されています)。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- (readUrl("classpath://name.dwl", "application/dw")).firstName ``` #### [](#入力-3)入力 ```JSON { "firstName" : "Somebody", "lastName" : "Special" } ``` #### [](#出力-4)出力 ```CSV "Somebody" ``` # readUrl ## [](#readurl1)readUrl(url: String, contentType: String = "application/dw", readerProperties: Object = {}): Any URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​`read`​ 関数と同様に機能します。 クラスパスベースの URL は ​`classpath:`​ プロトコルプレフィックスを使用します (例: `classpath://myfolder/myFile.txt`​。​`myFolder`​ は Mule プロジェクトの ​`src/main/resources`​ の下に配置されています)。URL 以外の場合、​`readURL`​ は ​`read`​ と同じ引数を受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

url

読み取る URL 文字列。クラスパスベースの URL も受け入れます。

contentType

サポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、URL から JSON オブジェクトを読み取ります。(読みやすいように、下記の出力値は ​`…​`​ で短縮されています)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json") ``` #### [](#出力)出力 ```JSON { "userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et ..." } ``` ### [](#例-2)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリに配置されている ​`myJsonSnippet.json`​ ファイルから JSON オブジェクトを読み取ります。(このファイルのサンプル JSON コンテンツは以下の「入力」セクションで示されています)。 ファイルのコンテンツを読み取ったら、スクリプトは、選択された項目を JSON から CSV に変換します。サンプルデータで DataWeave スクリプトを試す場合、特に取得元データが大きく、スクリプトが複雑なときは、この方法でファイルを読み取ることが役立つ可能性があります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myJsonSnippet = readUrl("classpath://myJsonSnippet.json", "application/json") output application/csv --- (myJsonSnippet.results map(item) -> item.profile) ``` #### [](#入力)入力 ```JSON { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ] } ``` #### [](#出力-2)出力 ```CSV firstName,lastName,email john,doe,johndoe@demo.com jane,doe,janedoe@demo.com ``` ### [](#例-3)例 次の例では、URL から CSV ファイルを読み取り、ヘッダーがないことを示すようにリーダープロパティを設定し、データを JSON に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://mywebsite.com/data.csv", "application/csv", {"header" : false}) ``` #### [](#入力-2)入力 Max,the Mule,MuleSoft #### [](#出力-3)出力 ```JSON [ { "column_0": "Max", "column_1": "the Mule", "column_2": "MuleSoft" } ] ``` ### [](#例-4)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリから単純な ​`dwl`​ ファイルを読み取って、そのファイルからキー ​`name`​ の値を動的に読み取ります。(入力ファイルのサンプルコンテンツは以下の「入力」セクションで示されています)。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- (readUrl("classpath://name.dwl", "application/dw")).firstName ``` #### [](#入力-3)入力 ```JSON { "firstName" : "Somebody", "lastName" : "Special" } ``` #### [](#出力-4)出力 ```CSV "Somebody" ``` # readUrl ## [](#readurl1)readUrl(url: String, contentType: String = "application/dw", readerProperties: Object = {}): Any URL (クラスパスベースの URL を含む) を読み取り、解析後のコンテンツを返します。 この関数は、​`read`​ 関数と同様に機能します。 クラスパスベースの URL は ​`classpath:`​ プロトコルプレフィックスを使用します (例: `classpath://myfolder/myFile.txt`​。​`myFolder`​ は Mule プロジェクトの ​`src/main/resources`​ の下に配置されています)。URL 以外の場合、​`readURL`​ は ​`read`​ と同じ引数を受け入れます。 ### [](#パラメーター)パラメーター
名前 説明

url

読み取る URL 文字列。クラスパスベースの URL も受け入れます。

contentType

サポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

readerProperties

(省略可能) リーダー設定プロパティを定義します。他の形式およびリーダー設定プロパティについては、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 次の例では、URL から JSON オブジェクトを読み取ります。(読みやすいように、下記の出力値は ​`…​`​ で短縮されています)。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json") ``` #### [](#出力)出力 ```JSON { "userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et ..." } ``` ### [](#例-2)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリに配置されている ​`myJsonSnippet.json`​ ファイルから JSON オブジェクトを読み取ります。(このファイルのサンプル JSON コンテンツは以下の「入力」セクションで示されています)。 ファイルのコンテンツを読み取ったら、スクリプトは、選択された項目を JSON から CSV に変換します。サンプルデータで DataWeave スクリプトを試す場合、特に取得元データが大きく、スクリプトが複雑なときは、この方法でファイルを読み取ることが役立つ可能性があります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myJsonSnippet = readUrl("classpath://myJsonSnippet.json", "application/json") output application/csv --- (myJsonSnippet.results map(item) -> item.profile) ``` #### [](#入力)入力 ```JSON { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ] } ``` #### [](#出力-2)出力 ```CSV firstName,lastName,email john,doe,johndoe@demo.com jane,doe,janedoe@demo.com ``` ### [](#例-3)例 次の例では、URL から CSV ファイルを読み取り、ヘッダーがないことを示すようにリーダープロパティを設定し、データを JSON に変換します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- readUrl("https://mywebsite.com/data.csv", "application/csv", {"header" : false}) ``` #### [](#入力-2)入力 Max,the Mule,MuleSoft #### [](#出力-3)出力 ```JSON [ { "column_0": "Max", "column_1": "the Mule", "column_2": "MuleSoft" } ] ``` ### [](#例-4)例 次の例では、Studio の ​`src/main/resources`​ ディレクトリから単純な ​`dwl`​ ファイルを読み取って、そのファイルからキー ​`name`​ の値を動的に読み取ります。(入力ファイルのサンプルコンテンツは以下の「入力」セクションで示されています)。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- (readUrl("classpath://name.dwl", "application/dw")).firstName ``` #### [](#入力-3)入力 ```JSON { "firstName" : "Somebody", "lastName" : "Special" } ``` #### [](#出力-4)出力 ```CSV "Somebody" ``` # reduce ## [](#reduce1)reduce(Array, (item: T, accumulator: T) -> T): T | Null 配列の要素に縮小式を適用します。 `reduce`​ は、入力配列の各要素に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムレーター値の両方を使用できます。 配列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、null 値が返されます。 ### [](#パラメーター)パラメーター
名前 説明

​item

入力配列の項目。縮小する値を提供します。​$​ として参照することもできます。

​acc

アキュムレーター。​$​ として参照することもできます。減算操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムレーターパラメーターは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。 次に、その結果が新しいアキュムレーター値として設定されます。

アキュムレーターの初期値が設定されていない場合、アキュムレーターは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムレーターの初期値とラムダ式によって、​reduce​ 関数で作成される結果の型が決まります。アキュムレーターが ​acc = {}​ に設定されている場合、結果は通常 Object​ (オブジェクト) 型になります。アキュムレーターが ​acc = []​ に設定されている場合、結果は通常 ​Array​ (配列) 型になります。 アキュムレーターが ​acc = ""​ に設定されている場合、結果は通常 ​String​ (文字列) 型になります。

### [](#例)例 次の例では、数値の合計を最初の入力配列に返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [2, 3] reduce ($ + $$) ``` #### [](#出力)出力 ```JSON 5 ``` ### [](#例-2)例 次の ​`sum`​ の例では数値を加算し、​`concat`​ の例ではその同じ数値を連結し、​`emptyList`​ の例では空の配列 ​`[]`​ (​`myEmptyList`​ で定義) が ​`null`​ を返すことを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myNums = [1,2,3,4] var myEmptyList = [] output application/json --- { "sum" : myNums reduce ($$ + $), "concat" : myNums reduce ($$ ++ $), "emptyList" : myEmptyList reduce ($$ ++ $) } ``` #### [](#出力-2)出力 ```JSON { "sum": 10, "concat": "1234", "emptyList": null } ``` ### [](#例-3)例 次の例では、最初の入力配列からの最初の要素を ​`"z"`​ に設定し、​`3`​ を 2 番目の入力配列の合計に加算します。​`multiply`​ では、配列の各値をその横の値で乗算し (​`[2,3,3] reduce ((item, acc) → acc * item)`​)、最終結果の ​`18`​ (= ​`2 * 3 * 3`​) を生成する方法を示しています。最後の例 (​`multiplyAcc`​) では、アキュムレーターを ​`3`​ に設定し、​`acc * item`​ (= ​`12`​) の結果を ​`3`​で乗算します (つまり、​`3 (2 * 2 * 3) = 36`​)。出力を参照してください。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "concat" : ["a", "b", "c", "d"] reduce ((item, acc = "z") -> acc ++ item), "sum": [0, 1, 2, 3, 4, 5] reduce ((item, acc = 3) -> acc + item), "multiply" : [2,3,3] reduce ((item, acc) -> acc * item), "multiplyAcc" : [2,2,3] reduce ((item, acc = 3) -> acc * item) } ``` #### [](#出力-3)出力 ```JSON { "concat": "zabcd", "sum": 18, "multiply": 18, "multiplyAcc": 36 } ``` ### [](#例-4)例 次の例は、​`reduce`​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myVar = { "a": [0, 1, 2, 3, 4, 5], "b": ["a", "b", "c", "d", "e"], "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }], "d": [true, false, false, true, true] } --- { "a" : [0, 1, 2, 3, 4, 5] reduce $$, "b": ["a", "b", "c", "d", "e"] reduce $$, "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((item, acc = "z") -> acc ++ item.letter), "d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$, "e": [true, false, false, true, true] reduce ($$ and $), "f": [true, false, false, true, true] reduce ((item, acc) -> acc and item), "g": [true, false, false, true, true] reduce ((item, acc = false) -> acc and item), "h": [true, false, false, true, true] reduce $$, "i": myVar.a reduce ($$ + $), "j": myVar.a reduce ((item, acc) -> acc + item), "k": myVar.a reduce ((item, acc = 3) -> acc + item), "l": myVar.a reduce $$, "m": myVar.b reduce ($$ ++ $), "n": myVar.b reduce ((item, acc) -> acc ++ item), "o": myVar.b reduce ((item, acc = "z") -> acc ++ item), "p": myVar.b reduce $$, "q": myVar.c reduce ((item, acc = "z") -> acc ++ item.letter), "r": myVar.c reduce $$, "s": myVar.d reduce ($$ and $), "t": myVar.d reduce ((item, acc) -> acc and item), "u": myVar.d reduce ((item, acc = false) -> acc and item), "v": myVar.d reduce $$, "w": ([0, 1, 2, 3, 4] reduce ((item, acc = {}) -> acc ++ { a: item })) pluck $, "x": [] reduce $$, "y": [] reduce ((item,acc = 0) -> acc + item) } ``` #### [](#出力-4)出力 ```JSON "a": 0, "b": "a", "c": "zabc", "d": { "letter": "a" }, "e": false, "f": false, "g": false, "h": true, "i": 15, "j": 15, "k": 18, "l": 0, "m": "abcde", "n": "abcde", "o": "zabcde", "p": "a", "q": "zabc", "r": { "letter": "a" }, "s": false, "t": false, "u": false, "v": true, "w": [ 0,1,2,3,4 ], "x": null, "y": 0 } ``` ### [](#例-5)例 次の例では、すべての XML ノード値を文字列に連結します。 #### [](#ソース-5)ソース ```xml 1 2 3 4 ``` #### [](#dataweave-スクリプト)DataWeave スクリプト ```DataWeave %dw 2.0 output application/json --- concat: payload.root.*line reduce ($$ ++ $) ``` #### [](#出力-5)出力 ```JSON { "concat": "1234" } ``` ## [](#reduce2)reduce(Array, (item: T, accumulator: A) -> A): A # reduce ## [](#reduce1)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: T) -> T): T | Null 配列の要素に縮小式を適用します。 `reduce`​ は、入力配列の各要素に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムレーター値の両方を使用できます。 配列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、null 値が返されます。 ### [](#パラメーター)パラメーター
名前 説明

​item

入力配列の項目。縮小する値を提供します。​$​ として参照することもできます。

​acc

アキュムレーター。​$​ として参照することもできます。​reduce​ 操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムレーターパラメーターは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。 次に、その結果が新しいアキュムレーター値として設定されます。

アキュムレーターの初期値が設定されていない場合、アキュムレーターは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムレーターの初期値とラムダ式によって、​reduce​ 関数で作成される結果の型が決まります。アキュムレーターが ​acc = {}​ に設定されている場合、結果は通常 Object​ (オブジェクト) 型になります。アキュムレーターが ​acc = []​ に設定されている場合、結果は通常 ​Array​ (配列) 型になります。 アキュムレーターが ​acc = ""​ に設定されている場合、結果は通常 ​String​ (文字列) 型になります。

### [](#例)例 次の例では、数値の合計を最初の入力配列に返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [2, 3] reduce ($ + $$) ``` #### [](#出力)出力 ```JSON 5 ``` ### [](#例-2)例 次の ​`sum`​ の例では数値を加算し、​`concat`​ の例ではその同じ数値を連結し、​`emptyList`​ の例では空の配列 ​`[]`​ (​`myEmptyList`​ で定義) が ​`null`​ を返すことを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myNums = [1,2,3,4] var myEmptyList = [] output application/json --- { "sum" : myNums reduce ($$ + $), "concat" : myNums reduce ($$ ++ $), "emptyList" : myEmptyList reduce ($$ ++ $) } ``` #### [](#出力-2)出力 ```JSON { "sum": 10, "concat": "1234", "emptyList": null } ``` ### [](#例-3)例 次の例では、最初の入力配列からの最初の要素を ​`"z"`​ に設定し、​`3`​ を 2 番目の入力配列の合計に加算します。​`multiply`​ では、配列の各値をその横の値で乗算し (​`[2,3,3] reduce ((item, acc) → acc * item)`​)、最終結果の ​`18`​ (= ​`2 * 3 * 3`​) を生成する方法を示しています。最後の例 (​`multiplyAcc`​) では、アキュムレーターを ​`3`​ に設定し、​`acc * item`​ (= ​`12`​) の結果を ​`3`​で乗算します (つまり、​`3 (2 * 2 * 3) = 36`​)。出力を参照してください。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "concat" : ["a", "b", "c", "d"] reduce ((item, acc = "z") -> acc ++ item), "sum": [0, 1, 2, 3, 4, 5] reduce ((item, acc = 3) -> acc + item), "multiply" : [2,3,3] reduce ((item, acc) -> acc * item), "multiplyAcc" : [2,2,3] reduce ((item, acc = 3) -> acc * item) } ``` #### [](#出力-3)出力 ```JSON { "concat": "zabcd", "sum": 18, "multiply": 18, "multiplyAcc": 36 } ``` ### [](#例-4)例 次の例は、​`reduce`​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myVar = { "a": [0, 1, 2, 3, 4, 5], "b": ["a", "b", "c", "d", "e"], "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }], "d": [true, false, false, true, true] } --- { "a" : [0, 1, 2, 3, 4, 5] reduce $$, "b": ["a", "b", "c", "d", "e"] reduce $$, "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((item, acc = "z") -> acc ++ item.letter), "d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$, "e": [true, false, false, true, true] reduce ($$ and $), "f": [true, false, false, true, true] reduce ((item, acc) -> acc and item), "g": [true, false, false, true, true] reduce ((item, acc = false) -> acc and item), "h": [true, false, false, true, true] reduce $$, "i": myVar.a reduce ($$ + $), "j": myVar.a reduce ((item, acc) -> acc + item), "k": myVar.a reduce ((item, acc = 3) -> acc + item), "l": myVar.a reduce $$, "m": myVar.b reduce ($$ ++ $), "n": myVar.b reduce ((item, acc) -> acc ++ item), "o": myVar.b reduce ((item, acc = "z") -> acc ++ item), "p": myVar.b reduce $$, "q": myVar.c reduce ((item, acc = "z") -> acc ++ item.letter), "r": myVar.c reduce $$, "s": myVar.d reduce ($$ and $), "t": myVar.d reduce ((item, acc) -> acc and item), "u": myVar.d reduce ((item, acc = false) -> acc and item), "v": myVar.d reduce $$, "w": ([0, 1, 2, 3, 4] reduce ((item, acc = {}) -> acc ++ { a: item })) pluck $, "x": [] reduce $$, "y": [] reduce ((item,acc = 0) -> acc + item) } ``` #### [](#出力-4)出力 ```JSON "a": 0, "b": "a", "c": "zabc", "d": { "letter": "a" }, "e": false, "f": false, "g": false, "h": true, "i": 15, "j": 15, "k": 18, "l": 0, "m": "abcde", "n": "abcde", "o": "zabcde", "p": "a", "q": "zabc", "r": { "letter": "a" }, "s": false, "t": false, "u": false, "v": true, "w": [ 0,1,2,3,4 ], "x": null, "y": 0 } ``` ## [](#reduce2)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: A) -> A): A ## [](#reduce3)reduce(@StreamCapable text: String, callback: (item: String, accumulator: String) -> String): String 文字列の文字に縮小式を適用します。 `reduce`​ は、入力文字列の各文字に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の文字と現在のアキュムレーター値の両方を使用できます。 文字列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、空の文字列が返されます。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

減算する文字列。

​callback

適用する関数。

### [](#例-5)例 次の例では、​`reduce`​ を使用して文字列を反転させる方法を示しています。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" reduce (item, acc = "") -> item ++ acc ``` #### [](#出力-5)出力 ```Json "dlrow olleh" ``` ## [](#reduce4)reduce(@StreamCapable text: String, callback: (item: String, accumulator: A) -> A): A ## [](#reduce5)reduce(@StreamCapable items: Null, callback: (item: T, accumulator: A) -> A): Null `reduce`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # reduce ## [](#reduce1)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: T) -> T): T | Null 配列の要素に縮小式を適用します。 `reduce`​ は、入力配列の各要素に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムレーター値の両方を使用できます。 配列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、null 値が返されます。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列の項目。縮小する値を提供します。​$​ として参照することもできます。

acc

アキュムレーター。​$​ として参照することもできます。​reduce​ 操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムレーターパラメーターは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。次に、その結果が新しいアキュムレーター値として設定されます。

アキュムレーターの初期値が設定されていない場合、アキュムレーターは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムレーターの初期値とラムダ式によって、​reduce​ 関数で作成される結果の型が決まります。アキュムレーターが ​acc = {}​ に設定されている場合、結果は通常 ​Object​ (オブジェクト) 型になります。アキュムレーターが ​acc = []​ に設定されている場合、結果は通常 ​Array​ (配列) 型になります。アキュムレーターが ​acc = ""​ に設定されている場合、結果は通常 ​String​ (文字列) 型になります。

### [](#例)例 次の例では、数値の合計を最初の入力配列に返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [2, 3] reduce ($ + $$) ``` #### [](#出力)出力 ```JSON 5 ``` ### [](#例-2)例 次の ​`sum`​ の例では数値を加算し、​`concat`​ の例ではその同じ数値を連結し、​`emptyList`​ の例では空の配列 ​`[]`​ (​`myEmptyList`​ で定義) が ​`null`​ を返すことを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myNums = [1,2,3,4] var myEmptyList = [] output application/json --- { "sum" : myNums reduce ($$ + $), "concat" : myNums reduce ($$ ++ $), "emptyList" : myEmptyList reduce ($$ ++ $) } ``` #### [](#出力-2)出力 ```JSON { "sum": 10, "concat": "1234", "emptyList": null } ``` ### [](#例-3)例 次の例では、最初の入力配列からの最初の要素を ​`"z"`​ に設定し、​`3`​ を 2 番目の入力配列の合計に加算します。​`multiply`​ では、配列の各値をその横の値で乗算し (​`[2,3,3] reduce ((item, acc) → acc * item)`​)、最終結果の ​`18`​ (= ​`2 * 3 * 3`​) を生成する方法を示しています。最後の例 (​`multiplyAcc`​) では、アキュムレーターを ​`3`​ に設定し、​`acc * item`​ (= ​`12`​) の結果を ​`3`​で乗算します (つまり、​`3 (2 * 2 * 3) = 36`​)。出力を参照してください。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "concat" : ["a", "b", "c", "d"] reduce ((item, acc = "z") -> acc ++ item), "sum": [0, 1, 2, 3, 4, 5] reduce ((item, acc = 3) -> acc + item), "multiply" : [2,3,3] reduce ((item, acc) -> acc * item), "multiplyAcc" : [2,2,3] reduce ((item, acc = 3) -> acc * item) } ``` #### [](#出力-3)出力 ```JSON { "concat": "zabcd", "sum": 18, "multiply": 18, "multiplyAcc": 36 } ``` ### [](#例-4)例 次の例は、​`reduce`​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myVar = { "a": [0, 1, 2, 3, 4, 5], "b": ["a", "b", "c", "d", "e"], "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }], "d": [true, false, false, true, true] } --- { "a" : [0, 1, 2, 3, 4, 5] reduce $$, "b": ["a", "b", "c", "d", "e"] reduce $$, "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((item, acc = "z") -> acc ++ item.letter), "d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$, "e": [true, false, false, true, true] reduce ($$ and $), "f": [true, false, false, true, true] reduce ((item, acc) -> acc and item), "g": [true, false, false, true, true] reduce ((item, acc = false) -> acc and item), "h": [true, false, false, true, true] reduce $$, "i": myVar.a reduce ($$ + $), "j": myVar.a reduce ((item, acc) -> acc + item), "k": myVar.a reduce ((item, acc = 3) -> acc + item), "l": myVar.a reduce $$, "m": myVar.b reduce ($$ ++ $), "n": myVar.b reduce ((item, acc) -> acc ++ item), "o": myVar.b reduce ((item, acc = "z") -> acc ++ item), "p": myVar.b reduce $$, "q": myVar.c reduce ((item, acc = "z") -> acc ++ item.letter), "r": myVar.c reduce $$, "s": myVar.d reduce ($$ and $), "t": myVar.d reduce ((item, acc) -> acc and item), "u": myVar.d reduce ((item, acc = false) -> acc and item), "v": myVar.d reduce $$, "w": ([0, 1, 2, 3, 4] reduce ((item, acc = {}) -> acc ++ { a: item })) pluck $, "x": [] reduce $$, "y": [] reduce ((item,acc = 0) -> acc + item) } ``` #### [](#出力-4)出力 ```JSON "a": 0, "b": "a", "c": "zabc", "d": { "letter": "a" }, "e": false, "f": false, "g": false, "h": true, "i": 15, "j": 15, "k": 18, "l": 0, "m": "abcde", "n": "abcde", "o": "zabcde", "p": "a", "q": "zabc", "r": { "letter": "a" }, "s": false, "t": false, "u": false, "v": true, "w": [ 0,1,2,3,4 ], "x": null, "y": 0 } ``` ## [](#reduce2)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: A) -> A): A ## [](#reduce3)reduce(@StreamCapable text: String, callback: (item: String, accumulator: String) -> String): String 文字列の文字に縮小式を適用します。 `reduce`​ は、入力文字列の各文字に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の文字と現在のアキュムレーター値の両方を使用できます。 文字列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、空の文字列が返されます。 ### [](#パラメーター-2)パラメーター
名前 説明

text

減算する文字列。

callback

適用する関数。

### [](#例-5)例 次の例では、​`reduce`​ を使用して文字列を反転させる方法を示しています。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" reduce (item, acc = "") -> item ++ acc ``` #### [](#出力-5)出力 ```Json "dlrow olleh" ``` ## [](#reduce4)reduce
(@StreamCapable text: String, callback: (item: String, accumulator: A) -> A): A ## [](#reduce5)reduce(@StreamCapable items: Null, callback: (item: T, accumulator: A) -> A): Null `reduce`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # reduce ## [](#reduce1)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: T) -> T): T | Null 配列の要素に縮小式を適用します。 `reduce`​ は、入力配列の各要素に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムレーター値の両方を使用できます。 配列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、null 値が返されます。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列の項目。縮小する値を提供します。​$​ として参照することもできます。

acc

アキュムレーター。​$​ として参照することもできます。​reduce​ 操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムレーターパラメーターは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。次に、その結果が新しいアキュムレーター値として設定されます。

アキュムレーターの初期値が設定されていない場合、アキュムレーターは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムレーターの初期値とラムダ式によって、​reduce​ 関数で作成される結果の型が決まります。アキュムレーターが ​acc = {}​ に設定されている場合、結果は通常 ​Object​ (オブジェクト) 型になります。アキュムレーターが ​acc = []​ に設定されている場合、結果は通常 ​Array​ (配列) 型になります。アキュムレーターが ​acc = ""​ に設定されている場合、結果は通常 ​String​ (文字列) 型になります。

### [](#例)例 次の例では、数値の合計を最初の入力配列に返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [2, 3] reduce ($ + $$) ``` #### [](#出力)出力 ```JSON 5 ``` ### [](#例-2)例 次の ​`sum`​ の例では数値を加算し、​`concat`​ の例ではその同じ数値を連結し、​`emptyList`​ の例では空の配列 ​`[]`​ (​`myEmptyList`​ で定義) が ​`null`​ を返すことを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myNums = [1,2,3,4] var myEmptyList = [] output application/json --- { "sum" : myNums reduce ($$ + $), "concat" : myNums reduce ($$ ++ $), "emptyList" : myEmptyList reduce ($$ ++ $) } ``` #### [](#出力-2)出力 ```JSON { "sum": 10, "concat": "1234", "emptyList": null } ``` ### [](#例-3)例 次の例では、最初の入力配列からの最初の要素を ​`"z"`​ に設定し、​`3`​ を 2 番目の入力配列の合計に加算します。​`multiply`​ では、配列の各値をその横の値で乗算し (​`[2,3,3] reduce ((item, acc) → acc * item)`​)、最終結果の ​`18`​ (= ​`2 * 3 * 3`​) を生成する方法を示しています。最後の例 (​`multiplyAcc`​) では、アキュムレーターを ​`3`​ に設定し、​`acc * item`​ (= ​`12`​) の結果を ​`3`​で乗算します (つまり、​`3 (2 * 2 * 3) = 36`​)。出力を参照してください。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "concat" : ["a", "b", "c", "d"] reduce ((item, acc = "z") -> acc ++ item), "sum": [0, 1, 2, 3, 4, 5] reduce ((item, acc = 3) -> acc + item), "multiply" : [2,3,3] reduce ((item, acc) -> acc * item), "multiplyAcc" : [2,2,3] reduce ((item, acc = 3) -> acc * item) } ``` #### [](#出力-3)出力 ```JSON { "concat": "zabcd", "sum": 18, "multiply": 18, "multiplyAcc": 36 } ``` ### [](#例-4)例 次の例は、​`reduce`​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myVar = { "a": [0, 1, 2, 3, 4, 5], "b": ["a", "b", "c", "d", "e"], "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }], "d": [true, false, false, true, true] } --- { "a" : [0, 1, 2, 3, 4, 5] reduce $$, "b": ["a", "b", "c", "d", "e"] reduce $$, "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((item, acc = "z") -> acc ++ item.letter), "d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$, "e": [true, false, false, true, true] reduce ($$ and $), "f": [true, false, false, true, true] reduce ((item, acc) -> acc and item), "g": [true, false, false, true, true] reduce ((item, acc = false) -> acc and item), "h": [true, false, false, true, true] reduce $$, "i": myVar.a reduce ($$ + $), "j": myVar.a reduce ((item, acc) -> acc + item), "k": myVar.a reduce ((item, acc = 3) -> acc + item), "l": myVar.a reduce $$, "m": myVar.b reduce ($$ ++ $), "n": myVar.b reduce ((item, acc) -> acc ++ item), "o": myVar.b reduce ((item, acc = "z") -> acc ++ item), "p": myVar.b reduce $$, "q": myVar.c reduce ((item, acc = "z") -> acc ++ item.letter), "r": myVar.c reduce $$, "s": myVar.d reduce ($$ and $), "t": myVar.d reduce ((item, acc) -> acc and item), "u": myVar.d reduce ((item, acc = false) -> acc and item), "v": myVar.d reduce $$, "w": ([0, 1, 2, 3, 4] reduce ((item, acc = {}) -> acc ++ { a: item })) pluck $, "x": [] reduce $$, "y": [] reduce ((item,acc = 0) -> acc + item) } ``` #### [](#出力-4)出力 ```JSON "a": 0, "b": "a", "c": "zabc", "d": { "letter": "a" }, "e": false, "f": false, "g": false, "h": true, "i": 15, "j": 15, "k": 18, "l": 0, "m": "abcde", "n": "abcde", "o": "zabcde", "p": "a", "q": "zabc", "r": { "letter": "a" }, "s": false, "t": false, "u": false, "v": true, "w": [ 0,1,2,3,4 ], "x": null, "y": 0 } ``` ## [](#reduce2)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: A) -> A): A ## [](#reduce3)reduce(@StreamCapable text: String, callback: (item: String, accumulator: String) -> String): String 文字列の文字に縮小式を適用します。 `reduce`​ は、入力文字列の各文字に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の文字と現在のアキュムレーター値の両方を使用できます。 文字列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、空の文字列が返されます。 ### [](#パラメーター-2)パラメーター
名前 説明

text

減算する文字列。

callback

適用する関数。

### [](#例-5)例 次の例では、​`reduce`​ を使用して文字列を反転させる方法を示しています。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" reduce (item, acc = "") -> item ++ acc ``` #### [](#出力-5)出力 ```Json "dlrow olleh" ``` ## [](#reduce4)reduce
(@StreamCapable text: String, callback: (item: String, accumulator: A) -> A): A ## [](#reduce5)reduce(@StreamCapable items: Null, callback: (item: T, accumulator: A) -> A): Null `reduce`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # reduce ## [](#reduce1)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: T) -> T): T | Null 配列の要素に縮小式を適用します。 `reduce`​ は、入力配列の各要素に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムレーター値の両方を使用できます。 配列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、null 値が返されます。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列の項目。縮小する値を提供します。​$​ として参照することもできます。

acc

アキュムレーター。​$​ として参照することもできます。​reduce​ 操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムレーターパラメーターは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。次に、その結果が新しいアキュムレーター値として設定されます。

アキュムレーターの初期値が設定されていない場合、アキュムレーターは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムレーターの初期値とラムダ式によって、​reduce​ 関数で作成される結果の型が決まります。アキュムレーターが ​acc = {}​ に設定されている場合、結果は通常 ​Object​ (オブジェクト) 型になります。アキュムレーターが ​acc = []​ に設定されている場合、結果は通常 ​Array​ (配列) 型になります。アキュムレーターが ​acc = ""​ に設定されている場合、結果は通常 ​String​ (文字列) 型になります。

### [](#例)例 次の例では、数値の合計を最初の入力配列に返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [2, 3] reduce ($ + $$) ``` #### [](#出力)出力 ```JSON 5 ``` ### [](#例-2)例 次の ​`sum`​ の例では数値を加算し、​`concat`​ の例ではその同じ数値を連結し、​`emptyList`​ の例では空の配列 ​`[]`​ (​`myEmptyList`​ で定義) が ​`null`​ を返すことを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myNums = [1,2,3,4] var myEmptyList = [] output application/json --- { "sum" : myNums reduce ($$ + $), "concat" : myNums reduce ($$ ++ $), "emptyList" : myEmptyList reduce ($$ ++ $) } ``` #### [](#出力-2)出力 ```JSON { "sum": 10, "concat": "1234", "emptyList": null } ``` ### [](#例-3)例 次の例では、最初の入力配列からの最初の要素を ​`"z"`​ に設定し、​`3`​ を 2 番目の入力配列の合計に加算します。​`multiply`​ では、配列の各値をその横の値で乗算し (​`[2,3,3] reduce ((item, acc) → acc * item)`​)、最終結果の ​`18`​ (= ​`2 * 3 * 3`​) を生成する方法を示しています。最後の例 (​`multiplyAcc`​) では、アキュムレーターを ​`3`​ に設定し、​`acc * item`​ (= ​`12`​) の結果を ​`3`​で乗算します (つまり、​`3 (2 * 2 * 3) = 36`​)。出力を参照してください。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "concat" : ["a", "b", "c", "d"] reduce ((item, acc = "z") -> acc ++ item), "sum": [0, 1, 2, 3, 4, 5] reduce ((item, acc = 3) -> acc + item), "multiply" : [2,3,3] reduce ((item, acc) -> acc * item), "multiplyAcc" : [2,2,3] reduce ((item, acc = 3) -> acc * item) } ``` #### [](#出力-3)出力 ```JSON { "concat": "zabcd", "sum": 18, "multiply": 18, "multiplyAcc": 36 } ``` ### [](#例-4)例 次の例は、​`reduce`​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myVar = { "a": [0, 1, 2, 3, 4, 5], "b": ["a", "b", "c", "d", "e"], "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }], "d": [true, false, false, true, true] } --- { "a" : [0, 1, 2, 3, 4, 5] reduce $$, "b": ["a", "b", "c", "d", "e"] reduce $$, "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((item, acc = "z") -> acc ++ item.letter), "d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$, "e": [true, false, false, true, true] reduce ($$ and $), "f": [true, false, false, true, true] reduce ((item, acc) -> acc and item), "g": [true, false, false, true, true] reduce ((item, acc = false) -> acc and item), "h": [true, false, false, true, true] reduce $$, "i": myVar.a reduce ($$ + $), "j": myVar.a reduce ((item, acc) -> acc + item), "k": myVar.a reduce ((item, acc = 3) -> acc + item), "l": myVar.a reduce $$, "m": myVar.b reduce ($$ ++ $), "n": myVar.b reduce ((item, acc) -> acc ++ item), "o": myVar.b reduce ((item, acc = "z") -> acc ++ item), "p": myVar.b reduce $$, "q": myVar.c reduce ((item, acc = "z") -> acc ++ item.letter), "r": myVar.c reduce $$, "s": myVar.d reduce ($$ and $), "t": myVar.d reduce ((item, acc) -> acc and item), "u": myVar.d reduce ((item, acc = false) -> acc and item), "v": myVar.d reduce $$, "w": ([0, 1, 2, 3, 4] reduce ((item, acc = {}) -> acc ++ { a: item })) pluck $, "x": [] reduce $$, "y": [] reduce ((item,acc = 0) -> acc + item) } ``` #### [](#出力-4)出力 ```JSON "a": 0, "b": "a", "c": "zabc", "d": { "letter": "a" }, "e": false, "f": false, "g": false, "h": true, "i": 15, "j": 15, "k": 18, "l": 0, "m": "abcde", "n": "abcde", "o": "zabcde", "p": "a", "q": "zabc", "r": { "letter": "a" }, "s": false, "t": false, "u": false, "v": true, "w": [ 0,1,2,3,4 ], "x": null, "y": 0 } ``` ## [](#reduce2)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: A) -> A): A ## [](#reduce3)reduce(@StreamCapable text: String, callback: (item: String, accumulator: String) -> String): String 文字列の文字に縮小式を適用します。 `reduce`​ は、入力文字列の各文字に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の文字と現在のアキュムレーター値の両方を使用できます。 文字列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、空の文字列が返されます。 ### [](#パラメーター-2)パラメーター
名前 説明

text

減算する文字列。

callback

適用する関数。

### [](#例-5)例 次の例では、​`reduce`​ を使用して文字列を反転させる方法を示しています。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" reduce (item, acc = "") -> item ++ acc ``` #### [](#出力-5)出力 ```Json "dlrow olleh" ``` ## [](#reduce4)reduce
(@StreamCapable text: String, callback: (item: String, accumulator: A) -> A): A ## [](#reduce5)reduce(@StreamCapable items: Null, callback: (item: T, accumulator: A) -> A): Null `reduce`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # reduce ## [](#reduce1)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: T) -> T): T | Null 配列の要素に縮小式を適用します。 `reduce`​ は、入力配列の各要素に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムレーター値の両方を使用できます。 配列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、null 値が返されます。 ### [](#パラメーター)パラメーター
名前 説明

item

入力配列の項目。縮小する値を提供します。​$​ として参照することもできます。

acc

アキュムレーター。​$​ として参照することもできます。​reduce​ 操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムレーターパラメーターは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。次に、その結果が新しいアキュムレーター値として設定されます。

アキュムレーターの初期値が設定されていない場合、アキュムレーターは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムレーターの初期値とラムダ式によって、​reduce​ 関数で作成される結果の型が決まります。アキュムレーターが ​acc = {}​ に設定されている場合、結果は通常 ​Object​ (オブジェクト) 型になります。アキュムレーターが ​acc = []​ に設定されている場合、結果は通常 ​Array​ (配列) 型になります。アキュムレーターが ​acc = ""​ に設定されている場合、結果は通常 ​String​ (文字列) 型になります。

### [](#例)例 次の例では、数値の合計を最初の入力配列に返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [2, 3] reduce ($ + $$) ``` #### [](#出力)出力 ```JSON 5 ``` ### [](#例-2)例 次の ​`sum`​ の例では数値を加算し、​`concat`​ の例ではその同じ数値を連結し、​`emptyList`​ の例では空の配列 ​`[]`​ (​`myEmptyList`​ で定義) が ​`null`​ を返すことを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myNums = [1,2,3,4] var myEmptyList = [] output application/json --- { "sum" : myNums reduce ($$ + $), "concat" : myNums reduce ($$ ++ $), "emptyList" : myEmptyList reduce ($$ ++ $) } ``` #### [](#出力-2)出力 ```JSON { "sum": 10, "concat": "1234", "emptyList": null } ``` ### [](#例-3)例 次の例では、最初の入力配列からの最初の要素を ​`"z"`​ に設定し、​`3`​ を 2 番目の入力配列の合計に加算します。​`multiply`​ では、配列の各値をその横の値で乗算し (​`[2,3,3] reduce ((item, acc) → acc * item)`​)、最終結果の ​`18`​ (= ​`2 * 3 * 3`​) を生成する方法を示しています。最後の例 (​`multiplyAcc`​) では、アキュムレーターを ​`3`​ に設定し、​`acc * item`​ (= ​`12`​) の結果を ​`3`​ で乗算します (つまり、​`3 (2 * 2 * 3) = 36`​)。出力を参照してください。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "concat" : ["a", "b", "c", "d"] reduce ((item, acc = "z") -> acc ++ item), "sum": [0, 1, 2, 3, 4, 5] reduce ((item, acc = 3) -> acc + item), "multiply" : [2,3,3] reduce ((item, acc) -> acc * item), "multiplyAcc" : [2,2,3] reduce ((item, acc = 3) -> acc * item) } ``` #### [](#出力-3)出力 ```JSON { "concat": "zabcd", "sum": 18, "multiply": 18, "multiplyAcc": 36 } ``` ### [](#例-4)例 次の例は、​`reduce`​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json var myVar = { "a": [0, 1, 2, 3, 4, 5], "b": ["a", "b", "c", "d", "e"], "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }], "d": [true, false, false, true, true] } --- { "a" : [0, 1, 2, 3, 4, 5] reduce $$, "b": ["a", "b", "c", "d", "e"] reduce $$, "c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((item, acc = "z") -> acc ++ item.letter), "d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$, "e": [true, false, false, true, true] reduce ($$ and $), "f": [true, false, false, true, true] reduce ((item, acc) -> acc and item), "g": [true, false, false, true, true] reduce ((item, acc = false) -> acc and item), "h": [true, false, false, true, true] reduce $$, "i": myVar.a reduce ($$ + $), "j": myVar.a reduce ((item, acc) -> acc + item), "k": myVar.a reduce ((item, acc = 3) -> acc + item), "l": myVar.a reduce $$, "m": myVar.b reduce ($$ ++ $), "n": myVar.b reduce ((item, acc) -> acc ++ item), "o": myVar.b reduce ((item, acc = "z") -> acc ++ item), "p": myVar.b reduce $$, "q": myVar.c reduce ((item, acc = "z") -> acc ++ item.letter), "r": myVar.c reduce $$, "s": myVar.d reduce ($$ and $), "t": myVar.d reduce ((item, acc) -> acc and item), "u": myVar.d reduce ((item, acc = false) -> acc and item), "v": myVar.d reduce $$, "w": ([0, 1, 2, 3, 4] reduce ((item, acc = {}) -> acc ++ { a: item })) pluck $, "x": [] reduce $$, "y": [] reduce ((item,acc = 0) -> acc + item) } ``` #### [](#出力-4)出力 ```JSON "a": 0, "b": "a", "c": "zabc", "d": { "letter": "a" }, "e": false, "f": false, "g": false, "h": true, "i": 15, "j": 15, "k": 18, "l": 0, "m": "abcde", "n": "abcde", "o": "zabcde", "p": "a", "q": "zabc", "r": { "letter": "a" }, "s": false, "t": false, "u": false, "v": true, "w": [ 0,1,2,3,4 ], "x": null, "y": 0 } ``` ## [](#reduce2)reduce(@StreamCapable items: Array, callback: (item: T, accumulator: A) -> A): A ## [](#reduce3)reduce(@StreamCapable text: String, callback: (item: String, accumulator: String) -> String): String 文字列の文字に縮小式を適用します。 `reduce`​ は、入力文字列の各文字に対して順番に縮小ラムダ式 (関数) を適用し、アキュムレーターを新しい結果で置き換えます。このラムダ式では、現在の文字と現在のアキュムレーター値の両方を使用できます。 文字列が空で、アキュムレーターパラメーターにデフォルト値が設定されていない場合、空の文字列が返されます。 ### [](#パラメーター-2)パラメーター
名前 説明

text

減算する文字列。

callback

適用する関数。

### [](#例-5)例 次の例では、​`reduce`​ を使用して文字列を反転させる方法を示しています。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "hello world" reduce (item, acc = "") -> item ++ acc ``` #### [](#出力-5)出力 ```Json "dlrow olleh" ``` ## [](#reduce4)reduce
(@StreamCapable text: String, callback: (item: String, accumulator: A) -> A): A ## [](#reduce5)reduce(@StreamCapable items: Null, callback: (item: T, accumulator: A) -> A): Null `reduce`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # repeat ## [](#repeat1)repeat(String, Number): String `text`​ を、指定された回数 (​`times`​) 繰り返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​times

文字を繰り返す回数。負の値はゼロとして処理されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`repeat`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": repeat("e", 0), "b": repeat("e", 3), "c": repeat("e", -2) } ``` #### [](#出力)出力 ```JSON { "a": "", "b": "eee", "c": "" } ``` # repeat ## [](#repeat1)repeat(text: String, times: Number): String `text`​ を、指定された回数 (​`times`​) 繰り返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​times

文字を繰り返す回数。負の値はゼロとして処理されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`repeat`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": repeat("e", 0), "b": repeat("e", 3), "c": repeat("e", -2) } ``` #### [](#出力)出力 ```JSON { "a": "", "b": "eee", "c": "" } ``` ## [](#repeat2)repeat(text: Null, times: Any): Null `repeat`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # repeat ## [](#repeat1)repeat(text: String, times: Number): String `text`​ を、指定された回数 (​`times`​) 繰り返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

times

文字を繰り返す回数。負の値はゼロとして処理されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`repeat`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": repeat("e", 0), "b": repeat("e", 3), "c": repeat("e", -2) } ``` #### [](#出力)出力 ```JSON { "a": "", "b": "eee", "c": "" } ``` ## [](#repeat2)repeat(text: Null, times: Any): Null `repeat`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # repeat ## [](#repeat1)repeat(text: String, times: Number): String `text`​ を、指定された回数 (​`times`​) 繰り返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

times

文字を繰り返す回数。負の値はゼロとして処理されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`repeat`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": repeat("e", 0), "b": repeat("e", 3), "c": repeat("e", -2) } ``` #### [](#出力)出力 ```JSON { "a": "", "b": "eee", "c": "" } ``` ## [](#repeat2)repeat(text: Null, times: Any): Null `repeat`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # repeat ## [](#repeat1)repeat(text: String, times: Number): String `text`​ を、指定された回数 (​`times`​) 繰り返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

times

文字を繰り返す回数。負の値はゼロとして処理されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`repeat`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": repeat("e", 0), "b": repeat("e", 3), "c": repeat("e", -2) } ``` #### [](#出力)出力 ```JSON { "a": "", "b": "eee", "c": "" } ``` ## [](#repeat2)repeat(text: Null, times: Any): Null `repeat`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # repeat ## [](#repeat1)repeat(text: String, times: Number): String `text`​ を、指定された回数 (​`times`​) 繰り返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

times

文字を繰り返す回数。負の値はゼロとして処理されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`repeat`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": repeat("e", 0), "b": repeat("e", 3), "c": repeat("e", -2) } ``` #### [](#出力)出力 ```JSON { "a": "", "b": "eee", "c": "" } ``` ## [](#repeat2)repeat(text: Null, times: Any): Null `repeat`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replace ## [](#replace1)replace(String, Regex): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、文字列の一部を照合する Java 正規表現を受け入れます。入力文字列の一致部分の置換文字列を指定するには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター)パラメーター
名前 説明

​text

照合する文字列。

​matcher

入力 ​text​ 文字列内の文字を照合する Java 正規表現。

### [](#例)例 取得元の最初の例では、2 番目のハイフン (このハイフンを含む) までのすべての文字 (​`123-456-`​) を空の値で置き換えるため、最後の 4 桁の数字が返されます。2 番目の例では、入力文字列内の文字 ​`b13e`​ をハイフン (​`-`​) で置き換えます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["123-456-7890" replace /.*-/ with(""), "abc123def" replace /[b13e]/ with("-")] ``` #### [](#出力)出力 ```JSON [ 7890, "a-c-2-d-f" ] ``` ### [](#例-2)例 次の例では、入力文字列内の数値 ​`123`​ を ​`ID`​ で置き換えます。この例では正規表現 ​`(\d+)`​ が使用されています。​`\d`​ メタ文字は 0 ~ 9 の任意の数字を意味し、​`` `​ は、1 桁以上の数字が出現可能であることを意味します。 ` ``​ がない場合、1 桁の数字ごとに 1 つの ​`ID`​ が出力に含まれます。この例では、中置表記を使用して式を記述する方法と、前置表記を使用して式を記述する方法も示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ "my123" replace /(\d+)/ with("ID"), replace("myOther123", /(\d+)/) with("ID") ] ``` #### [](#出力-2)出力 ```JSON [ "myID", "myOtherID" ] ``` ## [](#replace2)replace(String, String): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、指定された文字列の一部を照合する文字列を受け入れます。入力文字列の一致部分の置換文字列を渡すには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

照合する文字列。

​matcher

入力 ​text​ 文字列内の文字を照合するための文字列。

### [](#例-3)例 次の例では、入力文字列からの数値 ​`123`​ を、​`with`​ 関数で渡された文字 ​`ID`​ で置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "replace": "admin123" replace "123" with("ID") } ``` #### [](#出力-3)出力 ```JSON { "replace": "adminID" } ``` # replace ## [](#replace1)replace(text: String, matcher: Regex): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、文字列の一部を照合する Java 正規表現を受け入れます。入力文字列の一致部分の置換文字列を指定するには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター)パラメーター
名前 説明

​text

照合する文字列。

​matcher

入力 ​text​ 文字列内の文字を照合する Java 正規表現。

### [](#例)例 取得元の最初の例では、2 番目のハイフン (このハイフンを含む) までのすべての文字 (​`123-456-`​) を空の値で置き換えるため、最後の 4 桁の数字が返されます。2 番目の例では、入力文字列内の文字 ​`b13e`​ をハイフン (​`-`​) で置き換えます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["123-456-7890" replace /.*-/ with(""), "abc123def" replace /[b13e]/ with("-")] ``` #### [](#出力)出力 ```JSON [ 7890, "a-c-2-d-f" ] ``` ### [](#例-2)例 次の例では、入力文字列内の数値 ​`123`​ を ​`ID`​ で置き換えます。この例では正規表現 ​`(\d+)`​ が使用されています。​`\d`​ メタ文字は 0 ~ 9 の任意の数字を意味し、​`` `​ は、1 桁以上の数字が出現可能であることを意味します。 ` ``​ がない場合、1 桁の数字ごとに 1 つの ​`ID`​ が出力に含まれます。この例では、中置表記を使用して式を記述する方法と、前置表記を使用して式を記述する方法も示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ "my123" replace /(\d+)/ with("ID"), replace("myOther123", /(\d+)/) with("ID") ] ``` #### [](#出力-2)出力 ```JSON [ "myID", "myOtherID" ] ``` ## [](#replace2)replace(text: String, matcher: String): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、指定された文字列の一部を照合する文字列を受け入れます。入力文字列の一致部分の置換文字列を渡すには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

照合する文字列。

​matcher

入力 ​text​ 文字列内の文字を照合するための文字列。

### [](#例-3)例 次の例では、入力文字列からの数値 ​`123`​ を、​`with`​ 関数で渡された文字 ​`ID`​ で置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "replace": "admin123" replace "123" with("ID") } ``` #### [](#出力-3)出力 ```JSON { "replace": "adminID" } ``` ## [](#replace3)replace(text: Null, matcher: Any): ((Nothing, Nothing) -> Any) -> Null `replace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # replace ## [](#replace1)replace(text: String, matcher: Regex): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、文字列の一部を照合する Java 正規表現を受け入れます。入力文字列の一致部分の置換文字列を指定するには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合する Java 正規表現。

### [](#例)例 取得元の最初の例では、2 番目のハイフン (このハイフンを含む) までのすべての文字 (​`123-456-`​) を空の値で置き換えるため、最後の 4 桁の数字が返されます。2 番目の例では、入力文字列内の文字 ​`b13e`​ をハイフン (​`-`​) で置き換えます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["123-456-7890" replace /.*-/ with(""), "abc123def" replace /[b13e]/ with("-")] ``` #### [](#出力)出力 ```JSON [ 7890, "a-c-2-d-f" ] ``` ### [](#例-2)例 次の例では、入力文字列内の数値 ​`123`​ を ​`ID`​ で置き換えます。この例では正規表現 ​`(\d+)`​ が使用されています。​`\d`​ メタ文字は 0 ~ 9 の任意の数字を意味し、​`` `​ は、1 桁以上の数字が出現可能であることを意味します。 ` ``​ がない場合、1 桁の数字ごとに 1 つの ​`ID`​ が出力に含まれます。この例では、中置表記を使用して式を記述する方法と、前置表記を使用して式を記述する方法も示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ "my123" replace /(\d+)/ with("ID"), replace("myOther123", /(\d+)/) with("ID") ] ``` #### [](#出力-2)出力 ```JSON [ "myID", "myOtherID" ] ``` ## [](#replace2)replace(text: String, matcher: String): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、指定された文字列の一部を照合する文字列を受け入れます。入力文字列の一致部分の置換文字列を渡すには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合するための文字列。

### [](#例-3)例 次の例では、入力文字列からの数値 ​`123`​ を、​`with`​ 関数で渡された文字 ​`ID`​ で置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "replace": "admin123" replace "123" with("ID") } ``` #### [](#出力-3)出力 ```JSON { "replace": "adminID" } ``` ## [](#replace3)replace(text: Null, matcher: Any): ((Nothing, Nothing) -> Any) -> Null `replace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replace ## [](#replace1)replace(text: String, matcher: Regex): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、文字列の一部を照合する Java 正規表現を受け入れます。入力文字列の一致部分の置換文字列を指定するには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合する Java 正規表現。

### [](#例)例 取得元の最初の例では、2 番目のハイフン (このハイフンを含む) までのすべての文字 (​`123-456-`​) を空の値で置き換えるため、最後の 4 桁の数字が返されます。2 番目の例では、入力文字列内の文字 ​`b13e`​ をハイフン (​`-`​) で置き換えます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["123-456-7890" replace /.*-/ with(""), "abc123def" replace /[b13e]/ with("-")] ``` #### [](#出力)出力 ```JSON [ 7890, "a-c-2-d-f" ] ``` ### [](#例-2)例 次の例では、入力文字列内の数値 ​`123`​ を ​`ID`​ で置き換えます。この例では正規表現 ​`(\d+)`​ が使用されています。​`\d`​ メタ文字は 0 ~ 9 の任意の数字を意味し、​`` `​ は、1 桁以上の数字が出現可能であることを意味します。 ` ``​ がない場合、1 桁の数字ごとに 1 つの ​`ID`​ が出力に含まれます。この例では、中置表記を使用して式を記述する方法と、前置表記を使用して式を記述する方法も示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ "my123" replace /(\d+)/ with("ID"), replace("myOther123", /(\d+)/) with("ID") ] ``` #### [](#出力-2)出力 ```JSON [ "myID", "myOtherID" ] ``` ## [](#replace2)replace(text: String, matcher: String): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、指定された文字列の一部を照合する文字列を受け入れます。入力文字列の一致部分の置換文字列を渡すには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合するための文字列。

### [](#例-3)例 次の例では、入力文字列からの数値 ​`123`​ を、​`with`​ 関数で渡された文字 ​`ID`​ で置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "replace": "admin123" replace "123" with("ID") } ``` #### [](#出力-3)出力 ```JSON { "replace": "adminID" } ``` ## [](#replace3)replace(text: Null, matcher: Any): ((Nothing, Nothing) -> Any) -> Null `replace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replace ## [](#replace1)replace(text: String, matcher: Regex): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、文字列の一部を照合する Java 正規表現を受け入れます。入力文字列の一致部分の置換文字列を指定するには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合する Java 正規表現。

### [](#例)例 取得元の最初の例では、2 番目のハイフン (このハイフンを含む) までのすべての文字 (​`123-456-`​) を空の値で置き換えるため、最後の 4 桁の数字が返されます。2 番目の例では、入力文字列内の文字 ​`b13e`​ をハイフン (​`-`​) で置き換えます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["123-456-7890" replace /.*-/ with(""), "abc123def" replace /[b13e]/ with("-")] ``` #### [](#出力)出力 ```JSON [ 7890, "a-c-2-d-f" ] ``` ### [](#例-2)例 次の例では、入力文字列内の数値 ​`123`​ を ​`ID`​ で置き換えます。この例では正規表現 ​`(\d+)`​ が使用されています。​`\d`​ メタ文字は 0 ~ 9 の任意の数字を意味し、​`` `​ は、1 桁以上の数字が出現可能であることを意味します。 ` ``​ がない場合、1 桁の数字ごとに 1 つの ​`ID`​ が出力に含まれます。この例では、中置表記を使用して式を記述する方法と、前置表記を使用して式を記述する方法も示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ "my123" replace /(\d+)/ with("ID"), replace("myOther123", /(\d+)/) with("ID") ] ``` #### [](#出力-2)出力 ```JSON [ "myID", "myOtherID" ] ``` ## [](#replace2)replace(text: String, matcher: String): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、指定された文字列の一部を照合する文字列を受け入れます。入力文字列の一致部分の置換文字列を渡すには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合するための文字列。

### [](#例-3)例 次の例では、入力文字列からの数値 ​`123`​ を、​`with`​ 関数で渡された文字 ​`ID`​ で置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "replace": "admin123" replace "123" with("ID") } ``` #### [](#出力-3)出力 ```JSON { "replace": "adminID" } ``` ## [](#replace3)replace(text: Null, matcher: Any): ((Nothing, Nothing) -> Any) -> Null `replace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replace ## [](#replace1)replace(text: String, matcher: Regex): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、文字列の一部を照合する Java 正規表現を受け入れます。入力文字列の一致部分の置換文字列を指定するには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合する Java 正規表現。

### [](#例)例 取得元の最初の例では、2 番目のハイフン (このハイフンを含む) までのすべての文字 (​`123-456-`​) を空の値で置き換えるため、最後の 4 桁の数字が返されます。2 番目の例では、入力文字列内の文字 ​`b13e`​ をハイフン (​`-`​) で置き換えます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- ["123-456-7890" replace /.*-/ with(""), "abc123def" replace /[b13e]/ with("-")] ``` #### [](#出力)出力 ```JSON [ 7890, "a-c-2-d-f" ] ``` ### [](#例-2)例 次の例では、入力文字列内の数値 ​`123`​ を ​`ID`​ で置き換えます。この例では正規表現 ​`(\d+)`​ が使用されています。​`\d`​ メタ文字は 0 ~ 9 の任意の数字を意味し、​`` `​ は、1 桁以上の数字が出現可能であることを意味します。 ` ``​ がない場合、1 桁の数字ごとに 1 つの ​`ID`​ が出力に含まれます。この例では、中置表記を使用して式を記述する方法と、前置表記を使用して式を記述する方法も示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- [ "my123" replace /(\d+)/ with("ID"), replace("myOther123", /(\d+)/) with("ID") ] ``` #### [](#出力-2)出力 ```JSON [ "myID", "myOtherID" ] ``` ## [](#replace2)replace(text: String, matcher: String): ((Array, Number) -> String) -> String 文字列置換を実行します。 このバージョンの ​`replace`​ は、指定された文字列の一部を照合する文字列を受け入れます。入力文字列の一致部分の置換文字列を渡すには、​`with`​ ヘルパー関数を使用する必要があります。 ### [](#パラメーター-2)パラメーター
名前 説明

text

照合する文字列。

matcher

入力 ​text​ 文字列内の文字を照合するための文字列。

### [](#例-3)例 次の例では、入力文字列からの数値 ​`123`​ を、​`with`​ 関数で渡された文字 ​`ID`​ で置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- { "replace": "admin123" replace "123" with("ID") } ``` #### [](#出力-3)出力 ```JSON { "replace": "adminID" } ``` ## [](#replace3)replace(text: Null, matcher: Any): ((Nothing, Nothing) -> Any) -> Null `replace`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replaceAll ## [](#replaceall1)replaceAll(text: String, target: String, replacement: String): String リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。 置換は、文字列の先頭から末尾に向かって行われます。 たとえば、文字列 `"aaa"` 内の `"aa"` を `"b"` に置き換えた結果は, rather than `"ab"` ではなく is `"ba"` です。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

検索する文字列。

​target

​text​ 内で検索して置換する文字列。

​replacement

置換文字列。

### [](#例)例 次の例では、さまざまな入力での ​`replaceAll`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Strings output application/json --- { a: replaceAll("Mariano", "a" , "A"), b: replaceAll("AAAA", "AAA" , "B"), c: replaceAll(null, "aria" , "A"), d: replaceAll("Mariano", "j" , "Test"), } ``` #### [](#出力)出力 ```Json { "a": "MAriAno", "b": "BA", "c": null, "d": "Mariano" } ``` ## [](#replaceall2)replaceAll(text: Null, oldValue: String, newValue: String): Null `replaceAll`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # replaceAll ## [](#replaceall1)replaceAll(text: String, target: String, replacement: String): String リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。 置換は、文字列の先頭から末尾に向かって行われます。 たとえば、文字列 ​`"aaa"`​ 内の ​`"aa"`​ を ​`"b"`​ に置き換えた結果は、​`"ab"`​ ではなく ​`"ba"`​ です。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

検索する文字列。

target

text​ 内で検索して置換する文字列。

replacement

置換文字列。

### [](#例)例 次の例では、さまざまな入力での ​`replaceAll`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Strings output application/json --- { a: replaceAll("Mariano", "a" , "A"), b: replaceAll("AAAA", "AAA" , "B"), c: replaceAll(null, "aria" , "A"), d: replaceAll("Mariano", "j" , "Test"), } ``` #### [](#出力)出力 ```Json { "a": "MAriAno", "b": "BA", "c": null, "d": "Mariano" } ``` ## [](#replaceall2)replaceAll(text: Null, oldValue: String, newValue: String): Null `replaceAll`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replaceAll ## [](#replaceall1)replaceAll(text: String, target: String, replacement: String): String リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。 置換は、文字列の先頭から末尾に向かって行われます。 たとえば、文字列 ​`"aaa"`​ 内の ​`"aa"`​ を ​`"b"`​ に置き換えた結果は、​`"ab"`​ ではなく ​`"ba"`​ です。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

検索する文字列。

target

text​ 内で検索して置換する文字列。

replacement

置換文字列。

### [](#例)例 次の例では、さまざまな入力での ​`replaceAll`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Strings output application/json --- { a: replaceAll("Mariano", "a" , "A"), b: replaceAll("AAAA", "AAA" , "B"), c: replaceAll(null, "aria" , "A"), d: replaceAll("Mariano", "j" , "Test"), } ``` #### [](#出力)出力 ```Json { "a": "MAriAno", "b": "BA", "c": null, "d": "Mariano" } ``` ## [](#replaceall2)replaceAll(text: Null, oldValue: String, newValue: String): Null `replaceAll`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replaceAll ## [](#replaceall1)replaceAll(text: String, target: String, replacement: String): String リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。 置換は、文字列の先頭から末尾に向かって行われます。 たとえば、文字列 ​`"aaa"`​ 内の ​`"aa"`​ を ​`"b"`​ に置き換えた結果は、​`"ab"`​ ではなく ​`"ba"`​ です。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

検索する文字列。

target

text​ 内で検索して置換する文字列。

replacement

置換文字列。

### [](#例)例 次の例では、さまざまな入力での ​`replaceAll`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Strings output application/json --- { a: replaceAll("Mariano", "a" , "A"), b: replaceAll("AAAA", "AAA" , "B"), c: replaceAll(null, "aria" , "A"), d: replaceAll("Mariano", "j" , "Test"), } ``` #### [](#出力)出力 ```Json { "a": "MAriAno", "b": "BA", "c": null, "d": "Mariano" } ``` ## [](#replaceall2)replaceAll(text: Null, oldValue: String, newValue: String): Null `replaceAll`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # replaceAll ## [](#replaceall1)replaceAll(text: String, target: String, replacement: String): String リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。 置換は、文字列の先頭から末尾に向かって行われます。 たとえば、文字列 ​`"aaa"`​ 内の ​`"aa"`​ を ​`"b"`​ に置き換えた結果は、​`"ab"`​ ではなく ​`"ba"`​ です。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

検索する文字列。

target

text​ 内で検索して置換する文字列。

replacement

置換文字列。

### [](#例)例 次の例では、さまざまな入力での ​`replaceAll`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::core::Strings output application/json --- { a: replaceAll("Mariano", "a" , "A"), b: replaceAll("AAAA", "AAA" , "B"), c: replaceAll(null, "aria" , "A"), d: replaceAll("Mariano", "j" , "Test"), } ``` #### [](#出力)出力 ```Json { "a": "MAriAno", "b": "BA", "c": null, "d": "Mariano" } ``` ## [](#replaceall2)replaceAll(text: Null, oldValue: String, newValue: String): Null `replaceAll`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # reverse ## [](#reverse1)reverse(text: String): String 文字列内の文字の順序を反転させます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

反転させる文字列。

### [](#例)例 次の例では、さまざまな入力での ​`reverse`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { a: reverse("Mariano"), b: reverse(null), c: reverse("") } ``` #### [](#出力)出力 ```Json { "a": "onairaM", "b": null, "c": "" } ``` ## [](#reverse2)reverse(text: Null): Null `reverse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # reverse ## [](#reverse1)reverse(text: String): String 文字列内の文字の順序を反転させます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

反転させる文字列。

### [](#例)例 次の例では、さまざまな入力での ​`reverse`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { a: reverse("Mariano"), b: reverse(null), c: reverse("") } ``` #### [](#出力)出力 ```Json { "a": "onairaM", "b": null, "c": "" } ``` ## [](#reverse2)reverse(text: Null): Null `reverse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # reverse ## [](#reverse1)reverse(text: String): String 文字列内の文字の順序を反転させます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

反転させる文字列。

### [](#例)例 次の例では、さまざまな入力での ​`reverse`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { a: reverse("Mariano"), b: reverse(null), c: reverse("") } ``` #### [](#出力)出力 ```Json { "a": "onairaM", "b": null, "c": "" } ``` ## [](#reverse2)reverse(text: Null): Null `reverse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # reverse ## [](#reverse1)reverse(text: String): String 文字列内の文字の順序を反転させます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

反転させる文字列。

### [](#例)例 次の例では、さまざまな入力での ​`reverse`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { a: reverse("Mariano"), b: reverse(null), c: reverse("") } ``` #### [](#出力)出力 ```Json { "a": "onairaM", "b": null, "c": "" } ``` ## [](#reverse2)reverse(text: Null): Null `reverse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # reverse ## [](#reverse1)reverse(text: String): String 文字列内の文字の順序を反転させます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

反転させる文字列。

### [](#例)例 次の例では、さまざまな入力での ​`reverse`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { a: reverse("Mariano"), b: reverse(null), c: reverse("") } ``` #### [](#出力)出力 ```Json { "a": "onairaM", "b": null, "c": "" } ``` ## [](#reverse2)reverse(text: Null): Null `reverse`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # rightPad ## [](#rightpad1)rightPad(String, Number, String): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_右_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 右側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​size

パディングの目的のサイズ。

​padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`rightPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": rightPad(null, 3), "b": rightPad("", 3), "c": rightPad("bat", 5), "d": rightPad("bat", 3), "e": rightPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": "bat ", "d": "bat", "e": "bat" } ``` ## [](#rightpad2)rightPad(Null, Number, String): Null `rightPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # rightPad ## [](#rightpad1)rightPad(text: String, size: Number, padChar: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_右_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 右側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​size

パディングの目的のサイズ。

​padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`rightPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": rightPad(null, 3), "b": rightPad("", 3), "c": rightPad("bat", 5), "d": rightPad("bat", 3), "e": rightPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": "bat ", "d": "bat", "e": "bat" } ``` ## [](#rightpad2)rightPad(text: Null, size: Any, padText: Any = " "): Null `rightPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # rightPad ## [](#rightpad1)rightPad(text: String, size: Number, padChar: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_右_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 右側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`rightPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": rightPad(null, 3), "b": rightPad("", 3), "c": rightPad("bat", 5), "d": rightPad("bat", 3), "e": rightPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": "bat ", "d": "bat", "e": "bat" } ``` ## [](#rightpad2)rightPad(text: Null, size: Any, padText: Any = " "): Null `rightPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # rightPad ## [](#rightpad1)rightPad(text: String, size: Number, padChar: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_右_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 右側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`rightPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": rightPad(null, 3), "b": rightPad("", 3), "c": rightPad("bat", 5), "d": rightPad("bat", 3), "e": rightPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": "bat ", "d": "bat", "e": "bat" } ``` ## [](#rightpad2)rightPad(text: Null, size: Any, padText: Any = " "): Null `rightPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # rightPad ## [](#rightpad1)rightPad(text: String, size: Number, padChar: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_右_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 右側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`rightPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": rightPad(null, 3), "b": rightPad("", 3), "c": rightPad("bat", 5), "d": rightPad("bat", 3), "e": rightPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": "bat ", "d": "bat", "e": "bat" } ``` ## [](#rightpad2)rightPad(text: Null, size: Any, padText: Any = " "): Null `rightPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # rightPad ## [](#rightpad1)rightPad(text: String, size: Number, padChar: String = " "): String 目的のサイズ (​`size`​) になるように、指定された ​`text`​ の​_右_​側に ​`padText`​ を埋め込みます。 デフォルトの ​`padText`​ は ​`" "`​ です。 右側をパディングした ​`String`​ を返すか、パディングが不要な場合は元の ​`String`​ を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

size

パディングの目的のサイズ。

padText

埋め込むテキスト。指定されていない場合、デフォルトで 1 桁の空白に設定されます。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`rightPad`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": rightPad(null, 3), "b": rightPad("", 3), "c": rightPad("bat", 5), "d": rightPad("bat", 3), "e": rightPad("bat", -1) } ``` #### [](#出力)出力 ```JSON { "a": null, "b": " ", "c": "bat ", "d": "bat", "e": "bat" } ``` ## [](#rightpad2)rightPad(text: Null, size: Any, padText: Any = " "): Null `rightPad`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # round ## [](#round1)round(Number): Number 数値を最も近い整数に丸めます。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#パラメーター-2)パラメーター
名前 説明

​number

丸める数値。

### [](#例)例 次の例では、小数を最も近い整数に丸めます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ round(1.2), round(4.6), round(3.5) ] ``` #### [](#出力)出力 ```JSON [ 1, 5, 4 ] ``` # round ## [](#round1)round(number: Number): Number 数値を最も近い整数に丸めます。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、小数を最も近い整数に丸めます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ round(1.2), round(4.6), round(3.5) ] ``` #### [](#出力)出力 ```JSON [ 1, 5, 4 ] ``` # round ## [](#round1)round(number: Number): Number 数値を最も近い整数に丸めます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、小数を最も近い整数に丸めます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ round(1.2), round(4.6), round(3.5) ] ``` #### [](#出力)出力 ```JSON [ 1, 5, 4 ] ``` # round ## [](#round1)round(number: Number): Number 数値を最も近い整数に丸めます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、小数を最も近い整数に丸めます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ round(1.2), round(4.6), round(3.5) ] ``` #### [](#出力)出力 ```JSON [ 1, 5, 4 ] ``` # round ## [](#round1)round(number: Number): Number 数値を最も近い整数に丸めます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、小数を最も近い整数に丸めます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ round(1.2), round(4.6), round(3.5) ] ``` #### [](#出力)出力 ```JSON [ 1, 5, 4 ] ``` # round ## [](#round1)round(number: Number): Number 数値を最も近い整数に丸めます。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、小数を最も近い整数に丸めます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ round(1.2), round(4.6), round(3.5) ] ``` #### [](#出力)出力 ```JSON [ 1, 5, 4 ] ``` # Runtime (dw::Runtime) このモジュールには、DataWeave エンジンを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Runtime`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​fail

指定されたメッセージと共に例外をスローします。

​failIf

エバリュエーターの式が ​true​ を返す場合は、指定されたメッセージでエラーを生成し、それ以外の場合は値を返します。

​locationString

指定された値の位置の文字列を返します。

​orElse

​previous​ の try 結果が失敗の場合は ​orElse​ の結果を返し、失敗でない場合は ​previous​ の結果を返します。

​orElseTry

複数の ​try​ をチェーニングするために try で使用される関数

​prop

指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​null​ を返します。

​props

Mule Runtime に設定されたすべてのプロパティを返します。

​try

デリゲート関数を評価し、デリゲート関数が成功した場合は ​success: true​ と ​result​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​success: false​ と ​error​ を含むオブジェクトを返します。

​wait

指定されたタイムアウト (ミリ秒) の間、実行を停止します。

## [](#型)型 - [Runtime の型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-runtime-types) # Runtime (dw::Runtime) このモジュールには、言語を実行する DataWeave ランタイムとやりとりする関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Runtime`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​dataFormatsDescriptor

DataWeave の現在のインスタンスにインストールされているすべての ​DataFormatDescriptor​ 値の配列を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

​eval

指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

​evalUrl

指定された URL のスクリプトを評価します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

​fail

指定されたメッセージと共に例外をスローします。

​failIf

評価式が ​true​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。

​location

特定の値の場所、または DataWeave ファイルまで場所をたどることができない場合は ​null​ を返します。

​locationString

指定された値の位置の文字列を返します。

​orElse

​try​ に対する ​previous​ 引数が失敗する場合、​orElse​ 引数の結果を返します。それ以外の場合、この関数では ​previous​ 引数の値を返します。

​orElseTry

複数の ​try​ 要求を連結するために ​try​ で使用する関数。

​prop

指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​null​ を返します。

​props

言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。

​run

指定されたコンテキストで入力スクリプトを実行し、現在のランタイムでスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

​runUrl

指定された URL のスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

​try

デリゲート関数を評価し、デリゲート関数が成功した場合は ​success: true​ と ​result​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​success: false​ と ​error​ を含むオブジェクトを返します。

​wait

指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。

## [](#型)型 - [Runtime の型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-runtime-types) # Runtime (dw::Runtime) このモジュールには、言語を実行する DataWeave ランタイムとやりとりする関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Runtime`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

dataFormatsDescriptor

DataWeave の現在のインスタンスにインストールされているすべての ​DataFormatDescriptor​ 値の配列を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

eval

指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

evalUrl

指定された URL のスクリプトを評価します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

fail

指定されたメッセージと共に例外をスローします。

failIf

評価式が ​true​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。

location

特定の値の場所、または DataWeave ファイルまで場所をたどることができない場合は ​null​ を返します。

locationString

指定された値の位置の文字列を返します。

orElse

try​ に対する ​previous​ 引数が失敗する場合、​orElse​ 引数の結果を返します。それ以外の場合、この関数では ​previous​ 引数の値を返します。

orElseTry

複数の ​try​ 要求を連結するために ​try​ で使用する関数。

prop

指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​null​ を返します。

props

言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。

run

指定されたコンテキストで入力スクリプトを実行し、現在のランタイムでスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

runUrl

指定された URL のスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

try

デリゲート関数を評価し、デリゲート関数が成功した場合は ​success: true​ と ​result​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​success: false​ と ​error​ を含むオブジェクトを返します。

version

現在実行中の DataWeave バージョンを返します。

wait

指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。

## [](#型)型 - [Runtime の型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-runtime-types) # Runtime (dw::Runtime) このモジュールには、言語を実行する DataWeave ランタイムとやりとりする関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Runtime`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

dataFormatsDescriptor

DataWeave の現在のインスタンスにインストールされているすべての ​DataFormatDescriptor​ 値の配列を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

eval

指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

evalUrl

指定された URL のスクリプトを評価します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

fail

指定されたメッセージと共に例外をスローします。

failIf

評価式が ​true​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。

location

特定の値の場所、または DataWeave ファイルまで場所をたどることができない場合は ​null​ を返します。

locationString

指定された値の位置の文字列を返します。

orElse

try​ に対する ​previous​ 引数が失敗する場合、​orElse​ 引数の結果を返します。それ以外の場合、この関数では ​previous​ 引数の値を返します。

orElseTry

複数の ​try​ 要求を連結するために ​try​ で使用する関数。

prop

指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​null​ を返します。

props

言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。

run

指定されたコンテキストで入力スクリプトを実行し、現在のランタイムでスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

runUrl

指定された URL のスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

try

デリゲート関数を評価し、デリゲート関数が成功した場合は ​success: true​ と ​result​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​success: false​ と ​error​ を含むオブジェクトを返します。

version

現在実行中の DataWeave バージョンを返します。

wait

指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。

## [](#型)型 - [Runtime の型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-runtime-types) # Runtime (dw::Runtime) このモジュールには、言語を実行する DataWeave ランタイムとやりとりする関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Runtime`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

dataFormatsDescriptor

DataWeave の現在のインスタンスにインストールされているすべての ​DataFormatDescriptor​ 値の配列を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

eval

指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

evalUrl

指定された URL のスクリプトを評価します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

fail

指定されたメッセージと共に例外をスローします。

failIf

評価式が ​true​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。

location

特定の値の場所、または DataWeave ファイルまで場所をたどることができない場合は ​null​ を返します。

locationString

指定された値の位置の文字列を返します。

orElse

try​ に対する ​previous​ 引数が失敗する場合、​orElse​ 引数の結果を返します。それ以外の場合、この関数では ​previous​ 引数の値を返します。

orElseTry

複数の ​try​ 要求を連結するために ​try​ で使用する関数。

prop

指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​null​ を返します。

props

言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。

run

指定されたコンテキストで入力スクリプトを実行し、現在のランタイムでスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

runUrl

指定された URL のスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

try

デリゲート関数を評価し、デリゲート関数が成功した場合は ​success: true​ と ​result​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​success: false​ と ​error​ を含むオブジェクトを返します。

version

現在実行中の DataWeave バージョンを返します。

wait

指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。

## [](#型)型 - [Runtime の型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-runtime-types) # Runtime (dw::Runtime) このモジュールには、言語を実行する DataWeave ランタイムとやりとりする関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::Runtime`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

dataFormatsDescriptor

DataWeave の現在のインスタンスにインストールされているすべての ​DataFormatDescriptor​ 値の配列を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

eval

指定されたコンテキストを使用してスクリプトを評価し、その評価の結果を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

evalUrl

指定された URL のスクリプトを評価します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

fail

指定されたメッセージと共に例外をスローします。

failIf

評価式が ​true​ を返す場合は、指定されたメッセージでエラーを発生させます。それ以外の場合、この関数では値を返します。

findDataFormatDescriptorByMime

指定された ​dw::module::Mime::MimeType​ に基づいて ​DataFormatDescriptor​ を返すか、指定された ​MimeType​ の ​DataFormatDescriptor​ がない場合は ​null​ を返します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

location

特定の値の場所、または DataWeave ファイルまで場所をたどることができない場合は ​null​ を返します。

locationString

指定された値の位置の文字列を返します。

orElse

try​ に対する ​previous​ 引数が失敗する場合、​orElse​ 引数の結果を返します。それ以外の場合、この関数では ​previous​ 引数の値を返します。

orElseTry

複数の ​try​ 要求を連結するために ​try​ で使用する関数。

prop

指定された名前のプロパティの値を返すか、プロパティが定義されていない場合は ​null​ を返します。

props

言語を実行する DataWeave ランタイムに設定されたすべてのプロパティを返します。

run

指定されたコンテキストで入力スクリプトを実行し、現在のランタイムでスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

runUrl

指定された URL のスクリプトを実行します。

実験的:​ この関数は実験的機能であり、将来のバージョンで変更または削除される場合があります。

try

デリゲート関数を評価し、デリゲート関数が成功した場合は ​success: true​ と ​result​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​success: false​ と ​error​ を含むオブジェクトを返します。

version

現在実行中の DataWeave バージョンを返します。

wait

指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。

## [](#型)型 - [Runtime の型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-runtime-types) # Runtime 型 (dw::Runtime)
型 定義 説明

TryResult

​type TryResult = { success: Boolean, result?: T, error?: { kind: String, message: String, stack?: Array<String>, location?: String } }

オブジェクトと結果またはエラーメッセージ。​success​ が ​false​ の場合は、​error​ が含まれます。​true​ の場合は ​result​ が含まれます。

# Runtime 型 (dw::Runtime)
型 定義 説明

DataFormatDescriptor

type DataFormatDescriptor = { name: String, binary: Boolean, defaultEncoding?: String, extensions: Array<String>, defaultMimeType: String, acceptedMimeTypes: Array<String>, readerProperties: Array<DataFormatProperty>, writerProperties: Array<DataFormatProperty> }

すべてのメタデータ情報を提供する ​DataFormat​ の説明。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataFormatProperty

​type DataFormatProperty = { name: String, optional: Boolean, defaultValue?: Any, description: String, possibleValues: Array<Any> }

データ形式プロパティについて説明する型。項目には ​name​、​description​、可能な値 (​possibleValues​) の配列、省略可能なデフォルト値 (​defaultValue​)、プロパティが必須かどうかを示す ​optional​ フラグが含まれます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

EvalSuccess

​type EvalSuccess = { success: true, value: Any, logs: Array<LogEntry> }

​eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ExecutionFailure

​type ExecutionFailure = { success: false, message: String, kind: String, stack?: Array<String>, location: Location, logs: Array<LogEntry> }

​run​ または ​eval​ 関数が失敗したときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

場所

​type Location = { start?: Position, end?: Position, locationString: String, text?: String, sourceIdentifier?: String }

DataWeave ファイル内の式の場所を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogEntry

​type LogEntry = { level: LogLevel, timestamp: String, message: String }

ログエントリの型で、​LogLevel​ の ​level​、​timestamp​、​message​ で構成されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogLevel

​type LogLevel = "INFO" | "ERROR" | "WARN"

さまざまな種類のログレベル (​INFO​、​ERROR​、または ​WARN​) を識別します。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LoggerService

type LoggerService = { initialize?: () -> Object, log: (level: LogLevel, msg: String, context: Object) -> Any, shutdown?: () -> Boolean }

すべてのログを扱うサービス。

  • initialize​: 実行が開始されたときにコールされる関数。DataWeave は ​context​ パラメーターを通じて結果をすべての ​log​ コールに送信するため、たとえば、ログヘッダーを初期化時に送信して、各ログで回復することができます。

  • log​: すべてのログメッセージでコールされる関数。

  • shutdown​: 実行が完了したときにコールされる関数。そのときに、バッファをフラッシュするか、適切にログアウトします。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

MimeType

​type MimeType = String

MIME タイプの String (文字列) 表現。

位置

​type Position = { index: Number, line: Number, column: Number }

インデックスとその行および列でファイル内での位置を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ReaderInput

type ReaderInput = { value: Binary, encoding?: String, properties?: Dictionary<SimpleType>, mimeType: MimeType }

指定された MIME タイプ (Binary (バイナリ) 入力と MIME タイプのほか、省略可能なエンコーディングとプロパティ値が含まれる) 用に作成された DataWeave リーダーへの入力。

  • value​: Binary (バイナリ) 形式の入力。

  • encoding​: 使用するリーダーのエンコーディング。

  • properties​: 入力を解析するために使用されるリーダープロパティ。

  • mimeType​: 入力の MIME タイプ。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RunSuccess

​type RunSuccess = { success: true, value: Binary, mimeType: MimeType, encoding?: String, logs: Array<LogEntry> }

​run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RuntimeExecutionConfiguration

type RuntimeExecutionConfiguration = { timeOut?: Number, outputMimeType?: MimeType, writerProperties?: Dictionary<SimpleType>, onException?: "HANDLE" | "FAIL", securityManager?: SecurityManager, loggerService?: LoggerService, maxStackSize?: Number }

高度なパラメーターを含むランタイム実行の設定。

  • timeOut​: DataWeave スクリプトがタイムアウトになるまでの最大時間。

  • outputMimeType​: DataWeave スクリプトで指定しなかった場合のデフォルトの出力 MIME タイプ。

  • writerProperties​: 指定された ​outputMimeType​ プロパティで使用するライタープロパティ。

  • onException: 実行に失敗したときの動作を指定します。

    • HANDLE​ (default value) returns ​ExecutionFailure​.

    • FAIL​ では例外を伝播します。

  • securityManager​: この実行で使用する ​SecurityManager​ を識別します。 このセキュリティマネージャーは現在の ​SecurityManager​ によって構成されます。

  • loggerService​: この実行で使用する ​LoggerService​。

  • maxStackSize​: 最大スタックサイズ。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

SecurityManager

​type SecurityManager = (grant: String, args: Array<Any>) -> Boolean

現在の実行に権限を付与する必要がある場合にコールされる関数。

  • grant​ は ​Resource​ などの権限の名前です。

  • args​ により、権限を要求する関数がコールするパラメーターのリストが提供されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

TryResult

type TryResult = { success: Boolean, result?: T, error?: { kind: String, message: String, stack?: Array<String>, stackTrace?: String, location?: String } }

オブジェクトと結果またはエラーメッセージ。​success​ が ​false​ の場合、データ型で ​error​ が表示されます。​true​ の場合、データ型で ​result​ が表示されます。

Mule バージョン 4.3.1 (DataWeave バージョン 2.3.1) 以降、​stackTrace​ は ​stack​ が存在しない場合しか使用できなくなりました。​stackTrace​ 項目により、ネイティブ Java スタックトレースが提供されます。

# Runtime 型 (dw::Runtime)
型 定義 説明

DataFormatDescriptor

type DataFormatDescriptor = { name: String, binary: Boolean, defaultEncoding?: String, extensions: Array<String>, defaultMimeType: String, acceptedMimeTypes: Array<String>, readerProperties: Array<DataFormatProperty>, writerProperties: Array<DataFormatProperty> }

すべてのメタデータ情報を提供する ​DataFormat​ の説明。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataFormatProperty

type DataFormatProperty = { name: String, optional: Boolean, defaultValue?: Any, description: String, possibleValues: Array<Any> }

データ形式プロパティについて説明する型。項目には ​name​、​description​、可能な値 (​possibleValues​) の配列、省略可能なデフォルト値 (​defaultValue​)、プロパティが必須かどうかを示す ​optional​ フラグが含まれます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

EvalSuccess

type EvalSuccess = { success: true, value: Any, logs: Array<LogEntry> }

eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ExecutionFailure

type ExecutionFailure = { success: false, message: String, kind: String, stack?: Array<String>, location: Location, logs: Array<LogEntry> }

run​ または ​eval​ 関数が失敗したときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Location

type Location = { start?: Position, end?: Position, locationString: String, text?: String, sourceIdentifier?: String }

DataWeave ファイル内の式の場所を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogEntry

type LogEntry = { level: LogLevel, timestamp: String, message: String }

ログエントリの型で、​LogLevel​ の ​level​、​timestamp​、​message​ で構成されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogLevel

type LogLevel = "INFO" | "ERROR" | "WARN"

さまざまな種類のログレベル (​INFO​、​ERROR​、または ​WARN​) を識別します。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LoggerService

type LoggerService = { initialize?: () -> Object, log: (level: LogLevel, msg: String, context: Object) -> Any, shutdown?: () -> Boolean }

すべてのログを扱うサービス。

  • initialize​: 実行が開始されたときにコールされる関数。DataWeave は ​context​ パラメーターを通じて結果をすべての ​log​ コールに送信するため、たとえば、ログヘッダーを初期化時に送信して、各ログで回復することができます。

  • log​: すべてのログメッセージでコールされる関数。

  • shutdown​: 実行が完了したときにコールされる関数。通常はそのときにバッファをフラッシュするか、適切にログアウトします。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

MimeType

type MimeType = String

MIME タイプの String (文字列) 表現。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Position

type Position = { index: Number, line: Number, column: Number }

インデックスとその行および列でファイル内での位置を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ReaderInput

type ReaderInput = { value: Binary, encoding?: String, properties?: Dictionary<SimpleType>, mimeType: MimeType }

指定された MIME タイプ (Binary (バイナリ) 入力と MIME タイプのほか、省略可能なエンコーディングとプロパティ値が含まれる) 用に作成された DataWeave リーダーへの入力。

  • value​: Binary (バイナリ) 形式の入力。

  • encoding​: 使用するリーダーのエンコーディング。

  • properties​: 入力を解析するために使用されるリーダープロパティ。

  • mimeType​: 入力の MIME タイプ。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RunSuccess

type RunSuccess = { success: true, value: Binary, mimeType: MimeType, encoding?: String, logs: Array<LogEntry> }

run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RuntimeExecutionConfiguration

type RuntimeExecutionConfiguration = { timeOut?: Number, outputMimeType?: MimeType, writerProperties?: Dictionary<SimpleType>, onException?: "HANDLE" | "FAIL", securityManager?: SecurityManager, loggerService?: LoggerService, maxStackSize?: Number, onUnhandledTimeout?: (threadName: String, javaStackTrace: String, code: String) -> Any }

高度なパラメーターを含むランタイム実行の設定。

  • timeOut​: DataWeave スクリプトがタイムアウトになるまでの最大時間。

  • outputMimeType​: DataWeave スクリプトで指定しなかった場合のデフォルトの出力 MIME タイプ。

  • writerProperties​: 指定された ​outputMimeType​ プロパティで使用するライタープロパティ。

  • onException​: 実行に失敗したときの動作を指定します。

    • HANDLE​ (デフォルト値) では ​ExecutionFailure​ を返します。

    • FAIL​ では例外を伝播します。

  • securityManager​: この実行で使用する ​SecurityManager​ を識別します。このセキュリティマネージャーは現在の ​SecurityManager​ によって構成されます。

  • loggerService​: この実行で使用する ​LoggerService​。

  • maxStackSize​: 最大スタックサイズ。

  • onUnhandledTimeout​: ウォッチドッグがタイムアウト後に実行を停止できなかった場合にコールされるコールバック。これは、問題のログやレポートに便利です。 コールバックは次を使用してコールされます。

    • threadName​: ハングしたスレッドの名前。

    • javaStackTrace​: ハングが発生した Java スタックトレース。

    • code​: ハングの原因となった DataWeave コード。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

SecurityManager

type SecurityManager = (grant: String, args: Array<Any>) -> Boolean

現在の実行に権限を付与する必要がある場合にコールされる関数。

  • grant​ は ​Resource​ などの権限の名前です。

  • args​ により、権限を要求する関数がコールするパラメーターのリストが提供されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

TryResult

type TryResult = { success: Boolean, result?: T, error?: { kind: String, message: String, stack?: Array<String>, stackTrace?: String, location?: String } }

オブジェクトと結果またはエラーメッセージ。​success​ が ​false​ の場合、データ型で ​error​ が表示されます。​true​ の場合、データ型で ​result​ が表示されます。

Mule 4.4.0 以降では、スタックが存在しない場合、​stackTrace​ 項目をネイティブ Java スタックトレースで使用できます。

# Runtime 型 (dw::Runtime)
型 定義 説明

DataFormatDescriptor

type DataFormatDescriptor = { name: String, binary: Boolean, defaultEncoding?: String, extensions: Array<String>, defaultMimeType: String, acceptedMimeTypes: Array<String>, readerProperties: Array<DataFormatProperty>, writerProperties: Array<DataFormatProperty> }

すべてのメタデータ情報を提供する ​DataFormat​ の説明。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataFormatProperty

type DataFormatProperty = { name: String, optional: Boolean, defaultValue?: Any, description: String, possibleValues: Array<Any> }

データ形式プロパティについて説明する型。項目には ​name​、​description​、可能な値 (​possibleValues​) の配列、省略可能なデフォルト値 (​defaultValue​)、プロパティが必須かどうかを示す ​optional​ フラグが含まれます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

EvalSuccess

type EvalSuccess = { success: true, value: Any, logs: Array<LogEntry> }

eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ExecutionFailure

type ExecutionFailure = { success: false, message: String, kind: String, stack?: Array<String>, location: Location, logs: Array<LogEntry> }

run​ または ​eval​ 関数が失敗したときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Location

type Location = { start?: Position, end?: Position, locationString: String, text?: String, sourceIdentifier?: String }

DataWeave ファイル内の式の場所を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogEntry

type LogEntry = { level: LogLevel, timestamp: String, message: String }

ログエントリの型で、​LogLevel​ の ​level​、​timestamp​、​message​ で構成されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogLevel

type LogLevel = "INFO" | "ERROR" | "WARN"

さまざまな種類のログレベル (​INFO​、​ERROR​、または ​WARN​) を識別します。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LoggerService

type LoggerService = { initialize?: () -> Object, log: (level: LogLevel, msg: String, context: Object) -> Any, shutdown?: () -> Boolean }

すべてのログを扱うサービス。

  • initialize​: 実行が開始されたときにコールされる関数。DataWeave は ​context​ パラメーターを通じて結果をすべての ​log​ コールに送信するため、たとえば、ログヘッダーを初期化時に送信して、各ログで回復することができます。

  • log​: すべてのログメッセージでコールされる関数。

  • shutdown​: 実行が完了したときにコールされる関数。通常はそのときにバッファをフラッシュするか、適切にログアウトします。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

MimeType

type MimeType = String

MIME タイプの String (文字列) 表現。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Position

type Position = { index: Number, line: Number, column: Number }

インデックスとその行および列でファイル内での位置を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ReaderInput

type ReaderInput = { value: Binary, encoding?: String, properties?: Dictionary<SimpleType>, mimeType: MimeType }

指定された MIME タイプ (Binary (バイナリ) 入力と MIME タイプのほか、省略可能なエンコーディングとプロパティ値が含まれる) 用に作成された DataWeave リーダーへの入力。

  • value​: Binary (バイナリ) 形式の入力。

  • encoding​: 使用するリーダーのエンコーディング。

  • properties​: 入力を解析するために使用されるリーダープロパティ。

  • mimeType​: 入力の MIME タイプ。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RunSuccess

type RunSuccess = { success: true, value: Binary, mimeType: MimeType, encoding?: String, logs: Array<LogEntry> }

run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RuntimeExecutionConfiguration

type RuntimeExecutionConfiguration = { timeOut?: Number, outputMimeType?: MimeType, writerProperties?: Dictionary<SimpleType>, onException?: "HANDLE" | "FAIL", securityManager?: SecurityManager, loggerService?: LoggerService, maxStackSize?: Number, onUnhandledTimeout?: (threadName: String, javaStackTrace: String, code: String) -> Any }

高度なパラメーターを含むランタイム実行の設定。

  • timeOut​: DataWeave スクリプトがタイムアウトになるまでの最大時間。

  • outputMimeType​: DataWeave スクリプトで指定しなかった場合のデフォルトの出力 MIME タイプ。

  • writerProperties​: 指定された ​outputMimeType​ プロパティで使用するライタープロパティ。

  • onException​: 実行に失敗したときの動作を指定します。

    • HANDLE​ (デフォルト値) では ​ExecutionFailure​ を返します。

    • FAIL​ では例外を伝播します。

  • securityManager​: この実行で使用する ​SecurityManager​ を識別します。このセキュリティマネージャーは現在の ​SecurityManager​ によって構成されます。

  • loggerService​: この実行で使用する ​LoggerService​。

  • maxStackSize​: 最大スタックサイズ。

  • onUnhandledTimeout​: ウォッチドッグがタイムアウト後に実行を停止できなかった場合にコールされるコールバック。これは、問題のログやレポートに便利です。 コールバックは次を使用してコールされます。

    • threadName​: ハングしたスレッドの名前。

    • javaStackTrace​: ハングが発生した Java スタックトレース。

    • code​: ハングの原因となった DataWeave コード。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

SecurityManager

type SecurityManager = (grant: String, args: Array<Any>) -> Boolean

現在の実行に権限を付与する必要がある場合にコールされる関数。

  • grant​ は ​Resource​ などの権限の名前です。

  • args​ により、権限を要求する関数がコールするパラメーターのリストが提供されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

TryResult

type TryResult = { success: Boolean, result?: T, error?: { kind: String, message: String, stack?: Array<String>, stackTrace?: String, location?: String } }

オブジェクトと結果またはエラーメッセージ。​success​ が ​false​ の場合、データ型で ​error​ が表示されます。​true​ の場合、データ型で ​result​ が表示されます。

Mule 4.4.0 以降では、スタックが存在しない場合、​stackTrace​ 項目をネイティブ Java スタックトレースで使用できます。

# Runtime 型 (dw::Runtime)
型 定義 説明

DataFormatDescriptor

type DataFormatDescriptor = { name: String, binary: Boolean, defaultEncoding?: String, extensions: Array<String>, defaultMimeType: String, acceptedMimeTypes: Array<String>, readerProperties: Array<DataFormatProperty>, writerProperties: Array<DataFormatProperty> }

すべてのメタデータ情報を提供する ​DataFormat​ の説明。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataFormatProperty

type DataFormatProperty = { name: String, optional: Boolean, defaultValue?: Any, description: String, possibleValues: Array<Any> }

データ形式プロパティについて説明する型。項目には ​name​、​description​、可能な値 (​possibleValues​) の配列、省略可能なデフォルト値 (​defaultValue​)、プロパティが必須かどうかを示す ​optional​ フラグが含まれます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

EvalResult

type EvalResult = Result<EvalSuccess, ExecutionFailure>

eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataWeave バージョン 2.7.0 で導入されました。​

EvalSuccess

type EvalSuccess = { value: Any, logs: Array<LogEntry> }

eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ExecutionFailure

type ExecutionFailure = { message: String, kind: String, stack?: Array<String>, location: Location, logs: Array<LogEntry> }

run​ または ​eval​ 関数が失敗したときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Location

type Location = { start?: Position, end?: Position, locationString: String, text?: String, sourceIdentifier?: String }

DataWeave ファイル内の式の場所を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogEntry

type LogEntry = { level: LogLevel, timestamp: String, message: String }

ログエントリの型で、​LogLevel​ の ​level​、​timestamp​、​message​ で構成されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogLevel

type LogLevel = "INFO" | "ERROR" | "WARN"

さまざまな種類のログレベル (​INFO​、​ERROR​、または ​WARN​) を識別します。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LoggerService

type LoggerService = { initialize?: () -> Object, log: (level: LogLevel, msg: String, context: Object) -> Any, shutdown?: () -> Boolean }

すべてのログを扱うサービス。

  • initialize​: 実行が開始されたときにコールされる関数。DataWeave は ​context​ パラメーターを通じて結果をすべての ​log​ コールに送信するため、たとえば、ログヘッダーを初期化時に送信して、各ログで回復することができます。

  • log​: すべてのログメッセージでコールされる関数。

  • shutdown​: 実行が完了したときにコールされる関数。通常はそのときにバッファをフラッシュするか、適切にログアウトします。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

MimeType

type MimeType = String

MIME タイプの String (文字列) 表現。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Position

type Position = { index: Number, line: Number, column: Number }

インデックスとその行および列でファイル内での位置を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ReaderInput

type ReaderInput = { value: Binary, encoding?: String, properties?: Dictionary<SimpleType>, mimeType: MimeType }

指定された MIME タイプ (Binary (バイナリ) 入力と MIME タイプのほか、省略可能なエンコーディングとプロパティ値が含まれる) 用に作成された DataWeave リーダーへの入力。

  • value​: Binary (バイナリ) 形式の入力。

  • encoding​: 使用するリーダーのエンコーディング。

  • properties​: 入力を解析するために使用されるリーダープロパティ。

  • mimeType​: 入力の MIME タイプ。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RunResult

type RunResult = Result<RunSuccess, ExecutionFailure>

run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataWeave バージョン 2.7.0 で導入されました。​

RunSuccess

type RunSuccess = { value: Binary, mimeType: MimeType, encoding?: String, logs: Array<LogEntry> }

run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RuntimeExecutionConfiguration

type RuntimeExecutionConfiguration = { timeOut?: Number, outputMimeType?: MimeType, writerProperties?: Dictionary<SimpleType>, onException?: "HANDLE" | "FAIL", securityManager?: SecurityManager, loggerService?: LoggerService, maxStackSize?: Number, onUnhandledTimeout?: (threadName: String, javaStackTrace: String, code: String) -> Any }

高度なパラメーターを含むランタイム実行の設定。

  • timeOut​: DataWeave スクリプトがタイムアウトになるまでの最大時間。

  • outputMimeType​: DataWeave スクリプトで指定しなかった場合のデフォルトの出力 MIME タイプ。

  • writerProperties​: 指定された ​outputMimeType​ プロパティで使用するライタープロパティ。

  • onException​: 実行に失敗したときの動作を指定します。

    • HANDLE​ (デフォルト値) では ​ExecutionFailure​ を返します。

    • FAIL​ では例外を伝播します。

  • securityManager​: この実行で使用する ​SecurityManager​ を識別します。このセキュリティマネージャーは現在の ​SecurityManager​ によって構成されます。

  • loggerService​: この実行で使用する ​LoggerService​。

  • maxStackSize​: 最大スタックサイズ。

  • onUnhandledTimeout​: ウォッチドッグがタイムアウト後に実行を停止できなかった場合にコールされるコールバック。これは、問題のログやレポートに便利です。 コールバックは次を使用してコールされます。

    • threadName​: ハングしたスレッドの名前。

    • javaStackTrace​: ハングが発生した Java スタックトレース。

    • code​: ハングの原因となった DataWeave コード。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

SecurityManager

type SecurityManager = (grant: String, args: Array<Any>) -> Boolean

現在の実行に権限を付与する必要がある場合にコールされる関数。

  • grant​ は ​Resource​ などの権限の名前です。

  • args​ により、権限を要求する関数がコールするパラメーターのリストが提供されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

TryResult

type TryResult = Result<T, TryResultFailure>

オブジェクトと結果またはエラーメッセージ。​success​ が ​false​ の場合、データ型で ​error​ が表示されます。​true​ の場合、データ型で ​result​ が表示されます。

TryResultFailure

type TryResultFailure = { kind: String, message: String, stack?: Array<String>, stackTrace?: String, location?: String }

try​ からの失敗した実行を表す型。

次の項目がサポートされています。

  • kind​: エラー種別。

  • message​: エラーメッセージ。

  • stack​: スタックトレースエラー (省略可能)。

  • stackTrace​: スタックトレース文字列値表現 (省略可能)。

  • location​: エラーの場所 (省略可能)。

Mule 4.4.0 以降では、スタックが存在しない場合、​stackTrace​ 項目をネイティブ Java スタックトレースで使用できます。

DataWeave バージョン 2.7.0 で導入されました。​

# Runtime 型 (dw::Runtime)
型 定義 説明

DataFormatDescriptor

type DataFormatDescriptor = { name: String, binary: Boolean, defaultEncoding?: String, extensions: Array<String>, defaultMimeType: String, acceptedMimeTypes: Array<String>, readerProperties: Array<DataFormatProperty>, writerProperties: Array<DataFormatProperty> }

すべてのメタデータ情報を提供する ​DataFormat​ の説明。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataFormatProperty

type DataFormatProperty = { name: String, optional: Boolean, defaultValue?: Any, description: String, possibleValues: Array<Any> }

データ形式プロパティについて説明する型。項目には ​name​、​description​、可能な値 (​possibleValues​) の配列、省略可能なデフォルト値 (​defaultValue​)、プロパティが必須かどうかを示す ​optional​ フラグが含まれます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

EvalResult

type EvalResult = Result<EvalSuccess, ExecutionFailure>

eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataWeave バージョン 2.7.0 で導入されました。​

EvalSuccess

type EvalSuccess = { value: Any, logs: Array<LogEntry> }

eval​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ExecutionFailure

type ExecutionFailure = { message: String, kind: String, stack?: Array<String>, location: Location, logs: Array<LogEntry> }

run​ または ​eval​ 関数が失敗したときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Location

type Location = { start?: Position, end?: Position, locationString: String, text?: String, sourceIdentifier?: String }

DataWeave ファイル内の式の場所を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogEntry

type LogEntry = { level: LogLevel, timestamp: String, message: String }

ログエントリの型で、​LogLevel​ の ​level​、​timestamp​、​message​ で構成されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LogLevel

type LogLevel = "INFO" | "ERROR" | "WARN"

さまざまな種類のログレベル (​INFO​、​ERROR​、または ​WARN​) を識別します。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

LoggerService

type LoggerService = { initialize?: () -> Object, log: (level: LogLevel, msg: String, context: Object) -> Any, shutdown?: () -> Boolean }

すべてのログを扱うサービス。

  • initialize​: 実行が開始されたときにコールされる関数。DataWeave は ​context​ パラメーターを通じて結果をすべての ​log​ コールに送信するため、たとえば、ログヘッダーを初期化時に送信して、各ログで回復することができます。

  • log​: すべてのログメッセージでコールされる関数。

  • shutdown​: 実行が完了したときにコールされる関数。通常はそのときにバッファをフラッシュするか、適切にログアウトします。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

MimeType

type MimeType = String

MIME タイプの String (文字列) 表現。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

Position

type Position = { index: Number, line: Number, column: Number }

インデックスとその行および列でファイル内での位置を表す型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

ReaderInput

type ReaderInput = { value: Binary, encoding?: String, properties?: Dictionary<SimpleType>, mimeType: MimeType }

指定された MIME タイプ (Binary (バイナリ) 入力と MIME タイプのほか、省略可能なエンコーディングとプロパティ値が含まれる) 用に作成された DataWeave リーダーへの入力。

  • value​: Binary (バイナリ) 形式の入力。

  • encoding​: 使用するリーダーのエンコーディング。

  • properties​: 入力を解析するために使用されるリーダープロパティ。

  • mimeType​: 入力の MIME タイプ。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RunResult

type RunResult = Result<RunSuccess, ExecutionFailure>

run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

DataWeave バージョン 2.7.0 で導入されました。​

RunSuccess

type RunSuccess = { value: Binary, mimeType: MimeType, encoding?: String, logs: Array<LogEntry> }

run​ 関数が正常に実行されたときに返すデータのデータ型。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

RuntimeExecutionConfiguration

type RuntimeExecutionConfiguration = { timeOut?: Number, outputMimeType?: MimeType, writerProperties?: Dictionary<SimpleType>, onException?: "HANDLE" | "FAIL", securityManager?: SecurityManager, loggerService?: LoggerService, maxStackSize?: Number, onUnhandledTimeout?: (threadName: String, javaStackTrace: String, code: String) -> Any }

高度なパラメーターを含むランタイム実行の設定。

  • timeOut​: DataWeave スクリプトがタイムアウトになるまでの最大時間。

  • outputMimeType​: DataWeave スクリプトで指定しなかった場合のデフォルトの出力 MIME タイプ。

  • writerProperties​: 指定された ​outputMimeType​ プロパティで使用するライタープロパティ。

  • onException​: 実行に失敗したときの動作を指定します。

    • HANDLE​ (デフォルト値) では ​ExecutionFailure​ を返します。

    • FAIL​ では例外を伝播します。

  • securityManager​: この実行で使用する ​SecurityManager​ を識別します。このセキュリティマネージャーは現在の ​SecurityManager​ によって構成されます。

  • loggerService​: この実行で使用する ​LoggerService​。

  • maxStackSize​: 最大スタックサイズ。

  • onUnhandledTimeout​: ウォッチドッグがタイムアウト後に実行を停止できなかった場合にコールされるコールバック。これは、問題のログやレポートに便利です。 コールバックは次を使用してコールされます。

    • threadName​: ハングしたスレッドの名前。

    • javaStackTrace​: ハングが発生した Java スタックトレース。

    • code​: ハングの原因となった DataWeave コード。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

SecurityManager

type SecurityManager = (grant: String, args: Array<Any>) -> Boolean

現在の実行に権限を付与する必要がある場合にコールされる関数。

  • grant​ は ​Resource​ などの権限の名前です。

  • args​ により、権限を要求する関数がコールするパラメーターのリストが提供されます。

実験的:​ この型は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。

TryResult

type TryResult = Result<T, TryResultFailure>

オブジェクトと結果またはエラーメッセージ。​success​ が ​false​ の場合、データ型で ​error​ が表示されます。​true​ の場合、データ型で ​result​ が表示されます。

TryResultFailure

type TryResultFailure = { kind: String, message: String, stack?: Array<String>, stackTrace?: String, location?: String }

try​ からの失敗した実行を表す型。

次の項目がサポートされています。

  • kind​: エラー種別。

  • message​: エラーメッセージ。

  • stack​: スタックトレースエラー (省略可能)。

  • stackTrace​: スタックトレース文字列値表現 (省略可能)。

  • location​: エラーの場所 (省略可能)。

Mule 4.4.0 以降では、スタックが存在しない場合、​stackTrace​ 項目をネイティブ Java スタックトレースで使用できます。

DataWeave バージョン 2.7.0 で導入されました。​

# runUrl ## [](#runurl1)runUrl(url: String, readerInputs: Dictionary = ​{}, inputValues: Dictionary = ​{}, configuration: RuntimeExecutionConfiguration = ​{}​): RunSuccess | ExecutionFailure 指定された URL のスクリプトを実行します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

​url

実行するファイルの名前。

​readerInputs

読み取って実行にバインドする入力。

​inputValues

実行に直接バインドする入力。

​configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`runUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" --- { "execute_ok" : runUrl("classpath://org/mule/weave/v2/engine/runtime_runUrl/example.dwl", {"payload": jsonValue }) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "\"Mariano\"", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] } } ``` # runUrl ## [](#runurl1)runUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): RunSuccess | ExecutionFailure 指定された URL のスクリプトを実行します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

実行するファイルの名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`runUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" --- { "execute_ok" : runUrl("classpath://org/mule/weave/v2/engine/runtime_runUrl/example.dwl", {"payload": jsonValue }) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "\"Mariano\"", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] } } ``` # runUrl ## [](#runurl1)runUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): RunSuccess | ExecutionFailure 指定された URL のスクリプトを実行します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

実行するファイルの名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`runUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" --- { "execute_ok" : runUrl("classpath://org/mule/weave/v2/engine/runtime_runUrl/example.dwl", {"payload": jsonValue }) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "\"Mariano\"", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] } } ``` # runUrl ## [](#runurl1)runUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): RunSuccess | ExecutionFailure 指定された URL のスクリプトを実行します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

実行するファイルの名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`runUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" --- { "execute_ok" : runUrl("classpath://org/mule/weave/v2/engine/runtime_runUrl/example.dwl", {"payload": jsonValue }) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "\"Mariano\"", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] } } ``` # runUrl ## [](#runurl1)runUrl(url: String, readerInputs: Dictionary = {}, inputValues: Dictionary = {}, configuration: RuntimeExecutionConfiguration = {}): RunResult 指定された URL のスクリプトを実行します。 _実験的:_​ この関数は実験的機能であり、DataWeave の将来のバージョンで変更または削除される場合があります。 ### [](#パラメーター)パラメーター
名前 説明

url

実行するファイルの名前。

readerInputs

読み取って実行にバインドする入力。

inputValues

実行に直接バインドする入力。

configuration

ランタイム設定。

### [](#例)例 次の例では、さまざまな入力での ​`runUrl`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave import * from dw::Runtime var jsonValue = { value: '{"name": "Mariano"}' as Binary {encoding: "UTF-8"}, encoding: "UTF-8", properties: {}, mimeType: "application/json" } var Utils = "fun sum(a,b) = a +b" --- { "execute_ok" : runUrl("classpath://org/mule/weave/v2/engine/runtime_runUrl/example.dwl", {"payload": jsonValue }) } ``` #### [](#出力)出力 ```Json { "execute_ok": { "success": true, "value": "\"Mariano\"", "mimeType": "application/dw", "encoding": "UTF-8", "logs": [ ] } } ``` # scan ## [](#scan1)scan(String, Regex): Array> 入力文字列内で検出されたすべての一致を含む配列を返します。 各一致は、完全な一致の後に正規表現のキャプチャグループ (存在する場合) が含まれる配列として返されます。 ### [](#パラメーター)パラメーター
名前 説明

​text

スキャンする入力文字列。

​regex

​text​ (テキスト) 内でパターン一致を記述する Java 正規表現。

### [](#例)例 次の例では、​`regex`​ (正規表現) で URL が記述されます。括弧内に 3 つのキャプチャグループ (ピリオド ​`.`​ より前の文字と後の文字) が含まれます。入力 URL への一致とキャプチャグループの配列が作成されます。​`flatten`​ を使用して、出力を配列の配列から単純な配列にフラット化しています。​`regex`​ (正規表現) はスラッシュ (​`//`​) 内で指定されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- flatten("www.mulesoft.com" scan(/([w]*).([a-z]*).([a-z]*)/)) ``` #### [](#出力)出力 ```JSON [ "www.mulesoft.com", "www", "mulesoft", "com" ] ``` ### [](#例-2)例 次の例では、​`regex`​ (正規表現) でメールアドレスが記述されます。2 つの キャプチャグループ (​`@`​ より前の文字と後の文字) が含まれます。入力文字内のメールアドレスへの一致とキャプチャグループの配列が作成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力-2)出力 ```JSON [ [ "anypt@mulesoft.com", "anypt", "mulesoft" ], [ "max@mulesoft.com", "max", "mulesoft" ] ] ``` # scan ## [](#scan1)scan(text: String, matcher: Regex): Array> 入力文字列内で検出されたすべての一致を含む配列を返します。 各一致は、完全な一致の後に正規表現のキャプチャグループ (存在する場合) が含まれる配列として返されます。 ### [](#パラメーター)パラメーター
名前 説明

​text

スキャンする入力文字列。

​regex

​text​ (テキスト) 内でパターン一致を記述する Java 正規表現。

### [](#例)例 次の例では、​`regex`​ (正規表現) で URL が記述されます。括弧内に 3 つのキャプチャグループ (ピリオド ​`.`​ より前の文字と後の文字) が含まれます。入力 URL への一致とキャプチャグループの配列が作成されます。​`flatten`​ を使用して、出力を配列の配列から単純な配列にフラット化しています。​`regex`​ (正規表現) はスラッシュ (​`//`​) 内で指定されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- flatten("www.mulesoft.com" scan(/([w]*).([a-z]*).([a-z]*)/)) ``` #### [](#出力)出力 ```JSON [ "www.mulesoft.com", "www", "mulesoft", "com" ] ``` ### [](#例-2)例 次の例では、​`regex`​ (正規表現) でメールアドレスが記述されます。2 つの キャプチャグループ (​`@`​ より前の文字と後の文字) が含まれます。入力文字内のメールアドレスへの一致とキャプチャグループの配列が作成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力-2)出力 ```JSON [ [ "anypt@mulesoft.com", "anypt", "mulesoft" ], [ "max@mulesoft.com", "max", "mulesoft" ] ] ``` ## [](#scan2)scan(text: Null, matcher: Any): Null `scan`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # scan ## [](#scan1)scan(text: String, matcher: Regex): Array> 入力文字列内で検出されたすべての一致を含む配列を返します。 各一致は、完全な一致の後に正規表現のキャプチャグループ (存在する場合) が含まれる配列として返されます。 ### [](#パラメーター)パラメーター
名前 説明

text

スキャンする入力文字列。

regex

text​ (テキスト) 内でパターン一致を記述する Java 正規表現。

### [](#例)例 次の例では、​`regex`​ (正規表現) で URL が記述されます。括弧内に 3 つのキャプチャグループ (ピリオド ​`.`​ より前の文字と後の文字) が含まれます。入力 URL への一致とキャプチャグループの配列が作成されます。​`flatten`​ を使用して、出力を配列の配列から単純な配列にフラット化しています。​`regex`​ (正規表現) はスラッシュ (​`//`​) 内で指定されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- flatten("www.mulesoft.com" scan(/([w]*).([a-z]*).([a-z]*)/)) ``` #### [](#出力)出力 ```JSON [ "www.mulesoft.com", "www", "mulesoft", "com" ] ``` ### [](#例-2)例 次の例では、​`regex`​ (正規表現) でメールアドレスが記述されます。2 つの キャプチャグループ (​`@`​ より前の文字と後の文字) が含まれます。入力文字内のメールアドレスへの一致とキャプチャグループの配列が作成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力-2)出力 ```JSON [ [ "anypt@mulesoft.com", "anypt", "mulesoft" ], [ "max@mulesoft.com", "max", "mulesoft" ] ] ``` ## [](#scan2)scan(text: Null, matcher: Any): Null `scan`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # scan ## [](#scan1)scan(text: String, matcher: Regex): Array> 入力文字列内で検出されたすべての一致を含む配列を返します。 各一致は、完全な一致の後に正規表現のキャプチャグループ (存在する場合) が含まれる配列として返されます。 ### [](#パラメーター)パラメーター
名前 説明

text

スキャンする入力文字列。

regex

text​ (テキスト) 内でパターン一致を記述する Java 正規表現。

### [](#例)例 次の例では、​`regex`​ (正規表現) で URL が記述されます。括弧内に 3 つのキャプチャグループ (ピリオド ​`.`​ より前の文字と後の文字) が含まれます。入力 URL への一致とキャプチャグループの配列が作成されます。​`flatten`​ を使用して、出力を配列の配列から単純な配列にフラット化しています。​`regex`​ (正規表現) はスラッシュ (​`//`​) 内で指定されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- flatten("www.mulesoft.com" scan(/([w]*).([a-z]*).([a-z]*)/)) ``` #### [](#出力)出力 ```JSON [ "www.mulesoft.com", "www", "mulesoft", "com" ] ``` ### [](#例-2)例 次の例では、​`regex`​ (正規表現) でメールアドレスが記述されます。2 つの キャプチャグループ (​`@`​ より前の文字と後の文字) が含まれます。入力文字内のメールアドレスへの一致とキャプチャグループの配列が作成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力-2)出力 ```JSON [ [ "anypt@mulesoft.com", "anypt", "mulesoft" ], [ "max@mulesoft.com", "max", "mulesoft" ] ] ``` ## [](#scan2)scan(text: Null, matcher: Any): Null `scan`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # scan ## [](#scan1)scan(text: String, matcher: Regex): Array> 入力文字列内で検出されたすべての一致を含む配列を返します。 各一致は、完全な一致の後に正規表現のキャプチャグループ (存在する場合) が含まれる配列として返されます。 ### [](#パラメーター)パラメーター
名前 説明

text

スキャンする入力文字列。

regex

text​ (テキスト) 内でパターン一致を記述する Java 正規表現。

### [](#例)例 次の例では、​`regex`​ (正規表現) で URL が記述されます。括弧内に 3 つのキャプチャグループ (ピリオド ​`.`​ より前の文字と後の文字) が含まれます。入力 URL への一致とキャプチャグループの配列が作成されます。​`flatten`​ を使用して、出力を配列の配列から単純な配列にフラット化しています。​`regex`​ (正規表現) はスラッシュ (​`//`​) 内で指定されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- flatten("www.mulesoft.com" scan(/([w]*).([a-z]*).([a-z]*)/)) ``` #### [](#出力)出力 ```JSON [ "www.mulesoft.com", "www", "mulesoft", "com" ] ``` ### [](#例-2)例 次の例では、​`regex`​ (正規表現) でメールアドレスが記述されます。2 つの キャプチャグループ (​`@`​ より前の文字と後の文字) が含まれます。入力文字内のメールアドレスへの一致とキャプチャグループの配列が作成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力-2)出力 ```JSON [ [ "anypt@mulesoft.com", "anypt", "mulesoft" ], [ "max@mulesoft.com", "max", "mulesoft" ] ] ``` ## [](#scan2)scan(text: Null, matcher: Any): Null `scan`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # scan ## [](#scan1)scan(text: String, matcher: Regex): Array> 入力文字列内で検出されたすべての一致を含む配列を返します。 各一致は、完全な一致の後に正規表現のキャプチャグループ (存在する場合) が含まれる配列として返されます。 ### [](#パラメーター)パラメーター
名前 説明

text

スキャンする入力文字列。

regex

text​ (テキスト) 内でパターン一致を記述する Java 正規表現。

### [](#例)例 次の例では、​`regex`​ (正規表現) で URL が記述されます。括弧内に 3 つのキャプチャグループ (ピリオド ​`.`​ より前の文字と後の文字) が含まれます。入力 URL への一致とキャプチャグループの配列が作成されます。​`flatten`​ を使用して、出力を配列の配列から単純な配列にフラット化しています。​`regex`​ (正規表現) はスラッシュ (​`//`​) 内で指定されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- flatten("www.mulesoft.com" scan(/([w]*).([a-z]*).([a-z]*)/)) ``` #### [](#出力)出力 ```JSON [ "www.mulesoft.com", "www", "mulesoft", "com" ] ``` ### [](#例-2)例 次の例では、​`regex`​ (正規表現) でメールアドレスが記述されます。2 つの キャプチャグループ (​`@`​ より前の文字と後の文字) が含まれます。入力文字内のメールアドレスへの一致とキャプチャグループの配列が作成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- "anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/) ``` #### [](#出力-2)出力 ```JSON [ [ "anypt@mulesoft.com", "anypt", "mulesoft" ], [ "max@mulesoft.com", "max", "mulesoft" ] ] ``` ## [](#scan2)scan(text: Null, matcher: Any): Null `scan`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # SHA1 ## [](#sha11)SHA1(Binary): String SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、SHA1 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "sha1" : Crypto::SHA1("dsasd" as Binary) } ``` #### [](#出力)出力 ```JSON { "sha1": "2fa183839c954e6366c206367c9be5864e4f4a65" } ``` # SHA1 ## [](#sha11)SHA1(content: Binary): String SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、SHA1 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "sha1" : Crypto::SHA1("dsasd" as Binary) } ``` #### [](#出力)出力 ```JSON { "sha1": "2fa183839c954e6366c206367c9be5864e4f4a65" } ``` # SHA1 ## [](#sha11)SHA1(content: Binary): String SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、SHA1 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "sha1" : Crypto::SHA1("dsasd" as Binary) } ``` #### [](#出力)出力 ```JSON { "sha1": "2fa183839c954e6366c206367c9be5864e4f4a65" } ``` # SHA1 ## [](#sha11)SHA1(content: Binary): String SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、SHA1 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "sha1" : Crypto::SHA1("dsasd" as Binary) } ``` #### [](#出力)出力 ```JSON { "sha1": "2fa183839c954e6366c206367c9be5864e4f4a65" } ``` # SHA1 ## [](#sha11)SHA1(content: Binary): String SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、SHA1 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "sha1" : Crypto::SHA1("dsasd" as Binary) } ``` #### [](#出力)出力 ```JSON { "sha1": "2fa183839c954e6366c206367c9be5864e4f4a65" } ``` # SHA1 ## [](#sha11)SHA1(content: Binary): String SHA1 ハッシュを計算し、その結果を小文字の 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

暗号化するバイナリ入力値。

### [](#例)例 次の例では、SHA1 アルゴリズムを使用してバイナリ値を暗号化します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto output application/json --- { "sha1" : Crypto::SHA1("dsasd" as Binary) } ``` #### [](#出力)出力 ```JSON { "sha1": "2fa183839c954e6366c206367c9be5864e4f4a65" } ``` # sin ## [](#sin1)sin(angle: Number): Number ラジアンの特定の数値から角度の三角法の正弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`sin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "sin0": sin(0), "sin13": sin(0.13), "sin-1": sin(-1) } ``` #### [](#出力)出力 ```Json { "sin0": 0.0, "sin13": 0.12963414261969486, "sin-1": -0.8414709848078965 } ``` # sin ## [](#sin1)sin(angle: Number): Number ラジアンの特定の数値から角度の三角法の正弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`sin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "sin0": sin(0), "sin13": sin(0.13), "sin-1": sin(-1) } ``` #### [](#出力)出力 ```Json { "sin0": 0.0, "sin13": 0.12963414261969486, "sin-1": -0.8414709848078965 } ``` # sin ## [](#sin1)sin(angle: Number): Number ラジアンの特定の数値から角度の三角法の正弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`sin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "sin0": sin(0), "sin13": sin(0.13), "sin-1": sin(-1) } ``` #### [](#出力)出力 ```Json { "sin0": 0.0, "sin13": 0.12963414261969486, "sin-1": -0.8414709848078965 } ``` # sin ## [](#sin1)sin(angle: Number): Number ラジアンの特定の数値から角度の三角法の正弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`sin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "sin0": sin(0), "sin13": sin(0.13), "sin-1": sin(-1) } ``` #### [](#出力)出力 ```Json { "sin0": 0.0, "sin13": 0.12963414261969486, "sin-1": -0.8414709848078965 } ``` # sin ## [](#sin1)sin(angle: Number): Number ラジアンの特定の数値から角度の三角法の正弦を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`sin`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "sin0": sin(0), "sin13": sin(0.13), "sin-1": sin(-1) } ``` #### [](#出力)出力 ```Json { "sin0": 0.0, "sin13": 0.12963414261969486, "sin-1": -0.8414709848078965 } ``` # singularize ## [](#singularize1)singularize(String): String 複数形の文字列を単数形に変換します。 入力がすでに単数形 (「box」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

単数形に変換する文字列。

### [](#例)例 次の例では、入力文字列「boxes」を変換して「box」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "singularize" : singularize("boxes") } ``` #### [](#出力)出力 ```JSON { "singularize" : "box" } ``` ## [](#singularize2)singularize(Null): Null `singularize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # singularize ## [](#singularize1)singularize(text: String): String 複数形の文字列を単数形に変換します。 入力がすでに単数形 (「box」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

単数形に変換する文字列。

### [](#例)例 次の例では、入力文字列「boxes」を変換して「box」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "singularize" : singularize("boxes") } ``` #### [](#出力)出力 ```JSON { "singularize" : "box" } ``` ## [](#singularize2)singularize(text: Null): Null `singularize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # singularize ## [](#singularize1)singularize(text: String): String 複数形の文字列を単数形に変換します。 入力がすでに単数形 (「box」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

単数形に変換する文字列。

### [](#例)例 次の例では、入力文字列「boxes」を変換して「box」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "singularize" : singularize("boxes") } ``` #### [](#出力)出力 ```JSON { "singularize" : "box" } ``` ## [](#singularize2)singularize(text: Null): Null `singularize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # singularize ## [](#singularize1)singularize(text: String): String 複数形の文字列を単数形に変換します。 入力がすでに単数形 (「box」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

単数形に変換する文字列。

### [](#例)例 次の例では、入力文字列「boxes」を変換して「box」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "singularize" : singularize("boxes") } ``` #### [](#出力)出力 ```JSON { "singularize" : "box" } ``` ## [](#singularize2)singularize(text: Null): Null `singularize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # singularize ## [](#singularize1)singularize(text: String): String 複数形の文字列を単数形に変換します。 入力がすでに単数形 (「box」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

単数形に変換する文字列。

### [](#例)例 次の例では、入力文字列「boxes」を変換して「box」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "singularize" : singularize("boxes") } ``` #### [](#出力)出力 ```JSON { "singularize" : "box" } ``` ## [](#singularize2)singularize(text: Null): Null `singularize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # singularize ## [](#singularize1)singularize(text: String): String 複数形の文字列を単数形に変換します。 入力がすでに単数形 (「box」など) の場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

単数形に変換する文字列。

### [](#例)例 次の例では、入力文字列「boxes」を変換して「box」を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "singularize" : singularize("boxes") } ``` #### [](#出力)出力 ```JSON { "singularize" : "box" } ``` ## [](#singularize2)singularize(text: Null): Null `singularize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # sizeOf ## [](#sizeof1)sizeOf(Array): Number 配列内の要素数を返します。配列が空の場合は ​`0`​ を返します。 このバージョンの ​`sizeOf`​ は、配列、または配列の配列を入力として使用します。 その他のバージョンは、オブジェクト、文字列、またはバイナリ値の配列で動作します。 ### [](#パラメーター)パラメーター
名前 説明

​array

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、入力配列内の要素数を数えます。​`3`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf([ "a", "b", "c"]) ``` #### [](#出力)出力 ```JSON 3 ``` ### [](#例-2)例 次の例では、入力配列内の要素数を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "arraySizes": { size3: sizeOf([1,2,3]), size2: sizeOf([[1,2,3],[4]]), size0: sizeOf([]) } } ``` #### [](#出力-2)出力 ```JSON { "arraySizes": { "size3": 3, "size2": 2, "size0": 0 } } ``` ## [](#sizeof2)sizeOf(Object): Number オブジェクト内のキー-値ペア数を返します。 この関数はオブジェクトの配列を受け入れます。入力オブジェクトが空の場合は ​`0`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​object

1 つ以上のキー-値ペアを含む入力オブジェクト。

### [](#例-3)例 次の例では、入力オブジェクト内のキー-値ペア数を数え、​`2`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf({a: 1, b: 2}) ``` #### [](#出力-3)出力 ```JSON 2 ``` ### [](#例-4)例 次の例では、オブジェクト内のキー-値ペア数を数えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { objectSizes : { sizeIs2: sizeOf({a:1,b:2}), sizeIs0: sizeOf({}) } } ``` #### [](#出力-4)出力 ```JSON { "objectSize": { "sizeIs2": 2, "sizeIs0": 0 } } ``` ## [](#sizeof3)sizeOf(Binary): Number バイナリ値の配列内の要素数を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​binary

バイナリ値の入力配列。

### [](#例-5)例 次の例では、バイナリ値の配列のサイズを返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf(["\u0000" as Binary, "\u0001" as Binary, "\u0002" as Binary]) ``` #### [](#出力-5)出力 ```JSON 3 ``` ## [](#sizeof4)sizeOf(String): Number 文字列内の文字数 (空白を含む) を返します。 文字列が空の場合は ​`0`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

​text

入力テキスト。

### [](#例-6)例 次の例では、入力文字列 ​`"abc"`​ 内の文字数を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf("abc") ``` #### [](#出力-6)出力 ```JSON 3 ``` ### [](#例-7)例 次の例では、入力配列内の文字数を返します。文字列 ​`"my string"`​ 内の空白スペースは含まれます。また、​`sizeOf("123" as Number)`​ では、​`123`​ が数値に強制変換されて文字列ではなくなるため、​`1`​ が返されます。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- { sizeOfSting2 : sizeOf("my string"), sizeOfEmptyString: sizeOf(""), sizeOfNumber : sizeOf("123" as Number) } ``` #### [](#出力-7)出力 ```JSON { "sizeOfSting2": 9, "sizeOfEmptyString": 0, "sizeOfNumber": 1 } ``` # sizeOf ## [](#sizeof1)sizeOf(array: Array): Number 配列内の要素数を返します。配列が空の場合は ​`0`​ を返します。 このバージョンの ​`sizeOf`​ は、配列、または配列の配列を入力として使用します。 その他のバージョンは、オブジェクト、文字列、またはバイナリ値の配列で動作します。 ### [](#パラメーター)パラメーター
名前 説明

​array

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、入力配列内の要素数を数えます。​`3`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf([ "a", "b", "c"]) ``` #### [](#出力)出力 ```JSON 3 ``` ### [](#例-2)例 次の例では、入力配列内の要素数を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "arraySizes": { size3: sizeOf([1,2,3]), size2: sizeOf([[1,2,3],[4]]), size0: sizeOf([]) } } ``` #### [](#出力-2)出力 ```JSON { "arraySizes": { "size3": 3, "size2": 2, "size0": 0 } } ``` ## [](#sizeof2)sizeOf(object: Object): Number オブジェクト内のキー-値ペア数を返します。 この関数はオブジェクトの配列を受け入れます。入力オブジェクトが空の場合は ​`0`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​object

1 つ以上のキー-値ペアを含む入力オブジェクト。

### [](#例-3)例 次の例では、入力オブジェクト内のキー-値ペア数を数え、​`2`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf({a: 1, b: 2}) ``` #### [](#出力-3)出力 ```JSON 2 ``` ### [](#例-4)例 次の例では、オブジェクト内のキー-値ペア数を数えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { objectSizes : { sizeIs2: sizeOf({a:1,b:2}), sizeIs0: sizeOf({}) } } ``` #### [](#出力-4)出力 ```JSON { "objectSize": { "sizeIs2": 2, "sizeIs0": 0 } } ``` ## [](#sizeof3)sizeOf(binary: Binary): Number バイナリ値の配列内の要素数を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

​binary

バイナリ値の入力配列。

### [](#例-5)例 次の例では、バイナリ値の配列のサイズを返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf(["\u0000" as Binary, "\u0001" as Binary, "\u0002" as Binary]) ``` #### [](#出力-5)出力 ```JSON 3 ``` ## [](#sizeof4)sizeOf(text: String): Number 文字列内の文字数 (空白を含む) を返します。 文字列が空の場合は ​`0`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

​text

入力テキスト。

### [](#例-6)例 次の例では、入力文字列 ​`"abc"`​ 内の文字数を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf("abc") ``` #### [](#出力-6)出力 ```JSON 3 ``` ### [](#例-7)例 次の例では、入力配列内の文字数を返します。文字列 ​`"my string"`​ 内の空白スペースは含まれます。また、​`sizeOf("123" as Number)`​ では、​`123`​ が数値に強制変換されて文字列ではなくなるため、​`1`​ が返されます。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- { sizeOfSting2 : sizeOf("my string"), sizeOfEmptyString: sizeOf(""), sizeOfNumber : sizeOf("123" as Number) } ``` #### [](#出力-7)出力 ```JSON { "sizeOfSting2": 9, "sizeOfEmptyString": 0, "sizeOfNumber": 1 } ``` ## [](#sizeof5)sizeOf(n: Null): Null `sizeOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # sizeOf ## [](#sizeof1)sizeOf(array: Array): Number 配列内の要素数を返します。配列が空の場合は ​`0`​ を返します。 このバージョンの ​`sizeOf`​ は、配列、または配列の配列を入力として使用します。 その他のバージョンは、オブジェクト、文字列、またはバイナリ値の配列で動作します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、入力配列内の要素数をカウントします。​`3`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf([ "a", "b", "c"]) ``` #### [](#出力)出力 ```JSON 3 ``` ### [](#例-2)例 次の例では、入力配列内の要素数を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "arraySizes": { size3: sizeOf([1,2,3]), size2: sizeOf([[1,2,3],[4]]), size0: sizeOf([]) } } ``` #### [](#出力-2)出力 ```JSON { "arraySizes": { "size3": 3, "size2": 2, "size0": 0 } } ``` ## [](#sizeof2)sizeOf(object: Object): Number オブジェクト内のキー-値ペア数を返します。 この関数はオブジェクトの配列を受け入れます。入力オブジェクトが空の場合は ​`0`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

1 つ以上のキー-値ペアを含む入力オブジェクト。

### [](#例-3)例 次の例では、入力オブジェクト内のキー-値ペア数をカウントし、​`2`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf({a: 1, b: 2}) ``` #### [](#出力-3)出力 ```JSON 2 ``` ### [](#例-4)例 次の例では、オブジェクト内のキー-値ペア数をカウントします。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { objectSizes : { sizeIs2: sizeOf({a:1,b:2}), sizeIs0: sizeOf({}) } } ``` #### [](#出力-4)出力 ```JSON { "objectSize": { "sizeIs2": 2, "sizeIs0": 0 } } ``` ## [](#sizeof3)sizeOf(binary: Binary): Number バイナリ値の配列内の要素数を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

binary

バイナリ値の入力配列。

### [](#例-5)例 次の例では、バイナリ値の配列のサイズを返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf(["\u0000" as Binary, "\u0001" as Binary, "\u0002" as Binary]) ``` #### [](#出力-5)出力 ```JSON 3 ``` ## [](#sizeof4)sizeOf(text: String): Number 文字列内の文字数 (空白を含む) を返します。 文字列が空の場合は ​`0`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

text

入力テキスト。

### [](#例-6)例 次の例では、入力文字列 ​`"abc"`​ 内の文字数を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf("abc") ``` #### [](#出力-6)出力 ```JSON 3 ``` ### [](#例-7)例 次の例では、入力配列内の文字数を返します。文字列 ​`"my string"`​ 内の空白スペースはカウントされます。また、​`sizeOf("123" as Number)`​ では、​`123`​ が数値に強制変換されて文字列ではなくなるため、​`1`​ が返されます。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- { sizeOfSting2 : sizeOf("my string"), sizeOfEmptyString: sizeOf(""), sizeOfNumber : sizeOf("123" as Number) } ``` #### [](#出力-7)出力 ```JSON { "sizeOfSting2": 9, "sizeOfEmptyString": 0, "sizeOfNumber": 1 } ``` ## [](#sizeof5)sizeOf(n: Null): Null `sizeOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sizeOf ## [](#sizeof1)sizeOf(array: Array): Number 配列内の要素数を返します。配列が空の場合は ​`0`​ を返します。 このバージョンの ​`sizeOf`​ は、配列、または配列の配列を入力として使用します。 その他のバージョンは、オブジェクト、文字列、またはバイナリ値の配列で動作します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、入力配列内の要素数をカウントします。​`3`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf([ "a", "b", "c"]) ``` #### [](#出力)出力 ```JSON 3 ``` ### [](#例-2)例 次の例では、入力配列内の要素数を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "arraySizes": { size3: sizeOf([1,2,3]), size2: sizeOf([[1,2,3],[4]]), size0: sizeOf([]) } } ``` #### [](#出力-2)出力 ```JSON { "arraySizes": { "size3": 3, "size2": 2, "size0": 0 } } ``` ## [](#sizeof2)sizeOf(object: Object): Number オブジェクト内のキー-値ペア数を返します。 この関数はオブジェクトの配列を受け入れます。入力オブジェクトが空の場合は ​`0`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

1 つ以上のキー-値ペアを含む入力オブジェクト。

### [](#例-3)例 次の例では、入力オブジェクト内のキー-値ペア数をカウントし、​`2`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf({a: 1, b: 2}) ``` #### [](#出力-3)出力 ```JSON 2 ``` ### [](#例-4)例 次の例では、オブジェクト内のキー-値ペア数をカウントします。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { objectSizes : { sizeIs2: sizeOf({a:1,b:2}), sizeIs0: sizeOf({}) } } ``` #### [](#出力-4)出力 ```JSON { "objectSize": { "sizeIs2": 2, "sizeIs0": 0 } } ``` ## [](#sizeof3)sizeOf(binary: Binary): Number バイナリ値の配列内の要素数を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

binary

バイナリ値の入力配列。

### [](#例-5)例 次の例では、バイナリ値の配列のサイズを返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf(["\u0000" as Binary, "\u0001" as Binary, "\u0002" as Binary]) ``` #### [](#出力-5)出力 ```JSON 3 ``` ## [](#sizeof4)sizeOf(text: String): Number 文字列内の文字数 (空白を含む) を返します。 文字列が空の場合は ​`0`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

text

入力テキスト。

### [](#例-6)例 次の例では、入力文字列 ​`"abc"`​ 内の文字数を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf("abc") ``` #### [](#出力-6)出力 ```JSON 3 ``` ### [](#例-7)例 次の例では、入力配列内の文字数を返します。文字列 ​`"my string"`​ 内の空白スペースはカウントされます。また、​`sizeOf("123" as Number)`​ では、​`123`​ が数値に強制変換されて文字列ではなくなるため、​`1`​ が返されます。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- { sizeOfSting2 : sizeOf("my string"), sizeOfEmptyString: sizeOf(""), sizeOfNumber : sizeOf("123" as Number) } ``` #### [](#出力-7)出力 ```JSON { "sizeOfSting2": 9, "sizeOfEmptyString": 0, "sizeOfNumber": 1 } ``` ## [](#sizeof5)sizeOf(n: Null): Null `sizeOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sizeOf ## [](#sizeof1)sizeOf(array: Array): Number 配列内の要素数を返します。配列が空の場合は ​`0`​ を返します。 このバージョンの ​`sizeOf`​ は、配列、または配列の配列を入力として使用します。 その他のバージョンは、オブジェクト、文字列、またはバイナリ値の配列で動作します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、入力配列内の要素数をカウントします。​`3`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf([ "a", "b", "c"]) ``` #### [](#出力)出力 ```JSON 3 ``` ### [](#例-2)例 次の例では、入力配列内の要素数を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "arraySizes": { size3: sizeOf([1,2,3]), size2: sizeOf([[1,2,3],[4]]), size0: sizeOf([]) } } ``` #### [](#出力-2)出力 ```JSON { "arraySizes": { "size3": 3, "size2": 2, "size0": 0 } } ``` ## [](#sizeof2)sizeOf(object: Object): Number オブジェクト内のキー-値ペア数を返します。 この関数はオブジェクトの配列を受け入れます。入力オブジェクトが空の場合は ​`0`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

1 つ以上のキー-値ペアを含む入力オブジェクト。

### [](#例-3)例 次の例では、入力オブジェクト内のキー-値ペア数をカウントし、​`2`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf({a: 1, b: 2}) ``` #### [](#出力-3)出力 ```JSON 2 ``` ### [](#例-4)例 次の例では、オブジェクト内のキー-値ペア数をカウントします。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { objectSizes : { sizeIs2: sizeOf({a:1,b:2}), sizeIs0: sizeOf({}) } } ``` #### [](#出力-4)出力 ```JSON { "objectSize": { "sizeIs2": 2, "sizeIs0": 0 } } ``` ## [](#sizeof3)sizeOf(binary: Binary): Number バイナリ値の配列内の要素数を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

binary

バイナリ値の入力配列。

### [](#例-5)例 次の例では、バイナリ値の配列のサイズを返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf(["\u0000" as Binary, "\u0001" as Binary, "\u0002" as Binary]) ``` #### [](#出力-5)出力 ```JSON 3 ``` ## [](#sizeof4)sizeOf(text: String): Number 文字列内の文字数 (空白を含む) を返します。 文字列が空の場合は ​`0`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

text

入力テキスト。

### [](#例-6)例 次の例では、入力文字列 ​`"abc"`​ 内の文字数を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf("abc") ``` #### [](#出力-6)出力 ```JSON 3 ``` ### [](#例-7)例 次の例では、入力配列内の文字数を返します。文字列 ​`"my string"`​ 内の空白スペースはカウントされます。また、​`sizeOf("123" as Number)`​ では、​`123`​ が数値に強制変換されて文字列ではなくなるため、​`1`​ が返されます。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- { sizeOfSting2 : sizeOf("my string"), sizeOfEmptyString: sizeOf(""), sizeOfNumber : sizeOf("123" as Number) } ``` #### [](#出力-7)出力 ```JSON { "sizeOfSting2": 9, "sizeOfEmptyString": 0, "sizeOfNumber": 1 } ``` ## [](#sizeof5)sizeOf(n: Null): Null `sizeOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sizeOf ## [](#sizeof1)sizeOf(array: Array): Number 配列内の要素数を返します。配列が空の場合は ​`0`​ を返します。 このバージョンの ​`sizeOf`​ は、配列、または配列の配列を入力として使用します。 その他のバージョンは、オブジェクト、文字列、またはバイナリ値の配列で動作します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。配列の要素には、サポートされる任意のデータ型を使用できます。

### [](#例)例 次の例では、入力配列内の要素数を数えます。​`3`​ を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf([ "a", "b", "c"]) ``` #### [](#出力)出力 ```JSON 3 ``` ### [](#例-2)例 次の例では、入力配列内の要素数を返します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "arraySizes": { size3: sizeOf([1,2,3]), size2: sizeOf([[1,2,3],[4]]), size0: sizeOf([]) } } ``` #### [](#出力-2)出力 ```JSON { "arraySizes": { "size3": 3, "size2": 2, "size0": 0 } } ``` ## [](#sizeof2)sizeOf(object: Object): Number オブジェクト内のキー-値ペア数を返します。 この関数はオブジェクトの配列を受け入れます。入力オブジェクトが空の場合は ​`0`​ を返します。 ### [](#パラメーター-2)パラメーター
名前 説明

object

1 つ以上のキー-値ペアを含む入力オブジェクト。

### [](#例-3)例 次の例では、入力オブジェクト内のキー-値ペア数を数え、​`2`​ を返します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf({a: 1, b: 2}) ``` #### [](#出力-3)出力 ```JSON 2 ``` ### [](#例-4)例 次の例では、オブジェクト内のキー-値ペア数を数えます。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- { objectSizes : { sizeIs2: sizeOf({a:1,b:2}), sizeIs0: sizeOf({}) } } ``` #### [](#出力-4)出力 ```JSON { "objectSize": { "sizeIs2": 2, "sizeIs0": 0 } } ``` ## [](#sizeof3)sizeOf(binary: Binary): Number バイナリ値の配列内の要素数を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

binary

バイナリ値の入力配列。

### [](#例-5)例 次の例では、バイナリ値の配列のサイズを返します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf(["\u0000" as Binary, "\u0001" as Binary, "\u0002" as Binary]) ``` #### [](#出力-5)出力 ```JSON 3 ``` ## [](#sizeof4)sizeOf(text: String): Number 文字列内の文字数 (空白を含む) を返します。 文字列が空の場合は ​`0`​ を返します。 ### [](#パラメーター-4)パラメーター
名前 説明

text

入力テキスト。

### [](#例-6)例 次の例では、入力文字列 ​`"abc"`​ 内の文字数を返します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- sizeOf("abc") ``` #### [](#出力-6)出力 ```JSON 3 ``` ### [](#例-7)例 次の例では、入力配列内の文字数を返します。文字列 ​`"my string"`​ 内の空白スペースは含まれます。また、​`sizeOf("123" as Number)`​ では、​`123`​ が数値に強制変換されて文字列ではなくなるため、​`1`​ が返されます。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 output application/json --- { sizeOfSting2 : sizeOf("my string"), sizeOfEmptyString: sizeOf(""), sizeOfNumber : sizeOf("123" as Number) } ``` #### [](#出力-7)出力 ```JSON { "sizeOfSting2": 9, "sizeOfEmptyString": 0, "sizeOfNumber": 1 } ``` ## [](#sizeof5)sizeOf(n: Null): Null `sizeOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # slice ## [](#slice1)slice(Array, Number, Number): Array 条件 (​`from <= indexOf(array) < until`​) を満たす要素の間隔を選択します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​from​

配列内の含める要素の間隔の開始インデックス。
値が負数の場合、配列の最初の要素から含めます。この値が配列の最後のインデックスよりも大きい場合、関数は空の配列 (​[]​) を返します。

​until​

配列内の含める要素の間隔の終了インデックス。
この値が配列の最後のインデックスよりも大きい場合、配列の最後の要素まで含めます。この値が配列の最初のインデックスよりも小さい場合、関数は空の配列 (​[]​) を返します。

### [](#例)例 次の例では、入力配列からインデックス 1、2、3 の値を含む配列を返します。インデックス 0、4、5 の値は除外されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- slice(arr, 1, 4) ``` #### [](#出力)出力 ```json [ 1, 2, 3 ] ``` # slice ## [](#slice1)slice(array: Array, from: Number, until: Number): Array 条件 (​`from <= indexOf(array) < until`​) を満たす要素の間隔を選択します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​from​

配列内の含める要素の間隔の開始インデックス。
値が負数の場合、配列の最初の要素から含めます。この値が配列の最後のインデックスよりも大きい場合、関数は空の配列 (​[]​) を返します。

​until​

配列内の含める要素の間隔の終了インデックス。
この値が配列の最後のインデックスよりも大きい場合、配列の最後の要素まで含めます。この値が配列の最初のインデックスよりも小さい場合、関数は空の配列 (​[]​) を返します。

### [](#例)例 次の例では、入力配列からインデックス 1、2、3 の値を含む配列を返します。インデックス 0、4、5 の値は除外されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- slice(arr, 1, 4) ``` #### [](#出力)出力 ```json [ 1, 2, 3 ] ``` ## [](#slice2)slice(array: Null, from: Any, until: Any): Null `slice`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # slice ## [](#slice1)slice(array: Array, from: Number, until: Number): Array 条件 (​`from <= indexOf(array) < until`​) を満たす要素の間隔を選択します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

from

配列内の含める要素の間隔の開始インデックス。
値が負数の場合、配列の最初の要素から含めます。この値が配列の最後のインデックスよりも大きい場合、関数は空の配列 (​[]​) を返します。

until

配列内の含める要素の間隔の終了インデックス。
この値が配列の最後のインデックスよりも大きい場合、配列の最後の要素まで含めます。この値が配列の最初のインデックスよりも小さい場合、関数は空の配列 (​[]​) を返します。

### [](#例)例 次の例では、入力配列からインデックス 1、2、3 の値を含む配列を返します。インデックス 0、4、5 の値は除外されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- slice(arr, 1, 4) ``` #### [](#出力)出力 ```json [ 1, 2, 3 ] ``` ## [](#slice2)slice(array: Null, from: Any, until: Any): Null `slice`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # slice ## [](#slice1)slice(array: Array, from: Number, until: Number): Array 条件 (​`from <= indexOf(array) < until`​) を満たす要素の間隔を選択します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

from

配列内の含める要素の間隔の開始インデックス。
値が負数の場合、配列の最初の要素から含めます。この値が配列の最後のインデックスよりも大きい場合、関数は空の配列 (​[]​) を返します。

until

配列内の含める要素の間隔の終了インデックス。
この値が配列の最後のインデックスよりも大きい場合、配列の最後の要素まで含めます。この値が配列の最初のインデックスよりも小さい場合、関数は空の配列 (​[]​) を返します。

### [](#例)例 次の例では、入力配列からインデックス 1、2、3 の値を含む配列を返します。インデックス 0、4、5 の値は除外されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- slice(arr, 1, 4) ``` #### [](#出力)出力 ```json [ 1, 2, 3 ] ``` ## [](#slice2)slice(array: Null, from: Any, until: Any): Null `slice`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # slice ## [](#slice1)slice(array: Array, from: Number, until: Number): Array 条件 (​`from <= indexOf(array) < until`​) を満たす要素の間隔を選択します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

from

配列内の含める要素の間隔の開始インデックス。
値が負数の場合、配列の最初の要素から含めます。この値が配列の最後のインデックスよりも大きい場合、関数は空の配列 (​[]​) を返します。

until

配列内の含める要素の間隔の終了インデックス。
この値が配列の最後のインデックスよりも大きい場合、配列の最後の要素まで含めます。この値が配列の最初のインデックスよりも小さい場合、関数は空の配列 (​[]​) を返します。

### [](#例)例 次の例では、入力配列からインデックス 1、2、3 の値を含む配列を返します。インデックス 0、4、5 の値は除外されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- slice(arr, 1, 4) ``` #### [](#出力)出力 ```json [ 1, 2, 3 ] ``` ## [](#slice2)slice(array: Null, from: Any, until: Any): Null `slice`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # slice ## [](#slice1)slice(array: Array, from: Number, until: Number): Array 条件 (​`from <= indexOf(array) < until`​) を満たす要素の間隔を選択します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

from

配列内の含める要素の間隔の開始インデックス。
値が負数の場合、配列の最初の要素から含めます。この値が配列の最後のインデックスよりも大きい場合、関数は空の配列 (​[]​) を返します。

until

配列内の含める要素の間隔の終了インデックス。
この値が配列の最後のインデックスよりも大きい場合、配列の最後の要素まで含めます。この値が配列の最初のインデックスよりも小さい場合、関数は空の配列 (​[]​) を返します。

### [](#例)例 次の例では、入力配列からインデックス 1、2、3 の値を含む配列を返します。インデックス 0、4、5 の値は除外されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,3,4,5] --- slice(arr, 1, 4) ``` #### [](#出力)出力 ```json [ 1, 2, 3 ] ``` ## [](#slice2)slice(array: Null, from: Any, until: Any): Null `slice`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # some ## [](#some1)some(Array, (T) -> Boolean): Boolean 配列内の 1 つ以上の要素が指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

​list

入力配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、複数の入力配列の要素にさまざまな式を適用します。 条件内の ​`$`​ は、条件で評価している現在の配列要素のデフォルトパラメーターです。 デフォルトの ​`$`​ パラメーターは、現在の配列要素の名前付きパラメーターを含むラムダ式に置き換えることができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "results" : [ "ok" : [ [1,2,3] some (($ mod 2) == 0), [1,2,3] some ((nextNum) -> (nextNum mod 2) == 0), [1,2,3] some (($ mod 2) == 1), [1,2,3,4,5,6,7,8] some (log('should stop at 2 ==', $) == 2), [1,2,3] some ($ == 1), [1,1,1] some ($ == 1), [1] some ($ == 1) ], "err" : [ [1,2,3] some ($ == 100), [1] some ($ == 2) ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true, true, true, true, true, true ] }, { "err": [ false, false ] } ] } ``` ## [](#some2)some(Null, (Nothing) -> Boolean): Boolean `some`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ # some ## [](#some1)some(list: Array, condition: (T) -> Boolean): Boolean 配列内の 1 つ以上の要素が指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

​list

入力配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、複数の入力配列の要素にさまざまな式を適用します。 条件内の ​`$`​ は、条件で評価している現在の配列要素のデフォルトパラメーターです。 デフォルトの ​`$`​ パラメーターは、現在の配列要素の名前付きパラメーターを含むラムダ式に置き換えることができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "results" : [ "ok" : [ [1,2,3] some (($ mod 2) == 0), [1,2,3] some ((nextNum) -> (nextNum mod 2) == 0), [1,2,3] some (($ mod 2) == 1), [1,2,3,4,5,6,7,8] some (log('should stop at 2 ==', $) == 2), [1,2,3] some ($ == 1), [1,1,1] some ($ == 1), [1] some ($ == 1) ], "err" : [ [1,2,3] some ($ == 100), [1] some ($ == 2) ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true, true, true, true, true, true ] }, { "err": [ false, false ] } ] } ``` ## [](#some2)some(list: Null, condition: (Nothing) -> Any): Boolean `some`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_​ # some ## [](#some1)some(list: Array, condition: (T) -> Boolean): Boolean 配列内の 1 つ以上の要素が指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、複数の入力配列の要素にさまざまな式を適用します。 条件内の ​`$`​ は、条件で評価している現在の配列要素のデフォルトパラメーターです。 デフォルトの ​`$`​ パラメーターは、現在の配列要素の名前付きパラメーターを含むラムダ式に置き換えることができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "results" : [ "ok" : [ [1,2,3] some (($ mod 2) == 0), [1,2,3] some ((nextNum) -> (nextNum mod 2) == 0), [1,2,3] some (($ mod 2) == 1), [1,2,3,4,5,6,7,8] some (log('should stop at 2 ==', $) == 2), [1,2,3] some ($ == 1), [1,1,1] some ($ == 1), [1] some ($ == 1) ], "err" : [ [1,2,3] some ($ == 100), [1] some ($ == 2) ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true, true, true, true, true, true ] }, { "err": [ false, false ] } ] } ``` ## [](#some2)some(list: Null, condition: (Nothing) -> Any): Boolean `some`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # some ## [](#some1)some(list: Array, condition: (T) -> Boolean): Boolean 配列内の 1 つ以上の要素が指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、複数の入力配列の要素にさまざまな式を適用します。 条件内の ​`$`​ は、条件で評価している現在の配列要素のデフォルトパラメーターです。 デフォルトの ​`$`​ パラメーターは、現在の配列要素の名前付きパラメーターを含むラムダ式に置き換えることができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "results" : [ "ok" : [ [1,2,3] some (($ mod 2) == 0), [1,2,3] some ((nextNum) -> (nextNum mod 2) == 0), [1,2,3] some (($ mod 2) == 1), [1,2,3,4,5,6,7,8] some (log('should stop at 2 ==', $) == 2), [1,2,3] some ($ == 1), [1,1,1] some ($ == 1), [1] some ($ == 1) ], "err" : [ [1,2,3] some ($ == 100), [1] some ($ == 2) ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true, true, true, true, true, true ] }, { "err": [ false, false ] } ] } ``` ## [](#some2)some(list: Null, condition: (Nothing) -> Any): Boolean `some`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # some ## [](#some1)some(list: Array, condition: (T) -> Boolean): Boolean 配列内の 1 つ以上の要素が指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、複数の入力配列の要素にさまざまな式を適用します。 条件内の ​`$`​ は、条件で評価している現在の配列要素のデフォルトパラメーターです。 デフォルトの ​`$`​ パラメーターは、現在の配列要素の名前付きパラメーターを含むラムダ式に置き換えることができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "results" : [ "ok" : [ [1,2,3] some (($ mod 2) == 0), [1,2,3] some ((nextNum) -> (nextNum mod 2) == 0), [1,2,3] some (($ mod 2) == 1), [1,2,3,4,5,6,7,8] some (log('should stop at 2 ==', $) == 2), [1,2,3] some ($ == 1), [1,1,1] some ($ == 1), [1] some ($ == 1) ], "err" : [ [1,2,3] some ($ == 100), [1] some ($ == 2) ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true, true, true, true, true, true ] }, { "err": [ false, false ] } ] } ``` ## [](#some2)some(list: Null, condition: (Nothing) -> Any): Boolean `some`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # some ## [](#some1)some(list: Array, condition: (T) -> Boolean): Boolean 配列内の 1 つ以上の要素が指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 ### [](#パラメーター)パラメーター
名前 説明

list

入力配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、複数の入力配列の要素にさまざまな式を適用します。 条件内の ​`$`​ は、条件で評価している現在の配列要素のデフォルトパラメーターです。 デフォルトの ​`$`​ パラメーターは、現在の配列要素の名前付きパラメーターを含むラムダ式に置き換えることができます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "results" : [ "ok" : [ [1,2,3] some (($ mod 2) == 0), [1,2,3] some ((nextNum) -> (nextNum mod 2) == 0), [1,2,3] some (($ mod 2) == 1), [1,2,3,4,5,6,7,8] some (log('should stop at 2 ==', $) == 2), [1,2,3] some ($ == 1), [1,1,1] some ($ == 1), [1] some ($ == 1) ], "err" : [ [1,2,3] some ($ == 100), [1] some ($ == 2) ] ] } ``` #### [](#出力)出力 ```JSON { "results": [ { "ok": [ true, true, true, true, true, true, true ] }, { "err": [ false, false ] } ] } ``` ## [](#some2)some(list: Null, condition: (Nothing) -> Any): Boolean `some`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # someCharacter ## [](#somecharacter1)someCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

チェックする文字列。

​condition

文字列内の文字およびスペースを反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列に大文字が含まれているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someCharacter from dw::core::Strings output application/json --- "someCharacter" someCharacter isUpperCase($) ``` #### [](#出力)出力 ```Json true ``` ## [](#somecharacter2)someCharacter(text: Null, condition: (character: Nothing) -> Any): false `someCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # someCharacter ## [](#somecharacter1)someCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

文字列内の文字およびスペースを反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列に大文字が含まれているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "someCharacter" someCharacter isUpperCase($) ``` #### [](#出力)出力 ```Json true ``` ## [](#somecharacter2)someCharacter(text: Null, condition: (character: Nothing) -> Any): false `someCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # someCharacter ## [](#somecharacter1)someCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

文字列内の文字およびスペースを反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列に大文字が含まれているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "someCharacter" someCharacter isUpperCase($) ``` #### [](#出力)出力 ```Json true ``` ## [](#somecharacter2)someCharacter(text: Null, condition: (character: Nothing) -> Any): false `someCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # someCharacter ## [](#somecharacter1)someCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

文字列内の文字およびスペースを反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列に大文字が含まれているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "someCharacter" someCharacter isUpperCase($) ``` #### [](#出力)出力 ```Json true ``` ## [](#somecharacter2)someCharacter(text: Null, condition: (character: Nothing) -> Any): false `someCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # someCharacter ## [](#somecharacter1)someCharacter(text: String, condition: (character: String) -> Boolean): Boolean 文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

チェックする文字列。

condition

文字列内の文字およびスペースを反復処理して Boolean (ブール) 値を返す式。

### [](#例)例 次の例では、文字列に大文字が含まれているかどうかを判断しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- "someCharacter" someCharacter isUpperCase($) ``` #### [](#出力)出力 ```Json true ``` ## [](#somecharacter2)someCharacter(text: Null, condition: (character: Nothing) -> Any): false `someCharacter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # someEntry ## [](#someentry1)someEntry(Object, (value: Any, key: Key) -> Boolean): Boolean オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

​condition

オブジェクトの要素を評価するときに使用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`someEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someEntry from dw::core::Objects output application/json --- { a: {} someEntry (value, key) -> value is String, b: {a: "", b: "123"} someEntry (value, key) -> value is String, c: {a: "", b: 123} someEntry (value, key) -> value is String, d: {a: "", b: 123} someEntry (value, key) -> key as String == "a", e: {a: ""} someEntry (value, key) -> key as String == "b", f: null someEntry (value, key) -> key as String == "a" } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true, "d": true, "e": false, "f": false } ``` ## [](#someentry2)someEntry(Null, (value: Nothing, key: Nothing) -> Boolean): Boolean `someEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ # someEntry ## [](#someentry1)someEntry(obj: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

​condition

オブジェクトの要素を評価するときに使用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`someEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someEntry from dw::core::Objects output application/json --- { a: {} someEntry (value, key) -> value is String, b: {a: "", b: "123"} someEntry (value, key) -> value is String, c: {a: "", b: 123} someEntry (value, key) -> value is String, d: {a: "", b: 123} someEntry (value, key) -> key as String == "a", e: {a: ""} someEntry (value, key) -> key as String == "b", f: null someEntry (value, key) -> key as String == "a" } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true, "d": true, "e": false, "f": false } ``` ## [](#someentry2)someEntry(obj: Null, condition: (value: Nothing, key: Nothing) -> Boolean): Boolean `someEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_​ # someEntry ## [](#someentry1)someEntry(obj: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

condition

オブジェクトの要素を評価するときに使用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`someEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someEntry from dw::core::Objects output application/json --- { a: {} someEntry (value, key) -> value is String, b: {a: "", b: "123"} someEntry (value, key) -> value is String, c: {a: "", b: 123} someEntry (value, key) -> value is String, d: {a: "", b: 123} someEntry (value, key) -> key as String == "a", e: {a: ""} someEntry (value, key) -> key as String == "b", f: null someEntry (value, key) -> key as String == "a" } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true, "d": true, "e": false, "f": false } ``` ## [](#someentry2)someEntry(obj: Null, condition: (value: Nothing, key: Nothing) -> Boolean): Boolean `someEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # someEntry ## [](#someentry1)someEntry(obj: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

condition

オブジェクトの要素を評価するときに使用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`someEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someEntry from dw::core::Objects output application/json --- { a: {} someEntry (value, key) -> value is String, b: {a: "", b: "123"} someEntry (value, key) -> value is String, c: {a: "", b: 123} someEntry (value, key) -> value is String, d: {a: "", b: 123} someEntry (value, key) -> key as String == "a", e: {a: ""} someEntry (value, key) -> key as String == "b", f: null someEntry (value, key) -> key as String == "a" } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true, "d": true, "e": false, "f": false } ``` ## [](#someentry2)someEntry(obj: Null, condition: (value: Nothing, key: Nothing) -> Boolean): Boolean `someEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # someEntry ## [](#someentry1)someEntry(obj: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

condition

オブジェクトの要素を評価するときに使用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`someEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someEntry from dw::core::Objects output application/json --- { a: {} someEntry (value, key) -> value is String, b: {a: "", b: "123"} someEntry (value, key) -> value is String, c: {a: "", b: 123} someEntry (value, key) -> value is String, d: {a: "", b: 123} someEntry (value, key) -> key as String == "a", e: {a: ""} someEntry (value, key) -> key as String == "b", f: null someEntry (value, key) -> key as String == "a" } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true, "d": true, "e": false, "f": false } ``` ## [](#someentry2)someEntry(obj: Null, condition: (value: Nothing, key: Nothing) -> Boolean): Boolean `someEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # someEntry ## [](#someentry1)someEntry(obj: Object, condition: (value: Any, key: Key) -> Boolean): Boolean オブジェクト内の 1 つ以上のエントリが指定された条件に一致すると ​`true`​ を返します。 この関数は、条件に一致する最初の要素が見つかると反復を停止します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

condition

オブジェクトの要素を評価するときに使用する条件。

### [](#例)例 次の例では、さまざまな入力での ​`someEntry`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import someEntry from dw::core::Objects output application/json --- { a: {} someEntry (value, key) -> value is String, b: {a: "", b: "123"} someEntry (value, key) -> value is String, c: {a: "", b: 123} someEntry (value, key) -> value is String, d: {a: "", b: 123} someEntry (value, key) -> key as String == "a", e: {a: ""} someEntry (value, key) -> key as String == "b", f: null someEntry (value, key) -> key as String == "a" } ``` #### [](#出力)出力 ```Json { "a": false, "b": true, "c": true, "d": true, "e": false, "f": false } ``` ## [](#someentry2)someEntry(obj: Null, condition: (value: Nothing, key: Nothing) -> Boolean): Boolean `someEntry`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # splitAt ## [](#splitat1)splitAt(Array, Number): Pair, Array> 配列を、指定された位置で 2 つに分割します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​n

配列の分割位置のインデックス。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users splitAt 1 ``` #### [](#出力)出力 ```json { "l": [ "Mariano" ], "r": [ "Leandro", "Julian" ] } ``` # splitAt ## [](#splitat1)splitAt(array: Array, n: Number): Pair, Array> 配列を、指定された位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​n

配列の分割位置のインデックス。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users splitAt 1 ``` #### [](#出力)出力 ```json { "l": [ "Mariano" ], "r": [ "Leandro", "Julian" ] } ``` ## [](#splitat2)splitAt(array: Null, n: Any): Null `splitAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # splitAt ## [](#splitat1)splitAt(array: Array, n: Number): Pair, Array> 配列を、指定された位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

配列の分割位置のインデックス。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users splitAt 1 ``` #### [](#出力)出力 ```json { "l": [ "Mariano" ], "r": [ "Leandro", "Julian" ] } ``` ## [](#splitat2)splitAt(array: Null, n: Any): Null `splitAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitAt ## [](#splitat1)splitAt(array: Array, n: Number): Pair, Array> 配列を、指定された位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

配列の分割位置のインデックス。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users splitAt 1 ``` #### [](#出力)出力 ```json { "l": [ "Mariano" ], "r": [ "Leandro", "Julian" ] } ``` ## [](#splitat2)splitAt(array: Null, n: Any): Null `splitAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitAt ## [](#splitat1)splitAt(array: Array, n: Number): Pair, Array> 配列を、指定された位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

配列の分割位置のインデックス。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users splitAt 1 ``` #### [](#出力)出力 ```json { "l": [ "Mariano" ], "r": [ "Leandro", "Julian" ] } ``` ## [](#splitat2)splitAt(array: Null, n: Any): Null `splitAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitAt ## [](#splitat1)splitAt(array: Array, n: Number): Pair, Array> 配列を、指定された位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

配列の分割位置のインデックス。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian"] --- users splitAt 1 ``` #### [](#出力)出力 ```json { "l": [ "Mariano" ], "r": [ "Leandro", "Julian" ] } ``` ## [](#splitat2)splitAt(array: Null, n: Any): Null `splitAt`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitBy ## [](#splitby1)splitBy(String, Regex): Array 文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。 このバージョンの ​`splitBy`​ は、入力文字列を照合する Java 正規表現 (regex) を受け入れます。この正規表現は入力文字列内の任意の文字を照合できます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

​text

分割する入力文字列。

​regex

文字列を分割するために使用する Java 正規表現。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例)例 次の例では、Java 正規表現を使用して、アドレス帳内のピリオドとスラッシュでアドレス帳を分割します。正規表現はスラッシュの間にあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0/24" splitBy(/[.\/]/) ``` #### [](#出力)出力 ```JSON ["192", "88", "99", "0", "24"] ``` ### [](#例-2)例 次の例では、複数の正規表現を使用して入力文字列を分割します。最初の例では、​`\/^*.b./\`​ を使用して文字列を ​`-b-`​ で分割します。2 番目の例では、​`/\s/`​ を使用して文字列を空白スペースで分割します。3 番目の例では、正規表現 ​`/^s/`​ (最初の文字列が ​`s`​ の場合にその文字列に一致) が入力文字列 (​`[ "no match"]`​) の最初の文字に一致しないため、元の入力文字列を配列で返します (​`"no match"`​)。​`/^n../`​ を使用する 4 番目の例では、​`"no match"`​ の最初の文字に一致するため、​`[ "", "match"]`​ を返します。最後の例では、すべての数値と大文字を文字列から削除し、各小文字を配列に残します。区切り文字は出力からは削除されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy(/^*.b./), "split2" : "hello world" splitBy(/\s/), "split3" : "no match" splitBy(/^s/), "split4" : "no match" splitBy(/^n../), "split5" : "a1b2c3d4A1B2C3D" splitBy(/^*[0-9A-Z]/) } } ``` #### [](#出力-2)出力 ```JSON { splitters: { split1: [ "a", "c" ], split2: [ "hello", "world" ], split3: [ "no match" ], split4: [ "", "match" ], split5: [ "a", "b", "c", "d" ] } } ``` ### [](#例-3)例 次の例では、​`.`​ で数値を分割し、インデックスセレクター ​`[0]`​ を splitBy 関数の結果に適用します。splitBy では ​`["192", "88", "99", "0"]`​ が返されるため、インデックスセレクター ​`[0]`​ では配列の最初の要素 ("192") のみが返されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ("192.88.99.0" splitBy("."))[0] ``` #### [](#出力-3)出力 ```JSON "192" ``` ### [](#例-4)例 次の例では、Java 正規表現を使用して入力文字列が正規表現に一致するすべてのポイントで ​`.`​ で文字列を分割します。正規表現ではバッククォート ​`` ` ``​ 間のピリオドは考慮されません。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- 'root.sources.data.`test.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/) ``` #### [](#出力-4)出力 ```JSON [ "root", "sources", "data", "`test.branch.BranchSource`", "source", "traits" ] ``` ## [](#splitby2)splitBy(String, String): Array 入力文字列の一部に一致する区切り文字列に基づいて、文字列を文字列配列に分割します。一致する文字列は、返される配列から除外されます。 区切り文字には、入力内の任意の文字を一致させることができます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

分割する文字列。

​separator

入力文字列を区切るために使用される文字列。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例-5)例 次の例では、IP アドレスを含む文字列をそのピリオドで分割します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0" splitBy(".") ``` #### [](#出力-5)出力 ```JSON ["192", "88", "99", "0"] ``` ### [](#例-6)例 最初の例 (​`splitter1`​) では、​`"a-b-c"`​ 内のハイフン (​`-`​) を使用して文字列を分割します。2 番目の例では、空の文字列 (​`""`​) を使用して文字列内の各文字 (空白スペースを含む) を分割します。3 番目の例では、入力文字列内のカンマ (​`,`​) に基づいて分割します。最後の例では、入力は分割されません。この関数は大文字と小文字を区別する、つまり、大文字の ​`NO`​ が入力文字列内の小文字の ​`no`​ と一致しないためです。 区切り文字は出力からは削除されます。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy("-"), "split2" : "hello world" splitBy(""), "split3" : "first,middle,last" splitBy(","), "split4" : "no split" splitBy("NO") } } ``` #### [](#出力-6)出力 ```JSON { splitters: { split1: [ "a","b","c" ], split2: [ "h","e","l","l","o","","w","o","r","l","d" ], split3: [ "first","middle","last"], split4: [ "no split"] } } ``` # splitBy ## [](#splitby1)splitBy(text: String, regex: Regex): Array 文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。 このバージョンの ​`splitBy`​ は、入力文字列を照合する Java 正規表現 (regex) を受け入れます。この正規表現は入力文字列内の任意の文字を照合できます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

​text

分割する入力文字列。

​regex

文字列を分割するために使用する Java 正規表現。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例)例 次の例では、Java 正規表現を使用して、アドレス帳内のピリオドとスラッシュでアドレス帳を分割します。正規表現はスラッシュの間にあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0/24" splitBy(/[.\/]/) ``` #### [](#出力)出力 ```JSON ["192", "88", "99", "0", "24"] ``` ### [](#例-2)例 次の例では、複数の正規表現を使用して入力文字列を分割します。最初の例では、​`\/^*.b./\`​ を使用して文字列を ​`-b-`​ で分割します。2 番目の例では、​`/\s/`​ を使用して文字列を空白スペースで分割します。3 番目の例では、正規表現 ​`/^s/`​ (最初の文字列が ​`s`​ の場合にその文字列に一致) が入力文字列 (​`[ "no match"]`​) の最初の文字に一致しないため、元の入力文字列を配列で返します (​`"no match"`​)。​`/^n../`​ を使用する 4 番目の例では、​`"no match"`​ の最初の文字に一致するため、​`[ "", "match"]`​ を返します。最後の例では、すべての数値と大文字を文字列から削除し、各小文字を配列に残します。区切り文字は出力からは削除されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy(/^*.b./), "split2" : "hello world" splitBy(/\s/), "split3" : "no match" splitBy(/^s/), "split4" : "no match" splitBy(/^n../), "split5" : "a1b2c3d4A1B2C3D" splitBy(/^*[0-9A-Z]/) } } ``` #### [](#出力-2)出力 ```JSON { splitters: { split1: [ "a", "c" ], split2: [ "hello", "world" ], split3: [ "no match" ], split4: [ "", "match" ], split5: [ "a", "b", "c", "d" ] } } ``` ### [](#例-3)例 次の例では、​`.`​ で数値を分割し、インデックスセレクター ​`[0]`​ を splitBy 関数の結果に適用します。splitBy では ​`["192", "88", "99", "0"]`​ が返されるため、インデックス \* セレクター ​`[0]`​ では配列の最初の要素 ("192") のみが返されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ("192.88.99.0" splitBy("."))[0] ``` #### [](#出力-3)出力 ```JSON "192" ``` ### [](#例-4)例 次の例では、Java 正規表現を使用して入力文字列が正規表現に一致するすべてのポイントで ​`.`​ で文字列を分割します。正規表現ではバッククォート ​`` ` ``​ 間のピリオドは考慮されません。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- 'root.sources.data.`test.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/) ``` #### [](#出力-4)出力 ```JSON [ "root", "sources", "data", "`test.branch.BranchSource`", "source", "traits" ] ``` ## [](#splitby2)splitBy(text: String, separator: String): Array 入力文字列の一部に一致する区切り文字列に基づいて、文字列を文字列配列に分割します。一致する文字列は、返される配列から除外されます。 区切り文字には、入力内の任意の文字を一致させることができます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター-2)パラメーター
名前 説明

​text

分割する文字列。

​separator

入力文字列を区切るために使用される文字列。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例-5)例 次の例では、IP アドレスを含む文字列をそのピリオドで分割します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0" splitBy(".") ``` #### [](#出力-5)出力 ```JSON ["192", "88", "99", "0"] ``` ### [](#例-6)例 最初の例 (​`splitter1`​) では、​`"a-b-c"`​ 内のハイフン (​`-`​) を使用して文字列を分割します。2 番目の例では、空の文字列 (​`""`​) を使用して文字列内の各文字 (空白スペースを含む) を分割します。3 番目の例では、入力文字列内のカンマ (​`,`​) に基づいて分割します。最後の例では、入力は分割されません。この関数は大文字と小文字を区別する、つまり、大文字の ​`NO`​ が入力文字列内の小文字の ​`no`​ と一致しないためです。 区切り文字は出力からは削除されます。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy("-"), "split2" : "hello world" splitBy(""), "split3" : "first,middle,last" splitBy(","), "split4" : "no split" splitBy("NO") } } ``` #### [](#出力-6)出力 ```JSON { splitters: { split1: [ "a","b","c" ], split2: [ "h","e","l","l","o","","w","o","r","l","d" ], split3: [ "first","middle","last"], split4: [ "no split"] } } ``` ## [](#splitby3)splitBy(text: Null, separator: Any) `splitBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # splitBy ## [](#splitby1)splitBy(text: String, regex: Regex): Array 文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。 このバージョンの ​`splitBy`​ は、入力文字列を照合する Java 正規表現 (regex) を受け入れます。この正規表現は入力文字列内の任意の文字を照合できます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

text

分割する入力文字列。

regex

文字列を分割するために使用する Java 正規表現。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例)例 次の例では、Java 正規表現を使用して、アドレス帳内のピリオドとスラッシュでアドレス帳を分割します。正規表現はスラッシュの間にあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0/24" splitBy(/[.\/]/) ``` #### [](#出力)出力 ```JSON ["192", "88", "99", "0", "24"] ``` ### [](#例-2)例 次の例では、複数の正規表現を使用して入力文字列を分割します。最初の例では、​``\/^*.b./\ を使用して文字列を `​-b-​`` で分割します。2 番目の例では、`​/\s/​` を使用して文字列を空白スペースで分割します。3 番目の例では、正規表現 `​/^s/​` (最初の文字列が `​s​` の場合にその文字列に一致) が入力文字列 (`​[ "no match"]​`) の最初の文字に一致しないため、元の入力文字列を配列で返します (`​"no match"​`)。`​/^n../​` を使用する 4 番目の例では、`​"no match"​` の最初の文字に一致するため、`​[ "", "match"]​` を返します。\`​最後の例では、すべての数値と大文字を文字列から削除し、各小文字を配列に残します。区切り文字は出力からは削除されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy(/^*.b./), "split2" : "hello world" splitBy(/\s/), "split3" : "no match" splitBy(/^s/), "split4" : "no match" splitBy(/^n../), "split5" : "a1b2c3d4A1B2C3D" splitBy(/^*[0-9A-Z]/) } } ``` #### [](#出力-2)出力 ```JSON { splitters: { split1: [ "a", "c" ], split2: [ "hello", "world" ], split3: [ "no match" ], split4: [ "", "match" ], split5: [ "a", "b", "c", "d" ] } } ``` ### [](#例-3)例 次の例では、​`.`​ で数値を分割し、インデックスセレクター ​`[0]`​ を splitBy 関数の結果に適用します。splitBy では ​`["192", "88", "99", "0"]`​ が返されるため、インデックス \* セレクター ​`[0]`​ では配列の最初の要素 ("192") のみが返されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ("192.88.99.0" splitBy("."))[0] ``` #### [](#出力-3)出力 ```JSON "192" ``` ### [](#例-4)例 次の例では、Java 正規表現を使用して入力文字列が正規表現に一致するすべてのポイントで ​`.`​ で文字列を分割します。正規表現ではバッククォート `` ` `` 間のピリオドは考慮されません。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- 'root.sources.data.`test.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/) ``` #### [](#出力-4)出力 ```JSON [ "root", "sources", "data", "`test.branch.BranchSource`", "source", "traits" ] ``` ## [](#splitby2)splitBy(text: String, separator: String): Array 入力文字列の一部に一致する区切り文字列に基づいて、文字列を文字列配列に分割します。一致する文字列は、返される配列から除外されます。 区切り文字には、入力内の任意の文字を一致させることができます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

分割する文字列。

separator

入力文字列を区切るために使用される文字列。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例-5)例 次の例では、IP アドレスを含む文字列をそのピリオドで分割します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0" splitBy(".") ``` #### [](#出力-5)出力 ```JSON ["192", "88", "99", "0"] ``` ### [](#例-6)例 最初の例 (​`splitter1`​) では、​`"a-b-c"`​ 内のハイフン (​`-`​) を使用して文字列を分割します。2 番目の例では、空の文字列 (​`""`​) を使用して文字列内の各文字 (空白スペースを含む) を分割します。3 番目の例では、入力文字列内のカンマ (​`,`​) に基づいて分割します。最後の例では、入力は分割されません。この関数は大文字と小文字を区別する、つまり、大文字の ​`NO`​ が入力文字列内の小文字の ​`no`​ と一致しないためです。 区切り文字は出力からは削除されます。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy("-"), "split2" : "hello world" splitBy(""), "split3" : "first,middle,last" splitBy(","), "split4" : "no split" splitBy("NO") } } ``` #### [](#出力-6)出力 ```JSON { splitters: { split1: [ "a","b","c" ], split2: [ "h","e","l","l","o","","w","o","r","l","d" ], split3: [ "first","middle","last"], split4: [ "no split"] } } ``` ## [](#splitby3)splitBy(text: Null, separator: Any) `splitBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitBy ## [](#splitby1)splitBy(text: String, regex: Regex): Array 文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。 このバージョンの ​`splitBy`​ は、入力文字列を照合する Java 正規表現 (regex) を受け入れます。この正規表現は入力文字列内の任意の文字を照合できます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

text

分割する入力文字列。

regex

文字列を分割するために使用する Java 正規表現。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例)例 次の例では、Java 正規表現を使用して、アドレス帳内のピリオドとスラッシュでアドレス帳を分割します。正規表現はスラッシュの間にあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0/24" splitBy(/[.\/]/) ``` #### [](#出力)出力 ```JSON ["192", "88", "99", "0", "24"] ``` ### [](#例-2)例 次の例では、複数の正規表現を使用して入力文字列を分割します。最初の例では、​``\/^*.b./\ を使用して文字列を `​-b-​`` で分割します。2 番目の例では、`​/\s/​` を使用して文字列を空白スペースで分割します。3 番目の例では、正規表現 `​/^s/​` (最初の文字列が `​s​` の場合にその文字列に一致) が入力文字列 (`​[ "no match"]​`) の最初の文字に一致しないため、元の入力文字列を配列で返します (`​"no match"​`)。`​/^n../​` を使用する 4 番目の例では、`​"no match"​` の最初の文字に一致するため、`​[ "", "match"]​` を返します。\`​最後の例では、すべての数値と大文字を文字列から削除し、各小文字を配列に残します。区切り文字は出力からは削除されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy(/^*.b./), "split2" : "hello world" splitBy(/\s/), "split3" : "no match" splitBy(/^s/), "split4" : "no match" splitBy(/^n../), "split5" : "a1b2c3d4A1B2C3D" splitBy(/^*[0-9A-Z]/) } } ``` #### [](#出力-2)出力 ```JSON { splitters: { split1: [ "a", "c" ], split2: [ "hello", "world" ], split3: [ "no match" ], split4: [ "", "match" ], split5: [ "a", "b", "c", "d" ] } } ``` ### [](#例-3)例 次の例では、​`.`​ で数値を分割し、インデックスセレクター ​`[0]`​ を splitBy 関数の結果に適用します。splitBy では ​`["192", "88", "99", "0"]`​ が返されるため、インデックス \* セレクター ​`[0]`​ では配列の最初の要素 ("192") のみが返されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ("192.88.99.0" splitBy("."))[0] ``` #### [](#出力-3)出力 ```JSON "192" ``` ### [](#例-4)例 次の例では、Java 正規表現を使用して入力文字列が正規表現に一致するすべてのポイントで ​`.`​ で文字列を分割します。正規表現ではバッククォート `` ` `` 間のピリオドは考慮されません。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- 'root.sources.data.`test.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/) ``` #### [](#出力-4)出力 ```JSON [ "root", "sources", "data", "`test.branch.BranchSource`", "source", "traits" ] ``` ## [](#splitby2)splitBy(text: String, separator: String): Array 入力文字列の一部に一致する区切り文字列に基づいて、文字列を文字列配列に分割します。一致する文字列は、返される配列から除外されます。 区切り文字には、入力内の任意の文字を一致させることができます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

分割する文字列。

separator

入力文字列を区切るために使用される文字列。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例-5)例 次の例では、IP アドレスを含む文字列をそのピリオドで分割します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0" splitBy(".") ``` #### [](#出力-5)出力 ```JSON ["192", "88", "99", "0"] ``` ### [](#例-6)例 最初の例 (​`splitter1`​) では、​`"a-b-c"`​ 内のハイフン (​`-`​) を使用して文字列を分割します。2 番目の例では、空の文字列 (​`""`​) を使用して文字列内の各文字 (空白スペースを含む) を分割します。3 番目の例では、入力文字列内のカンマ (​`,`​) に基づいて分割します。最後の例では、入力は分割されません。この関数は大文字と小文字を区別する、つまり、大文字の ​`NO`​ が入力文字列内の小文字の ​`no`​ と一致しないためです。 区切り文字は出力からは削除されます。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy("-"), "split2" : "hello world" splitBy(""), "split3" : "first,middle,last" splitBy(","), "split4" : "no split" splitBy("NO") } } ``` #### [](#出力-6)出力 ```JSON { splitters: { split1: [ "a","b","c" ], split2: [ "h","e","l","l","o","","w","o","r","l","d" ], split3: [ "first","middle","last"], split4: [ "no split"] } } ``` ## [](#splitby3)splitBy(text: Null, separator: Any) `splitBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitBy ## [](#splitby1)splitBy(text: String, regex: Regex): Array 文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。 このバージョンの ​`splitBy`​ は、入力文字列を照合する Java 正規表現 (regex) を受け入れます。この正規表現は入力文字列内の任意の文字を照合できます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

text

分割する入力文字列。

regex

文字列を分割するために使用する Java 正規表現。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例)例 次の例では、Java 正規表現を使用して、アドレス帳内のピリオドとスラッシュでアドレス帳を分割します。正規表現はスラッシュの間にあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0/24" splitBy(/[.\/]/) ``` #### [](#出力)出力 ```JSON ["192", "88", "99", "0", "24"] ``` ### [](#例-2)例 次の例では、複数の正規表現を使用して入力文字列を分割します。最初の例では、​``\/^*.b./\ を使用して文字列を `​-b-​`` で分割します。2 番目の例では、`​/\s/​` を使用して文字列を空白スペースで分割します。3 番目の例では、正規表現 `​/^s/​` (最初の文字列が `​s​` の場合にその文字列に一致) が入力文字列 (`​[ "no match"]​`) の最初の文字に一致しないため、元の入力文字列を配列で返します (`​"no match"​`)。`​/^n../​` を使用する 4 番目の例では、`​"no match"​` の最初の文字に一致するため、`​[ "", "match"]​` を返します。\`​最後の例では、すべての数値と大文字を文字列から削除し、各小文字を配列に残します。区切り文字は出力からは削除されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy(/^*.b./), "split2" : "hello world" splitBy(/\s/), "split3" : "no match" splitBy(/^s/), "split4" : "no match" splitBy(/^n../), "split5" : "a1b2c3d4A1B2C3D" splitBy(/^*[0-9A-Z]/) } } ``` #### [](#出力-2)出力 ```JSON { splitters: { split1: [ "a", "c" ], split2: [ "hello", "world" ], split3: [ "no match" ], split4: [ "", "match" ], split5: [ "a", "b", "c", "d" ] } } ``` ### [](#例-3)例 次の例では、​`.`​ で数値を分割し、インデックスセレクター ​`[0]`​ を splitBy 関数の結果に適用します。splitBy では ​`["192", "88", "99", "0"]`​ が返されるため、インデックス \* セレクター ​`[0]`​ では配列の最初の要素 ("192") のみが返されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ("192.88.99.0" splitBy("."))[0] ``` #### [](#出力-3)出力 ```JSON "192" ``` ### [](#例-4)例 次の例では、Java 正規表現を使用して入力文字列が正規表現に一致するすべてのポイントで ​`.`​ で文字列を分割します。正規表現ではバッククォート `` ` `` 間のピリオドは考慮されません。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- 'root.sources.data.`test.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/) ``` #### [](#出力-4)出力 ```JSON [ "root", "sources", "data", "`test.branch.BranchSource`", "source", "traits" ] ``` ## [](#splitby2)splitBy(text: String, separator: String): Array 入力文字列の一部に一致する区切り文字列に基づいて、文字列を文字列配列に分割します。一致する文字列は、返される配列から除外されます。 区切り文字には、入力内の任意の文字を一致させることができます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

分割する文字列。

separator

入力文字列を区切るために使用される文字列。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例-5)例 次の例では、IP アドレスを含む文字列をそのピリオドで分割します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0" splitBy(".") ``` #### [](#出力-5)出力 ```JSON ["192", "88", "99", "0"] ``` ### [](#例-6)例 最初の例 (​`splitter1`​) では、​`"a-b-c"`​ 内のハイフン (​`-`​) を使用して文字列を分割します。2 番目の例では、空の文字列 (​`""`​) を使用して文字列内の各文字 (空白スペースを含む) を分割します。3 番目の例では、入力文字列内のカンマ (​`,`​) に基づいて分割します。最後の例では、入力は分割されません。この関数は大文字と小文字を区別する、つまり、大文字の ​`NO`​ が入力文字列内の小文字の ​`no`​ と一致しないためです。 区切り文字は出力からは削除されます。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy("-"), "split2" : "hello world" splitBy(""), "split3" : "first,middle,last" splitBy(","), "split4" : "no split" splitBy("NO") } } ``` #### [](#出力-6)出力 ```JSON { splitters: { split1: [ "a","b","c" ], split2: [ "h","e","l","l","o","","w","o","r","l","d" ], split3: [ "first","middle","last"], split4: [ "no split"] } } ``` ## [](#splitby3)splitBy(text: Null, separator: Any) `splitBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitBy ## [](#splitby1)splitBy(text: String, regex: Regex): Array 文字列の一部に一致する値に基づいて、文字列を文字列配列に分割します。一致部分は、返される配列から除外されます。 このバージョンの ​`splitBy`​ は、入力文字列を照合する Java 正規表現 (regex) を受け入れます。この正規表現は入力文字列内の任意の文字を照合できます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター)パラメーター
名前 説明

text

分割する入力文字列。

regex

文字列を分割するために使用する Java 正規表現。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例)例 次の例では、Java 正規表現を使用して、アドレス帳内のピリオドとスラッシュでアドレス帳を分割します。正規表現はスラッシュの間にあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0/24" splitBy(/[.\/]/) ``` #### [](#出力)出力 ```JSON ["192", "88", "99", "0", "24"] ``` ### [](#例-2)例 次の例では、複数の正規表現を使用して入力文字列を分割します。最初の例では、​`\/^*.b./\` を使用して文字列を `​-b-​` で分割します。2 番目の例では、`​/\s/​` を使用して文字列を空白スペースで分割します。3 番目の例では、正規表現 `​/^s/​` (最初の文字列が `​s​` の場合にその文字列に一致) が入力文字列 (`​[ "no match"]​`) の最初の文字に一致しないため、元の入力文字列を配列で返します (`​"no match"​`)。`​/^n../​` を使用する 4 番目の例では、`​"no match"​` の最初の文字に一致するため、`​[ "", "match"]​` を返します。\`​最後の例では、すべての数値と大文字を文字列から削除し、各小文字を配列に残します。区切り文字は出力からは削除されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy(/^*.b./), "split2" : "hello world" splitBy(/\s/), "split3" : "no match" splitBy(/^s/), "split4" : "no match" splitBy(/^n../), "split5" : "a1b2c3d4A1B2C3D" splitBy(/^*[0-9A-Z]/) } } ``` #### [](#出力-2)出力 ```JSON { splitters: { split1: [ "a", "c" ], split2: [ "hello", "world" ], split3: [ "no match" ], split4: [ "", "match" ], split5: [ "a", "b", "c", "d" ] } } ``` ### [](#例-3)例 次の例では、​`.`​ で数値を分割し、インデックスセレクター ​`[0]`​ を splitBy 関数の結果に適用します。splitBy では ​`["192", "88", "99", "0"]`​ が返されるため、インデックス \* セレクター ​`[0]`​ では配列の最初の要素 ("192") のみが返されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json --- ("192.88.99.0" splitBy("."))[0] ``` #### [](#出力-3)出力 ```JSON "192" ``` ### [](#例-4)例 次の例では、Java 正規表現を使用して入力文字列が正規表現に一致するすべてのポイントで ​`.`​ で文字列を分割します。正規表現ではバッククォート `` ` `` 間のピリオドは考慮されません。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 output application/json --- 'root.sources.data.`test.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/) ``` #### [](#出力-4)出力 ```JSON [ "root", "sources", "data", "`test.branch.BranchSource`", "source", "traits" ] ``` ## [](#splitby2)splitBy(text: String, separator: String): Array 入力文字列の一部に一致する区切り文字列に基づいて、文字列を文字列配列に分割します。一致する文字列は、返される配列から除外されます。 区切り文字には、入力内の任意の文字を一致させることができます。​`splitBy`​ は ​`joinBy`​ と逆の操作を実行します。 ### [](#パラメーター-2)パラメーター
名前 説明

text

分割する文字列。

separator

入力文字列を区切るために使用される文字列。文字列のどの部分にも一致しない場合、この関数は、元の分割されていない文字列を配列で返します。

### [](#例-5)例 次の例では、IP アドレスを含む文字列をそのピリオドで分割します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 output application/json --- "192.88.99.0" splitBy(".") ``` #### [](#出力-5)出力 ```JSON ["192", "88", "99", "0"] ``` ### [](#例-6)例 最初の例 (​`splitter1`​) では、​`"a-b-c"`​ 内のハイフン (​`-`​) を使用して文字列を分割します。2 番目の例では、空の文字列 (​`""`​) を使用して文字列内の各文字 (空白スペースを含む) を分割します。3 番目の例では、入力文字列内のカンマ (​`,`​) に基づいて分割します。最後の例では、入力は分割されません。この関数は大文字と小文字を区別する、つまり、大文字の ​`NO`​ が入力文字列内の小文字の ​`no`​ と一致しないためです。 区切り文字は出力からは削除されます。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 output application/json --- { "splitters" : { "split1" : "a-b-c" splitBy("-"), "split2" : "hello world" splitBy(""), "split3" : "first,middle,last" splitBy(","), "split4" : "no split" splitBy("NO") } } ``` #### [](#出力-6)出力 ```JSON { splitters: { split1: [ "a","b","c" ], split2: [ "h","e","l","l","o","","w","o","r","l","d" ], split3: [ "first","middle","last"], split4: [ "no split"] } } ``` ## [](#splitby3)splitBy(text: Null, separator: Any) `splitBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitWhere ## [](#splitwhere1)splitWhere(Array, (item: T) -> Boolean): Pair, Array> 配列を、条件を満たす最初の位置で 2 つに分割します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

分割する要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian", "Tomo"] --- users splitWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json { "l": [ "Mariano", "Leandro" ], "r": [ "Julian", "Tomo" ] } ``` # splitWhere ## [](#splitwhere1)splitWhere(array: Array, condition: (item: T) -> Boolean): Pair, Array> 配列を、条件を満たす最初の位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

分割する要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian", "Tomo"] --- users splitWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json { "l": [ "Mariano", "Leandro" ], "r": [ "Julian", "Tomo" ] } ``` ## [](#splitwhere2)splitWhere(array: Null, condition: (item: Nothing) -> Any): Null `splitWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # splitWhere ## [](#splitwhere1)splitWhere(array: Array, condition: (item: T) -> Boolean): Pair, Array> 配列を、条件を満たす最初の位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian", "Tomo"] --- users splitWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json { "l": [ "Mariano", "Leandro" ], "r": [ "Julian", "Tomo" ] } ``` ## [](#splitwhere2)splitWhere(array: Null, condition: (item: Nothing) -> Any): Null `splitWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitWhere ## [](#splitwhere1)splitWhere(array: Array, condition: (item: T) -> Boolean): Pair, Array> 配列を、条件を満たす最初の位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian", "Tomo"] --- users splitWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json { "l": [ "Mariano", "Leandro" ], "r": [ "Julian", "Tomo" ] } ``` ## [](#splitwhere2)splitWhere(array: Null, condition: (item: Nothing) -> Any): Null `splitWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitWhere ## [](#splitwhere1)splitWhere(array: Array, condition: (item: T) -> Boolean): Pair, Array> 配列を、条件を満たす最初の位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian", "Tomo"] --- users splitWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json { "l": [ "Mariano", "Leandro" ], "r": [ "Julian", "Tomo" ] } ``` ## [](#splitwhere2)splitWhere(array: Null, condition: (item: Nothing) -> Any): Null `splitWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # splitWhere ## [](#splitwhere1)splitWhere(array: Array, condition: (item: T) -> Boolean): Pair, Array> 配列を、条件を満たす最初の位置で 2 つに分割します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

分割する要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var users = ["Mariano", "Leandro", "Julian", "Tomo"] --- users splitWhere (item) -> item startsWith "Jul" ``` #### [](#出力)出力 ```json { "l": [ "Mariano", "Leandro" ], "r": [ "Julian", "Tomo" ] } ``` ## [](#splitwhere2)splitWhere(array: Null, condition: (item: Nothing) -> Any): Null `splitWhere`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sqrt ## [](#sqrt1)sqrt(Number): Number 数値の平方根を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値の平方根を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ sqrt(4), sqrt(25), sqrt(100) ] ``` #### [](#出力)出力 ```JSON [ 2.0, 5.0, 10.0 ] ``` # sqrt ## [](#sqrt1)sqrt(number: Number): Number 数値の平方根を返します。 ### [](#パラメーター)パラメーター
名前 説明

​number

評価する数値。

### [](#例)例 次の例では、数値の平方根を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ sqrt(4), sqrt(25), sqrt(100) ] ``` #### [](#出力)出力 ```JSON [ 2.0, 5.0, 10.0 ] ``` # sqrt ## [](#sqrt1)sqrt(number: Number): Number 数値の平方根を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の平方根を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ sqrt(4), sqrt(25), sqrt(100) ] ``` #### [](#出力)出力 ```JSON [ 2.0, 5.0, 10.0 ] ``` # sqrt ## [](#sqrt1)sqrt(number: Number): Number 数値の平方根を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の平方根を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ sqrt(4), sqrt(25), sqrt(100) ] ``` #### [](#出力)出力 ```JSON [ 2.0, 5.0, 10.0 ] ``` # sqrt ## [](#sqrt1)sqrt(number: Number): Number 数値の平方根を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の平方根を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ sqrt(4), sqrt(25), sqrt(100) ] ``` #### [](#出力)出力 ```JSON [ 2.0, 5.0, 10.0 ] ``` # sqrt ## [](#sqrt1)sqrt(number: Number): Number 数値の平方根を返します。 ### [](#パラメーター)パラメーター
名前 説明

number

評価する数値。

### [](#例)例 次の例では、数値の平方根を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ sqrt(4), sqrt(25), sqrt(100) ] ``` #### [](#出力)出力 ```JSON [ 2.0, 5.0, 10.0 ] ``` # startsWith ## [](#startswith1)startsWith(String, String): Boolean 入力文字列が照合するプレフィックスで始まるかどうかによって ​`true`​ または ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​prefix

プレフィックスを識別する文字列。

### [](#例)例 次の例では、文字列が指定したプレフィックスで始まるかどうかを示します。 `startsWith(text,prefix)`​ または ​`text startsWith(prefix)`​ 表記 (​`startsWith("Mari","Mar")`​、​`"Mari" startsWith("Mar")`​ など) を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mari" startsWith("Mar"), "Mari" startsWith("Em") ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` # startsWith ## [](#startswith1)startsWith(text: String, prefix: String): Boolean 入力文字列が照合するプレフィックスで始まるかどうかによって ​`true`​ または ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​prefix

プレフィックスを識別する文字列。

### [](#例)例 次の例では、文字列が指定したプレフィックスで始まるかどうかを示します。 `startsWith(text,prefix)`​ または ​`text startsWith(prefix)`​ 表記 (​`startsWith("Mari","Mar")`​、​`"Mari" startsWith("Mar")`​ など) を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mari" startsWith("Mar"), "Mari" startsWith("Em") ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#startswith2)startsWith(text: Null, prefix: Any): false `startsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # startsWith ## [](#startswith1)startsWith(text: String, prefix: String): Boolean 入力文字列が照合するプレフィックスで始まるかどうかによって ​`true`​ または ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスを識別する文字列。

### [](#例)例 次の例では、文字列が指定したプレフィックスで始まるかどうかを示します。 `startsWith(text,prefix)`​ または ​`text startsWith(prefix)`​ 表記 (​`startsWith("Mari","Mar")`​、​`"Mari" startsWith("Mar")`​ など) を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mari" startsWith("Mar"), "Mari" startsWith("Em") ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#startswith2)startsWith(text: Null, prefix: Any): false `startsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # startsWith ## [](#startswith1)startsWith(text: String, prefix: String): Boolean 入力文字列が照合するプレフィックスで始まるかどうかによって ​`true`​ または ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスを識別する文字列。

### [](#例)例 次の例では、文字列が指定したプレフィックスで始まるかどうかを示します。 `startsWith(text,prefix)`​ または ​`text startsWith(prefix)`​ 表記 (​`startsWith("Mari","Mar")`​、​`"Mari" startsWith("Mar")`​ など) を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mari" startsWith("Mar"), "Mari" startsWith("Em") ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#startswith2)startsWith(text: Null, prefix: Any): false `startsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # startsWith ## [](#startswith1)startsWith(text: String, prefix: String): Boolean 入力文字列が照合するプレフィックスで始まるかどうかによって ​`true`​ または ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスを識別する文字列。

### [](#例)例 次の例では、文字列が指定したプレフィックスで始まるかどうかを示します。 `startsWith(text,prefix)`​ または ​`text startsWith(prefix)`​ 表記 (​`startsWith("Mari","Mar")`​、​`"Mari" startsWith("Mar")`​ など) を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mari" startsWith("Mar"), "Mari" startsWith("Em") ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#startswith2)startsWith(text: Null, prefix: Any): false `startsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # startsWith ## [](#startswith1)startsWith(text: String, prefix: String): Boolean 入力文字列が照合するプレフィックスで始まるかどうかによって ​`true`​ または ​`false`​ を返します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

prefix

プレフィックスを識別する文字列。

### [](#例)例 次の例では、文字列が指定したプレフィックスで始まるかどうかを示します。 `startsWith(text,prefix)`​ または ​`text startsWith(prefix)`​ 表記 (​`startsWith("Mari","Mar")`​、​`"Mari" startsWith("Mar")`​ など) を使用できます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ "Mari" startsWith("Mar"), "Mari" startsWith("Em") ] ``` #### [](#出力)出力 ```JSON [ true, false ] ``` ## [](#startswith2)startsWith(text: Null, prefix: Any): false `startsWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # Strings (dw::core::Strings) このモジュールには、文字列を操作するヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Strings`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​appendIfMissing

​text​ が ​suffix​ で終了していない場合、​text​ の末尾に ​suffix​ を追加します。

​camelize

文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。

​capitalize

文字列内の各単語の先頭を大文字にします。

​charCode

入力文字列の最初の文字の Unicode を返します。

​charCodeAt

指定されたインデックスの文字の Unicode を返します。

​dasherize

文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。

​fromCharCode

指定された Unicode に一致する文字を返します。

​isAlpha

​text​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​false​ が返されます。

​isAlphanumeric

​text​ に Unicode 文字または数字のみが含まれるかどうかを確認します。

​isLowerCase

​text​ に小文字のみが含まれるかどうかを確認します。

​isNumeric

​text​ に Unicode 数字のみが含まれるかどうかを確認します。

​isUpperCase

​text​ に大文字のみが含まれるかどうかを確認します。

​isWhitespace

​text​ に空白のみが含まれるかどうかを確認します。

​leftPad

目的のサイズ (​size​) になるように、指定された ​text​ の​左​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

​ordinalize

数値を序数 (​1st​ や ​2nd​ など) として返します。

​pluralize

単数形の文字列を複数形にします。

​prependIfMissing

​text​ が ​prefix​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。

​repeat

​text​ を、指定された回数 (​times​) 繰り返します。

​rightPad

目的のサイズ (​size​) になるように、指定された ​text​ の​右​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

​singularize

複数形の文字列を単数形に変換します。

​substringAfter

区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

​substringAfterLast

区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

​substringBefore

区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

​substringBeforeLast

区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

​underscore

文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。

​unwrap

指定された ​text​ を ​wrapper​ テキストからラップ解除します。

​withMaxSize

文字列長が指定された ​maxLength​ より長くないことを確認します。 文字列の長さが ​maxLength​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。

​wrapIfMissing

指定された文字列の先頭または末尾から ​wrapper​ が欠落している場合、​text​ を ​wrapper​ でラップします。

​wrapWith

指定された ​text​ を、指定された ​wrapper​ でラップします。

# Strings (dw::core::Strings) このモジュールには、文字列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Strings`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​appendIfMissing

​text​ が ​suffix​ で終了していない場合、​text​ の末尾に ​suffix​ を追加します。

​camelize

文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。

​capitalize

文字列内の各単語の先頭を大文字にします。

​charCode

入力文字列の最初の文字の Unicode を返します。

​charCodeAt

指定されたインデックスの文字の Unicode を返します。

​collapse

文字列を同じ文字ごとのサブ文字列に分けます。

​countCharactersBy

文字列の各文字を反復処理する式が ​true​ を返す回数を数えます。

​countMatches

文字列内の一致の数を数えます。

​dasherize

文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。

​everyCharacter

文字列内の​すべて​の文字に対して条件が有効かどうかをチェックします。

​first

文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。

​fromCharCode

指定された Unicode に一致する文字を返します。

​hammingDistance

2 つの文字列間のハミング距離を返します。

​isAlpha

​text​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​false​ が返されます。

​isAlphanumeric

​text​ に Unicode 文字または数字のみが含まれるかどうかを確認します。

​isLowerCase

​text​ に小文字のみが含まれるかどうかを確認します。

​isNumeric

​text​ に Unicode 数字のみが含まれるかどうかを確認します。

​isUpperCase

​text​ に大文字のみが含まれるかどうかを確認します。

​isWhitespace

​text​ に空白のみが含まれるかどうかを確認します。

​last

文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。

​leftPad

目的のサイズ (​size​) になるように、指定された ​text​ の​左​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

​levenshteinDistance

2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。

​lines

文字列からの行の配列を返します。

​mapString

文字列のすべての文字に式を適用します。

​ordinalize

数値を序数 (​1st​ や ​2nd​ など) として返します。

​pluralize

単数形の文字列を複数形にします。

​prependIfMissing

​text​ が ​prefix​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。

​remove

文字列から指定されたパターンのすべての出現を削除します。

​repeat

​text​ を、指定された回数 (​times​) 繰り返します。

​replaceAll

リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。

​reverse

文字列内の文字の順序を反転させます。

​rightPad

目的のサイズ (​size​) になるように、指定された ​text​ の​右​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

​singularize

複数形の文字列を単数形に変換します。

​someCharacter

文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。

​substring

指定された ​from​ インデックスの文字から ​until​ インデックスの前の最後の文字までのサブ文字列を返します。

​substringAfter

区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

​substringAfterLast

区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

​substringBefore

区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

​substringBeforeLast

区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

​substringBy

​predicate​ 式が ​true​ を返すそれぞれの文字で文字列を分割します。

​substringEvery

文字列を指定された長さに等しいサブ文字列の配列に分割します。

​underscore

文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。

​unwrap

指定された ​text​ を ​wrapper​ テキストからラップ解除します。

​withMaxSize

文字列長が指定された ​maxLength​ より長くないことを確認します。 文字列の長さが ​maxLength​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。

​words

文字列からの単語の配列を返します。

​wrapIfMissing

指定された文字列の先頭または末尾から ​wrapper​ が欠落している場合、​text​ を ​wrapper​ でラップします。

​wrapWith

指定された ​text​ を、指定された ​wrapper​ でラップします。

# Strings (dw::core::Strings) このモジュールには、文字列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Strings`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

appendIfMissing

text​ が ​suffix​ で終了していない場合、​text​ の末尾に ​suffix​ を追加します。

camelize

文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。

capitalize

文字列内の各単語の先頭を大文字にします。

charCode

入力文字列の最初の文字の Unicode を返します。

charCodeAt

指定されたインデックスの文字の Unicode を返します。

collapse

文字列を同じ文字ごとのサブ文字列に分けます。

countCharactersBy

文字列の各文字を反復処理する式が ​true​ を返す回数を数えます。

countMatches

文字列内の一致の数を数えます。

dasherize

文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。

everyCharacter

文字列内の​すべて​の文字に対して条件が有効かどうかをチェックします。

first

文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。

fromCharCode

指定された Unicode に一致する文字を返します。

hammingDistance

2 つの文字列間のハミング距離を返します。

isAlpha

text​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​false​ が返されます。

isAlphanumeric

text​ に Unicode 文字または数字のみが含まれるかどうかを確認します。

isLowerCase

text​ に小文字のみが含まれるかどうかを確認します。

isNumeric

text​ に Unicode 数字のみが含まれるかどうかを確認します。

isUpperCase

text​ に大文字のみが含まれるかどうかを確認します。

isWhitespace

text​ に空白のみが含まれるかどうかを確認します。

last

文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。

leftPad

目的のサイズ (​size​) になるように、指定された ​text​ の​左​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

levenshteinDistance

2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。

lines

文字列からの行の配列を返します。

mapString

文字列のすべての文字に式を適用します。

ordinalize

数値を序数 (​1st​ や ​2nd​ など) として返します。

pluralize

単数形の文字列を複数形にします。

prependIfMissing

text​ が ​prefix​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。

remove

文字列から指定されたパターンのすべての出現を削除します。

repeat

text​ を、指定された回数 (​times​) 繰り返します。

replaceAll

リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。

reverse

文字列内の文字の順序を反転させます。

rightPad

目的のサイズ (​size​) になるように、指定された ​text​ の​右​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

singularize

複数形の文字列を単数形に変換します。

someCharacter

文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。

substring

指定された ​from​ インデックスの文字から ​until​ インデックスの前の最後の文字までのサブ文字列を返します。

substringAfter

区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringAfterLast

区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringBefore

区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBeforeLast

区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBy

predicate​ 式が ​true​ を返すそれぞれの文字で文字列を分割します。

substringEvery

文字列を指定された長さに等しいサブ文字列の配列に分割します。

underscore

文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。

unwrap

指定された ​text​ を ​wrapper​ テキストからラップ解除します。

withMaxSize

文字列長が指定された ​maxLength​ より長くないことを確認します。 文字列の長さが ​maxLength​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。

words

文字列からの単語の配列を返します。

wrapIfMissing

指定された文字列の先頭または末尾から ​wrapper​ が欠落している場合、​text​ を ​wrapper​ でラップします。

wrapWith

指定された ​text​ を、指定された ​wrapper​ でラップします。

# Strings (dw::core::Strings) このモジュールには、文字列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Strings`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

appendIfMissing

text​ が ​suffix​ で終了していない場合、​text​ の末尾に ​suffix​ を追加します。

camelize

文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。

capitalize

文字列内の各単語の先頭を大文字にします。

charCode

入力文字列の最初の文字の Unicode を返します。

charCodeAt

指定されたインデックスの文字の Unicode を返します。

collapse

文字列を同じ文字ごとのサブ文字列に分けます。

countCharactersBy

文字列の各文字を反復処理する式が ​true​ を返す回数を数えます。

countMatches

文字列内の一致の数を数えます。

dasherize

文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。

everyCharacter

文字列内の​すべて​の文字に対して条件が有効かどうかをチェックします。

first

文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。

fromCharCode

指定された Unicode に一致する文字を返します。

hammingDistance

2 つの文字列間のハミング距離を返します。

isAlpha

text​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​false​ が返されます。

isAlphanumeric

text​ に Unicode 文字または数字のみが含まれるかどうかを確認します。

isLowerCase

text​ に小文字のみが含まれるかどうかを確認します。

isNumeric

text​ に Unicode 数字のみが含まれるかどうかを確認します。

isUpperCase

text​ に大文字のみが含まれるかどうかを確認します。

isWhitespace

text​ に空白のみが含まれるかどうかを確認します。

last

文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。

leftPad

目的のサイズ (​size​) になるように、指定された ​text​ の​左​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

levenshteinDistance

2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。

lines

文字列からの行の配列を返します。

mapString

文字列のすべての文字に式を適用します。

ordinalize

数値を序数 (​1st​ や ​2nd​ など) として返します。

pluralize

単数形の文字列を複数形にします。

prependIfMissing

text​ が ​prefix​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。

remove

文字列から指定されたパターンのすべての出現を削除します。

repeat

text​ を、指定された回数 (​times​) 繰り返します。

replaceAll

リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。

reverse

文字列内の文字の順序を反転させます。

rightPad

目的のサイズ (​size​) になるように、指定された ​text​ の​右​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

singularize

複数形の文字列を単数形に変換します。

someCharacter

文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。

substring

指定された ​from​ インデックスの文字から ​until​ インデックスの前の最後の文字までのサブ文字列を返します。

substringAfter

区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringAfterLast

区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringBefore

区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBeforeLast

区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBy

predicate​ 式が ​true​ を返すそれぞれの文字で文字列を分割します。

substringEvery

文字列を指定された長さに等しいサブ文字列の配列に分割します。

underscore

文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。

unwrap

指定された ​text​ を ​wrapper​ テキストからラップ解除します。

withMaxSize

文字列長が指定された ​maxLength​ より長くないことを確認します。 文字列の長さが ​maxLength​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。

words

文字列からの単語の配列を返します。

wrapIfMissing

指定された文字列の先頭または末尾から ​wrapper​ が欠落している場合、​text​ を ​wrapper​ でラップします。

wrapWith

指定された ​text​ を、指定された ​wrapper​ でラップします。

# Strings (dw::core::Strings) このモジュールには、文字列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Strings`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

appendIfMissing

text​ が ​suffix​ で終了していない場合、​text​ の末尾に ​suffix​ を追加します。

camelize

文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。

capitalize

文字列内の各単語の先頭を大文字にします。

charCode

入力文字列の最初の文字の Unicode を返します。

charCodeAt

指定されたインデックスの文字の Unicode を返します。

collapse

文字列を同じ文字ごとのサブ文字列に分けます。

countCharactersBy

文字列の各文字を反復処理する式が ​true​ を返す回数を数えます。

countMatches

文字列内の一致の数を数えます。

dasherize

文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。

everyCharacter

文字列内の​すべて​の文字に対して条件が有効かどうかをチェックします。

first

文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。

fromCharCode

指定された Unicode に一致する文字を返します。

hammingDistance

2 つの文字列間のハミング距離を返します。

isAlpha

text​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​false​ が返されます。

isAlphanumeric

text​ に Unicode 文字または数字のみが含まれるかどうかを確認します。

isLowerCase

text​ に小文字のみが含まれるかどうかを確認します。

isNumeric

text​ に Unicode 数字のみが含まれるかどうかを確認します。

isUpperCase

text​ に大文字のみが含まれるかどうかを確認します。

isWhitespace

text​ に空白のみが含まれるかどうかを確認します。

last

文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。

leftPad

目的のサイズ (​size​) になるように、指定された ​text​ の​左​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

levenshteinDistance

2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。

lines

文字列からの行の配列を返します。

mapString

文字列のすべての文字に式を適用します。

ordinalize

数値を序数 (​1st​ や ​2nd​ など) として返します。

pluralize

単数形の文字列を複数形にします。

prependIfMissing

text​ が ​prefix​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。

remove

文字列から指定されたパターンのすべての出現を削除します。

repeat

text​ を、指定された回数 (​times​) 繰り返します。

replaceAll

リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。

reverse

文字列内の文字の順序を反転させます。

rightPad

目的のサイズ (​size​) になるように、指定された ​text​ の​右​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

singularize

複数形の文字列を単数形に変換します。

someCharacter

文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。

substring

指定された ​from​ インデックスの文字から ​until​ インデックスの前の最後の文字までのサブ文字列を返します。

substringAfter

区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringAfterLast

区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringBefore

区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBeforeLast

区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBy

predicate​ 式が ​true​ を返すそれぞれの文字で文字列を分割します。

substringEvery

文字列を指定された長さに等しいサブ文字列の配列に分割します。

underscore

文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。

unwrap

指定された ​text​ を ​wrapper​ テキストからラップ解除します。

withMaxSize

文字列長が指定された ​maxLength​ より長くないことを確認します。 文字列の長さが ​maxLength​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。

words

文字列からの単語の配列を返します。

wrapIfMissing

指定された文字列の先頭または末尾から ​wrapper​ が欠落している場合、​text​ を ​wrapper​ でラップします。

wrapWith

指定された ​text​ を、指定された ​wrapper​ でラップします。

# Strings (dw::core::Strings) このモジュールには、文字列を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Strings`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

appendIfMissing

text​ が ​suffix​ で終了していない場合、​text​ の末尾に ​suffix​ を追加します。

camelize

文字列内のアンダースコアに基づいて、キャメルケースの文字列を返します。

capitalize

文字列内の各単語の先頭を大文字にします。

charCode

入力文字列の最初の文字の Unicode を返します。

charCodeAt

指定されたインデックスの文字の Unicode を返します。

collapse

文字列を同じ文字ごとのサブ文字列に分けます。

countCharactersBy

文字列の各文字を反復処理する式が ​true​ を返す回数を数えます。

countMatches

文字列内の一致の数を数えます。

dasherize

文字列内のスペース、アンダースコア、キャメルケースをダッシュ (ハイフン) に置き換えます。

everyCharacter

文字列内の​すべて​の文字に対して条件が有効かどうかをチェックします。

first

文字列の先頭から文字列内の指定された文字数までの文字 (たとえば、文字列内の最初の 2 文字) を返します。

fromCharCode

指定された Unicode に一致する文字を返します。

hammingDistance

2 つの文字列間のハミング距離を返します。

isAlpha

text​ に Unicode 数字のみが含まれるかどうかを確認します。小数点は Unicode 数字ではないため、​false​ が返されます。

isAlphanumeric

text​ に Unicode 文字または数字のみが含まれるかどうかを確認します。

isLowerCase

text​ に小文字のみが含まれるかどうかを確認します。

isNumeric

text​ に Unicode 数字のみが含まれるかどうかを確認します。

isUpperCase

text​ に大文字のみが含まれるかどうかを確認します。

isWhitespace

text​ に空白のみが含まれるかどうかを確認します。

last

文字列の末尾から指定された文字数までの文字 (たとえば、文字列内の最後の 2 文字) までの文字を返します。

leftPad

目的のサイズ (​size​) になるように、指定された ​text​ の​左​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

levenshteinDistance

2 つの文字列間のレーベンシュタイン距離 (または編集距離) を返します。

lines

文字列からの行の配列を返します。

mapString

文字列のすべての文字に式を適用します。

ordinalize

数値を序数 (​1st​ や ​2nd​ など) として返します。

pluralize

単数形の文字列を複数形にします。

prependIfMissing

text​ が ​prefix​ で開始されていない場合、文字列の先頭にそのプレフィックスを追加します。

remove

文字列から指定されたパターンのすべての出現を削除します。

repeat

text​ を、指定された回数 (​times​) 繰り返します。

replaceAll

リテラル検索文字列に一致するすべてのサブ文字列を指定された置換文字列に置き換えます。

reverse

文字列内の文字の順序を反転させます。

rightPad

目的のサイズ (​size​) になるように、指定された ​text​ の​右​側に ​padText​ を埋め込みます。 デフォルトの ​padText​ は ​" "​ です。

singularize

複数形の文字列を単数形に変換します。

someCharacter

文字列内の 1 つ以上の文字または空白スペースに対して条件が有効かどうかをチェックします。

substring

指定された ​from​ インデックスの文字から ​until​ インデックスの前の最後の文字までのサブ文字列を返します。

substringAfter

区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringAfterLast

区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。

substringBefore

区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBeforeLast

区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。

substringBy

predicate​ 式が ​true​ を返すそれぞれの文字で文字列を分割します。

substringEvery

文字列を指定された長さに等しいサブ文字列の配列に分割します。

underscore

文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。

unwrap

指定された ​text​ を ​wrapper​ テキストからラップ解除します。

withMaxSize

文字列長が指定された ​maxLength​ より長くないことを確認します。 文字列の長さが ​maxLength​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。

words

文字列からの単語の配列を返します。

wrapIfMissing

指定された文字列の先頭または末尾から ​wrapper​ が欠落している場合、​text​ を ​wrapper​ でラップします。

wrapWith

指定された ​text​ を、指定された ​wrapper​ でラップします。

# substring ## [](#substring1)substring(text: String, from: Number, until: Number): String 指定された ​`from`​ インデックスの文字から ​`until`​ インデックスの前の最後の文字までのサブ文字列を返します。 サブ文字列内の文字は条件 ​`from <= indexOf(string) < until`​ を満たします。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

文字の配列として扱われる文字列。

​from

文字配列から含める最も低いインデックス。

​until

文字配列から除外する最も低いインデックス。

### [](#例)例 次の例では、入力配列内の ​`1`​ インデックスから ​`4`​ インデックスまでの文字が含まれるサブ文字列を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json var text = "hello world!" --- substring(text, 1, 5) ``` #### [](#出力)出力 ```json "ello" ``` ## [](#substring2)substring(text: Null, from: Any, until: Any): Null `substring`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # substring ## [](#substring1)substring(text: String, from: Number, until: Number): String 指定された ​`from`​ インデックスの文字から ​`until`​ インデックスの前の最後の文字までのサブ文字列を返します。 サブ文字列内の文字は条件 ​`from <= indexOf(string) < until`​ を満たします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の配列として扱われる文字列。

from

文字配列から含める最も低いインデックス。

until

文字配列から除外する最も低いインデックス。

### [](#例)例 次の例では、入力配列内の ​`1`​ インデックスから ​`4`​ インデックスまでの文字が含まれるサブ文字列を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json var text = "hello world!" --- substring(text, 1, 5) ``` #### [](#出力)出力 ```json "ello" ``` ## [](#substring2)substring(text: Null, from: Any, until: Any): Null `substring`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substring ## [](#substring1)substring(text: String, from: Number, until: Number): String 指定された ​`from`​ インデックスの文字から ​`until`​ インデックスの前の最後の文字までのサブ文字列を返します。 サブ文字列内の文字は条件 ​`from <= indexOf(string) < until`​ を満たします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の配列として扱われる文字列。

from

文字配列から含める最も低いインデックス。

until

文字配列から除外する最も低いインデックス。

### [](#例)例 次の例では、入力配列内の ​`1`​ インデックスから ​`4`​ インデックスまでの文字が含まれるサブ文字列を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json var text = "hello world!" --- substring(text, 1, 5) ``` #### [](#出力)出力 ```json "ello" ``` ## [](#substring2)substring(text: Null, from: Any, until: Any): Null `substring`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substring ## [](#substring1)substring(text: String, from: Number, until: Number): String 指定された ​`from`​ インデックスの文字から ​`until`​ インデックスの前の最後の文字までのサブ文字列を返します。 サブ文字列内の文字は条件 ​`from <= indexOf(string) < until`​ を満たします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の配列として扱われる文字列。

from

文字配列から含める最も低いインデックス。

until

文字配列から除外する最も低いインデックス。

### [](#例)例 次の例では、入力配列内の ​`1`​ インデックスから ​`4`​ インデックスまでの文字が含まれるサブ文字列を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json var text = "hello world!" --- substring(text, 1, 5) ``` #### [](#出力)出力 ```json "ello" ``` ## [](#substring2)substring(text: Null, from: Any, until: Any): Null `substring`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substring ## [](#substring1)substring(text: String, from: Number, until: Number): String 指定された ​`from`​ インデックスの文字から ​`until`​ インデックスの前の最後の文字までのサブ文字列を返します。 サブ文字列内の文字は条件 ​`from <= indexOf(string) < until`​ を満たします。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の配列として扱われる文字列。

from

文字配列から含める最も低いインデックス。

until

文字配列から除外する最も低いインデックス。

### [](#例)例 次の例では、入力配列内の ​`1`​ インデックスから ​`4`​ インデックスまでの文字が含まれるサブ文字列を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json var text = "hello world!" --- substring(text, 1, 5) ``` #### [](#出力)出力 ```json "ello" ``` ## [](#substring2)substring(text: Null, from: Any, until: Any): Null `substring`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringAfter ## [](#substringafter1)substringAfter(String, String): String 区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfter`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfter(null, "'"), "b": substringAfter("", "-"), "c": substringAfter("abc", "b"), "d": substringAfter("abcba", "b"), "e": substringAfter("abc", "d"), "f": substringAfter("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "cba", "e": "", "f": "bc" } ``` ## [](#substringafter2)substringAfter(Null, String): Null `substringAfter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # substringAfter ## [](#substringafter1)substringAfter(text: String, separator: String): String 区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfter`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfter(null, "'"), "b": substringAfter("", "-"), "c": substringAfter("abc", "b"), "d": substringAfter("abcba", "b"), "e": substringAfter("abc", "d"), "f": substringAfter("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "cba", "e": "", "f": "bc" } ``` ## [](#substringafter2)substringAfter(text: Null, separator: String): Null `substringAfter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # substringAfter ## [](#substringafter1)substringAfter(text: String, separator: String): String 区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfter`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfter(null, "'"), "b": substringAfter("", "-"), "c": substringAfter("abc", "b"), "d": substringAfter("abcba", "b"), "e": substringAfter("abc", "d"), "f": substringAfter("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "cba", "e": "", "f": "bc" } ``` ## [](#substringafter2)substringAfter(text: Null, separator: String): Null `substringAfter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfter ## [](#substringafter1)substringAfter(text: String, separator: String): String 区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfter`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfter(null, "'"), "b": substringAfter("", "-"), "c": substringAfter("abc", "b"), "d": substringAfter("abcba", "b"), "e": substringAfter("abc", "d"), "f": substringAfter("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "cba", "e": "", "f": "bc" } ``` ## [](#substringafter2)substringAfter(text: Null, separator: String): Null `substringAfter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfter ## [](#substringafter1)substringAfter(text: String, separator: String): String 区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfter`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfter(null, "'"), "b": substringAfter("", "-"), "c": substringAfter("abc", "b"), "d": substringAfter("abcba", "b"), "e": substringAfter("abc", "d"), "f": substringAfter("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "cba", "e": "", "f": "abc" } ``` ## [](#substringafter2)substringAfter(text: Null, separator: String): Null `substringAfter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfter ## [](#substringafter1)substringAfter(text: String, separator: String): String 区切り文字の最初の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfter`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfter(null, "'"), "b": substringAfter("", "-"), "c": substringAfter("abc", "b"), "d": substringAfter("abcba", "b"), "e": substringAfter("abc", "d"), "f": substringAfter("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "cba", "e": "", "f": "abc" } ``` ## [](#substringafter2)substringAfter(text: Null, separator: String): Null `substringAfter`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfterLast ## [](#substringafterlast1)substringAfterLast(String, String): String 区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfterLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfterLast(null, "'"), "b": substringAfterLast("", "-"), "c": substringAfterLast("abc", "b"), "d": substringAfterLast("abcba", "b"), "e": substringAfterLast("abc", "d"), "f": substringAfterLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "a", "e": "", "f": null } ``` ## [](#substringafterlast2)substringAfterLast(Null, String): Null `substringAfterLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # substringAfterLast ## [](#substringafterlast1)substringAfterLast(text: String, separator: String): String 区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfterLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfterLast(null, "'"), "b": substringAfterLast("", "-"), "c": substringAfterLast("abc", "b"), "d": substringAfterLast("abcba", "b"), "e": substringAfterLast("abc", "d"), "f": substringAfterLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "a", "e": "", "f": null } ``` ## [](#substringafterlast2)substringAfterLast(text: Null, separator: String): Null `substringAfterLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # substringAfterLast ## [](#substringafterlast1)substringAfterLast(text: String, separator: String): String 区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfterLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfterLast(null, "'"), "b": substringAfterLast("", "-"), "c": substringAfterLast("abc", "b"), "d": substringAfterLast("abcba", "b"), "e": substringAfterLast("abc", "d"), "f": substringAfterLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "a", "e": "", "f": null } ``` ## [](#substringafterlast2)substringAfterLast(text: Null, separator: String): Null `substringAfterLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfterLast ## [](#substringafterlast1)substringAfterLast(text: String, separator: String): String 区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfterLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfterLast(null, "'"), "b": substringAfterLast("", "-"), "c": substringAfterLast("abc", "b"), "d": substringAfterLast("abcba", "b"), "e": substringAfterLast("abc", "d"), "f": substringAfterLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "a", "e": "", "f": null } ``` ## [](#substringafterlast2)substringAfterLast(text: Null, separator: String): Null `substringAfterLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfterLast ## [](#substringafterlast1)substringAfterLast(text: String, separator: String): String 区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfterLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfterLast(null, "'"), "b": substringAfterLast("", "-"), "c": substringAfterLast("abc", "b"), "d": substringAfterLast("abcba", "b"), "e": substringAfterLast("abc", "d"), "f": substringAfterLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "a", "e": "", "f": null } ``` ## [](#substringafterlast2)substringAfterLast(text: Null, separator: String): Null `substringAfterLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringAfterLast ## [](#substringafterlast1)substringAfterLast(text: String, separator: String): String 区切り文字の最後の出現位置より後にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringAfterLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringAfterLast(null, "'"), "b": substringAfterLast("", "-"), "c": substringAfterLast("abc", "b"), "d": substringAfterLast("abcba", "b"), "e": substringAfterLast("abc", "d"), "f": substringAfterLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "c", "d": "a", "e": "", "f": null } ``` ## [](#substringafterlast2)substringAfterLast(text: Null, separator: String): Null `substringAfterLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBefore ## [](#substringbefore1)substringBefore(String, String): String 区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBefore`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBefore(null, "'"), "b": substringBefore("", "-"), "c": substringBefore("abc", "b"), "d": substringBefore("abc", "c"), "e": substringBefore("abc", "d"), "f": substringBefore("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "ab", "e": "", "f": "" } ``` ## [](#substringbefore2)substringBefore(Null, String): Null `substringBefore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # substringBefore ## [](#substringbefore1)substringBefore(text: String, separator: String): String 区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBefore`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBefore(null, "'"), "b": substringBefore("", "-"), "c": substringBefore("abc", "b"), "d": substringBefore("abc", "c"), "e": substringBefore("abc", "d"), "f": substringBefore("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "ab", "e": "", "f": "" } ``` ## [](#substringbefore2)substringBefore(text: Null, separator: String): Null `substringBefore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # substringBefore ## [](#substringbefore1)substringBefore(text: String, separator: String): String 区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBefore`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBefore(null, "'"), "b": substringBefore("", "-"), "c": substringBefore("abc", "b"), "d": substringBefore("abc", "c"), "e": substringBefore("abc", "d"), "f": substringBefore("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "ab", "e": "", "f": "" } ``` ## [](#substringbefore2)substringBefore(text: Null, separator: String): Null `substringBefore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBefore ## [](#substringbefore1)substringBefore(text: String, separator: String): String 区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBefore`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBefore(null, "'"), "b": substringBefore("", "-"), "c": substringBefore("abc", "b"), "d": substringBefore("abc", "c"), "e": substringBefore("abc", "d"), "f": substringBefore("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "ab", "e": "", "f": "" } ``` ## [](#substringbefore2)substringBefore(text: Null, separator: String): Null `substringBefore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBefore ## [](#substringbefore1)substringBefore(text: String, separator: String): String 区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBefore`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBefore(null, "'"), "b": substringBefore("", "-"), "c": substringBefore("abc", "b"), "d": substringBefore("abc", "c"), "e": substringBefore("abc", "d"), "f": substringBefore("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "ab", "e": "", "f": "" } ``` ## [](#substringbefore2)substringBefore(text: Null, separator: String): Null `substringBefore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBefore ## [](#substringbefore1)substringBefore(text: String, separator: String): String 区切り文字の最初の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBefore`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBefore(null, "'"), "b": substringBefore("", "-"), "c": substringBefore("abc", "b"), "d": substringBefore("abc", "c"), "e": substringBefore("abc", "d"), "f": substringBefore("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "ab", "e": "", "f": "" } ``` ## [](#substringbefore2)substringBefore(text: Null, separator: String): Null `substringBefore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBeforeLast ## [](#substringbeforelast1)substringBeforeLast(String, String): String 区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBeforeLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBeforeLast(null, "'"), "b": substringBeforeLast("", "-"), "c": substringBeforeLast("abc", "b"), "d": substringBeforeLast("abcba", "b"), "e": substringBeforeLast("abc", "d"), "f": substringBeforeLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "abc", "e": "", "f": "ab" } ``` ## [](#substringbeforelast2)substringBeforeLast(Null, String): Null `substringBeforeLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # substringBeforeLast ## [](#substringbeforelast1)substringBeforeLast(text: String, separator: String): String 区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBeforeLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBeforeLast(null, "'"), "b": substringBeforeLast("", "-"), "c": substringBeforeLast("abc", "b"), "d": substringBeforeLast("abcba", "b"), "e": substringBeforeLast("abc", "d"), "f": substringBeforeLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "abc", "e": "", "f": "ab" } ``` ## [](#substringbeforelast2)substringBeforeLast(text: Null, separator: String): Null `substringBeforeLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # substringBeforeLast ## [](#substringbeforelast1)substringBeforeLast(text: String, separator: String): String 区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBeforeLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBeforeLast(null, "'"), "b": substringBeforeLast("", "-"), "c": substringBeforeLast("abc", "b"), "d": substringBeforeLast("abcba", "b"), "e": substringBeforeLast("abc", "d"), "f": substringBeforeLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "abc", "e": "", "f": "ab" } ``` ## [](#substringbeforelast2)substringBeforeLast(text: Null, separator: String): Null `substringBeforeLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBeforeLast ## [](#substringbeforelast1)substringBeforeLast(text: String, separator: String): String 区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBeforeLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBeforeLast(null, "'"), "b": substringBeforeLast("", "-"), "c": substringBeforeLast("abc", "b"), "d": substringBeforeLast("abcba", "b"), "e": substringBeforeLast("abc", "d"), "f": substringBeforeLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "abc", "e": "", "f": "ab" } ``` ## [](#substringbeforelast2)substringBeforeLast(text: Null, separator: String): Null `substringBeforeLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBeforeLast ## [](#substringbeforelast1)substringBeforeLast(text: String, separator: String): String 区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBeforeLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBeforeLast(null, "'"), "b": substringBeforeLast("", "-"), "c": substringBeforeLast("abc", "b"), "d": substringBeforeLast("abcba", "b"), "e": substringBeforeLast("abc", "d"), "f": substringBeforeLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "abc", "e": "", "f": "ab" } ``` ## [](#substringbeforelast2)substringBeforeLast(text: Null, separator: String): Null `substringBeforeLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBeforeLast ## [](#substringbeforelast1)substringBeforeLast(text: String, separator: String): String 区切り文字の最後の出現位置より前にあるサブ文字列を取得します。区切り文字は返されません。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

separator

検索対象の文字列。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`substringBeforeLast`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": substringBeforeLast(null, "'"), "b": substringBeforeLast("", "-"), "c": substringBeforeLast("abc", "b"), "d": substringBeforeLast("abcba", "b"), "e": substringBeforeLast("abc", "d"), "f": substringBeforeLast("abc", "") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "", "c": "a", "d": "abc", "e": "", "f": "ab" } ``` ## [](#substringbeforelast2)substringBeforeLast(text: Null, separator: String): Null `substringBeforeLast`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # substringBy ## [](#substringby1)substringBy(text: String, predicate: (character: String, index: Number) -> Boolean): Array `predicate`​ 式が ​`true`​ を返すそれぞれの文字で文字列を分割します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

分割する文字列。文字列は文字の配列として扱われます。

​predicate

各文字をテストして Boolean (ブール) 値を返す式。式は文字列の各文字およびインデックスを反復処理できます。

### [](#例)例 次の例では、指定された文字 (`"~"`、 `"="`、 または `"_"`) が存在する場所で文字列を分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringBy from dw::core::Strings output application/json --- "hello~world=here_data-weave" substringBy $ == "~" or $ == "=" or $ == "_" ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#substringby2)substringBy(text: Null, predicate: (character: Nothing, index: Nothing) -> Any): Null `substringBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # substringBy ## [](#substringby1)substringBy(text: String, predicate: (character: String, index: Number) -> Boolean): Array `predicate`​ 式が ​`true`​ を返すそれぞれの文字で文字列を分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。文字列は文字の配列として扱われます。

predicate

各文字をテストして Boolean (ブール) 値を返す式。式は文字列の各文字およびインデックスを反復処理できます。

### [](#例)例 次の例では、指定された文字 (​`"~“​、 ​”="`​、 または ​`"_"`​) が存在する場所で文字列を分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringBy from dw::core::Strings output application/json --- "hello~world=here_data-weave" substringBy $ == "~" or $ == "=" or $ == "_" ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#substringby2)substringBy(text: Null, predicate: (character: Nothing, index: Nothing) -> Any): Null `substringBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringBy ## [](#substringby1)substringBy(text: String, predicate: (character: String, index: Number) -> Boolean): Array `predicate`​ 式が ​`true`​ を返すそれぞれの文字で文字列を分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。文字列は文字の配列として扱われます。

predicate

各文字をテストして Boolean (ブール) 値を返す式。式は文字列の各文字およびインデックスを反復処理できます。

### [](#例)例 次の例では、指定された文字 (​`"~“​、 ​”="`​、 または ​`"_"`​) が存在する場所で文字列を分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringBy from dw::core::Strings output application/json --- "hello~world=here_data-weave" substringBy $ == "~" or $ == "=" or $ == "_" ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#substringby2)substringBy(text: Null, predicate: (character: Nothing, index: Nothing) -> Any): Null `substringBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringBy ## [](#substringby1)substringBy(text: String, predicate: (character: String, index: Number) -> Boolean): Array `predicate`​ 式が ​`true`​ を返すそれぞれの文字で文字列を分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。文字列は文字の配列として扱われます。

predicate

各文字をテストして Boolean (ブール) 値を返す式。式は文字列の各文字およびインデックスを反復処理できます。

### [](#例)例 次の例では、指定された文字 (​`"~“​、 ​”="`​、 または ​`"_"`​) が存在する場所で文字列を分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringBy from dw::core::Strings output application/json --- "hello~world=here_data-weave" substringBy $ == "~" or $ == "=" or $ == "_" ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#substringby2)substringBy(text: Null, predicate: (character: Nothing, index: Nothing) -> Any): Null `substringBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringBy ## [](#substringby1)substringBy(text: String, predicate: (character: String, index: Number) -> Boolean): Array `predicate`​ 式が ​`true`​ を返すそれぞれの文字で文字列を分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。文字列は文字の配列として扱われます。

predicate

各文字をテストして Boolean (ブール) 値を返す式。式は文字列の各文字およびインデックスを反復処理できます。

### [](#例)例 次の例では、指定された文字 (`"~"`、 `"="`、または `"_"`) が存在する場所で文字列を分割します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringBy from dw::core::Strings output application/json --- "hello~world=here_data-weave" substringBy $ == "~" or $ == "=" or $ == "_" ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#substringby2)substringBy(text: Null, predicate: (character: Nothing, index: Nothing) -> Any): Null `substringBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringEvery ## [](#substringevery1)substringEvery(text: String, amount: Number): Array 文字列を指定された長さに等しいサブ文字列の配列に分割します。 最後の文字列はその長さより短くても問題ありません。長さが分割する文字列の長さより長いか同じである場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

分割する文字列。

​amount

各サブ文字列の目的の長さ。

### [](#例)例 次の例では、入力文字列を分割するときの ​`substringEvery`​ の動作を示します。最後に返された文字列は他の文字列よりも短くなっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringEvery from dw::core::Strings output application/json --- substringEvery("substringEvery", 3) ``` #### [](#出力)出力 ```Json ["sub", "str", "ing", "Eve", "ry"] ``` ## [](#substringevery2)substringEvery(text: Null, amount: Any): Null `substringEvery`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # substringEvery ## [](#substringevery1)substringEvery(text: String, amount: Number): Array 文字列を指定された長さに等しいサブ文字列の配列に分割します。 最後の文字列はその長さより短くても問題ありません。長さが分割する文字列の長さより長いか同じである場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。

amount

各サブ文字列の目的の長さ。

### [](#例)例 次の例では、入力文字列を分割するときの ​`substringEvery`​ の動作を示します。最後に返された文字列は他の文字列よりも短くなっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringEvery from dw::core::Strings output application/json --- substringEvery("substringEvery", 3) ``` #### [](#出力)出力 ```Json ["sub", "str", "ing", "Eve", "ry"] ``` ## [](#substringevery2)substringEvery(text: Null, amount: Any): Null `substringEvery`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringEvery ## [](#substringevery1)substringEvery(text: String, amount: Number): Array 文字列を指定された長さに等しいサブ文字列の配列に分割します。 最後の文字列はその長さより短くても問題ありません。長さが分割する文字列の長さより長いか同じである場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。

amount

各サブ文字列の目的の長さ。

### [](#例)例 次の例では、入力文字列を分割するときの ​`substringEvery`​ の動作を示します。最後に返された文字列は他の文字列よりも短くなっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringEvery from dw::core::Strings output application/json --- substringEvery("substringEvery", 3) ``` #### [](#出力)出力 ```Json ["sub", "str", "ing", "Eve", "ry"] ``` ## [](#substringevery2)substringEvery(text: Null, amount: Any): Null `substringEvery`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringEvery ## [](#substringevery1)substringEvery(text: String, amount: Number): Array 文字列を指定された長さに等しいサブ文字列の配列に分割します。 最後の文字列はその長さより短くても問題ありません。長さが分割する文字列の長さより長いか同じである場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。

amount

各サブ文字列の目的の長さ。

### [](#例)例 次の例では、入力文字列を分割するときの ​`substringEvery`​ の動作を示します。最後に返された文字列は他の文字列よりも短くなっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringEvery from dw::core::Strings output application/json --- substringEvery("substringEvery", 3) ``` #### [](#出力)出力 ```Json ["sub", "str", "ing", "Eve", "ry"] ``` ## [](#substringevery2)substringEvery(text: Null, amount: Any): Null `substringEvery`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # substringEvery ## [](#substringevery1)substringEvery(text: String, amount: Number): Array 文字列を指定された長さに等しいサブ文字列の配列に分割します。 最後の文字列はその長さより短くても問題ありません。長さが分割する文字列の長さより長いか同じである場合、この関数では文字列全体を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

分割する文字列。

amount

各サブ文字列の目的の長さ。

### [](#例)例 次の例では、入力文字列を分割するときの ​`substringEvery`​ の動作を示します。最後に返された文字列は他の文字列よりも短くなっています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import substringEvery from dw::core::Strings output application/json --- substringEvery("substringEvery", 3) ``` #### [](#出力)出力 ```Json ["sub", "str", "ing", "Eve", "ry"] ``` ## [](#substringevery2)substringEvery(text: Null, amount: Any): Null `substringEvery`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sum ## [](#sum1)sum(Array): Number 配列内の数値の合計を返します。 配列が空の場合は ​`0`​ を返し、配列内に数値以外の値がある場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

​values

数値の入力配列。

### [](#例)例 次の例では、入力配列内の値の合計を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sum([1, 2, 3]) ``` #### [](#出力)出力 ```JSON 6 ``` # sum ## [](#sum1)sum(values: Array): Number 配列内の数値の合計を返します。 配列が空の場合は ​`0`​ を返し、配列内に数値以外の値がある場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

​values

数値の入力配列。

### [](#例)例 次の例では、入力配列内の値の合計を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sum([1, 2, 3]) ``` #### [](#出力)出力 ```JSON 6 ``` # sum ## [](#sum1)sum(values: Array): Number 配列内の数値の合計を返します。 配列が空の場合は ​`0`​ を返し、配列内に数値以外の値がある場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、入力配列内の値の合計を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sum([1, 2, 3]) ``` #### [](#出力)出力 ```JSON 6 ``` # sum ## [](#sum1)sum(values: Array): Number 配列内の数値の合計を返します。 配列が空の場合は ​`0`​ を返し、配列内に数値以外の値がある場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、入力配列内の値の合計を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sum([1, 2, 3]) ``` #### [](#出力)出力 ```JSON 6 ``` # sum ## [](#sum1)sum(values: Array): Number 配列内の数値の合計を返します。 配列が空の場合は ​`0`​ を返し、配列内に数値以外の値がある場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、入力配列内の値の合計を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sum([1, 2, 3]) ``` #### [](#出力)出力 ```JSON 6 ``` # sum ## [](#sum1)sum(@StreamCapable values: Array): Number 配列内の数値の合計を返します。 配列が空の場合は ​`0`​ を返し、配列内に数値以外の値がある場合はエラーになります。 ### [](#パラメーター)パラメーター
名前 説明

values

数値の入力配列。

### [](#例)例 次の例では、入力配列内の値の合計を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- sum([1, 2, 3]) ``` #### [](#出力)出力 ```JSON 6 ``` # sumBy ## [](#sumby1)sumBy(Array, (T) -> Number): Number 配列内の要素の値の合計を返します。 ### [](#パラメーター)パラメーター
名前 説明

​array

入力配列。

​numberSelector

入力配列内で数値の値を選択する DataWeave セレクター。

### [](#例)例 次の例では、いくつかの配列で要素の値の合計を計算します。両方の ​`sumBy`​ 関数コールで同じ結果が算出されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "sumBy" : [ [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a, sumBy([ { a: 1 }, { a: 2 }, { a: 3 } ], (item) -> item.a) ] } ``` #### [](#出力)出力 ```json { "sumBy" : [ 6, 6 ] } ``` # sumBy ## [](#sumby1)sumBy(array: Array, numberSelector: (T) -> Number): Number 配列内の要素の値の合計を返します。 ### [](#パラメーター)パラメーター
名前 説明

​array

入力配列。

​numberSelector

入力配列内で数値の値を選択する DataWeave セレクター。

### [](#例)例 次の例では、いくつかの配列で要素の値の合計を計算します。両方の ​`sumBy`​ 関数コールで同じ結果が算出されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "sumBy" : [ [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a, sumBy([ { a: 1 }, { a: 2 }, { a: 3 } ], (item) -> item.a) ] } ``` #### [](#出力)出力 ```json { "sumBy" : [ 6, 6 ] } ``` ## [](#sumby2)sumBy(array: Null, numberSelector: (Nothing) -> Any): Null `sumBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # sumBy ## [](#sumby1)sumBy(array: Array, numberSelector: (T) -> Number): Number 配列内の要素の値の合計を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

numberSelector

入力配列内で数値の値を選択する DataWeave セレクター。

### [](#例)例 次の例では、いくつかの配列で要素の値の合計を計算します。両方の ​`sumBy`​ 関数コールで同じ結果が算出されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "sumBy" : [ [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a, sumBy([ { a: 1 }, { a: 2 }, { a: 3 } ], (item) -> item.a) ] } ``` #### [](#出力)出力 ```json { "sumBy" : [ 6, 6 ] } ``` ## [](#sumby2)sumBy(array: Null, numberSelector: (Nothing) -> Any): Null `sumBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sumBy ## [](#sumby1)sumBy(array: Array, numberSelector: (T) -> Number): Number 配列内の要素の値の合計を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

numberSelector

入力配列内で数値の値を選択する DataWeave セレクター。

### [](#例)例 次の例では、いくつかの配列で要素の値の合計を計算します。両方の ​`sumBy`​ 関数コールで同じ結果が算出されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "sumBy" : [ [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a, sumBy([ { a: 1 }, { a: 2 }, { a: 3 } ], (item) -> item.a) ] } ``` #### [](#出力)出力 ```json { "sumBy" : [ 6, 6 ] } ``` ## [](#sumby2)sumBy(array: Null, numberSelector: (Nothing) -> Any): Null `sumBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sumBy ## [](#sumby1)sumBy(array: Array, numberSelector: (T) -> Number): Number 配列内の要素の値の合計を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

numberSelector

入力配列内で数値の値を選択する DataWeave セレクター。

### [](#例)例 次の例では、いくつかの配列で要素の値の合計を計算します。両方の ​`sumBy`​ 関数コールで同じ結果が算出されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "sumBy" : [ [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a, sumBy([ { a: 1 }, { a: 2 }, { a: 3 } ], (item) -> item.a) ] } ``` #### [](#出力)出力 ```json { "sumBy" : [ 6, 6 ] } ``` ## [](#sumby2)sumBy(array: Null, numberSelector: (Nothing) -> Any): Null `sumBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # sumBy ## [](#sumby1)sumBy(@StreamCapable array: Array, numberSelector: (T) -> Number): Number 配列内の要素の値の合計を返します。 ### [](#パラメーター)パラメーター
名前 説明

array

入力配列。

numberSelector

入力配列内で数値の値を選択する DataWeave セレクター。

### [](#例)例 次の例では、いくつかの配列で要素の値の合計を計算します。両方の ​`sumBy`​ 関数コールで同じ結果が算出されています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json --- { "sumBy" : [ [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a, sumBy([ { a: 1 }, { a: 2 }, { a: 3 } ], (item) -> item.a) ] } ``` #### [](#出力)出力 ```json { "sumBy" : [ 6, 6 ] } ``` ## [](#sumby2)sumBy(array: Null, numberSelector: (Nothing) -> Any): Null `sumBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # System (dw::System) このモジュールには、基盤となるシステムを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::System`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​envVar

指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​null​ を返します。

​envVars

ホストシステムで定義されているすべての環境変数を返します。

# System (dw::System) このモジュールには、基盤となるシステムを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::System`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​envVar

指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​null​ を返します。

​envVars

ホストシステムで文字列の配列として定義されているすべての環境変数を返します。

# System (dw::System) このモジュールには、基盤となるシステムを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::System`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

envVar

指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​null​ を返します。

envVars

ホストシステムで文字列の配列として定義されているすべての環境変数を返します。

# System (dw::System) このモジュールには、基盤となるシステムを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::System`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

envVar

指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​null​ を返します。

envVars

ホストシステムで文字列の配列として定義されているすべての環境変数を返します。

# System (dw::System) このモジュールには、基盤となるシステムを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::System`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

envVar

指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​null​ を返します。

envVars

ホストシステムで文字列の配列として定義されているすべての環境変数を返します。

# System (dw::System) このモジュールには、基盤となるシステムを操作する関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::System`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

envVar

指定された名前の環境変数を返すか、環境変数が定義されていない場合は ​null​ を返します。

envVars

ホストシステムで文字列の配列として定義されているすべての環境変数を返します。

# take ## [](#take1)take(Array, Number): Array 最初の ​`n`​ 個の要素を選択します。​`n <= 0`​ の場合は空の配列を返し、​`n > sizeOf(array)`​ の場合は元の配列を返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​n

選択する要素の数。

### [](#例)例 次の例では、入力配列の最初の 2 個の要素の値を含む配列を出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- take(users, 2) ``` #### [](#出力)出力 ```json [ "Mariano", "Leandro" ] ``` # take ## [](#take1)take(array: Array, n: Number): Array 最初の ​`n`​ 個の要素を選択します。​`n <= 0`​ の場合は空の配列を返し、​`n > sizeOf(array)`​ の場合は元の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​n

選択する要素の数。

### [](#例)例 次の例では、入力配列の最初の 2 個の要素の値を含む配列を出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- take(users, 2) ``` #### [](#出力)出力 ```json [ "Mariano", "Leandro" ] ``` ## [](#take2)take(array: Null, n: Any): Null `take`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # take ## [](#take1)take(array: Array, n: Number): Array 最初の ​`n`​ 個の要素を選択します。​`n <= 0`​ の場合は空の配列を返し、​`n > sizeOf(array)`​ の場合は元の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

選択する要素の数。

### [](#例)例 次の例では、入力配列の最初の 2 個の要素の値を含む配列を出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- take(users, 2) ``` #### [](#出力)出力 ```json [ "Mariano", "Leandro" ] ``` ## [](#take2)take(array: Null, n: Any): Null `take`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # take ## [](#take1)take(array: Array, n: Number): Array 最初の ​`n`​ 個の要素を選択します。​`n <= 0`​ の場合は空の配列を返し、​`n > sizeOf(array)`​ の場合は元の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

選択する要素の数。

### [](#例)例 次の例では、入力配列の最初の 2 個の要素の値を含む配列を出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- take(users, 2) ``` #### [](#出力)出力 ```json [ "Mariano", "Leandro" ] ``` ## [](#take2)take(array: Null, n: Any): Null `take`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # take ## [](#take1)take(array: Array, n: Number): Array 最初の ​`n`​ 個の要素を選択します。​`n <= 0`​ の場合は空の配列を返し、​`n > sizeOf(array)`​ の場合は元の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

選択する要素の数。

### [](#例)例 次の例では、入力配列の最初の 2 個の要素の値を含む配列を出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- take(users, 2) ``` #### [](#出力)出力 ```json [ "Mariano", "Leandro" ] ``` ## [](#take2)take(array: Null, n: Any): Null `take`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # take ## [](#take1)take(array: Array, n: Number): Array 最初の ​`n`​ 個の要素を選択します。​`n <= 0`​ の場合は空の配列を返し、​`n > sizeOf(array)`​ の場合は元の配列を返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

n

選択する要素の数。

### [](#例)例 次の例では、入力配列の最初の 2 個の要素の値を含む配列を出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays var users = ["Mariano", "Leandro", "Julian"] output application/json --- take(users, 2) ``` #### [](#出力)出力 ```json [ "Mariano", "Leandro" ] ``` ## [](#take2)take(array: Null, n: Any): Null `take`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # takeWhile ## [](#takewhile1)takeWhile(Array, (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。 条件を満たすすべての要素を選択するには、​`filter`​ 関数を使用します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、配列内の要素を反復処理し、インデックスが ​`<= 1`​ の要素のみを選択し、​`2`​ より大きい要素に達したら要素の選択を停止します。 配列内で ​`2`​ が前にあるため、2 つ目の ​`1`​ は選択されません。この関数は、結果を配列に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,1] --- arr takeWhile $ <= 1 ``` #### [](#出力)出力 ```json [ 0, 1 ] ``` # takeWhile ## [](#takewhile1)takeWhile(Object, (value: Any, key: Key) -> Boolean): Object 条件を満たす場合、オブジェクトからキー - 値ペア選択します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

絞り込むオブジェクト。

​condition

オブジェクトのキー - 値ペアの照合に使用される条件 (式)。

### [](#例)例 次の例では、オブジェクト内のキー - 値ペアを反復処理し、条件を満たす場合は要素を選択します。 結果はオブジェクトに出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json var obj = { "a": 1, "b": 2, "c": 5, "d": 1 } --- obj takeWhile ((value, key) -> value < 3) ``` #### [](#出力)出力 ```json { "a": 1, "b": 2 } ``` # takeWhile ## [](#takewhile1)takeWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。 条件を満たすすべての要素を選択するには、​`filter`​ 関数を使用します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​array

要素の配列。

​condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、配列内の要素を反復処理し、インデックスが ​`<= 1`​ の要素のみを選択し、​`2`​ より大きい要素に達したら要素の選択を停止します。 配列内で ​`2`​ が前にあるため、2 つ目の ​`1`​ は選択されません。この関数は、結果を配列に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,1] --- arr takeWhile $ <= 1 ``` #### [](#出力)出力 ```json [ 0, 1 ] ``` ## [](#takewhile2)takeWhile(array: Null, condition: (item: Nothing) -> Any): Null `takeWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # takeWhile ## [](#takewhile1)takeWhile(obj: Object, condition: (value: Any, key: Key) -> Boolean): Object 条件を満たす場合、オブジェクトからキー - 値ペア選択します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

絞り込むオブジェクト。

​condition

オブジェクトのキー - 値ペアの照合に使用される条件 (式)。

### [](#例)例 次の例では、オブジェクト内のキー - 値ペアを反復処理し、条件を満たす場合は要素を選択します。 結果はオブジェクトに出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json var obj = { "a": 1, "b": 2, "c": 5, "d": 1 } --- obj takeWhile ((value, key) -> value < 3) ``` #### [](#出力)出力 ```json { "a": 1, "b": 2 } ``` # takeWhile ## [](#takewhile1)takeWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。 条件を満たすすべての要素を選択するには、​`filter`​ 関数を使用します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、配列内の要素を反復処理し、インデックスが ​`<= 1`​ の要素のみを選択し、​`2`​ より大きい要素に達したら要素の選択を停止します。配列内で ​`2`​ が前にあるため、2 つ目の ​`1`​ は選択されません。この関数は、結果を配列に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,1] --- arr takeWhile $ <= 1 ``` #### [](#出力)出力 ```json [ 0, 1 ] ``` ## [](#takewhile2)takeWhile(array: Null, condition: (item: Nothing) -> Any): Null `takeWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # takeWhile ## [](#takewhile1)takeWhile(obj: Object, condition: (value: Any, key: Key) -> Boolean): Object 条件を満たす場合、オブジェクトからキー - 値ペア選択します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

絞り込むオブジェクト。

condition

オブジェクトのキー - 値ペアの照合に使用される条件 (式)。

### [](#例)例 次の例では、オブジェクト内のキー - 値ペアを反復処理し、条件を満たす場合は要素を選択します。 結果はオブジェクトに出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json var obj = { "a": 1, "b": 2, "c": 5, "d": 1 } --- obj takeWhile ((value, key) -> value < 3) ``` #### [](#出力)出力 ```json { "a": 1, "b": 2 } ``` # takeWhile ## [](#takewhile1)takeWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。 条件を満たすすべての要素を選択するには、​`filter`​ 関数を使用します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、配列内の要素を反復処理し、インデックスが ​`<= 1`​ の要素のみを選択し、​`2`​ より大きい要素に達したら要素の選択を停止します。配列内で ​`2`​ が前にあるため、2 つ目の ​`1`​ は選択されません。この関数は、結果を配列に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,1] --- arr takeWhile $ <= 1 ``` #### [](#出力)出力 ```json [ 0, 1 ] ``` ## [](#takewhile2)takeWhile(array: Null, condition: (item: Nothing) -> Any): Null `takeWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # takeWhile ## [](#takewhile1)takeWhile(obj: Object, condition: (value: Any, key: Key) -> Boolean): Object 条件を満たす場合、オブジェクトからキー - 値ペア選択します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

絞り込むオブジェクト。

condition

オブジェクトのキー - 値ペアの照合に使用される条件 (式)。

### [](#例)例 次の例では、オブジェクト内のキー - 値ペアを反復処理し、条件を満たす場合は要素を選択します。 結果はオブジェクトに出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json var obj = { "a": 1, "b": 2, "c": 5, "d": 1 } --- obj takeWhile ((value, key) -> value < 3) ``` #### [](#出力)出力 ```json { "a": 1, "b": 2 } ``` # takeWhile ## [](#takewhile1)takeWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。 条件を満たすすべての要素を選択するには、​`filter`​ 関数を使用します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、配列内の要素を反復処理し、インデックスが ​`<= 1`​ の要素のみを選択し、​`2`​ より大きい要素に達したら要素の選択を停止します。配列内で ​`2`​ が前にあるため、2 つ目の ​`1`​ は選択されません。この関数は、結果を配列に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,1] --- arr takeWhile $ <= 1 ``` #### [](#出力)出力 ```json [ 0, 1 ] ``` ## [](#takewhile2)takeWhile(array: Null, condition: (item: Nothing) -> Any): Null `takeWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # takeWhile ## [](#takewhile1)takeWhile(obj: Object, condition: (value: Any, key: Key) -> Boolean): Object 条件を満たす場合、オブジェクトからキー - 値ペア選択します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

絞り込むオブジェクト。

condition

オブジェクトのキー - 値ペアの照合に使用される条件 (式)。

### [](#例)例 次の例では、オブジェクト内のキー - 値ペアを反復処理し、条件を満たす場合は要素を選択します。 結果はオブジェクトに出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json var obj = { "a": 1, "b": 2, "c": 5, "d": 1 } --- obj takeWhile ((value, key) -> value < 3) ``` #### [](#出力)出力 ```json { "a": 1, "b": 2 } ``` # takeWhile ## [](#takewhile1)takeWhile(array: Array, condition: (item: T) -> Boolean): Array 条件を満たす場合に要素を配列から選択しますが、条件を満たさない要素に達したら選択プロセスを停止します。 条件を満たすすべての要素を選択するには、​`filter`​ 関数を使用します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

array

要素の配列。

condition

配列の要素の照合に使用される条件 (式)。

### [](#例)例 次の例では、配列内の要素を反復処理し、インデックスが ​`<= 1`​ の要素のみを選択し、​`2`​ より大きい要素に達したら要素の選択を停止します。配列内で ​`2`​ が前にあるため、2 つ目の ​`1`​ は選択されません。この関数は、結果を配列に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Arrays output application/json var arr = [0,1,2,1] --- arr takeWhile $ <= 1 ``` #### [](#出力)出力 ```json [ 0, 1 ] ``` ## [](#takewhile2)takeWhile(array: Null, condition: (item: Nothing) -> Any): Null `takeWhile`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # takeWhile ## [](#takewhile1)takeWhile(obj: Object, condition: (value: Any, key: Key) -> Boolean): Object 条件を満たす場合、オブジェクトからキー - 値ペア選択します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

絞り込むオブジェクト。

condition

オブジェクトのキー - 値ペアの照合に使用される条件 (式)。

### [](#例)例 次の例では、オブジェクト内のキー - 値ペアを反復処理し、条件を満たす場合は要素を選択します。 結果はオブジェクトに出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json var obj = { "a": 1, "b": 2, "c": 5, "d": 1 } --- obj takeWhile ((value, key) -> value < 3) ``` #### [](#出力)出力 ```json { "a": 1, "b": 2 } ``` # tan ## [](#tan1)tan(angle: Number): Number ラジアンの特定の数値から角度の三角法の正接を返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`tan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "tan0": tan(0), "tan13": tan(0.13), "tan-1": tan(-1) } ``` #### [](#出力)出力 ```Json { "tan0": 0.0, "tan13": 0.13073731800446006, "tan-1": -1.5574077246549023 } ``` # tan ## [](#tan1)tan(angle: Number): Number ラジアンの特定の数値から角度の三角法の正接を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`tan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "tan0": tan(0), "tan13": tan(0.13), "tan-1": tan(-1) } ``` #### [](#出力)出力 ```Json { "tan0": 0.0, "tan13": 0.13073731800446006, "tan-1": -1.5574077246549023 } ``` # tan ## [](#tan1)tan(angle: Number): Number ラジアンの特定の数値から角度の三角法の正接を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`tan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "tan0": tan(0), "tan13": tan(0.13), "tan-1": tan(-1) } ``` #### [](#出力)出力 ```Json { "tan0": 0.0, "tan13": 0.13073731800446006, "tan-1": -1.5574077246549023 } ``` # tan ## [](#tan1)tan(angle: Number): Number ラジアンの特定の数値から角度の三角法の正接を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`tan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "tan0": tan(0), "tan13": tan(0.13), "tan-1": tan(-1) } ``` #### [](#出力)出力 ```Json { "tan0": 0.0, "tan13": 0.13073731800446006, "tan-1": -1.5574077246549023 } ``` # tan ## [](#tan1)tan(angle: Number): Number ラジアンの特定の数値から角度の三角法の正接を返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angle

角度のラジアンの数値。

### [](#例)例 次の例では、さまざまな入力での ​`tan`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "tan0": tan(0), "tan13": tan(0.13), "tan-1": tan(-1) } ``` #### [](#出力)出力 ```Json { "tan0": 0.0, "tan13": 0.13073731800446006, "tan-1": -1.5574077246549023 } ``` # then ## [](#then1)then(value: Null, callback: (previousResult: Nothing) -> Any): Null `then`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ ## [](#then2)then(previous: T, callback: (result: T) -> R): R この関数は、前の式から返された値が ​`null`​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​previous

前の式の値。

​callback

結果が ​null​ でない場合に ​previous​ の結果を処理するコールバック。

### [](#例)例 次の例では、​`then`​ を使用して前の式の結果を連結してその処理を続行する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "chainResult": ["mariano", "de Achaval"] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)), "referenceResult" : ["mariano", "de Achaval"] map ((item, index) -> upper(item)) then { name: $[0], lastName: $[1], length: sizeOf($) }, "onNullReturnNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) } ``` #### [](#出力)出力 ```Json { "chainResult": 17, "referenceResult": { "name": "MARIANO", "lastName": "DE ACHAVAL", "length": 2 }, "onNullReturnNull": null } ``` # then ## [](#then1)then(value: Null, callback: (previousResult: Nothing) -> Any): Null `then`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#then2)then(previous: T, callback: (result: T) -> R): R この関数は、前の式から返された値が ​`null`​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

結果が ​null​ でない場合に ​previous​ の結果を処理するコールバック。

### [](#例)例 次の例では、​`then`​ を使用して前の式の結果を連結してその処理を続行する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "chainResult": ["mariano", "de Achaval"] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)), "referenceResult" : ["mariano", "de Achaval"] map ((item, index) -> upper(item)) then { name: $[0], lastName: $[1], length: sizeOf($) }, "onNullReturnNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) } ``` #### [](#出力)出力 ```Json { "chainResult": 17, "referenceResult": { "name": "MARIANO", "lastName": "DE ACHAVAL", "length": 2 }, "onNullReturnNull": null } ``` # then ## [](#then1)then(value: Null, callback: (previousResult: Nothing) -> Any): Null `then`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#then2)then(previous: T, callback: (result: T) -> R): R この関数は、前の式から返された値が ​`null`​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

結果が ​null​ でない場合に ​previous​ の結果を処理するコールバック。

### [](#例)例 次の例では、​`then`​ を使用して前の式の結果を連結してその処理を続行する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "chainResult": ["mariano", "de Achaval"] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)), "referenceResult" : ["mariano", "de Achaval"] map ((item, index) -> upper(item)) then { name: $[0], lastName: $[1], length: sizeOf($) }, "onNullReturnNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) } ``` #### [](#出力)出力 ```Json { "chainResult": 17, "referenceResult": { "name": "MARIANO", "lastName": "DE ACHAVAL", "length": 2 }, "onNullReturnNull": null } ``` # then ## [](#then1)then(value: Null, callback: (previousResult: Nothing) -> Any): Null `then`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#then2)then(previous: T, callback: (result: T) -> R): R この関数は、前の式から返された値が ​`null`​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

結果が ​null​ でない場合に ​previous​ の結果を処理するコールバック。

### [](#例)例 次の例では、​`then`​ を使用して前の式の結果を連結してその処理を続行する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "chainResult": ["mariano", "de Achaval"] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)), "referenceResult" : ["mariano", "de Achaval"] map ((item, index) -> upper(item)) then { name: $[0], lastName: $[1], length: sizeOf($) }, "onNullReturnNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) } ``` #### [](#出力)出力 ```Json { "chainResult": 17, "referenceResult": { "name": "MARIANO", "lastName": "DE ACHAVAL", "length": 2 }, "onNullReturnNull": null } ``` # then ## [](#then1)then(value: Null, callback: (previousResult: Nothing) -> Any): Null `then`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ ## [](#then2)then(previous: T, callback: (result: T) -> R): R この関数は、前の式から返された値が ​`null`​ でない場合のみ前の式から返された値を次 (コールバック) に渡すパイプとして機能します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

previous

前の式の値。

callback

結果が ​null​ でない場合に ​previous​ の結果を処理するコールバック。

### [](#例)例 次の例では、​`then`​ を使用して前の式の結果を連結してその処理を続行する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "chainResult": ["mariano", "de Achaval"] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)), "referenceResult" : ["mariano", "de Achaval"] map ((item, index) -> upper(item)) then { name: $[0], lastName: $[1], length: sizeOf($) }, "onNullReturnNull": [] reduce ((item, accumulator) -> item ++ accumulator) then ((result) -> sizeOf(result)) } ``` #### [](#出力)出力 ```Json { "chainResult": 17, "referenceResult": { "name": "MARIANO", "lastName": "DE ACHAVAL", "length": 2 }, "onNullReturnNull": null } ``` # time ## [](#time1)time(() -> T): TimeMeasurement 入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​`TimeMeasurement`​ オブジェクトと関数の結果を返します。 ### [](#パラメーター)パラメーター
名前 説明

​valueToMeasure

​time​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数と ​`sum`​ 関数 (ヘッダーで定義) を渡し、結果を ​`TimeMeasurement`​ オブジェクトで返します。 ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) fun myFunction2() = sum([1,2,3,4]) --- { testing: [ dw::util::Timer::time(() -> myFunction()), dw::util::Timer::time(() -> myFunction2()) ] } ``` #### [](#出力)出力 ```XML { "testing": [ { "start": "2018-10-05T19:23:01.49Z", "result": "My result", "end": "2018-10-05T19:23:01.591Z" }, { "start": "2018-10-05T19:23:01.591Z", "result": 10, "end": "2018-10-05T19:23:01.591Z" } ] } ``` # time ## [](#time1)time(parts: TimeFactory): Time `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`Time`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​parts

​hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値と、​timezone​ 項目の ​TimeZone​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。​timezone​ は有効な ​TimeZone​ 値である必要があります (​|-03:00|​ など)。名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​Time​ 値として並び替えられます (​10:10:10-03:00​ など)。入力項目は ​TimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`Time`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newTime: time({ hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00|}) } ``` #### [](#出力)出力 ```Json { "newTime": "12:30:40-03:00" } ``` # time ## [](#time1)time(valueToMeasure: () -> T): TimeMeasurement 入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​`TimeMeasurement`​ オブジェクトと関数の結果を返します。 ### [](#パラメーター)パラメーター
名前 説明

​valueToMeasure

​time​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数と ​`sum`​ 関数 (ヘッダーで定義) を渡し、結果を ​`TimeMeasurement`​ オブジェクトで返します。 ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) fun myFunction2() = sum([1,2,3,4]) --- { testing: [ dw::util::Timer::time(() -> myFunction()), dw::util::Timer::time(() -> myFunction2()) ] } ``` #### [](#出力)出力 ```XML { "testing": [ { "start": "2018-10-05T19:23:01.49Z", "result": "My result", "end": "2018-10-05T19:23:01.591Z" }, { "start": "2018-10-05T19:23:01.591Z", "result": 10, "end": "2018-10-05T19:23:01.591Z" } ] } ``` # time ## [](#time1)time(parts: TimeFactory): Time `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`Time`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値と、​timezone​ 項目の ​TimeZone​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。​timezone​ は有効な ​TimeZone​ 値である必要があります (​|-03:00|​ など)。名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​Time​ 値として並び替えられます (​10:10:10-03:00​ など)。入力項目は ​TimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`Time`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newTime: time({ hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00| }) } ``` #### [](#出力)出力 ```Json { "newTime": "12:30:40-03:00" } ``` # time ## [](#time1)time(valueToMeasure: () -> T): TimeMeasurement 入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​`TimeMeasurement`​ オブジェクトと関数の結果を返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

time​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数と ​`sum`​ 関数 (ヘッダーで定義) を渡し、結果を ​`TimeMeasurement`​ オブジェクトで返します。 ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) fun myFunction2() = sum([1,2,3,4]) --- { testing: [ dw::util::Timer::time(() -> myFunction()), dw::util::Timer::time(() -> myFunction2()) ] } ``` #### [](#出力)出力 ```XML { "testing": [ { "start": "2018-10-05T19:23:01.49Z", "result": "My result", "end": "2018-10-05T19:23:01.591Z" }, { "start": "2018-10-05T19:23:01.591Z", "result": 10, "end": "2018-10-05T19:23:01.591Z" } ] } ``` # time ## [](#time1)time(parts: TimeFactory): Time `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`Time`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値と、​timezone​ 項目の ​TimeZone​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。​timezone​ は有効な ​TimeZone​ 値である必要があります (​|-03:00|​ など)。名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​Time​ 値として並び替えられます (​10:10:10-03:00​ など)。入力項目は ​TimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`Time`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newTime: time({ hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00| }) } ``` #### [](#出力)出力 ```Json { "newTime": "12:30:40-03:00" } ``` # time ## [](#time1)time(valueToMeasure: () -> T): TimeMeasurement 入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​`TimeMeasurement`​ オブジェクトと関数の結果を返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

time​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数と ​`sum`​ 関数 (ヘッダーで定義) を渡し、結果を ​`TimeMeasurement`​ オブジェクトで返します。 ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) fun myFunction2() = sum([1,2,3,4]) --- { testing: [ dw::util::Timer::time(() -> myFunction()), dw::util::Timer::time(() -> myFunction2()) ] } ``` #### [](#出力)出力 ```XML { "testing": [ { "start": "2018-10-05T19:23:01.49Z", "result": "My result", "end": "2018-10-05T19:23:01.591Z" }, { "start": "2018-10-05T19:23:01.591Z", "result": 10, "end": "2018-10-05T19:23:01.591Z" } ] } ``` # time ## [](#time1)time(parts: TimeFactory): Time `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`Time`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値と、​timezone​ 項目の ​TimeZone​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。​timezone​ は有効な ​TimeZone​ 値である必要があります (​|-03:00|​ など)。名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​Time​ 値として並び替えられます (​10:10:10-03:00​ など)。入力項目は ​TimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`Time`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newTime: time({ hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00| }) } ``` #### [](#出力)出力 ```Json { "newTime": "12:30:40-03:00" } ``` # time ## [](#time1)time(valueToMeasure: () -> T): TimeMeasurement 入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​`TimeMeasurement`​ オブジェクトと関数の結果を返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

time​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数と ​`sum`​ 関数 (ヘッダーで定義) を渡し、結果を ​`TimeMeasurement`​ オブジェクトで返します。 ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) fun myFunction2() = sum([1,2,3,4]) --- { testing: [ dw::util::Timer::time(() -> myFunction()), dw::util::Timer::time(() -> myFunction2()) ] } ``` #### [](#出力)出力 ```XML { "testing": [ { "start": "2018-10-05T19:23:01.49Z", "result": "My result", "end": "2018-10-05T19:23:01.591Z" }, { "start": "2018-10-05T19:23:01.591Z", "result": 10, "end": "2018-10-05T19:23:01.591Z" } ] } ``` # time ## [](#time1)time(parts: TimeFactory): Time `hour`​ 項目、​`minutes`​ 項目、​`seconds`​ 項目、​`timezone`​ 項目について指定された値から ​`Time`​ 値を作成します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

parts

hour​ 項目、​minutes​ 項目、​seconds​ 項目の ​Number​ 値と、​timezone​ 項目の ​TimeZone​ 値。有効な値は、​hour​ 項目では 0 ~ 23、​minutes​ 項目では 0 ~ 59、​seconds​ 項目では 0 ~ 59 (59.99 などの小数を含む) です。​timezone​ は有効な ​TimeZone​ 値である必要があります (​|-03:00|​ など)。名前-値のペアは任意の順序で指定できますが、出力はデフォルトの ​Time​ 値として並び替えられます (​10:10:10-03:00​ など)。入力項目は ​TimeFactory​ 型の一部です。

### [](#例)例 次の例では、​`Time`​ 型の値を作成する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- { newTime: time({ hour: 12, minutes: 30, seconds: 40 , timeZone: |-03:00| }) } ``` #### [](#出力)出力 ```Json { "newTime": "12:30:40-03:00" } ``` # time ## [](#time1)time(valueToMeasure: () -> T): TimeMeasurement 入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​`TimeMeasurement`​ オブジェクトと関数の結果を返します。 ### [](#パラメーター)パラメーター
名前 説明

valueToMeasure

time​ に渡す関数。

### [](#例)例 次の例では、​`wait`​ 関数と ​`sum`​ 関数 (ヘッダーで定義) を渡し、結果を ​`TimeMeasurement`​ オブジェクトで返します。 ```Dataweave %dw 2.0 output application/json fun myFunction() = dw::Runtime::wait("My result",100) fun myFunction2() = sum([1,2,3,4]) --- { testing: [ dw::util::Timer::time(() -> myFunction()), dw::util::Timer::time(() -> myFunction2()) ] } ``` #### [](#出力)出力 ```XML { "testing": [ { "start": "2018-10-05T19:23:01.49Z", "result": "My result", "end": "2018-10-05T19:23:01.591Z" }, { "start": "2018-10-05T19:23:01.591Z", "result": 10, "end": "2018-10-05T19:23:01.591Z" } ] } ``` # Timer (dw::util::Timer) これはユーティリティモジュールです。 このモジュールは Mule Runtime に含まれています。使用するには、DataWeave コードにインポートする必要があります。たとえば、スクリプトのヘッダーに行 ​`import * from dw::util::Timer`​ を追加します。 ## [](#関数)関数
名前 説明

​currentMilliseconds

現在の時刻をミリ秒単位で返します。

​duration

入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。

​time

入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​TimeMeasurement​ オブジェクトと関数の結果を返します。

​toMilliseconds

指定された日時のミリ秒での表現を返します。

## [](#型)型 - [Timer の型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-timer-types) # Timer (dw::util::Timer) このユーティリティモジュールには、時間を測定するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Timer`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​currentMilliseconds

現在の時刻をミリ秒単位で返します。

​duration

入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。

​time

入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​TimeMeasurement​ オブジェクトと関数の結果を返します。

​toMilliseconds

指定された日時のミリ秒での表現を返します。

## [](#型)型 - [Timer の型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-timer-types) # Timer (dw::util::Timer) このユーティリティモジュールには、時間を測定するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Timer`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

currentMilliseconds

現在の時刻をミリ秒単位で返します。

duration

入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。

time

入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​TimeMeasurement​ オブジェクトと関数の結果を返します。

toMilliseconds

指定された日時のミリ秒での表現を返します。

## [](#型)型 - [Timer の型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-timer-types) # Timer (dw::util::Timer) このユーティリティモジュールには、時間を測定するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Timer`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

currentMilliseconds

現在の時刻をミリ秒単位で返します。

duration

入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。

time

入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​TimeMeasurement​ オブジェクトと関数の結果を返します。

toMilliseconds

指定された日時のミリ秒での表現を返します。

## [](#型)型 - [Timer の型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-timer-types) # Timer (dw::util::Timer) このユーティリティモジュールには、時間を測定するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Timer`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

currentMilliseconds

現在の時刻をミリ秒単位で返します。

duration

入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。

time

入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​TimeMeasurement​ オブジェクトと関数の結果を返します。

toMilliseconds

指定された日時のミリ秒での表現を返します。

## [](#型)型 - [Timer の型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-timer-types) # Timer (dw::util::Timer) このユーティリティモジュールには、時間を測定するための関数が含まれています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Timer`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

currentMilliseconds

現在の時刻をミリ秒単位で返します。

duration

入力関数を実行し、その関数の実行時間 (ミリ秒) と結果を含むオブジェクトを返します。

time

入力関数を実行し、その関数の実行の開始時刻と終了時刻が含まれる ​TimeMeasurement​ オブジェクトと関数の結果を返します。

toMilliseconds

指定された日時のミリ秒での表現を返します。

## [](#型)型 - [Timer の型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-timer-types) # Timer 型 (dw::util::Timer)
型 定義 説明

DurationMeasurement

​type DurationMeasurement = { time: Number, result: T }

関数コールの実行時間と結果が含まれる戻り値のデータ型。

TimeMeasurement

​type TimeMeasurement = { start: DateTime, result: T, end: DateTime }

関数コールの開始時刻、終了時刻、結果が含まれる戻り値のデータ型。

# Timer 型 (dw::util::Timer)
型 定義 説明

DurationMeasurement

​type DurationMeasurement = { time: Number, result: T }

関数コールの実行時間と結果が含まれる戻り値のデータ型。

TimeMeasurement

​type TimeMeasurement = { start: DateTime, result: T, end: DateTime }

関数コールの開始時刻、終了時刻、結果が含まれる戻り値のデータ型。

# Timer 型 (dw::util::Timer)
型 定義 説明

DurationMeasurement

type DurationMeasurement = { time: Number, result: T }

関数コールの実行時間と結果が含まれる戻り値のデータ型。

TimeMeasurement

type TimeMeasurement = { start: DateTime, result: T, end: DateTime }

関数コールの開始時刻、終了時刻、結果が含まれる戻り値のデータ型。

# Timer 型 (dw::util::Timer)
型 定義 説明

DurationMeasurement

type DurationMeasurement = { time: Number, result: T }

関数コールの実行時間と結果が含まれる戻り値のデータ型。

TimeMeasurement

type TimeMeasurement = { start: DateTime, result: T, end: DateTime }

関数コールの開始時刻、終了時刻、結果が含まれる戻り値のデータ型。

# Timer 型 (dw::util::Timer)
型 定義 説明

DurationMeasurement

type DurationMeasurement = { time: Number, result: T }

関数コールの実行時間と結果が含まれる戻り値のデータ型。

TimeMeasurement

type TimeMeasurement = { start: DateTime, result: T, end: DateTime }

関数コールの開始時刻、終了時刻、結果が含まれる戻り値のデータ型。

# Timer 型 (dw::util::Timer)
型 定義 説明

DurationMeasurement

type DurationMeasurement = { time: Number, result: T }

関数コールの実行時間と結果が含まれる戻り値のデータ型。

TimeMeasurement

type TimeMeasurement = { start: DateTime, result: T, end: DateTime }

関数コールの開始時刻、終了時刻、結果が含まれる戻り値のデータ型。

# to ## [](#to1)to(Number, Number): Range 指定された境界の範囲を返します。 上限は境界を含みます。 ### [](#パラメーター)パラメーター
名前 説明

​from

範囲を開始する数値 (​Number​ 型)。出力には ​from​ 値が含まれます。

​to

範囲を終了する数値 (​Number​ 型)。出力には ​to​ 値が含まれます。

### [](#例)例 次の例では、1 ~ 10 の範囲の数値をリストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "myRange": 1 to 10 } ``` #### [](#出力)出力 ```JSON { "myRange": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` ### [](#例-2)例 DataWeave は文字列を文字の配列として処理します。次の例では、​`to`​ を文字列に適用します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Hello World!" output application/json --- { indices2to6 : myVar[2 to 6], indicesFromEnd : myVar[6 to -1], reversal : myVar[11 to -0] } ``` #### [](#出力-2)出力 ```JSON { "indices2to6": "llo W", "indicesFromEnd": "World!", "reversal": "!dlroW olleH" } ``` # to ## [](#to1)to(from: Number, to: Number): Range 指定された境界の範囲を返します。 上限は境界を含みます。 ### [](#パラメーター)パラメーター
名前 説明

​from

範囲を開始する ​Number​ 値。出力には ​from​ 値が含まれます。

​to

範囲を終了する ​Number​ 値。出力には ​from​ 値が含まれます。

### [](#例)例 次の例では、1 ~ 10 の範囲の数値をリストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "myRange": 1 to 10 } ``` #### [](#出力)出力 ```JSON { "myRange": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` ### [](#例-2)例 DataWeave は文字列を文字の配列として処理します。次の例では、​`to`​ を文字列に適用します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Hello World!" output application/json --- { indices2to6 : myVar[2 to 6], indicesFromEnd : myVar[6 to -1], reversal : myVar[11 to -0] } ``` #### [](#出力-2)出力 ```JSON { "indices2to6": "llo W", "indicesFromEnd": "World!", "reversal": "!dlroW olleH" } ``` # to ## [](#to1)to(from: Number, to: Number): Range 指定された境界の範囲を返します。 上限は境界を含みます。 ### [](#パラメーター)パラメーター
名前 説明

from

範囲を開始する ​Number​ 値。出力には ​from​ 値が含まれます。

to

範囲を終了する ​Number​ 値。出力には ​from​ 値が含まれます。

### [](#例)例 次の例では、1 ~ 10 の範囲の数値をリストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "myRange": 1 to 10 } ``` #### [](#出力)出力 ```JSON { "myRange": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` ### [](#例-2)例 DataWeave は文字列を文字の配列として処理します。次の例では、​`to`​ を文字列に適用します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Hello World!" output application/json --- { indices2to6 : myVar[2 to 6], indicesFromEnd : myVar[6 to -1], reversal : myVar[11 to -0] } ``` #### [](#出力-2)出力 ```JSON { "indices2to6": "llo W", "indicesFromEnd": "World!", "reversal": "!dlroW olleH" } ``` # to ## [](#to1)to(from: Number, to: Number): Range 指定された境界の範囲を返します。 上限は境界を含みます。 ### [](#パラメーター)パラメーター
名前 説明

from

範囲を開始する ​Number​ 値。出力には ​from​ 値が含まれます。

to

範囲を終了する ​Number​ 値。出力には ​from​ 値が含まれます。

### [](#例)例 次の例では、1 ~ 10 の範囲の数値をリストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "myRange": 1 to 10 } ``` #### [](#出力)出力 ```JSON { "myRange": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` ### [](#例-2)例 DataWeave は文字列を文字の配列として処理します。次の例では、​`to`​ を文字列に適用します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Hello World!" output application/json --- { indices2to6 : myVar[2 to 6], indicesFromEnd : myVar[6 to -1], reversal : myVar[11 to -0] } ``` #### [](#出力-2)出力 ```JSON { "indices2to6": "llo W", "indicesFromEnd": "World!", "reversal": "!dlroW olleH" } ``` # to ## [](#to1)to(from: Number, to: Number): Range 指定された境界の範囲を返します。 上限は境界を含みます。 ### [](#パラメーター)パラメーター
名前 説明

from

範囲を開始する ​Number​ 値。出力には ​from​ 値が含まれます。

to

範囲を終了する ​Number​ 値。出力には ​from​ 値が含まれます。

### [](#例)例 次の例では、1 ~ 10 の範囲の数値をリストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "myRange": 1 to 10 } ``` #### [](#出力)出力 ```JSON { "myRange": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` ### [](#例-2)例 DataWeave は文字列を文字の配列として処理します。次の例では、​`to`​ を文字列に適用します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Hello World!" output application/json --- { indices2to6 : myVar[2 to 6], indicesFromEnd : myVar[6 to -1], reversal : myVar[11 to -0] } ``` #### [](#出力-2)出力 ```JSON { "indices2to6": "llo W", "indicesFromEnd": "World!", "reversal": "!dlroW olleH" } ``` # to ## [](#to1)to(from: Number, to: Number): Range 指定された境界の範囲を返します。 上限は境界を含みます。 ### [](#パラメーター)パラメーター
名前 説明

from

範囲を開始する ​Number​ 値。出力には ​from​ 値が含まれます。

to

範囲を終了する ​Number​ 値。出力には ​from​ 値が含まれます。

### [](#例)例 次の例では、1 ~ 10 の範囲の数値をリストします。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "myRange": 1 to 10 } ``` #### [](#出力)出力 ```JSON { "myRange": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` ### [](#例-2)例 DataWeave は文字列を文字の配列として処理します。次の例では、​`to`​ を文字列に適用します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 var myVar = "Hello World!" output application/json --- { indices2to6 : myVar[2 to 6], indicesFromEnd : myVar[6 to -1], reversal : myVar[11 to -0] } ``` #### [](#出力-2)出力 ```JSON { "indices2to6": "llo W", "indicesFromEnd": "World!", "reversal": "!dlroW olleH" } ``` # toArray ## [](#toarray1)toArray(@StreamCapable text: String): Array `String`​ 値を文字の ​`Array`​ に分割します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

文字の ​Array​ に変換する ​String​ 値 (​Array<String>​ 型)。

### [](#例)例 次の例では、さまざまな入力での ​`toArray`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json indent=false --- { a: toArray(""), b: toArray("hola") } ``` #### [](#出力)出力 ```Json {"a": [],"b": ["h","o","l","a"]} ``` # toArray ## [](#toarray1)toArray(@StreamCapable text: String): Array `String`​ 値を文字の ​`Array`​ に分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の ​Array​ に変換する ​String​ 値 (​Array<String>​ 型)。

### [](#例)例 次の例では、さまざまな入力での ​`toArray`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json indent=false --- { a: toArray(""), b: toArray("hola") } ``` #### [](#出力)出力 ```Json {"a": [],"b": ["h","o","l","a"]} ``` # toArray ## [](#toarray1)toArray(@StreamCapable text: String): Array `String`​ 値を文字の ​`Array`​ に分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の ​Array​ に変換する ​String​ 値 (​Array<String>​ 型)。

### [](#例)例 次の例では、さまざまな入力での ​`toArray`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json indent=false --- { a: toArray(""), b: toArray("hola") } ``` #### [](#出力)出力 ```Json {"a": [],"b": ["h","o","l","a"]} ``` # toArray ## [](#toarray1)toArray(@StreamCapable text: String): Array `String`​ 値を文字の ​`Array`​ に分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の ​Array​ に変換する ​String​ 値 (​Array<String>​ 型)。

### [](#例)例 次の例では、さまざまな入力での ​`toArray`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json indent=false --- { a: toArray(""), b: toArray("hola") } ``` #### [](#出力)出力 ```Json {"a": [],"b": ["h","o","l","a"]} ``` # toArray ## [](#toarray1)toArray(@StreamCapable text: String): Array `String`​ 値を文字の ​`Array`​ に分割します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

文字の ​Array​ に変換する ​String​ 値 (​Array<String>​ 型)。

### [](#例)例 次の例では、さまざまな入力での ​`toArray`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json indent=false --- { a: toArray(""), b: toArray("hola") } ``` #### [](#出力)出力 ```Json {"a": [],"b": ["h","o","l","a"]} ``` # toBase64 ## [](#tobase641)toBase64(Binary): String バイナリ値を Base64 文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

変換するバイナリ値。

### [](#toBase64-example)例 次の例では、バイナリ値を、Base64 でエンコードされた文字列に変換します。この場合、バイナリ値は画像を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto import toBase64 from dw::core::Binaries var emailChecksum = Crypto::MD5("achaval@gmail.com" as Binary) var image = readUrl(log("https://www.gravatar.com/avatar/$(emailChecksum)"), "application/octet-stream") output application/json --- toBase64(image) ``` #### [](#出力)出力 次の例では、Base64 でエンコードされた文字列を出力します。結果の文字列は、読みやすくするために短縮されています。 ```JSON "/9j/4AAQSkZJRgABAQEAYABgAAD//..." ``` # toBase64 ## [](#tobase641)toBase64(content: Binary): String バイナリ値を Base64 文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

変換するバイナリ値。

### [](#toBase64-example)例 次の例では、バイナリ値を、Base64 でエンコードされた文字列に変換します。この場合、バイナリ値は画像を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto import toBase64 from dw::core::Binaries var emailChecksum = Crypto::MD5("achaval@gmail.com" as Binary) var image = readUrl(log("https://www.gravatar.com/avatar/$(emailChecksum)"), "application/octet-stream") output application/json --- toBase64(image) ``` #### [](#出力)出力 次の例では、Base64 でエンコードされた文字列を出力します。結果の文字列は、読みやすくするために短縮されています。 ```JSON "/9j/4AAQSkZJRgABAQEAYABgAAD//..." ``` # toBase64 ## [](#tobase641)toBase64(content: Binary): String バイナリ値を Base64 文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換するバイナリ値。

### [](#toBase64-example)例 次の例では、バイナリ値を、Base64 でエンコードされた文字列に変換します。この場合、バイナリ値は画像を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto import toBase64 from dw::core::Binaries var emailChecksum = Crypto::MD5("achaval@gmail.com" as Binary) var image = readUrl(log("https://www.gravatar.com/avatar/$(emailChecksum)"), "application/octet-stream") output application/json --- toBase64(image) ``` #### [](#出力)出力 次の例では、Base64 でエンコードされた文字列を出力します。結果の文字列は、読みやすくするために短縮されています。 ```JSON "/9j/4AAQSkZJRgABAQEAYABgAAD//..." ``` # toBase64 ## [](#tobase641)toBase64(content: Binary): String バイナリ値を Base64 文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換するバイナリ値。

### [](#toBase64-example)例 次の例では、バイナリ値を、Base64 でエンコードされた文字列に変換します。この場合、バイナリ値は画像を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto import toBase64 from dw::core::Binaries var emailChecksum = Crypto::MD5("achaval@gmail.com" as Binary) var image = readUrl(log("https://www.gravatar.com/avatar/$(emailChecksum)"), "application/octet-stream") output application/json --- toBase64(image) ``` #### [](#出力)出力 次の例では、Base64 でエンコードされた文字列を出力します。結果の文字列は、読みやすくするために短縮されています。 ```JSON "/9j/4AAQSkZJRgABAQEAYABgAAD//..." ``` # toBase64 ## [](#tobase641)toBase64(content: Binary): String バイナリ値を Base64 文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換するバイナリ値。

### [](#toBase64-example)例 次の例では、バイナリ値を、Base64 でエンコードされた文字列に変換します。この場合、バイナリ値は画像を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto import toBase64 from dw::core::Binaries var emailChecksum = Crypto::MD5("achaval@gmail.com" as Binary) var image = readUrl(log("https://www.gravatar.com/avatar/$(emailChecksum)"), "application/octet-stream") output application/json --- toBase64(image) ``` #### [](#出力)出力 次の例では、Base64 でエンコードされた文字列を出力します。結果の文字列は、読みやすくするために短縮されています。 ```JSON "/9j/4AAQSkZJRgABAQEAYABgAAD//..." ``` # toBase64 ## [](#tobase641)toBase64(content: Binary): String バイナリ値を Base64 文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換するバイナリ値。

### [](#例)例 次の例では、バイナリ値を、Base64 でエンコードされた文字列に変換します。この場合、バイナリ値は画像を表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::Crypto import toBase64 from dw::core::Binaries var emailChecksum = Crypto::MD5("achaval@gmail.com" as Binary) var image = readUrl(log("https://www.gravatar.com/avatar/$(emailChecksum)"), "application/octet-stream") output application/json --- toBase64(image) ``` #### [](#出力)出力 次の例では、Base64 でエンコードされた文字列を出力します。結果の文字列は、読みやすくするために短縮されています。 ```JSON "/9j/4AAQSkZJRgABAQEAYABgAAD//..." ``` # toBinary ## [](#tobinary1)toBinary(Number): String 10 進数を 2 進数に変換します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toBinary from dw::core::Numbers output application/json --- { a: toBinary(-2), b: toBinary(100000000000000000000000000000000000000000000000000000000000000), c: toBinary(0), d: toBinary(null), e: toBinary(2), } ``` #### [](#出力)出力 ```JSON { "a": "-10", "b": "11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000", "c": "0", "d": null, "e": "10" } ``` ## [](#tobinary2)toBinary(Null): Null `toBinary`​ を null 値に使用できるようにするヘルパー関数。 # toBinary ## [](#tobinary1)toBinary(str: String, encoding: String): Binary 指定されたエンコーディングを使用して ​`String`​ 値を ​`Binary`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Binary​ 値に変換する ​String​ 値。

​encoding

​String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { 'UTF-16Ex': toBinary("DW", "UTF-16"), 'utf16Ex': toBinary("DW", "utf16"), 'UnicodeBigEx': toBinary("DW", "UnicodeBig"), 'UTF-32Ex': toBinary("DW", "UTF-32"), 'UTF_32Ex': toBinary("DW", "UTF_32") } ``` #### [](#出力)出力 ```Json { "UTF-16Ex": "/v8ARABX" as Binary {base: "64"}, utf16Ex: "/v8ARABX" as Binary {base: "64"}, UnicodeBigEx: "/v8ARABX" as Binary {base: "64"}, "UTF-32Ex": "AAAARAAAAFc=" as Binary {base: "64"}, UTF_32Ex: "AAAARAAAAFc=" as Binary {base: "64"} } ``` # toBinary ## [](#tobinary1)toBinary(number: Number): String 10 進数を 2 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toBinary from dw::core::Numbers output application/json --- { a: toBinary(-2), b: toBinary(100000000000000000000000000000000000000000000000000000000000000), c: toBinary(0), d: toBinary(null), e: toBinary(2), } ``` #### [](#出力)出力 ```JSON { "a": "-10", "b": "11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000", "c": "0", "d": null, "e": "10" } ``` ## [](#tobinary2)toBinary(number: Null): Null `toBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # toBinary ## [](#tobinary1)toBinary(str: String, encoding: String): Binary 指定されたエンコーディングを使用して ​`String`​ 値を ​`Binary`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Binary​ 値に変換する ​String​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { 'UTF-16Ex': toBinary("DW", "UTF-16"), 'utf16Ex': toBinary("DW", "utf16"), 'UnicodeBigEx': toBinary("DW", "UnicodeBig"), 'UTF-32Ex': toBinary("DW", "UTF-32"), 'UTF_32Ex': toBinary("DW", "UTF_32") } ``` #### [](#出力)出力 ```Json { "UTF-16Ex": "/v8ARABX" as Binary {base: "64"}, utf16Ex: "/v8ARABX" as Binary {base: "64"}, UnicodeBigEx: "/v8ARABX" as Binary {base: "64"}, "UTF-32Ex": "AAAARAAAAFc=" as Binary {base: "64"}, UTF_32Ex: "AAAARAAAAFc=" as Binary {base: "64"} } ``` # toBinary ## [](#tobinary1)toBinary(number: Number): String 10 進数を 2 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toBinary from dw::core::Numbers output application/json --- { a: toBinary(-2), b: toBinary(100000000000000000000000000000000000000000000000000000000000000), c: toBinary(0), d: toBinary(null), e: toBinary(2), } ``` #### [](#出力)出力 ```JSON { "a": "-10", "b": "11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000", "c": "0", "d": null, "e": "10" } ``` ## [](#tobinary2)toBinary(number: Null): Null `toBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toBinary ## [](#tobinary1)toBinary(str: String, encoding: String): Binary 指定されたエンコーディングを使用して ​`String`​ 値を ​`Binary`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Binary​ 値に変換する ​String​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { 'UTF-16Ex': toBinary("DW", "UTF-16"), 'utf16Ex': toBinary("DW", "utf16"), 'UnicodeBigEx': toBinary("DW", "UnicodeBig"), 'UTF-32Ex': toBinary("DW", "UTF-32"), 'UTF_32Ex': toBinary("DW", "UTF_32") } ``` #### [](#出力)出力 ```Json { "UTF-16Ex": "/v8ARABX" as Binary {base: "64"}, utf16Ex: "/v8ARABX" as Binary {base: "64"}, UnicodeBigEx: "/v8ARABX" as Binary {base: "64"}, "UTF-32Ex": "AAAARAAAAFc=" as Binary {base: "64"}, UTF_32Ex: "AAAARAAAAFc=" as Binary {base: "64"} } ``` # toBinary ## [](#tobinary1)toBinary(number: Number): String 10 進数を 2 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toBinary from dw::core::Numbers output application/json --- { a: toBinary(-2), b: toBinary(100000000000000000000000000000000000000000000000000000000000000), c: toBinary(0), d: toBinary(null), e: toBinary(2), } ``` #### [](#出力)出力 ```JSON { "a": "-10", "b": "11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000", "c": "0", "d": null, "e": "10" } ``` ## [](#tobinary2)toBinary(number: Null): Null `toBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toBinary ## [](#tobinary1)toBinary(str: String, encoding: String): Binary 指定されたエンコーディングを使用して ​`String`​ 値を ​`Binary`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Binary​ 値に変換する ​String​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { 'UTF-16Ex': toBinary("DW", "UTF-16"), 'utf16Ex': toBinary("DW", "utf16"), 'UnicodeBigEx': toBinary("DW", "UnicodeBig"), 'UTF-32Ex': toBinary("DW", "UTF-32"), 'UTF_32Ex': toBinary("DW", "UTF_32") } ``` #### [](#出力)出力 ```Json { "UTF-16Ex": "/v8ARABX" as Binary {base: "64"}, utf16Ex: "/v8ARABX" as Binary {base: "64"}, UnicodeBigEx: "/v8ARABX" as Binary {base: "64"}, "UTF-32Ex": "AAAARAAAAFc=" as Binary {base: "64"}, UTF_32Ex: "AAAARAAAAFc=" as Binary {base: "64"} } ``` # toBinary ## [](#tobinary1)toBinary(number: Number): String 10 進数を 2 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toBinary from dw::core::Numbers output application/json --- { a: toBinary(-2), b: toBinary(100000000000000000000000000000000000000000000000000000000000000), c: toBinary(0), d: toBinary(null), e: toBinary(2), } ``` #### [](#出力)出力 ```JSON { "a": "-10", "b": "11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000", "c": "0", "d": null, "e": "10" } ``` ## [](#tobinary2)toBinary(number: Null): Null `toBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toBinary ## [](#tobinary1)toBinary(str: String, encoding: String): Binary 指定されたエンコーディングを使用して ​`String`​ 値を ​`Binary`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Binary​ 値に変換する ​String​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { 'UTF-16Ex': toBinary("DW", "UTF-16"), 'utf16Ex': toBinary("DW", "utf16"), 'UnicodeBigEx': toBinary("DW", "UnicodeBig"), 'UTF-32Ex': toBinary("DW", "UTF-32"), 'UTF_32Ex': toBinary("DW", "UTF_32") } ``` #### [](#出力)出力 ```Json { "UTF-16Ex": "/v8ARABX" as Binary {base: "64"}, utf16Ex: "/v8ARABX" as Binary {base: "64"}, UnicodeBigEx: "/v8ARABX" as Binary {base: "64"}, "UTF-32Ex": "AAAARAAAAFc=" as Binary {base: "64"}, UTF_32Ex: "AAAARAAAAFc=" as Binary {base: "64"} } ``` # toBinary ## [](#tobinary1)toBinary(number: Number): String 10 進数を 2 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toBinary`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toBinary from dw::core::Numbers output application/json --- { a: toBinary(-2), b: toBinary(100000000000000000000000000000000000000000000000000000000000000), c: toBinary(0), d: toBinary(null), e: toBinary(2), } ``` #### [](#出力)出力 ```JSON { "a": "-10", "b": "11111000111010111010110100101011100001001110000011010101100010111101001011100000100010011000011101100101101001111101111010110010010100110010100100000000000000000000000000000000000000000000000000000000000000", "c": "0", "d": null, "e": "10" } ``` ## [](#tobinary2)toBinary(number: Null): Null `toBinary`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toBoolean ## [](#toboolean1)toBoolean(str: String): Boolean `String`​ 値を ​`Boolean`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Boolean​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toBoolean`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toBoolean("true"), b: toBoolean("false"), c: toBoolean("FALSE"), d: toBoolean("TrUe") } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": false, "d": true } ``` # toBoolean ## [](#toboolean1)toBoolean(str: String): Boolean `String`​ 値を ​`Boolean`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Boolean​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toBoolean`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toBoolean("true"), b: toBoolean("false"), c: toBoolean("FALSE"), d: toBoolean("TrUe") } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": false, "d": true } ``` # toBoolean ## [](#toboolean1)toBoolean(str: String): Boolean `String`​ 値を ​`Boolean`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Boolean​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toBoolean`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toBoolean("true"), b: toBoolean("false"), c: toBoolean("FALSE"), d: toBoolean("TrUe") } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": false, "d": true } ``` # toBoolean ## [](#toboolean1)toBoolean(str: String): Boolean `String`​ 値を ​`Boolean`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Boolean​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toBoolean`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toBoolean("true"), b: toBoolean("false"), c: toBoolean("FALSE"), d: toBoolean("TrUe") } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": false, "d": true } ``` # toBoolean ## [](#toboolean1)toBoolean(str: String): Boolean `String`​ 値を ​`Boolean`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Boolean​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toBoolean`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toBoolean("true"), b: toBoolean("false"), c: toBoolean("FALSE"), d: toBoolean("TrUe") } ``` #### [](#出力)出力 ```Json { "a": true, "b": false, "c": false, "d": true } ``` # toDate ## [](#todate1)toDate(str: String, format: String | Null = null, locale: String | Null = null): Date `String`​ 値を ​`Date`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Date​ 値に変換する ​String​ 値。

​format

​Date​ 値に対して使用する書式設定。 ​null​ 値は ​Date​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03​ などの ​Date​ 値の形式は ​uuuu-MM-dd​ となります。

​locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toDate`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDate("2015-10-01"), b: toDate("2003/10/01","uuuu/MM/dd") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01|, b: |2003-10-01| as Date {format: "uuuu/MM/dd"} } ``` # toDate ## [](#todate1)toDate(str: String, format: String | Null = null, locale: String | Null = null): Date `String`​ 値を ​`Date`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Date​ 値に変換する ​String​ 値。

format

Date​ 値に対して使用する書式設定。 ​null​ 値は ​Date​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03​ などの ​Date​ 値の形式は ​uuuu-MM-dd​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toDate`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDate("2015-10-01"), b: toDate("2003/10/01","uuuu/MM/dd") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01|, b: |2003-10-01| as Date {format: "uuuu/MM/dd"} } ``` # toDate ## [](#todate1)toDate(str: String, format: String | Null = null, locale: String | Null = null): Date `String`​ 値を ​`Date`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Date​ 値に変換する ​String​ 値。

format

Date​ 値に対して使用する書式設定。 ​null​ 値は ​Date​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03​ などの ​Date​ 値の形式は ​uuuu-MM-dd​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toDate`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDate("2015-10-01"), b: toDate("2003/10/01","uuuu/MM/dd") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01|, b: |2003-10-01| as Date {format: "uuuu/MM/dd"} } ``` # toDate ## [](#todate1)toDate(str: String, format: String | Null = null, locale: String | Null = null): Date `String`​ 値を ​`Date`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Date​ 値に変換する ​String​ 値。

format

Date​ 値に対して使用する書式設定。 ​null​ 値は ​Date​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03​ などの ​Date​ 値の形式は ​uuuu-MM-dd​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toDate`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDate("2015-10-01"), b: toDate("2003/10/01","uuuu/MM/dd") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01|, b: |2003-10-01| as Date {format: "uuuu/MM/dd"} } ``` # toDate ## [](#todate1)toDate(str: String, formatters: Array): Date 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`Date`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Date​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

Date​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toDate`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toDate("2023-28-03", [{format: "yyyy/MM/dd"}, {format: "yyyy-dd-MM", locale: "en_US"}]), b: try(() -> toDate("2023-28-03", [{format: "yyyy/MM/dd"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |2023-03-28| as Date {format: "yyyy-dd-MM", locale: "en_US"}, b: "Could not find a valid formatter for '2023-28-03'" } ``` ## [](#todate2)toDate(str: String, format: String | Null = null, locale: String | Null = null): Date `String`​ 値を ​`Date`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

str

Date​ 値に変換する ​String​ 値。

format

Date​ 値に対して使用する書式設定。 ​null​ 値は ​Date​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03​ などの ​Date​ 値の形式は ​uuuu-MM-dd​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toDate`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDate("2015-10-01"), b: toDate("2003/10/01","uuuu/MM/dd") } ``` #### [](#出力-2)出力 ```DataWeave { a: |2015-10-01|, b: |2003-10-01| as Date {format: "uuuu/MM/dd"} } ``` # toDateOrNull ## [](#todateornull1)toDateOrNull(str: String, formatters: Array): Date | Null 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`Date`​ 値に変換します。 指定した値に一致する​`フォーマッター`​がない場合、関数は ​`null`​ 値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Date​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

Date​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toDateOrNull`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateOrNull("2023-28-03", [{format: "yyyy/MM/dd"}, {format: "yyyy-dd-MM", locale: "en_US"}]), b: toDateOrNull("2023-28-03", [{format: "yyyy/MM/dd"}]) } ``` #### [](#出力)出力 ```DataWeave { a: |2023-03-28| as Date {format: "yyyy-dd-MM", locale: "en_US"}, b: null } ``` # toDateTime ## [](#todatetime1)toDateTime(number: Number, unit: MillisOrSecs | Null = null): DateTime `milliseconds`​ または ​`seconds`​ を単位として使用して ​`Number`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

​DateTime​ 値に変換する ​Number​ 値。

​unit

変換に使用する単位: "milliseconds"​ または ​"seconds"​。​unit​ 項目の ​null​ 値のデフォルトは ​"seconds"​ です。

### [](#例)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { fromEpoch: toDateTime(1443743879), fromMillis: toDateTime(1443743879000, "milliseconds") } ``` #### [](#出力)出力 ```DataWeave { fromEpoch: |2015-10-01T23:57:59Z|, fromMillis: |2015-10-01T23:57:59Z| as DateTime {unit: "milliseconds"} } ``` ## [](#todatetime2)toDateTime(str: String, format: String | Null = null, locale: String | Null = null): DateTime `String`​ 値を ​`DateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​str

​DateTime​ 値に変換する ​String​ 値。

​format

​DateTime​ 値に対して使用する書式設定。 ​null​ 値は ​DateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000+01:00​ などの ​DateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ssz​ となります。

​locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateTime("2015-10-01T23:57:59Z"), b: toDateTime("2003-10-01 23:57:59Z","uuuu-MM-dd HH:mm:ssz") } ``` #### [](#出力-2)出力 ```DataWeave { a: |2015-10-01T23:57:59Z|, b: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"} } ``` # toDateTime ## [](#todatetime1)toDateTime(str: String, formatters: Array): DateTime 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

DateTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

DateTime​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toDateTime("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}, {format: "uuuu-MM-dd HH:mm:ssz"}]), b: try(() -> toDateTime("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"}, b: "Could not find a valid formatter for '2003-10-01 23:57:59Z'" } ``` ## [](#todatetime2)toDateTime(number: Number, unit: MillisOrSecs | Null = null): DateTime `milliseconds`​ または ​`seconds`​ を単位として使用して ​`Number`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

number

DateTime​ 値に変換する ​Number​ 値。

unit

変換に使用する単位: "milliseconds"​ または ​"seconds"​。​unit​ 項目の ​null​ 値のデフォルトは ​"seconds"​ です。

### [](#例-2)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { fromEpoch: toDateTime(1443743879), fromMillis: toDateTime(1443743879000, "milliseconds") } ``` #### [](#出力-2)出力 ```DataWeave { fromEpoch: |2015-10-01T23:57:59Z|, fromMillis: |2015-10-01T23:57:59Z| as DateTime {unit: "milliseconds"} } ``` ## [](#todatetime3)toDateTime(str: String, format: String | Null = null, locale: String | Null = null): DateTime `String`​ 値を ​`DateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

str

DateTime​ 値に変換する ​String​ 値。

format

DateTime​ 値に対して使用する書式設定。 ​null​ 値は ​DateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000+01:00​ などの ​DateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ssz​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateTime("2015-10-01T23:57:59Z"), b: toDateTime("2003-10-01 23:57:59Z","uuuu-MM-dd HH:mm:ssz") } ``` #### [](#出力-3)出力 ```DataWeave { a: |2015-10-01T23:57:59Z|, b: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"} } ``` # toDateTime ## [](#todatetime1)toDateTime(str: String, formatters: Array): DateTime 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

DateTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

DateTime​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toDateTime("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}, {format: "uuuu-MM-dd HH:mm:ssz"}]), b: try(() -> toDateTime("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"}, b: "Could not find a valid formatter for '2003-10-01 23:57:59Z'" } ``` ## [](#todatetime2)toDateTime(number: Number, unit: MillisOrSecs | Null = null): DateTime `milliseconds`​ または ​`seconds`​ を単位として使用して ​`Number`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

number

DateTime​ 値に変換する ​Number​ 値。

unit

変換に使用する単位: "milliseconds"​ または ​"seconds"​。​unit​ 項目の ​null​ 値のデフォルトは ​"seconds"​ です。

### [](#例-2)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { fromEpoch: toDateTime(1443743879), fromMillis: toDateTime(1443743879000, "milliseconds") } ``` #### [](#出力-2)出力 ```DataWeave { fromEpoch: |2015-10-01T23:57:59Z|, fromMillis: |2015-10-01T23:57:59Z| as DateTime {unit: "milliseconds"} } ``` ## [](#todatetime3)toDateTime(str: String, format: String | Null = null, locale: String | Null = null): DateTime `String`​ 値を ​`DateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

str

DateTime​ 値に変換する ​String​ 値。

format

DateTime​ 値に対して使用する書式設定。 ​null​ 値は ​DateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000+01:00​ などの ​DateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ssz​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateTime("2015-10-01T23:57:59Z"), b: toDateTime("2003-10-01 23:57:59Z","uuuu-MM-dd HH:mm:ssz") } ``` #### [](#出力-3)出力 ```DataWeave { a: |2015-10-01T23:57:59Z|, b: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"} } ``` # toDateTime ## [](#todatetime1)toDateTime(number: Number, unit: MillisOrSecs | Null = null): DateTime `milliseconds`​ または ​`seconds`​ を単位として使用して ​`Number`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

DateTime​ 値に変換する ​Number​ 値。

unit

変換に使用する単位: "milliseconds"​ または ​"seconds"​。​unit​ 項目の ​null​ 値のデフォルトは ​"seconds"​ です。

### [](#例)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { fromEpoch: toDateTime(1443743879), fromMillis: toDateTime(1443743879000, "milliseconds") } ``` #### [](#出力)出力 ```DataWeave { fromEpoch: |2015-10-01T23:57:59Z|, fromMillis: |2015-10-01T23:57:59Z| as DateTime {unit: "milliseconds"} } ``` ## [](#todatetime2)toDateTime(str: String, format: String | Null = null, locale: String | Null = null): DateTime `String`​ 値を ​`DateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

str

DateTime​ 値に変換する ​String​ 値。

format

DateTime​ 値に対して使用する書式設定。 ​null​ 値は ​DateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000+01:00​ などの ​DateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ssz​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateTime("2015-10-01T23:57:59Z"), b: toDateTime("2003-10-01 23:57:59Z","uuuu-MM-dd HH:mm:ssz") } ``` #### [](#出力-2)出力 ```DataWeave { a: |2015-10-01T23:57:59Z|, b: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"} } ``` # toDateTime ## [](#todatetime1)toDateTime(str: String, formatters: Array): DateTime 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

DateTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

DateTime​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toDateTime("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}, {format: "uuuu-MM-dd HH:mm:ssz"}]), b: try(() -> toDateTime("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"}, b: "Could not find a valid formatter for '2003-10-01 23:57:59Z'" } ``` ## [](#todatetime2)toDateTime(number: Number, unit: MillisOrSecs | Null = null): DateTime `milliseconds`​ または ​`seconds`​ を単位として使用して ​`Number`​ 値を ​`DateTime`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

number

DateTime​ 値に変換する ​Number​ 値。

unit

変換に使用する単位: "milliseconds"​ または ​"seconds"​。​unit​ 項目の ​null​ 値のデフォルトは ​"seconds"​ です。

### [](#例-2)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { fromEpoch: toDateTime(1443743879), fromMillis: toDateTime(1443743879000, "milliseconds") } ``` #### [](#出力-2)出力 ```DataWeave { fromEpoch: |2015-10-01T23:57:59Z|, fromMillis: |2015-10-01T23:57:59Z| as DateTime {unit: "milliseconds"} } ``` ## [](#todatetime3)toDateTime(str: String, format: String | Null = null, locale: String | Null = null): DateTime `String`​ 値を ​`DateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

str

DateTime​ 値に変換する ​String​ 値。

format

DateTime​ 値に対して使用する書式設定。 ​null​ 値は ​DateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000+01:00​ などの ​DateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ssz​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateTime("2015-10-01T23:57:59Z"), b: toDateTime("2003-10-01 23:57:59Z","uuuu-MM-dd HH:mm:ssz") } ``` #### [](#出力-3)出力 ```DataWeave { a: |2015-10-01T23:57:59Z|, b: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"} } ``` # toDateTimeOrNull ## [](#todatetimeornull1)toDateTimeOrNull(str: String, formatters: Array): DateTime | Null 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`DateTime`​ 値に変換します。 指定した値に一致する​`フォーマッター`​がない場合、関数は ​`null`​ 値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

DateTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

DateTime​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toDateTimeOrNull`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toDateTimeOrNull("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}, {format: "uuuu-MM-dd HH:mm:ssz"}]), b: toDateTimeOrNull("2003-10-01 23:57:59Z", [{format: "uuuu/MM/dd HH:mm:ssz"}]) } ``` #### [](#出力)出力 ```DataWeave { a: |2003-10-01T23:57:59Z| as DateTime {format: "uuuu-MM-dd HH:mm:ssz"}, b: null } ``` # today ## [](#today1)today(): Date 今日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#例)例 次の例では、​`today`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- today() ``` #### [](#出力)出力 ```Json "2021-05-15" ``` # today ## [](#today1)today(): Date 今日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`today`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- today() ``` #### [](#出力)出力 ```Json "2021-05-15" ``` # today ## [](#today1)today(): Date 今日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`today`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- today() ``` #### [](#出力)出力 ```Json "2021-05-15" ``` # today ## [](#today1)today(): Date 今日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`today`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- today() ``` #### [](#出力)出力 ```Json "2021-05-15" ``` # today ## [](#today1)today(): Date 今日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`today`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- today() ``` #### [](#出力)出力 ```Json "2021-05-15" ``` # toDegrees ## [](#todegrees1)toDegrees(angrad: Number): Number ラジアンで測定される角度をほぼ同じ度数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angrad

度数に変換するラジアン数。

### [](#例)例 次の例では、さまざまな入力での ​`toDegrees`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toDegrees0.17": toDegrees(0.174), "toDegrees0": toDegrees(0), "toDegrees-20": toDegrees(-0.20) } ``` #### [](#出力)出力 ```Json { "toDegrees0.17": 9.969465635276323832571267395889251, "toDegrees0": 0E+19, "toDegrees-20": -11.45915590261646417536927286883822 } ``` # toDegrees ## [](#todegrees1)toDegrees(angrad: Number): Number ラジアンで測定される角度をほぼ同じ度数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angrad

度数に変換するラジアン数。

### [](#例)例 次の例では、さまざまな入力での ​`toDegrees`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toDegrees0.17": toDegrees(0.174), "toDegrees0": toDegrees(0), "toDegrees-20": toDegrees(-0.20) } ``` #### [](#出力)出力 ```Json { "toDegrees0.17": 9.969465635276323832571267395889251, "toDegrees0": 0E+19, "toDegrees-20": -11.45915590261646417536927286883822 } ``` # toDegrees ## [](#todegrees1)toDegrees(angrad: Number): Number ラジアンで測定される角度をほぼ同じ度数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angrad

度数に変換するラジアン数。

### [](#例)例 次の例では、さまざまな入力での ​`toDegrees`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toDegrees0.17": toDegrees(0.174), "toDegrees0": toDegrees(0), "toDegrees-20": toDegrees(-0.20) } ``` #### [](#出力)出力 ```Json { "toDegrees0.17": 9.969465635276323832571267395889251, "toDegrees0": 0E+19, "toDegrees-20": -11.45915590261646417536927286883822 } ``` # toDegrees ## [](#todegrees1)toDegrees(angrad: Number): Number ラジアンで測定される角度をほぼ同じ度数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angrad

度数に変換するラジアン数。

### [](#例)例 次の例では、さまざまな入力での ​`toDegrees`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toDegrees0.17": toDegrees(0.174), "toDegrees0": toDegrees(0), "toDegrees-20": toDegrees(-0.20) } ``` #### [](#出力)出力 ```Json { "toDegrees0.17": 9.969465635276323832571267395889251, "toDegrees0": 0E+19, "toDegrees-20": -11.45915590261646417536927286883822 } ``` # toDegrees ## [](#todegrees1)toDegrees(angrad: Number): Number ラジアンで測定される角度をほぼ同じ度数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angrad

度数に変換するラジアン数。

### [](#例)例 次の例では、さまざまな入力での ​`toDegrees`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toDegrees0.17": toDegrees(0.174), "toDegrees0": toDegrees(0), "toDegrees-20": toDegrees(-0.20) } ``` #### [](#出力)出力 ```Json { "toDegrees0.17": 9.969465635276323832571267395889251, "toDegrees0": 0E+19, "toDegrees-20": -11.45915590261646417536927286883822 } ``` # toHex ## [](#tohex1)toHex(Binary): String バイナリ値を 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

変換する ​Binary​ 値。

### [](#例)例 次の例では、バイナリバージョンの「Mule」 (変数 ​`myBinary`​ で定義) を 16 進値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json var myBinary = "Mule" as Binary var testType = typeOf(myBinary) --- { "binaryToHex" : toHex(myBinary) } ``` #### [](#出力)出力 ```JSON { "binaryToHex": "4D756C65" } ``` # toHex ## [](#tohex1)toHex(Number): String 10 進数を 16 進数に変換します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toHex`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toHex from dw::core::Numbers output application/json --- { a: toHex(-1), b: toHex(100000000000000000000000000000000000000000000000000000000000000), c: toHex(0), d: toHex(null), e: toHex(15), } ``` #### [](#出力)出力 ```JSON { "a": "-1", "b": "3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000", "c": "0", "d": null, "e": "f" } ``` ## [](#tohex2)toHex(Null): Null `toHex`​ を null 値に使用できるようにするヘルパー関数。 # toHex ## [](#tohex1)toHex(content: Binary): String バイナリ値を 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

​content

変換する ​Binary​ 値。

### [](#例)例 次の例では、バイナリバージョンの「Mule」 (変数 ​`myBinary`​ で定義) を 16 進値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json var myBinary = "Mule" as Binary var testType = typeOf(myBinary) --- { "binaryToHex" : toHex(myBinary) } ``` #### [](#出力)出力 ```JSON { "binaryToHex": "4D756C65" } ``` # toHex ## [](#tohex1)toHex(number: Number): String 10 進数を 16 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toHex`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toHex from dw::core::Numbers output application/json --- { a: toHex(-1), b: toHex(100000000000000000000000000000000000000000000000000000000000000), c: toHex(0), d: toHex(null), e: toHex(15), } ``` #### [](#出力)出力 ```JSON { "a": "-1", "b": "3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000", "c": "0", "d": null, "e": "f" } ``` ## [](#tohex2)toHex(number: Null): Null `toHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # toHex ## [](#tohex1)toHex(content: Binary): String バイナリ値を 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換する ​Binary​ 値。

### [](#例)例 次の例では、バイナリバージョンの「Mule」 (変数 ​`myBinary`​ で定義) を 16 進値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json var myBinary = "Mule" as Binary var testType = typeOf(myBinary) --- { "binaryToHex" : toHex(myBinary) } ``` #### [](#出力)出力 ```JSON { "binaryToHex": "4D756C65" } ``` # toHex ## [](#tohex1)toHex(number: Number): String 10 進数を 16 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toHex`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toHex from dw::core::Numbers output application/json --- { a: toHex(-1), b: toHex(100000000000000000000000000000000000000000000000000000000000000), c: toHex(0), d: toHex(null), e: toHex(15), } ``` #### [](#出力)出力 ```JSON { "a": "-1", "b": "3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000", "c": "0", "d": null, "e": "f" } ``` ## [](#tohex2)toHex(number: Null): Null `toHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toHex ## [](#tohex1)toHex(content: Binary): String バイナリ値を 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換する ​Binary​ 値。

### [](#例)例 次の例では、バイナリバージョンの「Mule」 (変数 ​`myBinary`​ で定義) を 16 進値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json var myBinary = "Mule" as Binary var testType = typeOf(myBinary) --- { "binaryToHex" : toHex(myBinary) } ``` #### [](#出力)出力 ```JSON { "binaryToHex": "4D756C65" } ``` # toHex ## [](#tohex1)toHex(number: Number): String 10 進数を 16 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toHex`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toHex from dw::core::Numbers output application/json --- { a: toHex(-1), b: toHex(100000000000000000000000000000000000000000000000000000000000000), c: toHex(0), d: toHex(null), e: toHex(15), } ``` #### [](#出力)出力 ```JSON { "a": "-1", "b": "3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000", "c": "0", "d": null, "e": "f" } ``` ## [](#tohex2)toHex(number: Null): Null `toHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toHex ## [](#tohex1)toHex(content: Binary): String バイナリ値を 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換する ​Binary​ 値。

### [](#例)例 次の例では、バイナリバージョンの「Mule」 (変数 ​`myBinary`​ で定義) を 16 進値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json var myBinary = "Mule" as Binary var testType = typeOf(myBinary) --- { "binaryToHex" : toHex(myBinary) } ``` #### [](#出力)出力 ```JSON { "binaryToHex": "4D756C65" } ``` # toHex ## [](#tohex1)toHex(number: Number): String 10 進数を 16 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toHex`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toHex from dw::core::Numbers output application/json --- { a: toHex(-1), b: toHex(100000000000000000000000000000000000000000000000000000000000000), c: toHex(0), d: toHex(null), e: toHex(15), } ``` #### [](#出力)出力 ```JSON { "a": "-1", "b": "3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000", "c": "0", "d": null, "e": "f" } ``` ## [](#tohex2)toHex(number: Null): Null `toHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toHex ## [](#tohex1)toHex(content: Binary): String バイナリ値を 16 進文字列に変換します。 ### [](#パラメーター)パラメーター
名前 説明

content

変換する ​Binary​ 値。

### [](#例)例 次の例では、バイナリバージョンの「Mule」 (変数 ​`myBinary`​ で定義) を 16 進値に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json var myBinary = "Mule" as Binary var testType = typeOf(myBinary) --- { "binaryToHex" : toHex(myBinary) } ``` #### [](#出力)出力 ```JSON { "binaryToHex": "4D756C65" } ``` # toHex ## [](#tohex1)toHex(number: Number): String 10 進数を 16 進数に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

入力数値。

### [](#例)例 次の例では、さまざまな入力での ​`toHex`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toHex from dw::core::Numbers output application/json --- { a: toHex(-1), b: toHex(100000000000000000000000000000000000000000000000000000000000000), c: toHex(0), d: toHex(null), e: toHex(15), } ``` #### [](#出力)出力 ```JSON { "a": "-1", "b": "3e3aeb4ae1383562f4b82261d969f7ac94ca4000000000000000", "c": "0", "d": null, "e": "f" } ``` ## [](#tohex2)toHex(number: Null): Null `toHex`​ を null 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # toLocalDateTime ## [](#tolocaldatetime1)toLocalDateTime(str: String, format: String | Null = null, locale: String | Null = null): LocalDateTime `String`​ 値を ​`LocalDateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​LocalDateTime​ 値に変換する ​String​ 値。

​format

​LocalDateTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalDateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000​ などの ​LocalDateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ss​ となります。

​locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalDateTime("2015-10-01T23:57:59"), b: toLocalDateTime("2003-10-01 23:57:59","uuuu-MM-dd HH:mm:ss") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01T23:57:59|, b: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"} } ``` # toLocalDateTime ## [](#tolocaldatetime1)toLocalDateTime(str: String, format: String | Null = null, locale: String | Null = null): LocalDateTime `String`​ 値を ​`LocalDateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

LocalDateTime​ 値に変換する ​String​ 値。

format

LocalDateTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalDateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000​ などの ​LocalDateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ss​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalDateTime("2015-10-01T23:57:59"), b: toLocalDateTime("2003-10-01 23:57:59","uuuu-MM-dd HH:mm:ss") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01T23:57:59|, b: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"} } ``` # toLocalDateTime ## [](#tolocaldatetime1)toLocalDateTime(str: String, format: String | Null = null, locale: String | Null = null): LocalDateTime `String`​ 値を ​`LocalDateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

LocalDateTime​ 値に変換する ​String​ 値。

format

LocalDateTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalDateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000​ などの ​LocalDateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ss​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalDateTime("2015-10-01T23:57:59"), b: toLocalDateTime("2003-10-01 23:57:59","uuuu-MM-dd HH:mm:ss") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01T23:57:59|, b: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"} } ``` # toLocalDateTime ## [](#tolocaldatetime1)toLocalDateTime(str: String, format: String | Null = null, locale: String | Null = null): LocalDateTime `String`​ 値を ​`LocalDateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

LocalDateTime​ 値に変換する ​String​ 値。

format

LocalDateTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalDateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000​ などの ​LocalDateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ss​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalDateTime("2015-10-01T23:57:59"), b: toLocalDateTime("2003-10-01 23:57:59","uuuu-MM-dd HH:mm:ss") } ``` #### [](#出力)出力 ```DataWeave { a: |2015-10-01T23:57:59|, b: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"} } ``` # toLocalDateTime ## [](#tolocaldatetime1)toLocalDateTime(str: String, formatters: Array): LocalDateTime 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`LocalDateTime`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

LocalDateTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

LocalDateTime​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toLocalDateTime("2003-10-01 23:57:59", [{format: "uuuu/MM/dd HH:mm:ss"}, {format: "uuuu-MM-dd HH:mm:ss"}]), b: try(() -> toLocalDateTime("2003-10-01 23:57:59", [{format: "uuuu/MM/dd HH:mm:ss"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"}, b: "Could not find a valid formatter for '2003-10-01 23:57:59'" } ``` ## [](#tolocaldatetime2)toLocalDateTime(str: String, format: String | Null = null, locale: String | Null = null): LocalDateTime `String`​ 値を ​`LocalDateTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

str

LocalDateTime​ 値に変換する ​String​ 値。

format

LocalDateTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalDateTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​2011-12-03T10:15:30.000000​ などの ​LocalDateTime​ 値の形式は ​uuuu-MM-dd HH:mm:ss​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toLocalDateTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalDateTime("2015-10-01T23:57:59"), b: toLocalDateTime("2003-10-01 23:57:59","uuuu-MM-dd HH:mm:ss") } ``` #### [](#出力-2)出力 ```DataWeave { a: |2015-10-01T23:57:59|, b: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"} } ``` # toLocalDateTimeOrNull ## [](#tolocaldatetimeornull1)toLocalDateTimeOrNull(str: String, formatters: Array): LocalDateTime | Null 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`LocalDateTime`​ 値に変換します。 指定した値に一致する​`フォーマッター`​がない場合、関数は ​`null`​ 値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

LocalDateTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

LocalDateTime​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalDateTimeOrNull`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalDateTimeOrNull("2003-10-01 23:57:59", [{format: "uuuu/MM/dd HH:mm:ss"}, {format: "uuuu-MM-dd HH:mm:ss"}]), b: toLocalDateTimeOrNull("2003-10-01 23:57:59", [{format: "uuuu/MM/dd HH:mm:ss"}]) } ``` #### [](#出力)出力 ```DataWeave { a: |2003-10-01T23:57:59| as LocalDateTime {format: "uuuu-MM-dd HH:mm:ss"}, b: null } ``` # toLocalTime ## [](#tolocaltime1)toLocalTime(str: String, format: String | Null = null, locale: String | Null = null): LocalTime `String`​ 値を ​`LocalTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​LocalTime​ 値に変換する ​String​ 値。

​format

​LocalTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​22:15:30.000000​ などの ​LocalTime​ 値の形式は ​HH:mm:ss.n​ となります。

​locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalTime`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toLocalTimeEx: toLocalTime("23:57:59"), toLocalTimeEx2: toLocalTime("13:44:12.283","HH:mm:ss.n") } ``` #### [](#出力)出力 ```DataWeave { "toLocalTimeEx": "23:57:59", "toLocalTimeEx2": "13:44:12.283" } ``` # toLocalTime ## [](#tolocaltime1)toLocalTime(str: String, format: String | Null = null, locale: String | Null = null): LocalTime `String`​ 値を ​`LocalTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

LocalTime​ 値に変換する ​String​ 値。

format

LocalTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​22:15:30.000000​ などの ​LocalTime​ 値の形式は ​HH:mm:ss.n​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalTime`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toLocalTimeEx: toLocalTime("23:57:59"), toLocalTimeEx2: toLocalTime("13:44:12.283","HH:mm:ss.n") } ``` #### [](#出力)出力 ```DataWeave { "toLocalTimeEx": "23:57:59", "toLocalTimeEx2": "13:44:12.283" } ``` # toLocalTime ## [](#tolocaltime1)toLocalTime(str: String, format: String | Null = null, locale: String | Null = null): LocalTime `String`​ 値を ​`LocalTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

LocalTime​ 値に変換する ​String​ 値。

format

LocalTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​22:15:30.000000​ などの ​LocalTime​ 値の形式は ​HH:mm:ss.n​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalTime`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toLocalTimeEx: toLocalTime("23:57:59"), toLocalTimeEx2: toLocalTime("13:44:12.283","HH:mm:ss.n") } ``` #### [](#出力)出力 ```DataWeave { "toLocalTimeEx": "23:57:59", "toLocalTimeEx2": "13:44:12.283" } ``` # toLocalTime ## [](#tolocaltime1)toLocalTime(str: String, format: String | Null = null, locale: String | Null = null): LocalTime `String`​ 値を ​`LocalTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

LocalTime​ 値に変換する ​String​ 値。

format

LocalTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​22:15:30.000000​ などの ​LocalTime​ 値の形式は ​HH:mm:ss.n​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalTime`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toLocalTimeEx: toLocalTime("23:57:59"), toLocalTimeEx2: toLocalTime("13:44:12.283","HH:mm:ss.n") } ``` #### [](#出力)出力 ```DataWeave { "toLocalTimeEx": "23:57:59", "toLocalTimeEx2": "13:44:12.283" } ``` # toLocalTime ## [](#tolocaltime1)toLocalTime(str: String, formatters: Array): LocalTime 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`LocalTime`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

LocalTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

LocalTime​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toLocalTime("23:57:59", [{format: "HH:mm:ss.n"}, {format: "HH:mm:ss"}]), b: try(() -> toLocalTime("23:57:59", [{format: "HH:mm:ss.n"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |23:57:59| as LocalTime {format: "HH:mm:ss"}, b: "Could not find a valid formatter for '23:57:59'" } ``` ## [](#tolocaltime2)toLocalTime(str: String, format: String | Null = null, locale: String | Null = null): LocalTime `String`​ 値を ​`LocalTime`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

str

LocalTime​ 値に変換する ​String​ 値。

format

LocalTime​ 値に対して使用する書式設定。 ​null​ 値は ​LocalTime​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​22:15:30.000000​ などの ​LocalTime​ 値の形式は ​HH:mm:ss.n​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toLocalTime`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toLocalTimeEx: toLocalTime("23:57:59"), toLocalTimeEx2: toLocalTime("13:44:12.283","HH:mm:ss.n") } ``` #### [](#出力-2)出力 ```DataWeave { "toLocalTimeEx": "23:57:59", "toLocalTimeEx2": "13:44:12.283" } ``` # toLocalTimeOrNull ## [](#tolocaltimeornull1)toLocalTimeOrNull(str: String, formatters: Array): LocalTime | Null 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`LocalTime`​ 値に変換します。 指定した値に一致する​`フォーマッター`​がない場合、関数は ​`null`​ 値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

LocalTime​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

LocalTime​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toLocalTimeOrNull`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toLocalTimeOrNull("23:57:59", [{format: "HH:mm:ss.n"}, {format: "HH:mm:ss"}]), b: toLocalTimeOrNull("23:57:59", [{format: "HH:mm:ss.n"}]) } ``` #### [](#出力)出力 ```DataWeave { a: |23:57:59| as LocalTime {format: "HH:mm:ss"}, b: null } ``` # toMilliseconds ## [](#tomilliseconds1)toMilliseconds(DateTime): Number 指定された日時のミリ秒での表現を返します。 ### [](#パラメーター)パラメーター
名前 説明

​date

評価する ​DateTime​。

### [](#例)例 次の例では、日時をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "toMilliseconds" : toMilliseconds(|2018-07-23T22:03:04.829Z|) } ``` #### [](#出力)出力 ```XML { "toMilliseconds": 1532383384829 } ``` # toMilliseconds ## [](#tomilliseconds1)toMilliseconds(date: DateTime): Number 指定された日時のミリ秒での表現を返します。 ### [](#パラメーター)パラメーター
名前 説明

​date

評価する ​DateTime​。

### [](#例)例 次の例では、日時をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "toMilliseconds" : toMilliseconds(|2018-07-23T22:03:04.829Z|) } ``` #### [](#出力)出力 ```XML { "toMilliseconds": 1532383384829 } ``` # toMilliseconds ## [](#tomilliseconds1)toMilliseconds(date: DateTime): Number 指定された日時のミリ秒での表現を返します。 ### [](#パラメーター)パラメーター
名前 説明

date

評価する ​DateTime​。

### [](#例)例 次の例では、日時をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "toMilliseconds" : toMilliseconds(|2018-07-23T22:03:04.829Z|) } ``` #### [](#出力)出力 ```XML { "toMilliseconds": 1532383384829 } ``` # toMilliseconds ## [](#tomilliseconds1)toMilliseconds(date: DateTime): Number 指定された日時のミリ秒での表現を返します。 ### [](#パラメーター)パラメーター
名前 説明

date

評価する ​DateTime​。

### [](#例)例 次の例では、日時をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "toMilliseconds" : toMilliseconds(|2018-07-23T22:03:04.829Z|) } ``` #### [](#出力)出力 ```XML { "toMilliseconds": 1532383384829 } ``` # toMilliseconds ## [](#tomilliseconds1)toMilliseconds(date: DateTime): Number 指定された日時のミリ秒での表現を返します。 ### [](#パラメーター)パラメーター
名前 説明

date

評価する ​DateTime​。

### [](#例)例 次の例では、日時をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "toMilliseconds" : toMilliseconds(|2018-07-23T22:03:04.829Z|) } ``` #### [](#出力)出力 ```XML { "toMilliseconds": 1532383384829 } ``` # toMilliseconds ## [](#tomilliseconds1)toMilliseconds(date: DateTime): Number 指定された日時のミリ秒での表現を返します。 ### [](#パラメーター)パラメーター
名前 説明

date

評価する ​DateTime​。

### [](#例)例 次の例では、日時をミリ秒単位で表示します。 #### [](#ソース)ソース ```Dataweave %dw 2.0 import * from dw::util::Timer output application/json --- { "toMilliseconds" : toMilliseconds(|2018-07-23T22:03:04.829Z|) } ``` #### [](#出力)出力 ```XML { "toMilliseconds": 1532383384829 } ``` # tomorrow ## [](#tomorrow1)tomorrow(): Date 明日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#例)例 次の例では、​`tomorrow`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import tomorrow from dw::core::Dates output application/json --- tomorrow() ``` #### [](#出力)出力 ```Json "2021-05-16" ``` # tomorrow ## [](#tomorrow1)tomorrow(): Date 明日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`tomorrow`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import tomorrow from dw::core::Dates output application/json --- tomorrow() ``` #### [](#出力)出力 ```Json "2021-05-16" ``` # tomorrow ## [](#tomorrow1)tomorrow(): Date 明日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`tomorrow`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import tomorrow from dw::core::Dates output application/json --- tomorrow() ``` #### [](#出力)出力 ```Json "2021-05-16" ``` # tomorrow ## [](#tomorrow1)tomorrow(): Date 明日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`tomorrow`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import tomorrow from dw::core::Dates output application/json --- tomorrow() ``` #### [](#出力)出力 ```Json "2021-05-16" ``` # tomorrow ## [](#tomorrow1)tomorrow(): Date 明日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`tomorrow`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import tomorrow from dw::core::Dates output application/json --- tomorrow() ``` #### [](#出力)出力 ```Json "2021-05-16" ``` # toNumber ## [](#tonumber1)toNumber(dateTime: DateTime, unit: MillisOrSecs | Null = null): Number 選択した単位に応じて ​`DateTime`​ 値を秒数またはミリ秒数に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​dateTime

​Number​ 値に変換する ​DateTime​ 値。

​unit

使用する時間の単位 (​"milliseconds"​ または ​"seconds"​)。 ​null​ 値の場合、​"seconds"​ が使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { epoch: toNumber(|2015-10-01T23:57:59Z|), millis: toNumber(|2015-10-01T23:57:59Z|, "milliseconds") } ``` #### [](#出力)出力 ```DataWeave { "epoch": 1443743879, "millis": 1443743879000 } ``` ## [](#tonumber2)toNumber(period: Period, unit: PeriodUnits | Null = null): Number `Period`​ 値を時間数、分数、秒数、ミリ秒数、またはナノ秒数 (​`nanos`​) に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-2)パラメーター
名前 説明

​period

​Number​ 値に変換する ​Period​ 値。

​unit

指定された ​period​ に適用する単位: hours​、​minutes​、​seconds​、​milliseconds​、または ​nanos​。

### [](#例-2)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toSecondsEx1: toNumber(|PT1H10M|, "seconds"), toSecondsEx2: toNumber(|PT1M7S|, "milliseconds") } ``` #### [](#出力-2)出力 ```Json { "toSecondsEx1": 4200, "toSecondsEx2": 67000 } ``` ## [](#tonumber3)toNumber(value: String | Key, format: String | Null = null, locale: String | Null = null): Number `String`​ 値または ​`Key`​ 値を ​`Number`​ 値に変換して、形式とロケールを受け入れる ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター-3)パラメーター
名前 説明

​value

​Number​ 値に変換する ​String​ 値または ​Key​ 値。

​format

​value​ に適用する省略可能な書式設定。 ​format​ は ​10 進数​値および ​10​ 未満の 1 つの整数のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れます。1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他の文字を使用するとエラーが発生します。

​locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var myKey = keysOf({"123" : "myValue"}) output application/json --- { "default": toNumber("1.0"), "withFormat": toNumber("0.005",".00"), "withLocal": toNumber("1,25","#.##","ES"), "withExtraPlaceholders": toNumber("5.55","####.####"), "keyToNumber": toNumber(myKey[0]) } ``` #### [](#出力-3)出力 ```Json { "default": 1.0, "withFormat": 0.005, "withLocal": 1.25, "withExtraPlaceholders": 5.55, "keyToNumber": 123 } ``` # toNumber ## [](#tonumber1)toNumber(str: String, formatters: Array): Number 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`Number`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Number​ 値に変換する ​String​ 値。

formatters

Array<DatesFormatter>

Number​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toNumber("0.005", [{format: "seconds"}, {format: ".00"}]), b: try(() -> toNumber("0.005", [{format: "seconds"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: 0.005 as Number {format: ".00"}, b: "Could not find a valid formatter for '0.005'" } ``` ## [](#tonumber2)toNumber(dateTime: DateTime, unit: MillisOrSecs | Null = null): Number 選択した単位に応じて ​`DateTime`​ 値を秒数またはミリ秒数に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

dateTime

Number​ 値に変換する ​DateTime​ 値。

unit

使用する時間の単位 (​"milliseconds"​ または ​"seconds"​)。​null​ 値の場合、​"seconds"​ が使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { epoch: toNumber(|2015-10-01T23:57:59Z|), millis: toNumber(|2015-10-01T23:57:59Z|, "milliseconds") } ``` #### [](#出力-2)出力 ```DataWeave { "epoch": 1443743879, "millis": 1443743879000 } ``` ## [](#tonumber3)toNumber(period: Period, unit: PeriodUnits | Null = null): Number `Period`​ 値を時間数、分数、秒数、ミリ秒数、またはナノ秒数 (​`nanos`​) に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

period

Number​ 値に変換する ​Period​ 値。

unit

指定された ​period​ に適用する単位: hours​、​minutes​、​seconds​、​milliseconds​、または ​nanos​。

### [](#例-3)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toSecondsEx1: toNumber(|PT1H10M|, "seconds"), toSecondsEx2: toNumber(|PT1M7S|, "milliseconds") } ``` #### [](#出力-3)出力 ```Json { "toSecondsEx1": 4200, "toSecondsEx2": 67000 } ``` ## [](#tonumber4)toNumber(value: String | Key, format: String | Null = null, locale: String | Null = null): Number `String`​ 値または ​`Key`​ 値を ​`Number`​ 値に変換して、形式とロケールを受け入れる ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

value

Number​ 値に変換する ​String​ 値または ​Key​ 値。

format

value​ に適用する省略可能な書式設定。 ​format​ は ​10 進数​値および ​10​ 未満の 1 つの整数のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れます。1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他の文字を使用するとエラーが発生します。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-4)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var myKey = keysOf({"123" : "myValue"}) output application/json --- { "default": toNumber("1.0"), "withFormat": toNumber("0.005",".00"), "withLocal": toNumber("1,25","#.##","ES"), "withExtraPlaceholders": toNumber("5.55","####.####"), "keyToNumber": toNumber(myKey[0]) } ``` #### [](#出力-4)出力 ```Json { "default": 1.0, "withFormat": 0.005, "withLocal": 1.25, "withExtraPlaceholders": 5.55, "keyToNumber": 123 } ``` # toNumber ## [](#tonumber1)toNumber(str: String, formatters: Array): Number 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`Number`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Number​ 値に変換する ​String​ 値。

formatters

Array<DatesFormatter>

Number​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toNumber("0.005", [{format: "seconds"}, {format: ".00"}]), b: try(() -> toNumber("0.005", [{format: "seconds"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: 0.005 as Number {format: ".00"}, b: "Could not find a valid formatter for '0.005'" } ``` ## [](#tonumber2)toNumber(dateTime: DateTime, unit: MillisOrSecs | Null = null): Number 選択した単位に応じて ​`DateTime`​ 値を秒数またはミリ秒数に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

dateTime

Number​ 値に変換する ​DateTime​ 値。

unit

使用する時間の単位 (​"milliseconds"​ または ​"seconds"​)。​null​ 値の場合、​"seconds"​ が使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { epoch: toNumber(|2015-10-01T23:57:59Z|), millis: toNumber(|2015-10-01T23:57:59Z|, "milliseconds") } ``` #### [](#出力-2)出力 ```DataWeave { "epoch": 1443743879, "millis": 1443743879000 } ``` ## [](#tonumber3)toNumber(period: Period, unit: PeriodUnits | Null = null): Number `Period`​ 値を時間数、分数、秒数、ミリ秒数、またはナノ秒数 (​`nanos`​) に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

period

Number​ 値に変換する ​Period​ 値。

unit

指定された ​period​ に適用する単位: hours​、​minutes​、​seconds​、​milliseconds​、または ​nanos​。

### [](#例-3)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toSecondsEx1: toNumber(|PT1H10M|, "seconds"), toSecondsEx2: toNumber(|PT1M7S|, "milliseconds") } ``` #### [](#出力-3)出力 ```Json { "toSecondsEx1": 4200, "toSecondsEx2": 67000 } ``` ## [](#tonumber4)toNumber(value: String | Key, format: String | Null = null, locale: String | Null = null): Number `String`​ 値または ​`Key`​ 値を ​`Number`​ 値に変換して、形式とロケールを受け入れる ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

value

Number​ 値に変換する ​String​ 値または ​Key​ 値。

format

value​ に適用する省略可能な書式設定。 ​format​ は ​10 進数​値および ​10​ 未満の 1 つの整数のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れます。1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他の文字を使用するとエラーが発生します。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-4)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var myKey = keysOf({"123" : "myValue"}) output application/json --- { "default": toNumber("1.0"), "withFormat": toNumber("0.005",".00"), "withLocal": toNumber("1,25","#.##","ES"), "withExtraPlaceholders": toNumber("5.55","####.####"), "keyToNumber": toNumber(myKey[0]) } ``` #### [](#出力-4)出力 ```Json { "default": 1.0, "withFormat": 0.005, "withLocal": 1.25, "withExtraPlaceholders": 5.55, "keyToNumber": 123 } ``` # toNumber ## [](#tonumber1)toNumber(dateTime: DateTime, unit: MillisOrSecs | Null = null): Number 選択した単位に応じて ​`DateTime`​ 値を秒数またはミリ秒数に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

dateTime

Number​ 値に変換する ​DateTime​ 値。

unit

使用する時間の単位 (​"milliseconds"​ または ​"seconds"​)。​null​ 値の場合、​"seconds"​ が使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { epoch: toNumber(|2015-10-01T23:57:59Z|), millis: toNumber(|2015-10-01T23:57:59Z|, "milliseconds") } ``` #### [](#出力)出力 ```DataWeave { "epoch": 1443743879, "millis": 1443743879000 } ``` ## [](#tonumber2)toNumber(period: Period, unit: PeriodUnits | Null = null): Number `Period`​ 値を時間数、分数、秒数、ミリ秒数、またはナノ秒数 (​`nanos`​) に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

period

Number​ 値に変換する ​Period​ 値。

unit

指定された ​period​ に適用する単位: hours​、​minutes​、​seconds​、​milliseconds​、または ​nanos​。

### [](#例-2)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toSecondsEx1: toNumber(|PT1H10M|, "seconds"), toSecondsEx2: toNumber(|PT1M7S|, "milliseconds") } ``` #### [](#出力-2)出力 ```Json { "toSecondsEx1": 4200, "toSecondsEx2": 67000 } ``` ## [](#tonumber3)toNumber(value: String | Key, format: String | Null = null, locale: String | Null = null): Number `String`​ 値または ​`Key`​ 値を ​`Number`​ 値に変換して、形式とロケールを受け入れる ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

value

Number​ 値に変換する ​String​ 値または ​Key​ 値。

format

value​ に適用する省略可能な書式設定。 ​format​ は ​10 進数​値および ​10​ 未満の 1 つの整数のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れます。1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他の文字を使用するとエラーが発生します。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var myKey = keysOf({"123" : "myValue"}) output application/json --- { "default": toNumber("1.0"), "withFormat": toNumber("0.005",".00"), "withLocal": toNumber("1,25","#.##","ES"), "withExtraPlaceholders": toNumber("5.55","####.####"), "keyToNumber": toNumber(myKey[0]) } ``` #### [](#出力-3)出力 ```Json { "default": 1.0, "withFormat": 0.005, "withLocal": 1.25, "withExtraPlaceholders": 5.55, "keyToNumber": 123 } ``` # toNumber ## [](#tonumber1)toNumber(str: String, formatters: Array): Number 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`Number`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Number​ 値に変換する ​String​ 値。

formatters

Array<DatesFormatter>

Number​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toNumber("0.005", [{format: "seconds"}, {format: ".00"}]), b: try(() -> toNumber("0.005", [{format: "seconds"}])).error.message } ``` #### [](#出力)出力 ```DataWeave { a: 0.005 as Number {format: ".00"}, b: "Could not find a valid formatter for '0.005'" } ``` ## [](#tonumber2)toNumber(dateTime: DateTime, unit: MillisOrSecs | Null = null): Number 選択した単位に応じて ​`DateTime`​ 値を秒数またはミリ秒数に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

dateTime

Number​ 値に変換する ​DateTime​ 値。

unit

使用する時間の単位 (​"milliseconds"​ または ​"seconds"​)。​null​ 値の場合、​"seconds"​ が使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { epoch: toNumber(|2015-10-01T23:57:59Z|), millis: toNumber(|2015-10-01T23:57:59Z|, "milliseconds") } ``` #### [](#出力-2)出力 ```DataWeave { "epoch": 1443743879, "millis": 1443743879000 } ``` ## [](#tonumber3)toNumber(period: Period, unit: PeriodUnits | Null = null): Number `Period`​ 値を時間数、分数、秒数、ミリ秒数、またはナノ秒数 (​`nanos`​) に変換する ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

period

Number​ 値に変換する ​Period​ 値。

unit

指定された ​period​ に適用する単位: hours​、​minutes​、​seconds​、​milliseconds​、または ​nanos​。

### [](#例-3)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toSecondsEx1: toNumber(|PT1H10M|, "seconds"), toSecondsEx2: toNumber(|PT1M7S|, "milliseconds") } ``` #### [](#出力-3)出力 ```Json { "toSecondsEx1": 4200, "toSecondsEx2": 67000 } ``` ## [](#tonumber4)toNumber(value: String | Key, format: String | Null = null, locale: String | Null = null): Number `String`​ 値または ​`Key`​ 値を ​`Number`​ 値に変換して、形式とロケールを受け入れる ​`toNumber`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

value

Number​ 値に変換する ​String​ 値または ​Key​ 値。

format

value​ に適用する省略可能な書式設定。 ​format​ は ​10 進数​値および ​10​ 未満の 1 つの整数のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れます。1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他の文字を使用するとエラーが発生します。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-4)例 次の例では、さまざまな入力での ​`toNumber`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var myKey = keysOf({"123" : "myValue"}) output application/json --- { "default": toNumber("1.0"), "withFormat": toNumber("0.005",".00"), "withLocal": toNumber("1,25","#.##","ES"), "withExtraPlaceholders": toNumber("5.55","####.####"), "keyToNumber": toNumber(myKey[0]) } ``` #### [](#出力-4)出力 ```Json { "default": 1.0, "withFormat": 0.005, "withLocal": 1.25, "withExtraPlaceholders": 5.55, "keyToNumber": 123 } ``` # toNumberOrNull ## [](#tonumberornull1)toNumberOrNull(str: String, formatters: Array): Number | Null 変換する特定の値と一致する最初の ​`Formatter`​ を使用して、​`String`​ 値を ​`Number`​ 値に変換します。 指定した値に一致する​`フォーマッター`​がない場合、関数は ​`null`​ 値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Number​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

Number​ 値に対して使用する書式設定の ​array​。

### [](#例)例 次の例では、さまざまな入力での ​`toNumberOrNull`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toNumberOrNull("0.005", [{format: "seconds"}, {format: ".00"}]), b: toNumberOrNull("0.005", [{format: "seconds"}]) } ``` #### [](#出力)出力 ```DataWeave { a: 0.005 as Number {format: ".00"}, b: null } ``` # toPeriod ## [](#toperiod1)toPeriod(str: String): Period `String`​ 値を ​`Period`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Period​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toPeriod`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toPeriodEx1: toPeriod("P1D"), toPeriodEx2: toPeriod("PT1H1M") } ``` #### [](#出力)出力 ```Json { toPeriodEx1: |P1D|, toPeriodEx2: |PT1H1M| } ``` # toPeriod ## [](#toperiod1)toPeriod(str: String): Period `String`​ 値を ​`Period`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Period​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toPeriod`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toPeriodEx1: toPeriod("P1D"), toPeriodEx2: toPeriod("PT1H1M") } ``` #### [](#出力)出力 ```Json { toPeriodEx1: |P1D|, toPeriodEx2: |PT1H1M| } ``` # toPeriod ## [](#toperiod1)toPeriod(str: String): Period `String`​ 値を ​`Period`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Period​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toPeriod`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toPeriodEx1: toPeriod("P1D"), toPeriodEx2: toPeriod("PT1H1M") } ``` #### [](#出力)出力 ```Json { toPeriodEx1: |P1D|, toPeriodEx2: |PT1H1M| } ``` # toPeriod ## [](#toperiod1)toPeriod(str: String): Period `String`​ 値を ​`Period`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Period​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toPeriod`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toPeriodEx1: toPeriod("P1D"), toPeriodEx2: toPeriod("PT1H1M") } ``` #### [](#出力)出力 ```Json { toPeriodEx1: |P1D|, toPeriodEx2: |PT1H1M| } ``` # toPeriod ## [](#toperiod1)toPeriod(str: String): Period `String`​ 値を ​`Period`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Period​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toPeriod`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toPeriodEx1: toPeriod("P1D"), toPeriodEx2: toPeriod("PT1H1M") } ``` #### [](#出力)出力 ```Json { toPeriodEx1: |P1D|, toPeriodEx2: |PT1H1M| } ``` # toRadians ## [](#toradians1)toRadians(angdeg: Number): Number 角度の特定の度数をほぼ同じラジアン数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​angdeg

ラジアンに変換する度数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadians`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toRadians10": toRadians(10), "toRadians013": toRadians(0.13), "toRadians-20": toRadians(-20) } ``` #### [](#出力)出力 ```Json { "toRadians10": 0.1745329251994329576922222222222222, "toRadians013": 0.002268928027592628449998888888888889, "toRadians-20": -0.3490658503988659153844444444444444 } ``` # toRadians ## [](#toradians1)toRadians(angdeg: Number): Number 角度の特定の度数をほぼ同じラジアン数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angdeg

ラジアンに変換する度数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadians`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toRadians10": toRadians(10), "toRadians013": toRadians(0.13), "toRadians-20": toRadians(-20) } ``` #### [](#出力)出力 ```Json { "toRadians10": 0.1745329251994329576922222222222222, "toRadians013": 0.002268928027592628449998888888888889, "toRadians-20": -0.3490658503988659153844444444444444 } ``` # toRadians ## [](#toradians1)toRadians(angdeg: Number): Number 角度の特定の度数をほぼ同じラジアン数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angdeg

ラジアンに変換する度数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadians`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toRadians10": toRadians(10), "toRadians013": toRadians(0.13), "toRadians-20": toRadians(-20) } ``` #### [](#出力)出力 ```Json { "toRadians10": 0.1745329251994329576922222222222222, "toRadians013": 0.002268928027592628449998888888888889, "toRadians-20": -0.3490658503988659153844444444444444 } ``` # toRadians ## [](#toradians1)toRadians(angdeg: Number): Number 角度の特定の度数をほぼ同じラジアン数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angdeg

ラジアンに変換する度数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadians`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toRadians10": toRadians(10), "toRadians013": toRadians(0.13), "toRadians-20": toRadians(-20) } ``` #### [](#出力)出力 ```Json { "toRadians10": 0.1745329251994329576922222222222222, "toRadians013": 0.002268928027592628449998888888888889, "toRadians-20": -0.3490658503988659153844444444444444 } ``` # toRadians ## [](#toradians1)toRadians(angdeg: Number): Number 角度の特定の度数をほぼ同じラジアン数に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

angdeg

ラジアンに変換する度数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadians`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Math output application/json --- { "toRadians10": toRadians(10), "toRadians013": toRadians(0.13), "toRadians-20": toRadians(-20) } ``` #### [](#出力)出力 ```Json { "toRadians10": 0.1745329251994329576922222222222222, "toRadians013": 0.002268928027592628449998888888888889, "toRadians-20": -0.3490658503988659153844444444444444 } ``` # toRadixNumber ## [](#toradixnumber1)toRadixNumber(Number, Number): String 10 進数を他の基数の数値文字列に変換します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

10 進数。

​radix

結果の数値の基数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toRadixNumber from dw::core::Numbers output application/json --- { a: toRadixNumber(2, 2), b: toRadixNumber(255, 16) } ``` #### [](#出力)出力 ```JSON { "a": "10", "b": "ff" } ``` # toRadixNumber ## [](#toradixnumber1)toRadixNumber(number: Number, radix: Number): String 10 進数を他の基数の数値文字列に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​number

10 進数。

​radix

結果の数値の基数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toRadixNumber from dw::core::Numbers output application/json --- { a: toRadixNumber(2, 2), b: toRadixNumber(255, 16) } ``` #### [](#出力)出力 ```JSON { "a": "10", "b": "ff" } ``` # toRadixNumber ## [](#toradixnumber1)toRadixNumber(number: Number, radix: Number): String 10 進数を他の基数の数値文字列に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

10 進数。

radix

結果の数値の基数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toRadixNumber from dw::core::Numbers output application/json --- { a: toRadixNumber(2, 2), b: toRadixNumber(255, 16) } ``` #### [](#出力)出力 ```JSON { "a": "10", "b": "ff" } ``` # toRadixNumber ## [](#toradixnumber1)toRadixNumber(number: Number, radix: Number): String 10 進数を他の基数の数値文字列に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

10 進数。

radix

結果の数値の基数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toRadixNumber from dw::core::Numbers output application/json --- { a: toRadixNumber(2, 2), b: toRadixNumber(255, 16) } ``` #### [](#出力)出力 ```JSON { "a": "10", "b": "ff" } ``` # toRadixNumber ## [](#toradixnumber1)toRadixNumber(number: Number, radix: Number): String 10 進数を他の基数の数値文字列に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

10 進数。

radix

結果の数値の基数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toRadixNumber from dw::core::Numbers output application/json --- { a: toRadixNumber(2, 2), b: toRadixNumber(255, 16) } ``` #### [](#出力)出力 ```JSON { "a": "10", "b": "ff" } ``` # toRadixNumber ## [](#toradixnumber1)toRadixNumber(number: Number, radix: Number): String 10 進数を他の基数の数値文字列に変換します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

10 進数。

radix

結果の数値の基数。

### [](#例)例 次の例では、さまざまな入力での ​`toRadixNumber`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import toRadixNumber from dw::core::Numbers output application/json --- { a: toRadixNumber(2, 2), b: toRadixNumber(255, 16) } ``` #### [](#出力)出力 ```JSON { "a": "10", "b": "ff" } ``` # toRegex ## [](#toregex1)toRegex(str: String): Regex `String`​ 値を ​`Regex`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Regex​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toRegex`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toRegexEx1: toRegex("a-Z"), toRegexEx2: toRegex("0-9+") } ``` #### [](#出力)出力 ```DataWeave { toRegexEx1: /a-Z/, toRegexEx2: /0-9+/ } ``` # toRegex ## [](#toregex1)toRegex(str: String): Regex `String`​ 値を ​`Regex`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Regex​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toRegex`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toRegexEx1: toRegex("a-Z"), toRegexEx2: toRegex("0-9+") } ``` #### [](#出力)出力 ```DataWeave { toRegexEx1: /a-Z/, toRegexEx2: /0-9+/ } ``` # toRegex ## [](#toregex1)toRegex(str: String): Regex `String`​ 値を ​`Regex`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Regex​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toRegex`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toRegexEx1: toRegex("a-Z"), toRegexEx2: toRegex("0-9+") } ``` #### [](#出力)出力 ```DataWeave { toRegexEx1: /a-Z/, toRegexEx2: /0-9+/ } ``` # toRegex ## [](#toregex1)toRegex(str: String): Regex `String`​ 値を ​`Regex`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Regex​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toRegex`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toRegexEx1: toRegex("a-Z"), toRegexEx2: toRegex("0-9+") } ``` #### [](#出力)出力 ```DataWeave { toRegexEx1: /a-Z/, toRegexEx2: /0-9+/ } ``` # toRegex ## [](#toregex1)toRegex(str: String): Regex `String`​ 値を ​`Regex`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Regex​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toRegex`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toRegexEx1: toRegex("a-Z"), toRegexEx2: toRegex("0-9+") } ``` #### [](#出力)出力 ```DataWeave { toRegexEx1: /a-Z/, toRegexEx2: /0-9+/ } ``` # toString ## [](#tostring1)toString(number: Number, format: String | Null = null, locale: String | Null = null, roundMode: RoundingMode | Null = null): String `Number`​ 値 (整数または小数) を ​`String`​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

書式設定する ​Number​ 値。

format

Number​ 値に適用する書式設定。 ​format​ は ​10 進数​値のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れ、1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他のほとんどの値はリテラルとして扱われますが、ドル記号などの特殊文字はエスケープする必要があります (たとえば、​\$​)。 内側の引用符は閉じる必要があり、囲む引用符とは異なります。

roundMode

小数 ​0.15​ の ​0.#​ の形式など、書式設定で丸めの選択肢が提供される場合の丸め小数値の省略可能なパラメーター。 デフォルトは ​HALF_UP​ で、​null​ 値の場合は ​HALF_UP​ と同じように動作します。 次の値のうち 1 つしか使用できません。

  • UP​: 常に小数点以下を切り上げます (たとえば、​0.01​ を ​"0.1"​ に、​-0.01​ を ​"-0.1"​ にします)。前の桁を 0 以外の端数まで大きくし、計算済みの値の絶対値が小さくなることはありません。

  • DOWN​: 常に端数処理を行います (たとえば、​0.19​ を ​"0.1"​ に、​-0.19​ を ​"-0.1"​ にします)。端数の前の桁を大きくすることはなく (前の桁に切り上げる)、計算済みの値の絶対値が大きくなることはありません。

  • CEILING​: 正の無限大に丸めて、結果が正の場合は ​UP​ と同じように動作します (たとえば、​0.35​ を ​"0.4"​ にする)。 結果が負の場合、このモードは ​DOWN​ と同じように動作します (たとえば、​-0.35​ を ​"-0.3"​ にする)。このモードでは、計算済みの値が小さくなることはありません。

  • FLOOR​: 負の無限大に丸めて、結果が正の場合は DOWN と同じように動作します (たとえば、​0.35​ を ​"0.3"​ にする)。 結果が負の場合、このモードは ​UP​ と同じように動作します (たとえば、​-0.35​ を ​"-0.4"​ にする)。このモードでは、計算済みの値が大きくなることはありません。

  • HALF_UP​: デフォルトのモードで、上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り上げます。たとえば、​0.35​ は ​"0.4"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.4​" に丸められます。

  • HALF_DOWN​: 上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り下げます。たとえば、​0.35​ は ​"0.3"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.3"​ に丸められます。

  • HALF_EVEN​: 末尾が ​5​ の小数 (​1.125​ や ​1.135​ など) の場合、動作は ​5​ の前にある数値に応じて異なります。 ​HALF_EVEN​ では、​5​ の前の最後から 2 番目の桁が奇数の場合は切り上げ、最後から 2 番目の桁が偶数の場合は切り下げます。たとえば、​0.225​ は ​"0.22"​ に丸められ、​0.235 ​と​ ​0.245​ はいずれも ​"0.24"​ に丸められ、​0.255​ は ​"0.26"​ に丸められます。 負の小数も同様に丸められ、たとえば ​-0.225​ は ​"-0.22"​ に丸められます。最後の桁が ​5​ でない場合、この設定の動作は ​HALF_UP​ と同じようになります。金額値の丸めは ​HALF_EVEN​ パターンに従う場合があります。

### [](#例)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString(1.0), b: toString(0.005,".00"), c: toString(0.035,"#.##","ES"), d: toString(0.005,"#.##","ES","HALF_EVEN"), e: toString(0.035,"#.00",null,"HALF_EVEN"), f: toString(1.1234,"\$.## 'in my account'") } ``` #### [](#出力)出力 ```Json { "a": "1", "b": ".01", "c": "0,04", "d": "0", "e": ".04", "f": "$1.12 in my account" } ``` ## [](#tostring2)toString(date: Date | DateTime | LocalDateTime | LocalTime | Time, format: String | Null = null, locale: String | Null = null): String `Date`​、​`DateTime`​、​`LocalTime`​、​`LocalDateTime`​、または ​`Time`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

date

String​ 型に強制変換する ​Date​、​DateTime​、​LocalTime​、​LocalDateTime​、または ​Time​ 値。

format

日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。デフォルト:

  • Date​ の例: 2011-12-03​ (同等の形式: uuuu-MM-dd​)

  • DateTime​ の例: 2011-12-03T10:15:30.000000+01:00​ (同等の形式: uuuu-MM-dd HH:mm:ssz​)

  • LocalDateTime​ の例: 2011-12-03T10:15:30.000000​ (同等の形式: uuuu-MM-dd HH:mm:ss​)

  • LocalTime​ の例: 10:15:30.000000​ (同等の形式: HH:mm:ss.n​)

  • Time​ の例: 10:15:30.000000Z​ (同等の形式: HH:mm:ss.nxxxz​)

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

### [](#例-2)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { aDate: toString(|2003-10-01|, "uuuu/MM/dd"), aDateTime: toString(|2018-09-17T22:13:00-03:00|), aLocalTime: toString(|23:57:59|, "HH-mm-ss"), aLocalDateTime : toString(|2015-10-01T23:57:59|), aLocalDateTimeFormatted: toString(|2003-10-01T23:57:59|, "uuuu-MM-dd HH:mm:ss a"), aLocalDateTimeFormattedAndLocalizedSpain: toString(|2003-01-01T23:57:59|, "eeee, dd MMMM, uuuu HH:mm:ss a", "ES"), aTime: typeOf(|22:10:18Z|), aTimeZone: toString(|-03:00|) } ``` #### [](#出力-2)出力 ```Json { "aDate": "2003/10/01", "aDateTime": "2018-09-17T22:13:00-03:00", "aLocalTime": "23-57-59", "aLocalDateTime": "2015-10-01T23:57:59", "aLocalDateTimeFormatted": "2003-10-01 23:57:59 PM", "aLocalDateTimeFormattedAndLocalizedSpain": "miércoles, 01 enero, 2003 23:57:59 p. m.", "aTime": "Time", "aTimeZone": "-03:00" } ``` ## [](#tostring3)toString(binary: Binary, encoding: String): String 指定されたエンコーディングを使用して ​`Binary`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

binary

String​ 値に強制変換する ​Binary​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var binaryData= "DW Test" as Binary {encoding: "UTF-32"} output application/json --- { a: toString(binaryData, "UTF-32"), } ``` #### [](#出力-3)出力 ```Json { "a": "DW Test" } ``` ## [](#tostring4)toString(data: TimeZone | Uri | Boolean | Period | Regex | Key): String `TimeZone`​、​`Uri`​、​`Boolean`​、​`Period`​、​`Regex`​、または ​`Key`​ 値を文字列に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

data

String​ 値に強制変換する ​TimeZone​、​Uri​、​Boolean​、​Period​、​Regex​、または ​Key​ 値。

### [](#例-4)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { transformTimeZone: toString(|Z|), transformBoolean: toString(true), transformPeriod: toString(|P1D|), transformRegex: toString(/a-Z/), transformPeriod: toString(|PT8M10S|), transformUri: toString("https://docs.mulesoft.com/" as Uri) } ++ { transformKey : toString((keysOf({ "aKeyToString" : "aValue"})[0])) } ``` #### [](#出力-4)出力 ```Json { "transformTimeZone": "Z", "transformBoolean": "true", "transformPeriod": "P1D", "transformRegex": "a-Z", "transformPeriod": "PT8M10S", "transformUri": "https://docs.mulesoft.com/", "transformKey": "aKeyToString" } ``` ## [](#tostring5)toString(arr: Array): String 文字の ​`Array`​ を 1 つの ​`String`​ 値に結合する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

arr

String​ 値に変換する文字の ​Array​。

### [](#例-5)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString([]), b: toString(["h", "o", "l", "a"]) } ``` #### [](#出力-5)出力 ```Json { "a": "", "b": "hola" } ``` # toString ## [](#tostring1)toString(number: Number, format: String | Null = null, locale: String | Null = null, roundMode: RoundingMode | Null = null): String `Number`​ 値 (整数または小数) を ​`String`​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

書式設定する ​Number​ 値。

format

Number​ 値に適用する書式設定。 ​format​ は ​10 進数​値のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れ、1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他のほとんどの値はリテラルとして扱われますが、ドル記号などの特殊文字はエスケープする必要があります (たとえば、​\$​)。 内側の引用符は閉じる必要があり、囲む引用符とは異なります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

roundMode

小数 ​0.15​ の ​0.#​ の形式など、書式設定で丸めの選択肢が提供される場合の丸め小数値の省略可能なパラメーター。 デフォルトは ​HALF_UP​ で、​null​ 値の場合は ​HALF_UP​ と同じように動作します。 次の値のうち 1 つしか使用できません。

  • UP​: 常に小数点以下を切り上げます (たとえば、​0.01​ を ​"0.1"​ に、​-0.01​ を ​"-0.1"​ にします)。前の桁を 0 以外の端数まで大きくし、計算済みの値の絶対値が小さくなることはありません。

  • DOWN​: 常に端数処理を行います (たとえば、​0.19​ を ​"0.1"​ に、​-0.19​ を ​"-0.1"​ にします)。端数の前の桁を大きくすることはなく (前の桁に切り上げる)、計算済みの値の絶対値が大きくなることはありません。

  • CEILING​: 正の無限大に丸めて、結果が正の場合は ​UP​ と同じように動作します (たとえば、​0.35​ を ​"0.4"​ にする)。 結果が負の場合、このモードは ​DOWN​ と同じように動作します (たとえば、​-0.35​ を ​"-0.3"​ にする)。このモードでは、計算済みの値が小さくなることはありません。

  • FLOOR​: 負の無限大に丸めて、結果が正の場合は DOWN と同じように動作します (たとえば、​0.35​ を ​"0.3"​ にする)。 結果が負の場合、このモードは ​UP​ と同じように動作します (たとえば、​-0.35​ を ​"-0.4"​ にする)。このモードでは、計算済みの値が大きくなることはありません。

  • HALF_UP​: デフォルトのモードで、上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り上げます。たとえば、​0.35​ は ​"0.4"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.4​" に丸められます。

  • HALF_DOWN​: 上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り下げます。たとえば、​0.35​ は ​"0.3"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.3"​ に丸められます。

  • HALF_EVEN​: 末尾が ​5​ の小数 (​1.125​ や ​1.135​ など) の場合、動作は ​5​ の前にある数値に応じて異なります。 ​HALF_EVEN​ では、​5​ の前の最後から 2 番目の桁が奇数の場合は切り上げ、最後から 2 番目の桁が偶数の場合は切り下げます。たとえば、​0.225​ は ​"0.22"​ に丸められ、​0.235 ​と​ ​0.245​ はいずれも ​"0.24"​ に丸められ、​0.255​ は ​"0.26"​ に丸められます。 負の小数も同様に丸められ、たとえば ​-0.225​ は ​"-0.22"​ に丸められます。最後の桁が ​5​ でない場合、この設定の動作は ​HALF_UP​ と同じようになります。金額値の丸めは ​HALF_EVEN​ パターンに従う場合があります。

### [](#例)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString(1.0), b: toString(0.005,".00"), c: toString(0.035,"#.##","ES"), d: toString(0.005,"#.##","ES","HALF_EVEN"), e: toString(0.035,"#.00",null,"HALF_EVEN"), f: toString(1.1234,"\$.## 'in my account'") } ``` #### [](#出力)出力 ```Json { "a": "1", "b": ".01", "c": "0,04", "d": "0", "e": ".04", "f": "$1.12 in my account" } ``` ## [](#tostring2)toString(date: Date | DateTime | LocalDateTime | LocalTime | Time, format: String | Null = null, locale: String | Null = null): String `Date`​、​`DateTime`​、​`LocalTime`​、​`LocalDateTime`​、または ​`Time`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

date

String​ 型に強制変換する ​Date​、​DateTime​、​LocalTime​、​LocalDateTime​、または ​Time​ 値。

format

日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。デフォルト:

  • Date​ の例: 2011-12-03​ (同等の形式: uuuu-MM-dd​)

  • DateTime​ の例: 2011-12-03T10:15:30.000000+01:00​ (同等の形式: uuuu-MM-dd HH:mm:ssz​)

  • LocalDateTime​ の例: 2011-12-03T10:15:30.000000​ (同等の形式: uuuu-MM-dd HH:mm:ss​)

  • LocalTime​ の例: 10:15:30.000000​ (同等の形式: HH:mm:ss.n​)

  • Time​ の例: 10:15:30.000000Z​ (同等の形式: HH:mm:ss.nxxxz​)

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

### [](#例-2)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { aDate: toString(|2003-10-01|, "uuuu/MM/dd"), aDateTime: toString(|2018-09-17T22:13:00-03:00|), aLocalTime: toString(|23:57:59|, "HH-mm-ss"), aLocalDateTime : toString(|2015-10-01T23:57:59|), aLocalDateTimeFormatted: toString(|2003-10-01T23:57:59|, "uuuu-MM-dd HH:mm:ss a"), aLocalDateTimeFormattedAndLocalizedSpain: toString(|2003-01-01T23:57:59|, "eeee, dd MMMM, uuuu HH:mm:ss a", "ES"), aTime: typeOf(|22:10:18Z|), aTimeZone: toString(|-03:00|) } ``` #### [](#出力-2)出力 ```Json { "aDate": "2003/10/01", "aDateTime": "2018-09-17T22:13:00-03:00", "aLocalTime": "23-57-59", "aLocalDateTime": "2015-10-01T23:57:59", "aLocalDateTimeFormatted": "2003-10-01 23:57:59 PM", "aLocalDateTimeFormattedAndLocalizedSpain": "miércoles, 01 enero, 2003 23:57:59 p. m.", "aTime": "Time", "aTimeZone": "-03:00" } ``` ## [](#tostring3)toString(binary: Binary, encoding: String): String 指定されたエンコーディングを使用して ​`Binary`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

binary

String​ 値に強制変換する ​Binary​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var binaryData= "DW Test" as Binary {encoding: "UTF-32"} output application/json --- { a: toString(binaryData, "UTF-32"), } ``` #### [](#出力-3)出力 ```Json { "a": "DW Test" } ``` ## [](#tostring4)toString(data: TimeZone | Uri | Boolean | Period | Regex | Key): String `TimeZone`​、​`Uri`​、​`Boolean`​、​`Period`​、​`Regex`​、または ​`Key`​ 値を文字列に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

data

String​ 値に強制変換する ​TimeZone​、​Uri​、​Boolean​、​Period​、​Regex​、または ​Key​ 値。

### [](#例-4)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { transformTimeZone: toString(|Z|), transformBoolean: toString(true), transformPeriod: toString(|P1D|), transformRegex: toString(/a-Z/), transformPeriod: toString(|PT8M10S|), transformUri: toString("https://docs.mulesoft.com/" as Uri) } ++ { transformKey : toString((keysOf({ "aKeyToString" : "aValue"})[0])) } ``` #### [](#出力-4)出力 ```Json { "transformTimeZone": "Z", "transformBoolean": "true", "transformPeriod": "P1D", "transformRegex": "a-Z", "transformPeriod": "PT8M10S", "transformUri": "https://docs.mulesoft.com/", "transformKey": "aKeyToString" } ``` ## [](#tostring5)toString(arr: Array): String 文字の ​`Array`​ を 1 つの ​`String`​ 値に結合する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

arr

String​ 値に変換する文字の ​Array​。

### [](#例-5)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString([]), b: toString(["h", "o", "l", "a"]) } ``` #### [](#出力-5)出力 ```Json { "a": "", "b": "hola" } ``` # toString ## [](#tostring1)toString(number: Number, format: String | Null = null, locale: String | Null = null, roundMode: RoundingMode | Null = null): String `Number`​ 値 (整数または小数) を ​`String`​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

書式設定する ​Number​ 値。

format

Number​ 値に適用する書式設定。 ​format​ は ​10 進数​値のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れ、1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他のほとんどの値はリテラルとして扱われますが、ドル記号などの特殊文字はエスケープする必要があります (たとえば、​\$​)。 内側の引用符は閉じる必要があり、囲む引用符とは異なります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

roundMode

小数 ​0.15​ の ​0.#​ の形式など、書式設定で丸めの選択肢が提供される場合の丸め小数値の省略可能なパラメーター。 デフォルトは ​HALF_UP​ で、​null​ 値の場合は ​HALF_UP​ と同じように動作します。 次の値のうち 1 つしか使用できません。

  • UP​: 常に小数点以下を切り上げます (たとえば、​0.01​ を ​"0.1"​ に、​-0.01​ を ​"-0.1"​ にします)。前の桁を 0 以外の端数まで大きくし、計算済みの値の絶対値が小さくなることはありません。

  • DOWN​: 常に端数処理を行います (たとえば、​0.19​ を ​"0.1"​ に、​-0.19​ を ​"-0.1"​ にします)。端数の前の桁を大きくすることはなく (前の桁に切り上げる)、計算済みの値の絶対値が大きくなることはありません。

  • CEILING​: 正の無限大に丸めて、結果が正の場合は ​UP​ と同じように動作します (たとえば、​0.35​ を ​"0.4"​ にする)。 結果が負の場合、このモードは ​DOWN​ と同じように動作します (たとえば、​-0.35​ を ​"-0.3"​ にする)。このモードでは、計算済みの値が小さくなることはありません。

  • FLOOR​: 負の無限大に丸めて、結果が正の場合は DOWN と同じように動作します (たとえば、​0.35​ を ​"0.3"​ にする)。 結果が負の場合、このモードは ​UP​ と同じように動作します (たとえば、​-0.35​ を ​"-0.4"​ にする)。このモードでは、計算済みの値が大きくなることはありません。

  • HALF_UP​: デフォルトのモードで、上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り上げます。たとえば、​0.35​ は ​"0.4"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.4​" に丸められます。

  • HALF_DOWN​: 上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り下げます。たとえば、​0.35​ は ​"0.3"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.3"​ に丸められます。

  • HALF_EVEN​: 末尾が ​5​ の小数 (​1.125​ や ​1.135​ など) の場合、動作は ​5​ の前にある数値に応じて異なります。 ​HALF_EVEN​ では、​5​ の前の最後から 2 番目の桁が奇数の場合は切り上げ、最後から 2 番目の桁が偶数の場合は切り下げます。たとえば、​0.225​ は ​"0.22"​ に丸められ、​0.235 ​と​ ​0.245​ はいずれも ​"0.24"​ に丸められ、​0.255​ は ​"0.26"​ に丸められます。 負の小数も同様に丸められ、たとえば ​-0.225​ は ​"-0.22"​ に丸められます。最後の桁が ​5​ でない場合、この設定の動作は ​HALF_UP​ と同じようになります。金額値の丸めは ​HALF_EVEN​ パターンに従う場合があります。

### [](#例)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString(1.0), b: toString(0.005,".00"), c: toString(0.035,"#.##","ES"), d: toString(0.005,"#.##","ES","HALF_EVEN"), e: toString(0.035,"#.00",null,"HALF_EVEN"), f: toString(1.1234,"\$.## 'in my account'") } ``` #### [](#出力)出力 ```Json { "a": "1", "b": ".01", "c": "0,04", "d": "0", "e": ".04", "f": "$1.12 in my account" } ``` ## [](#tostring2)toString(date: Date | DateTime | LocalDateTime | LocalTime | Time, format: String | Null = null, locale: String | Null = null): String `Date`​、​`DateTime`​、​`LocalTime`​、​`LocalDateTime`​、または ​`Time`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

date

String​ 型に強制変換する ​Date​、​DateTime​、​LocalTime​、​LocalDateTime​、または ​Time​ 値。

format

日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。デフォルト:

  • Date​ の例: 2011-12-03​ (同等の形式: uuuu-MM-dd​)

  • DateTime​ の例: 2011-12-03T10:15:30.000000+01:00​ (同等の形式: uuuu-MM-dd HH:mm:ssz​)

  • LocalDateTime​ の例: 2011-12-03T10:15:30.000000​ (同等の形式: uuuu-MM-dd HH:mm:ss​)

  • LocalTime​ の例: 10:15:30.000000​ (同等の形式: HH:mm:ss.n​)

  • Time​ の例: 10:15:30.000000Z​ (同等の形式: HH:mm:ss.nxxxz​)

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

### [](#例-2)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { aDate: toString(|2003-10-01|, "uuuu/MM/dd"), aDateTime: toString(|2018-09-17T22:13:00-03:00|), aLocalTime: toString(|23:57:59|, "HH-mm-ss"), aLocalDateTime : toString(|2015-10-01T23:57:59|), aLocalDateTimeFormatted: toString(|2003-10-01T23:57:59|, "uuuu-MM-dd HH:mm:ss a"), aLocalDateTimeFormattedAndLocalizedSpain: toString(|2003-01-01T23:57:59|, "eeee, dd MMMM, uuuu HH:mm:ss a", "ES"), aTime: typeOf(|22:10:18Z|), aTimeZone: toString(|-03:00|) } ``` #### [](#出力-2)出力 ```Json { "aDate": "2003/10/01", "aDateTime": "2018-09-17T22:13:00-03:00", "aLocalTime": "23-57-59", "aLocalDateTime": "2015-10-01T23:57:59", "aLocalDateTimeFormatted": "2003-10-01 23:57:59 PM", "aLocalDateTimeFormattedAndLocalizedSpain": "miércoles, 01 enero, 2003 23:57:59 p. m.", "aTime": "Time", "aTimeZone": "-03:00" } ``` ## [](#tostring3)toString(binary: Binary, encoding: String): String 指定されたエンコーディングを使用して ​`Binary`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

binary

String​ 値に強制変換する ​Binary​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var binaryData= "DW Test" as Binary {encoding: "UTF-32"} output application/json --- { a: toString(binaryData, "UTF-32"), } ``` #### [](#出力-3)出力 ```Json { "a": "DW Test" } ``` ## [](#tostring4)toString(data: TimeZone | Uri | Boolean | Period | Regex | Key): String `TimeZone`​、​`Uri`​、​`Boolean`​、​`Period`​、​`Regex`​、または ​`Key`​ 値を文字列に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

data

String​ 値に強制変換する ​TimeZone​、​Uri​、​Boolean​、​Period​、​Regex​、または ​Key​ 値。

### [](#例-4)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { transformTimeZone: toString(|Z|), transformBoolean: toString(true), transformPeriod: toString(|P1D|), transformRegex: toString(/a-Z/), transformPeriod: toString(|PT8M10S|), transformUri: toString("https://docs.mulesoft.com/" as Uri) } ++ { transformKey : toString((keysOf({ "aKeyToString" : "aValue"})[0])) } ``` #### [](#出力-4)出力 ```Json { "transformTimeZone": "Z", "transformBoolean": "true", "transformPeriod": "P1D", "transformRegex": "a-Z", "transformPeriod": "PT8M10S", "transformUri": "https://docs.mulesoft.com/", "transformKey": "aKeyToString" } ``` ## [](#tostring5)toString(arr: Array): String 文字の ​`Array`​ を 1 つの ​`String`​ 値に結合する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

arr

String​ 値に変換する文字の ​Array​。

### [](#例-5)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString([]), b: toString(["h", "o", "l", "a"]) } ``` #### [](#出力-5)出力 ```Json { "a": "", "b": "hola" } ``` # toString ## [](#tostring1)toString(number: Number, format: String | Null = null, locale: String | Null = null, roundMode: RoundingMode | Null = null): String `Number`​ 値 (整数または小数) を ​`String`​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

書式設定する ​Number​ 値。

format

Number​ 値に適用する書式設定。 ​format​ は ​10 進数​値のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れ、1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他のほとんどの値はリテラルとして扱われますが、ドル記号などの特殊文字はエスケープする必要があります (たとえば、​\$​)。 内側の引用符は閉じる必要があり、囲む引用符とは異なります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

roundMode

小数 ​0.15​ の ​0.#​ の形式など、書式設定で丸めの選択肢が提供される場合の丸め小数値の省略可能なパラメーター。 デフォルトは ​HALF_UP​ で、​null​ 値の場合は ​HALF_UP​ と同じように動作します。 次の値のうち 1 つしか使用できません。

  • UP​: 常に小数点以下を切り上げます (たとえば、​0.01​ を ​"0.1"​ に、​-0.01​ を ​"-0.1"​ にします)。前の桁を 0 以外の端数まで大きくし、計算済みの値の絶対値が小さくなることはありません。

  • DOWN​: 常に端数処理を行います (たとえば、​0.19​ を ​"0.1"​ に、​-0.19​ を ​"-0.1"​ にします)。端数の前の桁を大きくすることはなく (前の桁に切り上げる)、計算済みの値の絶対値が大きくなることはありません。

  • CEILING​: 正の無限大に丸めて、結果が正の場合は ​UP​ と同じように動作します (たとえば、​0.35​ を ​"0.4"​ にする)。 結果が負の場合、このモードは ​DOWN​ と同じように動作します (たとえば、​-0.35​ を ​"-0.3"​ にする)。このモードでは、計算済みの値が小さくなることはありません。

  • FLOOR​: 負の無限大に丸めて、結果が正の場合は DOWN と同じように動作します (たとえば、​0.35​ を ​"0.3"​ にする)。 結果が負の場合、このモードは ​UP​ と同じように動作します (たとえば、​-0.35​ を ​"-0.4"​ にする)。このモードでは、計算済みの値が大きくなることはありません。

  • HALF_UP​: デフォルトのモードで、上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り上げます。たとえば、​0.35​ は ​"0.4"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.4​" に丸められます。

  • HALF_DOWN​: 上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り下げます。たとえば、​0.35​ は ​"0.3"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.3"​ に丸められます。

  • HALF_EVEN​: 末尾が ​5​ の小数 (​1.125​ や ​1.135​ など) の場合、動作は ​5​ の前にある数値に応じて異なります。 ​HALF_EVEN​ では、​5​ の前の最後から 2 番目の桁が奇数の場合は切り上げ、最後から 2 番目の桁が偶数の場合は切り下げます。たとえば、​0.225​ は ​"0.22"​ に丸められ、​0.235 ​と​ ​0.245​ はいずれも ​"0.24"​ に丸められ、​0.255​ は ​"0.26"​ に丸められます。 負の小数も同様に丸められ、たとえば ​-0.225​ は ​"-0.22"​ に丸められます。最後の桁が ​5​ でない場合、この設定の動作は ​HALF_UP​ と同じようになります。金額値の丸めは ​HALF_EVEN​ パターンに従う場合があります。

### [](#例)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString(1.0), b: toString(0.005,".00"), c: toString(0.035,"#.##","ES"), d: toString(0.005,"#.##","ES","HALF_EVEN"), e: toString(0.035,"#.00",null,"HALF_EVEN"), f: toString(1.1234,"\$.## 'in my account'") } ``` #### [](#出力)出力 ```Json { "a": "1", "b": ".01", "c": "0,04", "d": "0", "e": ".04", "f": "$1.12 in my account" } ``` ## [](#tostring2)toString(date: Date | DateTime | LocalDateTime | LocalTime | Time, format: String | Null = null, locale: String | Null = null): String `Date`​、​`DateTime`​、​`LocalTime`​、​`LocalDateTime`​、または ​`Time`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

date

String​ 型に強制変換する ​Date​、​DateTime​、​LocalTime​、​LocalDateTime​、または ​Time​ 値。

format

日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。デフォルト:

  • Date​ の例: 2011-12-03​ (同等の形式: uuuu-MM-dd​)

  • DateTime​ の例: 2011-12-03T10:15:30.000000+01:00​ (同等の形式: uuuu-MM-dd HH:mm:ssz​)

  • LocalDateTime​ の例: 2011-12-03T10:15:30.000000​ (同等の形式: uuuu-MM-dd HH:mm:ss​)

  • LocalTime​ の例: 10:15:30.000000​ (同等の形式: HH:mm:ss.n​)

  • Time​ の例: 10:15:30.000000Z​ (同等の形式: HH:mm:ss.nxxxz​)

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​"ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

### [](#例-2)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { aDate: toString(|2003-10-01|, "uuuu/MM/dd"), aDateTime: toString(|2018-09-17T22:13:00-03:00|), aLocalTime: toString(|23:57:59|, "HH-mm-ss"), aLocalDateTime : toString(|2015-10-01T23:57:59|), aLocalDateTimeFormatted: toString(|2003-10-01T23:57:59|, "uuuu-MM-dd HH:mm:ss a"), aLocalDateTimeFormattedAndLocalizedSpain: toString(|2003-01-01T23:57:59|, "eeee, dd MMMM, uuuu HH:mm:ss a", "ES"), aTime: typeOf(|22:10:18Z|), aTimeZone: toString(|-03:00|) } ``` #### [](#出力-2)出力 ```Json { "aDate": "2003/10/01", "aDateTime": "2018-09-17T22:13:00-03:00", "aLocalTime": "23-57-59", "aLocalDateTime": "2015-10-01T23:57:59", "aLocalDateTimeFormatted": "2003-10-01 23:57:59 PM", "aLocalDateTimeFormattedAndLocalizedSpain": "miércoles, 01 enero, 2003 23:57:59 p. m.", "aTime": "Time", "aTimeZone": "-03:00" } ``` ## [](#tostring3)toString(binary: Binary, encoding: String): String 指定されたエンコーディングを使用して ​`Binary`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

binary

String​ 値に強制変換する ​Binary​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var binaryData= "DW Test" as Binary {encoding: "UTF-32"} output application/json --- { a: toString(binaryData, "UTF-32"), } ``` #### [](#出力-3)出力 ```Json { "a": "DW Test" } ``` ## [](#tostring4)toString(data: TimeZone | Uri | Boolean | Period | Regex | Key): String `TimeZone`​、​`Uri`​、​`Boolean`​、​`Period`​、​`Regex`​、または ​`Key`​ 値を文字列に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

data

String​ 値に強制変換する ​TimeZone​、​Uri​、​Boolean​、​Period​、​Regex​、または ​Key​ 値。

### [](#例-4)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { transformTimeZone: toString(|Z|), transformBoolean: toString(true), transformPeriod: toString(|P1D|), transformRegex: toString(/a-Z/), transformPeriod: toString(|PT8M10S|), transformUri: toString("https://docs.mulesoft.com/" as Uri) } ++ { transformKey : toString((keysOf({ "aKeyToString" : "aValue"})[0])) } ``` #### [](#出力-4)出力 ```Json { "transformTimeZone": "Z", "transformBoolean": "true", "transformPeriod": "P1D", "transformRegex": "a-Z", "transformPeriod": "PT8M10S", "transformUri": "https://docs.mulesoft.com/", "transformKey": "aKeyToString" } ``` ## [](#tostring5)toString(arr: Array): String 文字の ​`Array`​ を 1 つの ​`String`​ 値に結合する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

arr

String​ 値に変換する文字の ​Array​。

### [](#例-5)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString([]), b: toString(["h", "o", "l", "a"]) } ``` #### [](#出力-5)出力 ```Json { "a": "", "b": "hola" } ``` # toString ## [](#tostring1)toString(number: Number, format: String | Null = null, locale: String | Null = null, roundMode: RoundingMode | Null = null): String `Number`​ 値 (整数または小数) を ​`String`​ 値に変換し、形式、ロケール、丸めモード値を受け入れる ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

number

書式設定する ​Number​ 値。

format

Number​ 値に適用する書式設定。 ​format​ は ​10 進数​値のプレースホルダーとして ​#​ または ​0​ (ただし両方ではない) を受け入れ、1 つの小数点しか使用できません。​null​ 値または空の ​String​ 値は ​Number​ 値に対して無効です。他のほとんどの値はリテラルとして扱われますが、ドル記号などの特殊文字はエスケープする必要があります (たとえば、​\$​)。 内側の引用符は閉じる必要があり、囲む引用符とは異なります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

roundMode

小数 ​0.15​ の ​0.#​ の形式など、書式設定で丸めの選択肢が提供される場合の丸め小数値の省略可能なパラメーター。 デフォルトは ​HALF_UP​ で、​null​ 値の場合は ​HALF_UP​ と同じように動作します。 次の値のうち 1 つしか使用できません。

  • UP​: 常に小数点以下を切り上げます (たとえば、​0.01​ を ​"0.1"​ に、​-0.01​ を ​"-0.1"​ にします)。前の桁を 0 以外の端数まで大きくし、計算済みの値の絶対値が小さくなることはありません。

  • DOWN​: 常に端数処理を行います (たとえば、​0.19​ を ​"0.1"​ に、​-0.19​ を ​"-0.1"​ にします)。端数の前の桁を大きくすることはなく (前の桁に切り上げる)、計算済みの値の絶対値が大きくなることはありません。

  • CEILING​: 正の無限大に丸めて、結果が正の場合は ​UP​ と同じように動作します (たとえば、​0.35​ を ​"0.4"​ にする)。 結果が負の場合、このモードは ​DOWN​ と同じように動作します (たとえば、​-0.35​ を ​"-0.3"​ にする)。このモードでは、計算済みの値が小さくなることはありません。

  • FLOOR​: 負の無限大に丸めて、結果が正の場合は DOWN と同じように動作します (たとえば、​0.35​ を ​"0.3"​ にする)。 結果が負の場合、このモードは ​UP​ と同じように動作します (たとえば、​-0.35​ を ​"-0.4"​ にする)。このモードでは、計算済みの値が大きくなることはありません。

  • HALF_UP​: デフォルトのモードで、上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り上げます。たとえば、​0.35​ は ​"0.4"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.4​" に丸められます。

  • HALF_DOWN​: 上と下の一番近い数値が同じ近さでない限り、「一番近い数値」に丸めます。上と下の一番近い数値の近さが同じ場合、このモードでは切り下げます。たとえば、​0.35​ は ​"0.3"​ に、​0.34​ は ​"0.3"​ に、​0.36​ は ​"0.4"​ に丸められます。負の小数も同様に丸められます。たとえば、​-0.35​ は ​"-0.3"​ に丸められます。

  • HALF_EVEN​: 末尾が ​5​ の小数 (​1.125​ や ​1.135​ など) の場合、動作は ​5​ の前にある数値に応じて異なります。 ​HALF_EVEN​ では、​5​ の前の最後から 2 番目の桁が奇数の場合は切り上げ、最後から 2 番目の桁が偶数の場合は切り下げます。たとえば、​0.225​ は ​"0.22"​ に丸められ、​0.235 ​と​ ​0.245​ はいずれも ​"0.24"​ に丸められ、​0.255​ は ​"0.26"​ に丸められます。 負の小数も同様に丸められ、たとえば ​-0.225​ は ​"-0.22"​ に丸められます。最後の桁が ​5​ でない場合、この設定の動作は ​HALF_UP​ と同じようになります。金額値の丸めは ​HALF_EVEN​ パターンに従う場合があります。

### [](#例)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString(1.0), b: toString(0.005,".00"), c: toString(0.035,"#.##","ES"), d: toString(0.005,"#.##","ES","HALF_EVEN"), e: toString(0.035,"#.00",null,"HALF_EVEN"), f: toString(1.1234,"\$.## 'in my account'") } ``` #### [](#出力)出力 ```Json { "a": "1", "b": ".01", "c": "0,04", "d": "0", "e": ".04", "f": "$1.12 in my account" } ``` ## [](#tostring2)toString(date: Date | DateTime | LocalDateTime | LocalTime | Time, format: String | Null = null, locale: String | Null = null): String `Date`​、​`DateTime`​、​`LocalTime`​、​`LocalDateTime`​、または ​`Time`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

date

String​ 型に強制変換する ​Date​、​DateTime​、​LocalTime​、​LocalDateTime​、または ​Time​ 値。

format

日付または時刻で使用する ISO-8601 書式設定。 たとえば、このパラメーターでは Java 8 の ​java.time.format​ に基づいた文字パターンを受け入れます。 ​null​ 値はこの値に対して無効です。デフォルト:

  • Date​ の例: 2011-12-03​ (同等の形式: uuuu-MM-dd​)

  • DateTime​ の例: 2011-12-03T10:15:30.000000+01:00​ (同等の形式: uuuu-MM-dd HH:mm:ssz​)

  • LocalDateTime​ の例: 2011-12-03T10:15:30.000000​ (同等の形式: uuuu-MM-dd HH:mm:ss​)

  • LocalTime​ の例: 10:15:30.000000​ (同等の形式: HH:mm:ss.n​)

  • Time​ の例: 10:15:30.000000Z​ (同等の形式: HH:mm:ss.nxxxz​)

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。​eeee​ や ​MMMM​ などの翻訳可能な形式を渡すと、​locale​ (​ES​ など) は対応する数値をローカライズ済みの文字列に変換します。

### [](#例-2)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { aDate: toString(|2003-10-01|, "uuuu/MM/dd"), aDateTime: toString(|2018-09-17T22:13:00-03:00|), aLocalTime: toString(|23:57:59|, "HH-mm-ss"), aLocalDateTime : toString(|2015-10-01T23:57:59|), aLocalDateTimeFormatted: toString(|2003-10-01T23:57:59|, "uuuu-MM-dd HH:mm:ss a"), aLocalDateTimeFormattedAndLocalizedSpain: toString(|2003-01-01T23:57:59|, "eeee, dd MMMM, uuuu HH:mm:ss a", "ES"), aTime: typeOf(|22:10:18Z|), aTimeZone: toString(|-03:00|) } ``` #### [](#出力-2)出力 ```Json { "aDate": "2003/10/01", "aDateTime": "2018-09-17T22:13:00-03:00", "aLocalTime": "23-57-59", "aLocalDateTime": "2015-10-01T23:57:59", "aLocalDateTimeFormatted": "2003-10-01 23:57:59 PM", "aLocalDateTimeFormattedAndLocalizedSpain": "miércoles, 01 enero, 2003 23:57:59 p. m.", "aTime": "Time", "aTimeZone": "-03:00" } ``` ## [](#tostring3)toString(binary: Binary, encoding: String): String 指定されたエンコーディングを使用して ​`Binary`​ 値を ​`String`​ 値に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

binary

String​ 値に強制変換する ​Binary​ 値。

encoding

String​ 値に適用するエンコーディング。JDK でサポートされているエンコーディングを受け入れます。たとえば、​encoding​ は Oracle JDK 8 と JDK 11 の基本および拡張エンコーディングセットの Java 正規名と別名を受け入れます。

### [](#例-3)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions var binaryData= "DW Test" as Binary {encoding: "UTF-32"} output application/json --- { a: toString(binaryData, "UTF-32"), } ``` #### [](#出力-3)出力 ```Json { "a": "DW Test" } ``` ## [](#tostring4)toString(data: TimeZone | Uri | Boolean | Period | Regex | Key): String `TimeZone`​、​`Uri`​、​`Boolean`​、​`Period`​、​`Regex`​、または ​`Key`​ 値を文字列に変換する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

data

String​ 値に強制変換する ​TimeZone​、​Uri​、​Boolean​、​Period​、​Regex​、または ​Key​ 値。

### [](#例-4)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { transformTimeZone: toString(|Z|), transformBoolean: toString(true), transformPeriod: toString(|P1D|), transformRegex: toString(/a-Z/), transformPeriod: toString(|PT8M10S|), transformUri: toString("https://docs.mulesoft.com/" as Uri) } ++ { transformKey : toString((keysOf({ "aKeyToString" : "aValue"})[0])) } ``` #### [](#出力-4)出力 ```Json { "transformTimeZone": "Z", "transformBoolean": "true", "transformPeriod": "P1D", "transformRegex": "a-Z", "transformPeriod": "PT8M10S", "transformUri": "https://docs.mulesoft.com/", "transformKey": "aKeyToString" } ``` ## [](#tostring5)toString(arr: Array): String 文字の ​`Array`​ を 1 つの ​`String`​ 値に結合する ​`toString`​ のバリエーション。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

arr

String​ 値に変換する文字の ​Array​。

### [](#例-5)例 次の例では、さまざまな入力での ​`toString`​ の動作を示します。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { a: toString([]), b: toString(["h", "o", "l", "a"]) } ``` #### [](#出力-5)出力 ```Json { "a": "", "b": "hola" } ``` # toString ## [](#tostring1)toString(mimeType: MimeType): String `MimeType`​ 値を文字列表現に変換します。 _DataWeave バージョン 2.7.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

mimeType

MimeType

String​ に変換する MIME タイプ値。

### [](#例)例 次の例では、​`parameters`​ が含まれない ​`MimeType`​ 値を文字列表現に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::module::Mime output application/json --- toString({'type': "application", subtype: "json", parameters: {}}) ``` #### [](#出力)出力 ```Json "application/json" ``` ### [](#例-2)例 次の例では、​`parameters`​ が含まれる ​`MimeType`​ 値を文字列表現に変換します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::module::Mime output application/json --- toString({'type': "multipart", subtype: "form-data", parameters: {boundary: "my-boundary"}}) ``` #### [](#出力-2)出力 ```Json "multipart/form-data;boundary=my-boundary" ``` # toTime ## [](#totime1)toTime(str: String, format: String | Null = null, locale: String | Null = null): Time `String`​ 値を ​`Time`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Time​ 値に変換する ​String​ 値。

​format

​Time​ 値に対して使用する書式設定。 ​null​ 値は ​Time​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​10:15:30.000000​ などの ​Time​ 値の形式は ​HH:mm:ss.nxxx​ となります。

​locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toTime("23:57:59Z"), b: toTime("13:44:12.283-08:00","HH:mm:ss.nxxx") } ``` #### [](#出力)出力 ```DataWeave { a: |23:57:59Z|, b: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"} } ``` # toTime ## [](#totime1)toTime(str: String, format: String | Null = null, locale: String | Null = null): Time `String`​ 値を ​`Time`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Time​ 値に変換する ​String​ 値。

format

Time​ 値に対して使用する書式設定。 ​null​ 値は ​Time​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​10:15:30.000000​ などの ​Time​ 値の形式は ​HH:mm:ss.nxxx​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toTime("23:57:59Z"), b: toTime("13:44:12.283-08:00","HH:mm:ss.nxxx") } ``` #### [](#出力)出力 ```DataWeave { a: |23:57:59Z|, b: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"} } ``` # toTime ## [](#totime1)toTime(str: String, format: String | Null = null, locale: String | Null = null): Time `String`​ 値を ​`Time`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Time​ 値に変換する ​String​ 値。

format

Time​ 値に対して使用する書式設定。 ​null​ 値は ​Time​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​10:15:30.000000​ などの ​Time​ 値の形式は ​HH:mm:ss.nxxx​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toTime("23:57:59Z"), b: toTime("13:44:12.283-08:00","HH:mm:ss.nxxx") } ``` #### [](#出力)出力 ```DataWeave { a: |23:57:59Z|, b: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"} } ``` # toTime ## [](#totime1)toTime(str: String, format: String | Null = null, locale: String | Null = null): Time `String`​ 値を ​`Time`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Time​ 値に変換する ​String​ 値。

format

Time​ 値に対して使用する書式設定。 ​null​ 値は ​Time​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​10:15:30.000000​ などの ​Time​ 値の形式は ​HH:mm:ss.nxxx​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例)例 次の例では、さまざまな入力での ​`toTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toTime("23:57:59Z"), b: toTime("13:44:12.283-08:00","HH:mm:ss.nxxx") } ``` #### [](#出力)出力 ```DataWeave { a: |23:57:59Z|, b: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"} } ``` # toTime ## [](#totime1)toTime(str: String, formatters: Array): Time 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`Time`​ 値に変換します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Time​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

Time​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions import * from dw::Runtime output application/dw --- { a: toTime("13:44:12.283-08:00", [{format: "HH:mm:ss.xxx"}, {format: "HH:mm:ss.nxxx"}]), b: try(() -> toTime("13:44:12.283-08:00", [{format: "HH:mm:ss.xxx"}]).error.message } ``` #### [](#出力)出力 ```DataWeave { a: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"}, b: "Could not find a valid formatter for '13:44:12.283-08:00'" } ``` ## [](#totime2)toTime(str: String, format: String | Null = null, locale: String | Null = null): Time `String`​ 値を ​`Time`​ 値に変換して、形式とロケールを受け入れます。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

str

Time​ 値に変換する ​String​ 値。

format

Time​ 値に対して使用する書式設定。 ​null​ 値は ​Time​ 値に対して無効です。 このパラメーターでは、ISO-8601 に基づいた Java 文字パターンを受け入れます。​10:15:30.000000​ などの ​Time​ 値の形式は ​HH:mm:ss.nxxx​ となります。

locale

使用する省略可能な ISO 3166 国コード (​US​、​AR​、​ES​ など)。​null​ または欠落値では JVM のデフォルトが使用されます。

### [](#例-2)例 次の例では、さまざまな入力での ​`toTime`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toTime("23:57:59Z"), b: toTime("13:44:12.283-08:00","HH:mm:ss.nxxx") } ``` #### [](#出力-2)出力 ```DataWeave { a: |23:57:59Z|, b: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"} } ``` # toTimeOrNull ## [](#totimeornull1)toTimeOrNull(str: String, formatters: Array): Time | Null 変換する特定の値に一致する最初の​`フォーマッター`​を使用して、​`String`​ 値を ​`Time`​ 値に変換します。 指定した値に一致する​`フォーマッター`​がない場合、関数は ​`null`​ 値を返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 型 説明

str

String (文字列)

Time​ 値に変換する ​String​ 値。

formatters

Array<Formatter>

Time​ 値に対して使用する書式設定の​配列​。

### [](#例)例 次の例では、さまざまな入力での ​`toTimeOrNull`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { a: toTimeOrNull("13:44:12.283-08:00", [{format: "HH:mm:ss.xxx"}, {format: "HH:mm:ss.nxxx"}]), b: toTimeOrNull("13:44:12.283-08:00", [{format: "HH:mm:ss.xxx"}]) } ``` #### [](#出力)出力 ```DataWeave { a: |13:44:12.000000283-08:00| as Time {format: "HH:mm:ss.nxxx"}, b: null } ``` # toTimeZone ## [](#totimezone1)toTimeZone(str: String): TimeZone `String`​ 値を ​`TimeZone`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​TimeZone​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toTimeZone`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toTimeZoneOffset: toTimeZone("-03:00"), toTimeZoneAbbreviation: toTimeZone("Z"), toTimeZoneName: toTimeZone("America/Argentina/Buenos_Aires") } ``` #### [](#出力)出力 ```DataWeave { toTimeZoneOffset: |-03:00|, toTimeZoneAbbreviation: |Z|, toTimeZoneName: |America/Argentina/Buenos_Aires| } ``` # toTimeZone ## [](#totimezone1)toTimeZone(str: String): TimeZone `String`​ 値を ​`TimeZone`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

TimeZone​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toTimeZone`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toTimeZoneOffset: toTimeZone("-03:00"), toTimeZoneAbbreviation: toTimeZone("Z"), toTimeZoneName: toTimeZone("America/Argentina/Buenos_Aires") } ``` #### [](#出力)出力 ```DataWeave { toTimeZoneOffset: |-03:00|, toTimeZoneAbbreviation: |Z|, toTimeZoneName: |America/Argentina/Buenos_Aires| } ``` # toTimeZone ## [](#totimezone1)toTimeZone(str: String): TimeZone `String`​ 値を ​`TimeZone`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

TimeZone​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toTimeZone`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toTimeZoneOffset: toTimeZone("-03:00"), toTimeZoneAbbreviation: toTimeZone("Z"), toTimeZoneName: toTimeZone("America/Argentina/Buenos_Aires") } ``` #### [](#出力)出力 ```DataWeave { toTimeZoneOffset: |-03:00|, toTimeZoneAbbreviation: |Z|, toTimeZoneName: |America/Argentina/Buenos_Aires| } ``` # toTimeZone ## [](#totimezone1)toTimeZone(str: String): TimeZone `String`​ 値を ​`TimeZone`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

TimeZone​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toTimeZone`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toTimeZoneOffset: toTimeZone("-03:00"), toTimeZoneAbbreviation: toTimeZone("Z"), toTimeZoneName: toTimeZone("America/Argentina/Buenos_Aires") } ``` #### [](#出力)出力 ```DataWeave { toTimeZoneOffset: |-03:00|, toTimeZoneAbbreviation: |Z|, toTimeZoneName: |America/Argentina/Buenos_Aires| } ``` # toTimeZone ## [](#totimezone1)toTimeZone(str: String): TimeZone `String`​ 値を ​`TimeZone`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

TimeZone​ 値に変換する ​String​ 値。

### [](#例)例 次の例では、さまざまな入力での ​`toTimeZone`​ の動作を示します。 `application/dw`​ 形式の出力が生成されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/dw --- { toTimeZoneOffset: toTimeZone("-03:00"), toTimeZoneAbbreviation: toTimeZone("Z"), toTimeZoneName: toTimeZone("America/Argentina/Buenos_Aires") } ``` #### [](#出力)出力 ```DataWeave { toTimeZoneOffset: |-03:00|, toTimeZoneAbbreviation: |Z|, toTimeZoneName: |America/Argentina/Buenos_Aires| } ``` # toUri ## [](#touri1)toUri(str: String): Uri `String`​ 値を ​`Uri`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​str

​Uri​ 値に変換する ​String​ 値。

### [](#例)例 次の例は、​`toUri`​ の動作を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toUriExample: toUri("https://www.google.com/") } ``` #### [](#出力)出力 ```DataWeave { "toUriExample": "https://www.google.com/" } ``` # toUri ## [](#touri1)toUri(str: String): Uri `String`​ 値を ​`Uri`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Uri​ 値に変換する ​String​ 値。

### [](#例)例 次の例は、​`toUri`​ の動作を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toUriExample: toUri("https://www.google.com/") } ``` #### [](#出力)出力 ```DataWeave { "toUriExample": "https://www.google.com/" } ``` # toUri ## [](#touri1)toUri(str: String): Uri `String`​ 値を ​`Uri`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Uri​ 値に変換する ​String​ 値。

### [](#例)例 次の例は、​`toUri`​ の動作を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toUriExample: toUri("https://www.google.com/") } ``` #### [](#出力)出力 ```DataWeave { "toUriExample": "https://www.google.com/" } ``` # toUri ## [](#touri1)toUri(str: String): Uri `String`​ 値を ​`Uri`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Uri​ 値に変換する ​String​ 値。

### [](#例)例 次の例は、​`toUri`​ の動作を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toUriExample: toUri("https://www.google.com/") } ``` #### [](#出力)出力 ```DataWeave { "toUriExample": "https://www.google.com/" } ``` # toUri ## [](#touri1)toUri(str: String): Uri `String`​ 値を ​`Uri`​ 値に変換します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

str

Uri​ 値に変換する ​String​ 値。

### [](#例)例 次の例は、​`toUri`​ の動作を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Coercions output application/json --- { toUriExample: toUri("https://www.google.com/") } ``` #### [](#出力)出力 ```DataWeave { "toUriExample": "https://www.google.com/" } ``` # Tree (dw::util::Tree) このユーティリティモジュールが提供する関数を使用すると、値をツリーデータ構造のように処理できます。 このモジュールは Mule Runtime に含まれています。使用するには、DataWeave コードにインポートする必要があります。たとえば、スクリプトのヘッダーに行 ​`import * from dw::util::Tree`​ を追加します。 _DataWeave 2.2.2 で導入されました。Mule 4.2.2 以降でサポートされます。_​ ## [](#関数)関数
名前 説明

​asExpressionString

パスを文字列表現に変換します。

​mapLeafValues

ツリー内のターミナル (リーフ) ノードをマップします。

​nodeExists

ツリー内のいずれかのノードが、指定された条件に対して検証された場合、​true​ を返します。

## [](#変数)変数 - [Tree 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dw-tree-variables) ## [](#型)型 - [Tree 型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-tree-types) # Tree (dw::util::Tree) このユーティリティモジュールには、値をツリーデータ構造として処理する関数が用意されています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Tree`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_​ ## [](#関数)関数
名前 説明

​asExpressionString

​Path​ 値をパスの文字列表現に変換します。

​filterArrayLeafs

絞り込み式を配列のリーフまたは ​Path​ 値に適用します。

​filterObjectLeafs

絞り込み式をオブジェクトのキーのリーフまたは ​Path​ 値に適用します。

​filterTree

指定された ​criteria​ に基づいて入力内のノードの値またはパスを絞り込みます。

​isArrayType

指定された ​Path​ 値が ​ARRAY_TYPE​ 式の場合、​true​ を返します。

​isAttributeType

指定された ​Path​ 値が ​ATTRIBUTE_TYPE​ 式の場合、​true​ を返します。

​isObjectType

指定された ​Path​ 値が ​OBJECT_TYPE​ 式の場合、​true​ を返します。

​mapLeafValues

ツリー内のターミナル (リーフ) ノードをマップします。

​nodeExists

特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​true​ を返します。

## [](#変数)変数 - [Tree 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-variables) ## [](#型)型 - [Tree 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-tree-types) # Tree (dw::util::Tree) このユーティリティモジュールには、値をツリーデータ構造として処理する関数が用意されています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Tree`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

asExpressionString

Path​ 値をパスの文字列表現に変換します。

filterArrayLeafs

絞り込み式を配列のリーフまたは ​Path​ 値に適用します。

filterObjectLeafs

絞り込み式をオブジェクトのキーのリーフまたは ​Path​ 値に適用します。

filterTree

指定された ​criteria​ に基づいて入力内のノードの値またはパスを絞り込みます。

isArrayType

指定された ​Path​ 値が ​ARRAY_TYPE​ 式の場合、​true​ を返します。

isAttributeType

指定された ​Path​ 値が ​ATTRIBUTE_TYPE​ 式の場合、​true​ を返します。

isObjectType

指定された ​Path​ 値が ​OBJECT_TYPE​ 式の場合、​true​ を返します。

mapLeafValues

ツリー内のターミナル (リーフ) ノードをマップします。

nodeExists

特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​true​ を返します。

## [](#変数)変数 - [Tree 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-tree-variables) ## [](#型)型 - [Tree 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-tree-types) # Tree (dw::util::Tree) このユーティリティモジュールには、値をツリーデータ構造として処理する関数が用意されています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Tree`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

asExpressionString

Path​ 値をパスの文字列表現に変換します。

filterArrayLeafs

絞り込み式を配列のリーフまたは ​Path​ 値に適用します。

filterObjectLeafs

絞り込み式をオブジェクトのキーのリーフまたは ​Path​ 値に適用します。

filterTree

指定された ​criteria​ に基づいて入力内のノードの値またはパスを絞り込みます。

isArrayType

指定された ​Path​ 値が ​ARRAY_TYPE​ 式の場合、​true​ を返します。

isAttributeType

指定された ​Path​ 値が ​ATTRIBUTE_TYPE​ 式の場合、​true​ を返します。

isObjectType

指定された ​Path​ 値が ​OBJECT_TYPE​ 式の場合、​true​ を返します。

mapLeafValues

ツリー内のターミナル (リーフ) ノードをマップします。

nodeExists

特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​true​ を返します。

## [](#変数)変数 - [Tree 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-tree-variables) ## [](#型)型 - [Tree 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-tree-types) # Tree (dw::util::Tree) このユーティリティモジュールには、値をツリーデータ構造として処理する関数が用意されています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Tree`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

asExpressionString

Path​ 値をパスの文字列表現に変換します。

filterArrayLeafs

絞り込み式を配列のリーフまたは ​Path​ 値に適用します。

filterObjectLeafs

絞り込み式をオブジェクトのキーのリーフまたは ​Path​ 値に適用します。

filterTree

指定された ​criteria​ に基づいて入力内のノードの値またはパスを絞り込みます。

isArrayType

指定された ​Path​ 値が ​ARRAY_TYPE​ 式の場合、​true​ を返します。

isAttributeType

指定された ​Path​ 値が ​ATTRIBUTE_TYPE​ 式の場合、​true​ を返します。

isObjectType

指定された ​Path​ 値が ​OBJECT_TYPE​ 式の場合、​true​ を返します。

mapLeafValues

ツリー内のターミナル (リーフ) ノードをマップします。

nodeExists

特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​true​ を返します。

## [](#変数)変数 - [Tree 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-tree-variables) ## [](#型)型 - [Tree 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-tree-types) # Tree (dw::util::Tree) このユーティリティモジュールには、値をツリーデータ構造として処理する関数が用意されています。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Tree`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

asExpressionString

Path​ 値をパスの文字列表現に変換します。

filterArrayLeafs

絞り込み式を配列のリーフまたは ​Path​ 値に適用します。

filterObjectLeafs

絞り込み式をオブジェクトのキーのリーフまたは ​Path​ 値に適用します。

filterTree

指定された ​criteria​ に基づいて入力内のノードの値またはパスを絞り込みます。

isArrayType

指定された ​Path​ 値が ​ARRAY_TYPE​ 式の場合、​true​ を返します。

isAttributeType

指定された ​Path​ 値が ​ATTRIBUTE_TYPE​ 式の場合、​true​ を返します。

isObjectType

指定された ​Path​ 値が ​OBJECT_TYPE​ 式の場合、​true​ を返します。

mapLeafValues

ツリー内のターミナル (リーフ) ノードをマップします。

nodeExists

特定のツリー内のいずれかのノードが、指定された条件に対して検証された場合、​true​ を返します。

## [](#変数)変数 - [Tree 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-tree-variables) ## [](#型)型 - [Tree 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-tree-types) # Tree 型 (dw::util::Tree)
型 定義 説明

パス

​type Path = Array<PathElement>

ツリー内のノードの場所を識別する ​PathElement​ 型の配列を表します。

PathElement

type PathElement = ​{| // {options: ["Object","Attribute","Array"]} kind: String, selector: String | Number, namespace: Namespace | Null |}

パス内のノードの特定の選択を表します。

# Tree 型 (dw::util::Tree)
型 定義 説明

Path (パス)

​type Path = Array<PathElement>

ツリー内のノードの場所を識別する ​PathElement​ 値の配列で構成される型。例としては、​[{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}] as Path​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

PathElement

​type PathElement = {| kind: "Object" | "Attribute" | "Array", selector: String | Number, namespace: Namespace | Null |}

パス内のノードの選択を表す型。 例としては、​{kind: ARRAY_TYPE, selector: "name", namespace: null} as PathElement​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 型 (dw::util::Tree)
型 定義 説明

Path

type Path = Array<PathElement>

ツリー内のノードの場所を識別する ​PathElement​ 値の配列で構成される型。例としては、​[{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}] as Path​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

PathElement

type PathElement = {| kind: "Object" | "Attribute" | "Array", selector: String | Number, namespace: Namespace | Null |}

パス内のノードの選択を表す型。 例としては、​{kind: ARRAY_TYPE, selector: "name", namespace: null} as PathElement​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 型 (dw::util::Tree)
型 定義 説明

Path

type Path = Array<PathElement>

ツリー内のノードの場所を識別する ​PathElement​ 値の配列で構成される型。例としては、​[{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}] as Path​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

PathElement

type PathElement = {| kind: "Object" | "Attribute" | "Array", selector: String | Number, namespace: Namespace | Null |}

パス内のノードの選択を表す型。 例としては、​{kind: ARRAY_TYPE, selector: "name", namespace: null} as PathElement​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 型 (dw::util::Tree)
型 定義 説明

Path

type Path = Array<PathElement>

ツリー内のノードの場所を識別する ​PathElement​ 値の配列で構成される型。例としては、​[{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}] as Path​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

PathElement

type PathElement = {| kind: "Object" | "Attribute" | "Array", selector: String | Number, namespace: Namespace | Null |}

パス内のノードの選択を表す型。 例としては、​{kind: ARRAY_TYPE, selector: "name", namespace: null} as PathElement​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 型 (dw::util::Tree)
型 定義 説明

Path

type Path = Array<PathElement>

ツリー内のノードの場所を識別する ​PathElement​ 値の配列で構成される型。例としては、​[{kind: OBJECT_TYPE, selector: "user", namespace: null}, {kind: ATTRIBUTE_TYPE, selector: "name", namespace: null}] as Path​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

PathElement

type PathElement = {| kind: "Object" | "Attribute" | "Array", selector: String | Number, namespace: Namespace | Null |}

パス内のノードの選択を表す型。 例としては、​{kind: ARRAY_TYPE, selector: "name", namespace: null} as PathElement​ があります。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 変数 (dw::util::Tree)
変数 定義 説明

​ARRAY_TYPE​

​ARRAY_TYPE​

​PathElement​ の値を配列として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

​ATTRIBUTE_TYPE​

​ATTRIBUTE_TYPE​

​PathElement​ の値を属性として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

​OBJECT_TYPE​

​OBJECT_TYPE​

​PathElement​ の値をオブジェクトとして識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 変数 (dw::util::Tree)
変数 定義 説明

​ARRAY_TYPE​

​ARRAY_TYPE​

​PathElement​ の値を配列として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

​ATTRIBUTE_TYPE​

​ATTRIBUTE_TYPE​

​PathElement​ の値を属性として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

​OBJECT_TYPE​

​OBJECT_TYPE​

​PathElement​ の値をオブジェクトとして識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

# Tree 変数 (dw::util::Tree)
変数 定義 説明

ARRAY_TYPE

ARRAY_TYPE

PathElement​ の値を配列として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

ATTRIBUTE_TYPE

ATTRIBUTE_TYPE

PathElement​ の値を属性として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

OBJECT_TYPE

OBJECT_TYPE

PathElement​ の値をオブジェクトとして識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。

# Tree 変数 (dw::util::Tree)
変数 定義 説明

ARRAY_TYPE

ARRAY_TYPE

PathElement​ の値を配列として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

ATTRIBUTE_TYPE

ATTRIBUTE_TYPE

PathElement​ の値を属性として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

OBJECT_TYPE

OBJECT_TYPE

PathElement​ の値をオブジェクトとして識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。

# Tree 変数 (dw::util::Tree)
変数 定義 説明

ARRAY_TYPE

ARRAY_TYPE

PathElement​ の値を配列として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

ATTRIBUTE_TYPE

ATTRIBUTE_TYPE

PathElement​ の値を属性として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

OBJECT_TYPE

OBJECT_TYPE

PathElement​ の値をオブジェクトとして識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。

# Tree 変数 (dw::util::Tree)
変数 定義 説明

ARRAY_TYPE

ARRAY_TYPE

PathElement​ の値を配列として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

ATTRIBUTE_TYPE

ATTRIBUTE_TYPE

PathElement​ の値を属性として識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。​

OBJECT_TYPE

OBJECT_TYPE

PathElement​ の値をオブジェクトとして識別するために使用される変数。

DataWeave バージョン 2.2.2 で導入されました。

# trim ## [](#trim1)trim(String): String 文字列の先頭と末尾に空白スペースがあれば、それを削除します。 ### [](#パラメーター)パラメーター
名前 説明

​text

空白スペースを削除する文字列。

### [](#例)例 この例では、文字列の先頭と末尾の空白を削除します。文字列の中間にある空白スペースは削除されません。削除されるのは、先頭と末尾の空白スペースのみです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "trim": trim(" my really long text ") } ``` #### [](#出力)出力 ```JSON { "trim": "my really long text" } ``` ### [](#例-2)例 次の例では、​`trim`​ がさまざまな文字列をどのように処理するかと、null 値をどのように処理するかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "null": trim(null), "empty": trim(""), "blank": trim(" "), "noBlankSpaces": trim("abc"), "withSpaces": trim(" abc ") } ``` #### [](#出力-2)出力 ```JSON { "null": null, "empty": "", "blank": "", "noBlankSpaces": "abc", "withSpaces": "abc" } ``` ## [](#trim2)trim(Null): Null `trim`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # trim ## [](#trim1)trim(text: String): String 文字列の先頭と末尾に空白スペースがあれば、それを削除します。 ### [](#パラメーター)パラメーター
名前 説明

​text

空白スペースを削除する文字列。

### [](#例)例 この例では、文字列の先頭と末尾の空白を削除します。文字列の中間にある空白スペースは削除されません。削除されるのは、先頭と末尾の空白スペースのみです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "trim": trim(" my really long text ") } ``` #### [](#出力)出力 ```JSON { "trim": "my really long text" } ``` ### [](#例-2)例 次の例では、​`trim`​ がさまざまな文字列をどのように処理するかと、null 値をどのように処理するかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "null": trim(null), "empty": trim(""), "blank": trim(" "), "noBlankSpaces": trim("abc"), "withSpaces": trim(" abc ") } ``` #### [](#出力-2)出力 ```JSON { "null": null, "empty": "", "blank": "", "noBlankSpaces": "abc", "withSpaces": "abc" } ``` ## [](#trim2)trim(value: Null): Null `trim`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # trim ## [](#trim1)trim(text: String): String 文字列の先頭と末尾に空白スペースがあれば、それを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

空白スペースを削除する文字列。

### [](#例)例 この例では、文字列の先頭と末尾の空白を削除します。文字列の中間にある空白スペースは削除されません。削除されるのは、先頭と末尾の空白スペースのみです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "trim": trim(" my really long text ") } ``` #### [](#出力)出力 ```JSON { "trim": "my really long text" } ``` ### [](#例-2)例 次の例では、​`trim`​ がさまざまな文字列をどのように処理するかと、null 値をどのように処理するかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "null": trim(null), "empty": trim(""), "blank": trim(" "), "noBlankSpaces": trim("abc"), "withSpaces": trim(" abc ") } ``` #### [](#出力-2)出力 ```JSON { "null": null, "empty": "", "blank": "", "noBlankSpaces": "abc", "withSpaces": "abc" } ``` ## [](#trim2)trim(value: Null): Null `trim`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # trim ## [](#trim1)trim(text: String): String 文字列の先頭と末尾に空白スペースがあれば、それを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

空白スペースを削除する文字列。

### [](#例)例 この例では、文字列の先頭と末尾の空白を削除します。文字列の中間にある空白スペースは削除されません。削除されるのは、先頭と末尾の空白スペースのみです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "trim": trim(" my really long text ") } ``` #### [](#出力)出力 ```JSON { "trim": "my really long text" } ``` ### [](#例-2)例 次の例では、​`trim`​ がさまざまな文字列をどのように処理するかと、null 値をどのように処理するかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "null": trim(null), "empty": trim(""), "blank": trim(" "), "noBlankSpaces": trim("abc"), "withSpaces": trim(" abc ") } ``` #### [](#出力-2)出力 ```JSON { "null": null, "empty": "", "blank": "", "noBlankSpaces": "abc", "withSpaces": "abc" } ``` ## [](#trim2)trim(value: Null): Null `trim`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # trim ## [](#trim1)trim(text: String): String 文字列の先頭と末尾に空白スペースがあれば、それを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

空白スペースを削除する文字列。

### [](#例)例 この例では、文字列の先頭と末尾の空白を削除します。文字列の中間にある空白スペースは削除されません。削除されるのは、先頭と末尾の空白スペースのみです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "trim": trim(" my really long text ") } ``` #### [](#出力)出力 ```JSON { "trim": "my really long text" } ``` ### [](#例-2)例 次の例では、​`trim`​ がさまざまな文字列をどのように処理するかと、null 値をどのように処理するかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "null": trim(null), "empty": trim(""), "blank": trim(" "), "noBlankSpaces": trim("abc"), "withSpaces": trim(" abc ") } ``` #### [](#出力-2)出力 ```JSON { "null": null, "empty": "", "blank": "", "noBlankSpaces": "abc", "withSpaces": "abc" } ``` ## [](#trim2)trim(value: Null): Null `trim`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # trim ## [](#trim1)trim(text: String): String 文字列の先頭と末尾に空白スペースがあれば、それを削除します。 ### [](#パラメーター)パラメーター
名前 説明

text

空白スペースを削除する文字列。

### [](#例)例 この例では、文字列の先頭と末尾の空白を削除します。文字列の中間にある空白スペースは削除されません。削除されるのは、先頭と末尾の空白スペースのみです。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "trim": trim(" my really long text ") } ``` #### [](#出力)出力 ```JSON { "trim": "my really long text" } ``` ### [](#例-2)例 次の例では、​`trim`​ がさまざまな文字列をどのように処理するかと、null 値をどのように処理するかを示します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "null": trim(null), "empty": trim(""), "blank": trim(" "), "noBlankSpaces": trim("abc"), "withSpaces": trim(" abc ") } ``` #### [](#出力-2)出力 ```JSON { "null": null, "empty": "", "blank": "", "noBlankSpaces": "abc", "withSpaces": "abc" } ``` ## [](#trim2)trim(value: Null): Null `trim`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # try ## [](#try1)try(() -> T): TryResult デリゲート関数を評価し、デリゲート関数が成功した場合は ​`success: true`​ と ​`result`​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​`success: false`​ と ​`error`​ を含むオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

​delegate

評価する関数。

### [](#例)例 次の例では、​`randomNumber`​ 関数を引数として使用し、​`try`​ 関数をコールしています。 関数 ​`randomNumber`​ は乱数を生成し、数値が 0.5 より大きい場合は ​`fail`​ をコールします。この関数の宣言はスクリプトのヘッダーにあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import try, fail from dw::Runtime output application/json fun randomNumber() = if(random() > 0.5) fail("This function is failing") else "OK" --- try(() -> randomNumber()) ``` #### [](#出力)出力 `randomNumber`​ が失敗すると、出力は次のようになります。 ```JSON { "success": false, "error": { "kind": "UserException", "message": "This function is failing", "location": "Unknown location", "stack": [ "fail (anonymous:0:0)", "myFunction (anonymous:1:114)", "main (anonymous:1:179)" ] } } ``` `randomNumber`​ が成功すると、出力は次のようになります。 ```JSON { "success": true, "result": "OK" } ``` `try`​ 関数が失敗しても、​`orElseTry`​ 関数と ​`orElse`​ 関数は処理を継続します。失敗した ​`try`​ 関数式の処理の詳細な例は、​`orElseTry`​ と ​`orElse`​ のドキュメントを参照してください。 注意: `orElseTry`​ 関数と ​`orElse`​ 関数を使用する代わりに、​`try`​ 関数の出力に基づいて、結果が ​`success: true`​ または ​`success: false`​ の場合に実行する条件ロジックを追加できます。 # try ## [](#try1)try(delegate: () -> T): TryResult デリゲート関数を評価し、デリゲート関数が成功した場合は ​`success: true`​ と ​`result`​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​`success: false`​ と ​`error`​ を含むオブジェクトを返します。 `try`​ 関数が失敗しても、​`orElseTry`​ 関数と ​`orElse`​ 関数は処理を継続します。失敗した ​`try`​ 関数式の処理の詳細な例は、​`orElseTry`​ と ​`orElse`​ のドキュメントを参照してください。 注意: `orElseTry`​ 関数と ​`orElse`​ 関数を使用する代わりに、​`try`​ 関数の出力に基づいて、結果が ​`success: true`​ または ​`success: false`​ の場合に実行する条件ロジックを追加できます。 ### [](#パラメーター)パラメーター
名前 説明

​delegate

評価する関数。

### [](#例)例 次の例では、​`randomNumber`​ 関数を引数として使用し、​`try`​ 関数をコールしています。 関数 ​`randomNumber`​ は乱数を生成し、数値が 0.5 より大きい場合は ​`fail`​ をコールします。この関数の宣言はスクリプトのヘッダーにあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import try, fail from dw::Runtime output application/json fun randomNumber() = if(random() > 0.5) fail("This function is failing") else "OK" --- try(() -> randomNumber()) ``` #### [](#出力)出力 `randomNumber`​ が失敗すると、出力は次のようになります。 ```JSON { "success": false, "error": { "kind": "UserException", "message": "This function is failing", "location": "Unknown location", "stack": [ "fail (anonymous:0:0)", "myFunction (anonymous:1:114)", "main (anonymous:1:179)" ] } } ``` `randomNumber`​ が成功すると、出力は次のようになります。 ```JSON { "success": true, "result": "OK" } ``` # try ## [](#try1)try(delegate: () -> T): TryResult デリゲート関数を評価し、デリゲート関数が成功した場合は ​`success: true`​ と ​`result`​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​`success: false`​ と ​`error`​ を含むオブジェクトを返します。 `try`​ 関数が失敗しても、​`orElseTry`​ 関数と ​`orElse`​ 関数は処理を継続します。失敗した ​`try`​ 関数式の処理の詳細な例は、​`orElseTry`​ と ​`orElse`​ のドキュメントを参照してください。 注意: `orElseTry`​ 関数と ​`orElse`​ 関数を使用する代わりに、​`try`​ 関数の出力に基づいて、結果が ​`success: true`​ または ​`success: false`​ の場合に実行する条件ロジックを追加できます。 ### [](#パラメーター)パラメーター
名前 説明

delegate

評価する関数。

### [](#例)例 次の例では、​`randomNumber`​ 関数を引数として使用し、​`try`​ 関数をコールしています。 関数 ​`randomNumber`​ は乱数を生成し、数値が 0.5 より大きい場合は ​`fail`​ をコールします。この関数の宣言はスクリプトのヘッダーにあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import try, fail from dw::Runtime output application/json fun randomNumber() = if(random() > 0.5) fail("This function is failing") else "OK" --- try(() -> randomNumber()) ``` #### [](#出力)出力 `randomNumber`​ が失敗すると、出力は次のようになります。 ```JSON { "success": false, "error": { "kind": "UserException", "message": "This function is failing", "location": "Unknown location", "stack": [ "fail (anonymous:0:0)", "myFunction (anonymous:1:114)", "main (anonymous:1:179)" ] } } ``` `randomNumber`​ が成功すると、出力は次のようになります。 ```JSON { "success": true, "result": "OK" } ``` # try ## [](#try1)try(delegate: () -> T): TryResult デリゲート関数を評価し、デリゲート関数が成功した場合は ​`success: true`​ と ​`result`​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​`success: false`​ と ​`error`​ を含むオブジェクトを返します。 `try`​ 関数が失敗しても、​`orElseTry`​ 関数と ​`orElse`​ 関数は処理を継続します。失敗した ​`try`​ 関数式の処理の詳細な例は、​`orElseTry`​ と ​`orElse`​ のドキュメントを参照してください。 注意: `orElseTry`​ 関数と ​`orElse`​ 関数を使用する代わりに、​`try`​ 関数の出力に基づいて、結果が ​`success: true`​ または ​`success: false`​ の場合に実行する条件ロジックを追加できます。 ### [](#パラメーター)パラメーター
名前 説明

delegate

評価する関数。

### [](#例)例 次の例では、​`randomNumber`​ 関数を引数として使用し、​`try`​ 関数をコールしています。 関数 ​`randomNumber`​ は乱数を生成し、数値が 0.5 より大きい場合は ​`fail`​ をコールします。この関数の宣言はスクリプトのヘッダーにあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import try, fail from dw::Runtime output application/json fun randomNumber() = if(random() > 0.5) fail("This function is failing") else "OK" --- try(() -> randomNumber()) ``` #### [](#出力)出力 `randomNumber`​ が失敗すると、出力は次のようになります。 ```JSON { "success": false, "error": { "kind": "UserException", "message": "This function is failing", "location": "Unknown location", "stack": [ "fail (anonymous:0:0)", "myFunction (anonymous:1:114)", "main (anonymous:1:179)" ] } } ``` `randomNumber`​ が成功すると、出力は次のようになります。 ```JSON { "success": true, "result": "OK" } ``` # try ## [](#try1)try(delegate: () -> T): TryResult デリゲート関数を評価し、デリゲート関数が成功した場合は ​`success: true`​ と ​`result`​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​`success: false`​ と ​`error`​ を含むオブジェクトを返します。 `try`​ 関数が失敗しても、​`orElseTry`​ 関数と ​`orElse`​ 関数は処理を継続します。失敗した ​`try`​ 関数式の処理の詳細な例は、​`orElseTry`​ と ​`orElse`​ のドキュメントを参照してください。 注意: `orElseTry`​ 関数と ​`orElse`​ 関数を使用する代わりに、​`try`​ 関数の出力に基づいて、結果が ​`success: true`​ または ​`success: false`​ の場合に実行する条件ロジックを追加できます。 ### [](#パラメーター)パラメーター
名前 説明

delegate

評価する関数。

### [](#例)例 次の例では、​`randomNumber`​ 関数を引数として使用し、​`try`​ 関数をコールしています。 関数 ​`randomNumber`​ は乱数を生成し、数値が 0.5 より大きい場合は ​`fail`​ をコールします。この関数の宣言はスクリプトのヘッダーにあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import try, fail from dw::Runtime output application/json fun randomNumber() = if(random() > 0.5) fail("This function is failing") else "OK" --- try(() -> randomNumber()) ``` #### [](#出力)出力 `randomNumber`​ が失敗すると、出力は次のようになります。 ```JSON { "success": false, "error": { "kind": "UserException", "message": "This function is failing", "location": "Unknown location", "stack": [ "fail (anonymous:0:0)", "myFunction (anonymous:1:114)", "main (anonymous:1:179)" ] } } ``` `randomNumber`​ が成功すると、出力は次のようになります。 ```JSON { "success": true, "result": "OK" } ``` # try ## [](#try1)try(delegate: () -> T): TryResult デリゲート関数を評価し、デリゲート関数が成功した場合は ​`success: true`​ と ​`result`​ を含むオブジェクトを返し、デリゲート関数が例外をスローした場合は ​`success: false`​ と ​`error`​ を含むオブジェクトを返します。 `try`​ 関数が失敗しても、​`orElseTry`​ 関数と ​`orElse`​ 関数は処理を継続します。失敗した ​`try`​ 関数式の処理の詳細な例は、​`orElseTry`​ と ​`orElse`​ のドキュメントを参照してください。 注意: `orElseTry`​ 関数と ​`orElse`​ 関数を使用する代わりに、​`try`​ 関数の出力に基づいて、結果が ​`success: true`​ または ​`success: false`​ の場合に実行する条件ロジックを追加できます。 ### [](#パラメーター)パラメーター
名前 説明

delegate

評価する関数。

### [](#例)例 次の例では、​`randomNumber`​ 関数を引数として使用し、​`try`​ 関数をコールしています。 関数 ​`randomNumber`​ は乱数を生成し、数値が 0.5 より大きい場合は ​`fail`​ をコールします。この関数の宣言はスクリプトのヘッダーにあります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import try, fail from dw::Runtime output application/json fun randomNumber() = if(random() > 0.5) fail("This function is failing") else "OK" --- try(() -> randomNumber()) ``` #### [](#出力)出力 `randomNumber`​ が失敗すると、出力は次のようになります。 ```JSON { "success": false, "error": { "kind": "UserException", "message": "This function is failing", "location": "Unknown location", "stack": [ "fail (anonymous:0:0)", "myFunction (anonymous:1:114)", "main (anonymous:1:179)" ] } } ``` `randomNumber`​ が成功すると、出力は次のようになります。 ```JSON { "success": true, "result": "OK" } ``` # typeOf ## [](#typeof1)typeOf(T): Type 値の型を返します。 ### [](#パラメーター)パラメーター
名前 説明

​value

string (文字列)、object (オブジェクト)、array (配列)、number (数値) などのサポートされている型。

### [](#例)例 次の例では、いくつかの入力値の型を識別します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ typeOf("A b"), typeOf([1,2]), typeOf(34), typeOf(true), typeOf({ a : 5 }) ] ``` #### [](#出力)出力 ```JSON [ "String", "Array", "Number", "Boolean", "Object" ] ``` # typeOf ## [](#typeof1)typeOf(value: T): Type 値の型を返します。 ### [](#パラメーター)パラメーター
名前 説明

​value

string (文字列)、object (オブジェクト)、array (配列)、number (数値) などのサポートされている型。

### [](#例)例 次の例では、いくつかの入力値の型を識別します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ typeOf("A b"), typeOf([1,2]), typeOf(34), typeOf(true), typeOf({ a : 5 }) ] ``` #### [](#出力)出力 ```JSON [ "String", "Array", "Number", "Boolean", "Object" ] ``` # typeOf ## [](#typeof1)typeOf(value: T): Type 値の基本データ型を返します。 値の型は、ランタイム表現から取得され、いずれかの算術型 (Intersection、Union、​`Any`​、または ​`Nothing`​) や型の別名にはなりません。存在する場合、値のメタデータは ​`typeOf`​ の結果に含まれます ( [「metadataOf」](https://docs.mulesoft.com/dataweave/latest/dw-types-functions-metadataof)​を参照)。 ### [](#パラメーター)パラメーター
名前 説明

value

評価する入力値。

### [](#例)例 次の例では、いくつかの入力値の型を識別します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ typeOf("A b"), typeOf([1,2]), typeOf(34), typeOf(true), typeOf({ a : 5 }) ] ``` #### [](#出力)出力 ```JSON [ "String", "Array", "Number", "Boolean", "Object" ] ``` ### [](#例-2)例 この例は、値の型が宣言時に使用される型に連動していることを示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var x: String | Number = "clearly a string" var y: "because" = "because" --- [typeOf(x), typeOf(y)] ``` #### [](#出力-2)出力 ```JSON ["String", "String"] ``` # typeOf ## [](#typeof1)typeOf(value: T): Type 値の基本データ型を返します。 値の型は、ランタイム表現から取得され、いずれかの算術型 (Intersection、Union、​`Any`​、または ​`Nothing`​) や型の別名にはなりません。存在する場合、値のメタデータは ​`typeOf`​ の結果に含まれます ( [「metadataOf」](https://docs.mulesoft.com/dataweave/latest/dw-types-functions-metadataof)​を参照)。 ### [](#パラメーター)パラメーター
名前 説明

value

評価する入力値。

### [](#例)例 次の例では、いくつかの入力値の型を識別します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ typeOf("A b"), typeOf([1,2]), typeOf(34), typeOf(true), typeOf({ a : 5 }) ] ``` #### [](#出力)出力 ```JSON [ "String", "Array", "Number", "Boolean", "Object" ] ``` ### [](#例-2)例 この例は、値の型が宣言時に使用される型に連動していることを示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var x: String | Number = "clearly a string" var y: "because" = "because" --- [typeOf(x), typeOf(y)] ``` #### [](#出力-2)出力 ```JSON ["String", "String"] ``` # typeOf ## [](#typeof1)typeOf(value: T): Type 値の基本データ型を返します。 値の型は、ランタイム表現から取得され、いずれかの算術型 (Intersection、Union、​`Any`​、または ​`Nothing`​) や型の別名にはなりません。存在する場合、値のメタデータは ​`typeOf`​ の結果に含まれます ( [「metadataOf」](https://docs.mulesoft.com/dataweave/latest/dw-types-functions-metadataof)​を参照)。 ### [](#パラメーター)パラメーター
名前 説明

value

評価する入力値。

### [](#例)例 次の例では、いくつかの入力値の型を識別します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ typeOf("A b"), typeOf([1,2]), typeOf(34), typeOf(true), typeOf({ a : 5 }) ] ``` #### [](#出力)出力 ```JSON [ "String", "Array", "Number", "Boolean", "Object" ] ``` ### [](#例-2)例 この例は、値の型が宣言時に使用される型に連動していることを示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var x: String | Number = "clearly a string" var y: "because" = "because" --- [typeOf(x), typeOf(y)] ``` #### [](#出力-2)出力 ```JSON ["String", "String"] ``` # typeOf ## [](#typeof1)typeOf(value: T): Type 値のプリミティブデータ型 (​`String`​ など) を返します。 値の型は、ランタイム表現から取得され、いずれかの算術型 (Intersection、Union、​`Any`​、または ​`Nothing`​) や型の別名にはなりません。存在する場合、値のメタデータは ​`typeOf`​ の結果に含まれます ( [「metadataOf」](https://docs.mulesoft.com/dataweave/latest/dw-types-functions-metadataof)​を参照)。 ### [](#パラメーター)パラメーター
名前 説明

value

評価する入力値。

### [](#例)例 次の例では、いくつかの入力値の型を識別します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [ typeOf("A b"), typeOf([1,2]), typeOf(34), typeOf(true), typeOf({ a : 5 }) ] ``` #### [](#出力)出力 ```JSON [ "String", "Array", "Number", "Boolean", "Object" ] ``` ### [](#例-2)例 この例は、値の型が宣言時に使用される型に連動していないことを示しています。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json var x: String | Number = "clearly a string" var y: "because" = "because" --- [typeOf(x), typeOf(y)] ``` #### [](#出力-2)出力 ```JSON ["String", "String"] ``` # Types (データ型) (dw::core::Types) このモジュールにより、データ型のイントロスペクションを実行できます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Types`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ## [](#関数)関数
名前 説明

​arrayItem

特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。

​baseTypeOf

特定のデータ型の基本データ型を返します。

​functionParamTypes

特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。

​functionReturnType

関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。

​intersectionItems

特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。

​isAnyType

入力が Any (任意) 型の場合は ​true​ を返します。

​isArrayType

入力種別が Array (配列) 型の場合は ​true​ を返します。

​isBinaryType

入力が Binary (バイナリ) 型の場合は ​true​ を返します。

​isBooleanType

入力が Boolean (ブール) 型の場合は ​true​ を返します。

​isDateTimeType

入力が DateTime (日時) 型の場合は ​true​ を返します。

​isDateType

入力が Date (日付) 型の場合は ​true​ を返します。

​isFunctionType

入力が Function (関数) 型の場合は ​true​ を返します。

​isIntersectionType

入力種別が Intersection (交差) 型の場合は ​true​ を返します。

​isKeyType

入力が Key (キー) 型の場合は ​true​ を返します。

​isLiteralType

入力が Literal (リテラル) 型の場合は ​true​ を返します。

​isLocalDateTimeType

入力が LocalDateTime (ローカル日時) 型の場合は ​true​ を返します。

​isLocalTimeType

入力が LocalTime (ローカル時刻) 型の場合は ​true​ を返します。

​isNamespaceType

入力が Namespace (名前空間) 型の場合は ​true​ を返します。

​isNothingType

入力が Nothing (なし) 型の場合は ​true​ を返します。

​isNullType

入力が Null 型の場合は ​true​ を返します。

​isNumberType

入力が Number (数値) 型の場合は ​true​ を返します。

​isObjectType

入力が Object (オブジェクト) 型の場合は ​true​ を返します。

​isPeriodType

入力が Period (期間) 型の場合は ​true​ を返します。

​isRangeType

入力が Range (範囲) 型の場合は ​true​ を返します。

​isReferenceType

入力種別が Reference (参照) 型の場合は ​true​ を返します。

​isRegexType

入力が Regex (正規表現) 型の場合は ​true​ を返します。

​isStringType

入力が String (文字列) 型の場合は ​true​ を返します。

​isTimeType

入力が Time (時刻) 型の場合は ​true​ を返します。

​isTimeZoneType

入力が TimeZone (タイムゾーン) 型の場合は ​true​ を返します。

​isTypeType

入力が Type (データ型) 型の場合は ​true​ を返します。

​isUnionType

入力種別が Union (結合) 型の場合は ​true​ を返します。

​isUriType

入力が Uri (URI) 型の場合は ​true​ を返します。

​literalValueOf

Literal (リテラル) 型に属する入力の値を返します。

​metadataOf

特定の型にアタッチされたメタデータを返します。

​nameOf

入力種別の名前を返します。

​objectFields

特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。

​unionItems

特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。

## [](#型)型 - [Types (データ型) 型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-types-types) # Types (データ型) (dw::core::Types) このモジュールにより、データ型のイントロスペクションを実行できます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Types`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ## [](#関数)関数
名前 説明

​arrayItem

特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。

​baseTypeOf

特定のデータ型の基本データ型を返します。

​functionParamTypes

特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。

​functionReturnType

関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。

​intersectionItems

特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。

​isAnyType

入力が Any (任意) 型の場合は ​true​ を返します。

​isArrayType

入力種別が Array (配列) 型の場合は ​true​ を返します。

​isBinaryType

入力が Binary (バイナリ) 型の場合は ​true​ を返します。

​isBooleanType

入力が Boolean (ブール) 型の場合は ​true​ を返します。

​isDateTimeType

入力が DateTime (日時) 型の場合は ​true​ を返します。

​isDateType

入力が Date (日付) 型の場合は ​true​ を返します。

​isFunctionType

入力が Function (関数) 型の場合は ​true​ を返します。

​isIntersectionType

入力種別が Intersection (交差) 型の場合は ​true​ を返します。

​isKeyType

入力が Key (キー) 型の場合は ​true​ を返します。

​isLiteralType

入力が Literal (リテラル) 型の場合は ​true​ を返します。

​isLocalDateTimeType

入力が LocalDateTime (ローカル日時) 型の場合は ​true​ を返します。

​isLocalTimeType

入力が LocalTime (ローカル時刻) 型の場合は ​true​ を返します。

​isNamespaceType

入力が Namespace (名前空間) 型の場合は ​true​ を返します。

​isNothingType

入力が Nothing (なし) 型の場合は ​true​ を返します。

​isNullType

入力が Null 型の場合は ​true​ を返します。

​isNumberType

入力が Number (数値) 型の場合は ​true​ を返します。

​isObjectType

入力が Object (オブジェクト) 型の場合は ​true​ を返します。

​isPeriodType

入力が Period (期間) 型の場合は ​true​ を返します。

​isRangeType

入力が Range (範囲) 型の場合は ​true​ を返します。

​isReferenceType

入力種別が Reference (参照) 型の場合は ​true​ を返します。

​isRegexType

入力が Regex (正規表現) 型の場合は ​true​ を返します。

​isStringType

入力が String (文字列) 型の場合は ​true​ を返します。

​isTimeType

入力が Time (時刻) 型の場合は ​true​ を返します。

​isTimeZoneType

入力が TimeZone (タイムゾーン) 型の場合は ​true​ を返します。

​isTypeType

入力が Type (データ型) 型の場合は ​true​ を返します。

​isUnionType

入力種別が Union (結合) 型の場合は ​true​ を返します。

​isUriType

入力が Uri (URI) 型の場合は ​true​ を返します。

​literalValueOf

Literal (リテラル) 型に属する入力の値を返します。

​metadataOf

特定の型にアタッチされたメタデータを返します。

​nameOf

入力種別の名前を返します。

​objectFields

特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。

​unionItems

特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。

## [](#型)型 - [Types (データ型) 型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-types-types) # Types (データ型) (dw::core::Types) このモジュールにより、データ型のイントロスペクションを実行できます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Types`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.3.0 で導入されました。_ ## [](#関数)関数
名前 説明

arrayItem

特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。

baseTypeOf

特定のデータ型の基本データ型を返します。

functionParamTypes

特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。

functionReturnType

関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。

intersectionItems

特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。

isAnyType

入力が Any (任意) 型の場合は ​true​ を返します。

isArrayType

入力種別が Array (配列) 型の場合は ​true​ を返します。

isBinaryType

入力が Binary (バイナリ) 型の場合は ​true​ を返します。

isBooleanType

入力が Boolean (ブール) 型の場合は ​true​ を返します。

isDateTimeType

入力が DateTime (日時) 型の場合は ​true​ を返します。

isDateType

入力が Date (日付) 型の場合は ​true​ を返します。

isFunctionType

入力が Function (関数) 型の場合は ​true​ を返します。

isIntersectionType

入力種別が Intersection (交差) 型の場合は ​true​ を返します。

isKeyType

入力が Key (キー) 型の場合は ​true​ を返します。

isLiteralType

入力が Literal (リテラル) 型の場合は ​true​ を返します。

isLocalDateTimeType

入力が LocalDateTime (ローカル日時) 型の場合は ​true​ を返します。

isLocalTimeType

入力が LocalTime (ローカル時刻) 型の場合は ​true​ を返します。

isNamespaceType

入力が Namespace (名前空間) 型の場合は ​true​ を返します。

isNothingType

入力が Nothing (なし) 型の場合は ​true​ を返します。

isNullType

入力が Null 型の場合は ​true​ を返します。

isNumberType

入力が Number (数値) 型の場合は ​true​ を返します。

isObjectType

入力が Object (オブジェクト) 型の場合は ​true​ を返します。

isPeriodType

入力が Period (期間) 型の場合は ​true​ を返します。

isRangeType

入力が Range (範囲) 型の場合は ​true​ を返します。

isReferenceType

入力種別が Reference (参照) 型の場合は ​true​ を返します。

isRegexType

入力が Regex (正規表現) 型の場合は ​true​ を返します。

isStringType

入力が String (文字列) 型の場合は ​true​ を返します。

isTimeType

入力が Time (時刻) 型の場合は ​true​ を返します。

isTimeZoneType

入力が TimeZone (タイムゾーン) 型の場合は ​true​ を返します。

isTypeType

入力が Type (データ型) 型の場合は ​true​ を返します。

isUnionType

入力種別が Union (結合) 型の場合は ​true​ を返します。

isUriType

入力が Uri (URI) 型の場合は ​true​ を返します。

literalValueOf

Literal (リテラル) 型に属する入力の値を返します。

metadataOf

特定の型にアタッチされたメタデータを返します。

nameOf

入力種別の名前を返します。

objectFields

特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。

unionItems

特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。

## [](#型)型 - [Types (データ型) 型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-types-types) # Types (データ型) (dw::core::Types) このモジュールにより、データ型のイントロスペクションを実行できます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Types`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.3.0 で導入されました。_ ## [](#関数)関数
名前 説明

arrayItem

特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。

baseTypeOf

特定のデータ型の基本データ型を返します。

functionParamTypes

特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。

functionReturnType

関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。

intersectionItems

特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。

isAnyType

入力が Any (任意) 型の場合は ​true​ を返します。

isArrayType

入力種別が Array (配列) 型の場合は ​true​ を返します。

isBinaryType

入力が Binary (バイナリ) 型の場合は ​true​ を返します。

isBooleanType

入力が Boolean (ブール) 型の場合は ​true​ を返します。

isDateTimeType

入力が DateTime (日時) 型の場合は ​true​ を返します。

isDateType

入力が Date (日付) 型の場合は ​true​ を返します。

isFunctionType

入力が Function (関数) 型の場合は ​true​ を返します。

isIntersectionType

入力種別が Intersection (交差) 型の場合は ​true​ を返します。

isKeyType

入力が Key (キー) 型の場合は ​true​ を返します。

isLiteralType

入力が Literal (リテラル) 型の場合は ​true​ を返します。

isLocalDateTimeType

入力が LocalDateTime (ローカル日時) 型の場合は ​true​ を返します。

isLocalTimeType

入力が LocalTime (ローカル時刻) 型の場合は ​true​ を返します。

isNamespaceType

入力が Namespace (名前空間) 型の場合は ​true​ を返します。

isNothingType

入力が Nothing (なし) 型の場合は ​true​ を返します。

isNullType

入力が Null 型の場合は ​true​ を返します。

isNumberType

入力が Number (数値) 型の場合は ​true​ を返します。

isObjectType

入力が Object (オブジェクト) 型の場合は ​true​ を返します。

isPeriodType

入力が Period (期間) 型の場合は ​true​ を返します。

isRangeType

入力が Range (範囲) 型の場合は ​true​ を返します。

isReferenceType

入力種別が Reference (参照) 型の場合は ​true​ を返します。

isRegexType

入力が Regex (正規表現) 型の場合は ​true​ を返します。

isStringType

入力が String (文字列) 型の場合は ​true​ を返します。

isTimeType

入力が Time (時刻) 型の場合は ​true​ を返します。

isTimeZoneType

入力が TimeZone (タイムゾーン) 型の場合は ​true​ を返します。

isTypeType

入力が Type (データ型) 型の場合は ​true​ を返します。

isUnionType

入力種別が Union (結合) 型の場合は ​true​ を返します。

isUriType

入力が Uri (URI) 型の場合は ​true​ を返します。

literalValueOf

Literal (リテラル) 型に属する入力の値を返します。

metadataOf

特定の型にアタッチされたメタデータを返します。

nameOf

入力種別の名前を返します。

objectFields

特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。

unionItems

特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。

## [](#型)型 - [Types (データ型) 型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-types-types) # Types (データ型) (dw::core::Types) このモジュールにより、データ型のイントロスペクションを実行できます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Types`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.3.0 で導入されました。_ ## [](#関数)関数
名前 説明

arrayItem

特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。

baseTypeOf

特定のデータ型の基本データ型を返します。

functionParamTypes

特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。

functionReturnType

関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。

intersectionItems

特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。

isAnyType

入力が Any (任意) 型の場合は ​true​ を返します。

isArrayType

入力種別が Array (配列) 型の場合は ​true​ を返します。

isBinaryType

入力が Binary (バイナリ) 型の場合は ​true​ を返します。

isBooleanType

入力が Boolean (ブール) 型の場合は ​true​ を返します。

isDateTimeType

入力が DateTime (日時) 型の場合は ​true​ を返します。

isDateType

入力が Date (日付) 型の場合は ​true​ を返します。

isFunctionType

入力が Function (関数) 型の場合は ​true​ を返します。

isIntersectionType

入力種別が Intersection (交差) 型の場合は ​true​ を返します。

isKeyType

入力が Key (キー) 型の場合は ​true​ を返します。

isLiteralType

入力が Literal (リテラル) 型の場合は ​true​ を返します。

isLocalDateTimeType

入力が LocalDateTime (ローカル日時) 型の場合は ​true​ を返します。

isLocalTimeType

入力が LocalTime (ローカル時刻) 型の場合は ​true​ を返します。

isNamespaceType

入力が Namespace (名前空間) 型の場合は ​true​ を返します。

isNothingType

入力が Nothing (なし) 型の場合は ​true​ を返します。

isNullType

入力が Null 型の場合は ​true​ を返します。

isNumberType

入力が Number (数値) 型の場合は ​true​ を返します。

isObjectType

入力が Object (オブジェクト) 型の場合は ​true​ を返します。

isPeriodType

入力が Period (期間) 型の場合は ​true​ を返します。

isRangeType

入力が Range (範囲) 型の場合は ​true​ を返します。

isReferenceType

入力種別が Reference (参照) 型の場合は ​true​ を返します。

isRegexType

入力が Regex (正規表現) 型の場合は ​true​ を返します。

isStringType

入力が String (文字列) 型の場合は ​true​ を返します。

isTimeType

入力が Time (時刻) 型の場合は ​true​ を返します。

isTimeZoneType

入力が TimeZone (タイムゾーン) 型の場合は ​true​ を返します。

isTypeType

入力が Type (データ型) 型の場合は ​true​ を返します。

isUnionType

入力種別が Union (結合) 型の場合は ​true​ を返します。

isUriType

入力が Uri (URI) 型の場合は ​true​ を返します。

literalValueOf

Literal (リテラル) 型に属する入力の値を返します。

metadataOf

特定の型にアタッチされたメタデータを返します。

nameOf

入力種別の名前を返します。

objectFields

特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。

unionItems

特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。

## [](#型)型 - [Types (データ型) 型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-types-types) # Types (データ型) (dw::core::Types) このモジュールにより、データ型のイントロスペクションを実行できます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::Types`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.3.0 で導入されました。_ ## [](#関数)関数
名前 説明

arrayItem

特定の配列のデータ型を返します。入力が Array (配列) 型でない場合、この関数は失敗します。

baseTypeOf

特定のデータ型の基本データ型を返します。

functionParamTypes

特定の関数型からパラメーターのリストを返します。 指定された型が Function (関数) 型でない場合、この関数は失敗します。

functionReturnType

関数の戻り値のデータ型の型を返します。 入力種別が Function (関数) 型でない場合、この関数は失敗します。

intersectionItems

特定の Intersection (交差) 型を定義するすべての型の配列を返します。 入力が Intersection (交差) 型でない場合、この関数は失敗します。

isAnyType

入力が Any (任意) 型の場合は ​true​ を返します。

isArrayType

入力種別が Array (配列) 型の場合は ​true​ を返します。

isBinaryType

入力が Binary (バイナリ) 型の場合は ​true​ を返します。

isBooleanType

入力が Boolean (ブール) 型の場合は ​true​ を返します。

isDateTimeType

入力が DateTime (日時) 型の場合は ​true​ を返します。

isDateType

入力が Date (日付) 型の場合は ​true​ を返します。

isFunctionType

入力が Function (関数) 型の場合は ​true​ を返します。

isIntersectionType

入力種別が Intersection (交差) 型の場合は ​true​ を返します。

isKeyType

入力が Key (キー) 型の場合は ​true​ を返します。

isLiteralType

入力が Literal (リテラル) 型の場合は ​true​ を返します。

isLocalDateTimeType

入力が LocalDateTime (ローカル日時) 型の場合は ​true​ を返します。

isLocalTimeType

入力が LocalTime (ローカル時刻) 型の場合は ​true​ を返します。

isNamespaceType

入力が Namespace (名前空間) 型の場合は ​true​ を返します。

isNothingType

入力が Nothing (なし) 型の場合は ​true​ を返します。

isNullType

入力が Null 型の場合は ​true​ を返します。

isNumberType

入力が Number (数値) 型の場合は ​true​ を返します。

isObjectType

入力が Object (オブジェクト) 型の場合は ​true​ を返します。

isPeriodType

入力が Period (期間) 型の場合は ​true​ を返します。

isRangeType

入力が Range (範囲) 型の場合は ​true​ を返します。

isReferenceType

入力種別が Reference (参照) 型の場合は ​true​ を返します。

isRegexType

入力が Regex (正規表現) 型の場合は ​true​ を返します。

isStringType

入力が String (文字列) 型の場合は ​true​ を返します。

isTimeType

入力が Time (時刻) 型の場合は ​true​ を返します。

isTimeZoneType

入力が TimeZone (タイムゾーン) 型の場合は ​true​ を返します。

isTypeType

入力が Type (データ型) 型の場合は ​true​ を返します。

isUnionType

入力種別が Union (結合) 型の場合は ​true​ を返します。

isUriType

入力が Uri (URI) 型の場合は ​true​ を返します。

literalValueOf

Literal (リテラル) 型に属する入力の値を返します。

metadataOf

特定の型にアタッチされたメタデータを返します。

nameOf

入力種別の名前を返します。

objectFields

特定の Object (オブジェクト) 型から項目の配列を返します。 データ型が Object (オブジェクト) 型でない場合、この関数は失敗します。

unionItems

特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。

## [](#型)型 - [Types (データ型) 型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-types-types) # Types (データ型) 型 (dw::core::Types)
型 定義 説明

属性

​type Attribute = { name: QName, required: Boolean, value: Type }

オブジェクト項目キーの一部である属性定義を表します。

項目

​type Field = { key: { name: QName, attributes: Array<Attribute> }, required: Boolean, repeated: Boolean, value: Type }

オブジェクトの一部である項目の説明を表します。

FunctionParam

​type FunctionParam = { paramType: Type, optional: Boolean }

Function (関数) 型の一部である関数パラメーターを表します。

QName

​type QName = { localName: String, namespace: Namespace | Null }

​localName​ (文字列) および ​namespace​ を使用した修飾名定義を表します。 QName に名前空間がない場合、その値は ​null​ になります。

# Types (データ型) 型 (dw::core::Types)
型 定義 説明

属性

​type Attribute = { name: QName, required: Boolean, value: Type }

オブジェクト項目キーの一部である属性定義を表します。

DataWeave バージョン 2.3.0 で導入されました。​

項目

​type Field = { key: { name: QName, attributes: Array<Attribute> }, required: Boolean, repeated: Boolean, value: Type }

オブジェクトの一部である項目の説明を表します。

DataWeave バージョン 2.3.0 で導入されました。​

FunctionParam

​type FunctionParam = { paramType: Type, optional: Boolean }

Function (関数) 型の一部である関数パラメーターを表します。

DataWeave バージョン 2.3.0 で導入されました。​

QName

​type QName = { localName: String, namespace: Namespace | Null }

​localName​ (文字列) および ​namespace​ を使用した修飾名定義を表します。 QName に名前空間がない場合、その値は ​null​ になります。

DataWeave バージョン 2.3.0 で導入されました。​

# Types (データ型) 型 (dw::core::Types)
型 定義 説明

属性

type Attribute = { name: QName, required: Boolean, value: Type }

オブジェクト項目キーの一部である属性定義を表します。

DataWeave バージョン 2.3.0 で導入されました。​

項目

type Field = { key: { name: QName, attributes: Array<Attribute> }, required: Boolean, repeated: Boolean, value: Type }

オブジェクトの一部である項目の説明を表します。

DataWeave バージョン 2.3.0 で導入されました。​

FunctionParam

type FunctionParam = { paramType: Type, optional: Boolean }

Function (関数) 型の一部である関数パラメーターを表します。

DataWeave バージョン 2.3.0 で導入されました。​

QName

type QName = { localName: String, namespace: Namespace | Null }

localName​ (文字列) および ​namespace​ を使用した修飾名定義を表します。 QName に名前空間がない場合、その値は ​null​ になります。

DataWeave バージョン 2.3.0 で導入されました。​

# Types (データ型) 型 (dw::core::Types)
型 定義 説明

属性

type Attribute = { name: QName, required: Boolean, value: Type }

オブジェクト項目キーの一部である属性定義を表します。

DataWeave バージョン 2.3.0 で導入されました。​

項目

type Field = { key: { name: QName, attributes: Array<Attribute> }, required: Boolean, repeated: Boolean, value: Type }

オブジェクトの一部である項目の説明を表します。

DataWeave バージョン 2.3.0 で導入されました。​

FunctionParam

type FunctionParam = { paramType: Type, optional: Boolean }

Function (関数) 型の一部である関数パラメーターを表します。

DataWeave バージョン 2.3.0 で導入されました。​

QName

type QName = { localName: String, namespace: Namespace | Null }

localName​ (文字列) および ​namespace​ を使用した修飾名定義を表します。 QName に名前空間がない場合、その値は ​null​ になります。

DataWeave バージョン 2.3.0 で導入されました。​

# Types (データ型) 型 (dw::core::Types)
型 定義 説明

属性

type Attribute = { name: QName, required: Boolean, value: Type }

オブジェクト項目キーの一部である属性定義を表します。

DataWeave バージョン 2.3.0 で導入されました。​

項目

type Field = { key: { name: QName, attributes: Array<Attribute> }, required: Boolean, repeated: Boolean, value: Type }

オブジェクトの一部である項目の説明を表します。

DataWeave バージョン 2.3.0 で導入されました。​

FunctionParam

type FunctionParam = { paramType: Type, optional: Boolean }

Function (関数) 型の一部である関数パラメーターを表します。

DataWeave バージョン 2.3.0 で導入されました。​

QName

type QName = { localName: String, namespace: Namespace | Null }

localName​ (文字列) および ​namespace​ を使用した修飾名定義を表します。 QName に名前空間がない場合、その値は ​null​ になります。

DataWeave バージョン 2.3.0 で導入されました。​

# Types (データ型) 型 (dw::core::Types)
型 定義 説明

属性

type Attribute = { name: QName, required: Boolean, value: Type }

オブジェクト項目キーの一部である属性定義を表します。

DataWeave バージョン 2.3.0 で導入されました。​

項目

type Field = { key: { name: QName, attributes: Array<Attribute> }, required: Boolean, repeated: Boolean, value: Type }

オブジェクトの一部である項目の説明を表します。

DataWeave バージョン 2.3.0 で導入されました。​

FunctionParam

type FunctionParam = { paramType: Type, optional: Boolean }

Function (関数) 型の一部である関数パラメーターを表します。

DataWeave バージョン 2.3.0 で導入されました。​

QName

type QName = { localName: String, namespace: Namespace | Null }

localName​ (文字列) および ​namespace​ を使用した修飾名定義を表します。 QName に名前空間がない場合、その値は ​null​ になります。

DataWeave バージョン 2.3.0 で導入されました。​

# underscore ## [](#underscore1)underscore(String): String 文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。 ハイフン、スペース、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、入力のハイフンとスペースを置き換えます。入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : underscore("customer"), "b" : underscore("customer-first-name"), "c" : underscore("customer NAME"), "d" : underscore("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer_first_name", "c": "customer_name", "d": "customer_name" } ``` ## [](#underscore2)underscore(Null): Null `underscore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # underscore ## [](#underscore1)underscore(text: String): String 文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。 ハイフン、スペース、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

### [](#例)例 次の例では、入力のハイフンとスペースを置き換えます。入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : underscore("customer"), "b" : underscore("customer-first-name"), "c" : underscore("customer NAME"), "d" : underscore("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer_first_name", "c": "customer_name", "d": "customer_name" } ``` ## [](#underscore2)underscore(text: Null): Null `underscore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # underscore ## [](#underscore1)underscore(text: String): String 文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。 ハイフン、スペース、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のハイフンとスペースを置き換えます。入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : underscore("customer"), "b" : underscore("customer-first-name"), "c" : underscore("customer NAME"), "d" : underscore("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer_first_name", "c": "customer_name", "d": "customer_name" } ``` ## [](#underscore2)underscore(text: Null): Null `underscore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # underscore ## [](#underscore1)underscore(text: String): String 文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。 ハイフン、スペース、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のハイフンとスペースを置き換えます。入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : underscore("customer"), "b" : underscore("customer-first-name"), "c" : underscore("customer NAME"), "d" : underscore("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer_first_name", "c": "customer_name", "d": "customer_name" } ``` ## [](#underscore2)underscore(text: Null): Null `underscore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # underscore ## [](#underscore1)underscore(text: String): String 文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。 ハイフン、スペース、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のハイフンとスペースを置き換えます。入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : underscore("customer"), "b" : underscore("customer-first-name"), "c" : underscore("customer NAME"), "d" : underscore("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer_first_name", "c": "customer_name", "d": "customer_name" } ``` ## [](#underscore2)underscore(text: Null): Null `underscore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # underscore ## [](#underscore1)underscore(text: String): String 文字列内のハイフン、スペース、キャメルケースをアンダースコアに置き換えます。 ハイフン、スペース、キャメルケースが存在しない場合、出力は入力と一致します。 ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

### [](#例)例 次の例では、入力のハイフンとスペースを置き換えます。入力「customer」は、出力で変更されていません。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a" : underscore("customer"), "b" : underscore("customer-first-name"), "c" : underscore("customer NAME"), "d" : underscore("customerName") } ``` #### [](#出力)出力 ```JSON { "a": "customer", "b": "customer_first_name", "c": "customer_name", "d": "customer_name" } ``` ## [](#underscore2)underscore(text: Null): Null `underscore`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # unionItems ## [](#unionitems1)unionItems(Type): Array 特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`unionItems`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: unionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["String","Number"] } ``` # unionItems ## [](#unionitems1)unionItems(t: Type): Array 特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`unionItems`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: unionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["String","Number"] } ``` # unionItems ## [](#unionitems1)unionItems(t: Type): Array 特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`unionItems`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: unionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["String","Number"] } ``` # unionItems ## [](#unionitems1)unionItems(t: Type): Array 特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`unionItems`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: unionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["String","Number"] } ``` # unionItems ## [](#unionitems1)unionItems(t: Type): Array 特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`unionItems`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: unionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["String","Number"] } ``` # unionItems ## [](#unionitems1)unionItems(t: Type): Array 特定の Union (結合) 型を定義するすべてのデータ型の配列を返します。 入力が Union (結合) 型でない場合、この関数は失敗します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

t

チェックするデータ型。

### [](#例)例 次の例では、さまざまな入力での ​`unionItems`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Types type AType = String | Number output application/json --- { a: unionItems(AType) } ``` #### [](#出力)出力 ```Json { "a": ["String","Number"] } ``` # unwrap ## [](#unwrap1)unwrap(String, String): String 指定された ​`text`​ を ​`wrapper`​ テキストからラップ解除します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​wrapper

ラップ解除するために使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`unwrap`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import unwrap from dw::core::Strings output application/json --- { "a": unwrap(null, ""), "b": unwrap(null, '\0'), "c": unwrap("'abc'", "'"), "d": unwrap("AABabcBAA", 'A'), "e": unwrap("A", '#'), "f": unwrap("#A", '#'), "g": unwrap("A#", '#') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": null, "c": "abc", "d": "ABabcBA", "e": "A", "f": "A#", "g": "#A" } ``` ## [](#unwrap2)unwrap(Null, String): Null `unwrap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # unwrap ## [](#unwrap1)unwrap(text: String, wrapper: String): String 指定された ​`text`​ を ​`wrapper`​ テキストからラップ解除します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​wrapper

ラップ解除するために使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`unwrap`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import unwrap from dw::core::Strings output application/json --- { "a": unwrap(null, ""), "b": unwrap(null, '\0'), "c": unwrap("'abc'", "'"), "d": unwrap("AABabcBAA", 'A'), "e": unwrap("A", '#'), "f": unwrap("#A", '#'), "g": unwrap("A#", '#') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": null, "c": "abc", "d": "ABabcBA", "e": "A", "f": "A#", "g": "#A" } ``` ## [](#unwrap2)unwrap(text: Null, wrapper: String): Null `unwrap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # unwrap ## [](#unwrap1)unwrap(text: String, wrapper: String): String 指定された ​`text`​ を ​`wrapper`​ テキストからラップ解除します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップ解除するために使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`unwrap`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import unwrap from dw::core::Strings output application/json --- { "a": unwrap(null, ""), "b": unwrap(null, '\0'), "c": unwrap("'abc'", "'"), "d": unwrap("AABabcBAA", 'A'), "e": unwrap("A", '#'), "f": unwrap("#A", '#'), "g": unwrap("A#", '#') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": null, "c": "abc", "d": "ABabcBA", "e": "A", "f": "A#", "g": "#A" } ``` ## [](#unwrap2)unwrap(text: Null, wrapper: String): Null `unwrap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # unwrap ## [](#unwrap1)unwrap(text: String, wrapper: String): String 指定された ​`text`​ を ​`wrapper`​ テキストからラップ解除します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップ解除するために使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`unwrap`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import unwrap from dw::core::Strings output application/json --- { "a": unwrap(null, ""), "b": unwrap(null, '\0'), "c": unwrap("'abc'", "'"), "d": unwrap("AABabcBAA", 'A'), "e": unwrap("A", '#'), "f": unwrap("#A", '#'), "g": unwrap("A#", '#') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": null, "c": "abc", "d": "ABabcBA", "e": "A", "f": "A#", "g": "#A" } ``` ## [](#unwrap2)unwrap(text: Null, wrapper: String): Null `unwrap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # unwrap ## [](#unwrap1)unwrap(text: String, wrapper: String): String 指定された ​`text`​ を ​`wrapper`​ テキストからラップ解除します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップ解除するために使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`unwrap`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import unwrap from dw::core::Strings output application/json --- { "a": unwrap(null, ""), "b": unwrap(null, '\0'), "c": unwrap("'abc'", "'"), "d": unwrap("AABabcBAA", 'A'), "e": unwrap("A", '#'), "f": unwrap("#A", '#'), "g": unwrap("A#", '#') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": null, "c": "abc", "d": "ABabcBA", "e": "A", "f": "A#", "g": "#A" } ``` ## [](#unwrap2)unwrap(text: Null, wrapper: String): Null `unwrap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # unwrap ## [](#unwrap1)unwrap(text: String, wrapper: String): String 指定された ​`text`​ を ​`wrapper`​ テキストからラップ解除します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップ解除するために使用するテキスト。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`unwrap`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import unwrap from dw::core::Strings output application/json --- { "a": unwrap(null, ""), "b": unwrap(null, '\0'), "c": unwrap("'abc'", "'"), "d": unwrap("AABabcBAA", 'A'), "e": unwrap("A", '#'), "f": unwrap("#A", '#'), "g": unwrap("A#", '#') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": null, "c": "abc", "d": "ABabcBA", "e": "A", "f": "#A", "g": "A#" } ``` ## [](#unwrap2)unwrap(text: Null, wrapper: String): Null `unwrap`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # unzip ## [](#unzip1)unzip(Array>): Array> `zip`​ の逆の操作を実行します。これは、配列の配列を入力として使用します。 この関数は、一致するインデックスで入力サブ配列の値をグループ化し、その一致するインデックスの値を含む新しいサブ配列を出力します。一致しないインデックスのサブ配列は生成されません。たとえば、1 つの入力サブ配列に 4 つの要素 (インデックス 0 ~ 3) が含まれ、別の入力サブ配列に 3 つの要素 (インデックス 0 ~ 2) のみが含まれる場合、この関数はインデックス 3 の値のサブ配列を生成しません。 ### [](#パラメーター)パラメーター
名前 説明

​items

配列の入力配列。

### [](#例)例 次の例では、配列の配列を展開します。各サブ配列の 1 番目のインデックスを 1 つの配列 ​`[ 0, 1, 2, 3 ]`​ に出力し、各サブ配列の 2 番目のインデックスを別の配列 ​`[ "a", "b", "c", "d" ]`​ に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"b"], [2,"c"],[ 3,"d"] ]) ``` #### [](#出力)出力 ```JSON [ [ 0, 1, 2, 3 ], [ "a", "b", "c", "d" ] ] ``` ### [](#例-2)例 次の例では、配列の配列を展開します。入力配列の要素数がそれぞれ異なります。関数は可能な限り多くの完全なサブ配列を作成します。この場合は、1 つのみとなります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"a","foo"], [2], [3,"a"] ]) ``` #### [](#出力-2)出力 ```JSON [0,1,2,3] ``` # unzip ## [](#unzip1)unzip(items: Array>): Array> `zip`​ の逆の操作を実行します。これは、配列の配列を入力として使用します。 この関数は、一致するインデックスで入力サブ配列の値をグループ化し、その一致するインデックスの値を含む新しいサブ配列を出力します。一致しないインデックスのサブ配列は生成されません。たとえば、1 つの入力サブ配列に 4 つの要素 (インデックス 0 ~ 3) が含まれ、別の入力サブ配列に 3 つの要素 (インデックス 0 ~ 2) のみが含まれる場合、この関数はインデックス 3 の値のサブ配列を生成しません。 ### [](#パラメーター)パラメーター
名前 説明

​items

配列の入力配列。

### [](#例)例 次の例では、配列の配列を展開します。各サブ配列の 1 番目のインデックスを 1 つの配列 ​`[ 0, 1, 2, 3 ]`​ に出力し、各サブ配列の 2 番目のインデックスを別の配列 ​`[ "a", "b", "c", "d" ]`​ に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"b"], [2,"c"],[ 3,"d"] ]) ``` #### [](#出力)出力 ```JSON [ [ 0, 1, 2, 3 ], [ "a", "b", "c", "d" ] ] ``` ### [](#例-2)例 次の例では、配列の配列を展開します。入力配列の要素数がそれぞれ異なります。関数は可能な限り多くの完全なサブ配列を作成します。この場合は、1 つのみとなります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"a","foo"], [2], [3,"a"] ]) ``` #### [](#出力-2)出力 ```JSON [0,1,2,3] ``` # unzip ## [](#unzip1)unzip(items: Array>): Array> `zip`​ の逆の操作を実行します。これは、配列の配列を入力として使用します。 この関数は、一致するインデックスで入力サブ配列の値をグループ化し、その一致するインデックスの値を含む新しいサブ配列を出力します。一致しないインデックスのサブ配列は生成されません。たとえば、1 つの入力サブ配列に 4 つの要素 (インデックス 0 ~ 3) が含まれ、別の入力サブ配列に 3 つの要素 (インデックス 0 ~ 2) のみが含まれる場合、この関数はインデックス 3 の値のサブ配列を生成しません。 ### [](#パラメーター)パラメーター
名前 説明

items

配列の入力配列。

### [](#例)例 次の例では、配列の配列を展開します。各サブ配列の 1 番目のインデックスを 1 つの配列 ​`[ 0, 1, 2, 3 ]`​ に出力し、各サブ配列の 2 番目のインデックスを別の配列 ​`[ "a", "b", "c", "d" ]`​ に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"b"], [2,"c"],[ 3,"d"] ]) ``` #### [](#出力)出力 ```JSON [ [ 0, 1, 2, 3 ], [ "a", "b", "c", "d" ] ] ``` ### [](#例-2)例 次の例では、配列の配列を展開します。入力配列の要素数がそれぞれ異なります。関数は可能な限り多くの完全なサブ配列を作成します。この場合は、1 つのみとなります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"a","foo"], [2], [3,"a"] ]) ``` #### [](#出力-2)出力 ```JSON [0,1,2,3] ``` # unzip ## [](#unzip1)unzip(items: Array>): Array> `zip`​ の逆の操作を実行します。これは、配列の配列を入力として使用します。 この関数は、一致するインデックスで入力サブ配列の値をグループ化し、その一致するインデックスの値を含む新しいサブ配列を出力します。一致しないインデックスのサブ配列は生成されません。たとえば、1 つの入力サブ配列に 4 つの要素 (インデックス 0 ~ 3) が含まれ、別の入力サブ配列に 3 つの要素 (インデックス 0 ~ 2) のみが含まれる場合、この関数はインデックス 3 の値のサブ配列を生成しません。 ### [](#パラメーター)パラメーター
名前 説明

items

配列の入力配列。

### [](#例)例 次の例では、配列の配列を展開します。各サブ配列の 1 番目のインデックスを 1 つの配列 ​`[ 0, 1, 2, 3 ]`​ に出力し、各サブ配列の 2 番目のインデックスを別の配列 ​`[ "a", "b", "c", "d" ]`​ に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"b"], [2,"c"],[ 3,"d"] ]) ``` #### [](#出力)出力 ```JSON [ [ 0, 1, 2, 3 ], [ "a", "b", "c", "d" ] ] ``` ### [](#例-2)例 次の例では、配列の配列を展開します。入力配列の要素数がそれぞれ異なります。関数は可能な限り多くの完全なサブ配列を作成します。この場合は、1 つのみとなります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"a","foo"], [2], [3,"a"] ]) ``` #### [](#出力-2)出力 ```JSON [0,1,2,3] ``` # unzip ## [](#unzip1)unzip(items: Array>): Array> `zip`​ の逆の操作を実行します。これは、配列の配列を入力として使用します。 この関数は、一致するインデックスで入力サブ配列の値をグループ化し、その一致するインデックスの値を含む新しいサブ配列を出力します。一致しないインデックスのサブ配列は生成されません。たとえば、1 つの入力サブ配列に 4 つの要素 (インデックス 0 ~ 3) が含まれ、別の入力サブ配列に 3 つの要素 (インデックス 0 ~ 2) のみが含まれる場合、この関数はインデックス 3 の値のサブ配列を生成しません。 ### [](#パラメーター)パラメーター
名前 説明

items

配列の入力配列。

### [](#例)例 次の例では、配列の配列を展開します。各サブ配列の 1 番目のインデックスを 1 つの配列 ​`[ 0, 1, 2, 3 ]`​ に出力し、各サブ配列の 2 番目のインデックスを別の配列 ​`[ "a", "b", "c", "d" ]`​ に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"b"], [2,"c"],[ 3,"d"] ]) ``` #### [](#出力)出力 ```JSON [ [ 0, 1, 2, 3 ], [ "a", "b", "c", "d" ] ] ``` ### [](#例-2)例 次の例では、配列の配列を展開します。入力配列の要素数がそれぞれ異なります。関数は可能な限り多くの完全なサブ配列を作成します。この場合は、1 つのみとなります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"a","foo"], [2], [3,"a"] ]) ``` #### [](#出力-2)出力 ```JSON [0,1,2,3] ``` # unzip ## [](#unzip1)unzip(items: Array>): Array> `zip`​ の逆の操作を実行します。これは、配列の配列を入力として使用します。 この関数は、一致するインデックスで入力サブ配列の値をグループ化し、その一致するインデックスの値を含む新しいサブ配列を出力します。一致しないインデックスのサブ配列は生成されません。たとえば、1 つの入力サブ配列に 4 つの要素 (インデックス 0 ~ 3) が含まれ、別の入力サブ配列に 3 つの要素 (インデックス 0 ~ 2) のみが含まれる場合、この関数はインデックス 3 の値のサブ配列を生成しません。 ### [](#パラメーター)パラメーター
名前 説明

items

配列の入力配列。

### [](#例)例 次の例では、配列の配列を展開します。各サブ配列の 1 番目のインデックスを 1 つの配列 ​`[ 0, 1, 2, 3 ]`​ に出力し、各サブ配列の 2 番目のインデックスを別の配列 ​`[ "a", "b", "c", "d" ]`​ に出力します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"b"], [2,"c"],[ 3,"d"] ]) ``` #### [](#出力)出力 ```JSON [ [ 0, 1, 2, 3 ], [ "a", "b", "c", "d" ] ] ``` ### [](#例-2)例 次の例では、配列の配列を展開します。入力配列の要素数がそれぞれ異なります。関数は可能な限り多くの完全なサブ配列を作成します。この場合は、1 つのみとなります。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- unzip([ [0,"a"], [1,"a","foo"], [2], [3,"a"] ]) ``` #### [](#出力-2)出力 ```JSON [0,1,2,3] ``` # update ## [](#update1)update(Object, String): Any この ​`update`​ 関数は、指定された文字列値でオブジェクトの項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 ### [](#パラメーター)パラメーター
名前 説明

​objectValue

更新するオブジェクト。

​fieldName

項目の名前を提供する文字列。

### [](#例)例 次の例では、指定された値でオブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目を更新します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update "name" with "Data Weave" ``` #### [](#出力)出力 ```Json { "name": "Data Weave" } ``` ## [](#update2)update(Object, PathElement): Any この ​`update`​ 関数は、指定された ​`PathElement`​ 値でオブジェクト項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 ### [](#パラメーター-2)パラメーター
名前 説明

​objectValue

更新するオブジェクト。

​fieldName

項目名を指定する ​PathElement​。

### [](#例-2)例 次の例では、オブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目の値を更新します。これは ​`field("name")`​ を使用して ​`PathElement`​ を返し、それを ​`update`​ に渡します。​`with "Data Weave"`​ を使用して ​`name`​ の値 (​`Data Weave`​) を指定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update field("name") with "Data Weave" ``` #### [](#出力-2)出力 ```Json { "name": "Data Weave" } ``` ## [](#update3)update(Array, Number): Any 指定された値で配列インデックスを更新します。 この ​`update`​ 関数は、指定されたインデックスの値を変更する新しい配列を返します。 ### [](#パラメーター-3)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例では、入力配列 ​`[1,2,3]`​ 内の値 ​`2`​ (インデックスは ​`1`​) を ​`5`​ に置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update 1 with 5 ``` #### [](#出力-3)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update4)update(Array, String): Any この ​`update`​ 関数は、指定された文字列値で、指定された配列内のすべてのオブジェクトを更新します。 ### [](#パラメーター-4)パラメーター
名前 説明

​objectValue

更新するオブジェクトの配列。

​indexToUpdate

更新する項目の名前を提供する文字列。

### [](#例-4)例 次の例では、オブジェクトの配列内の ​`role`​ 項目の値を更新します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [{role: "a", name: "spiderman"}, {role: "b", name: "batman"}] update "role" with "Super Hero" ``` #### [](#出力-4)出力 ```Json [{ "role": "Super Hero", "name": "spiderman" }, { "role": "Super Hero", "name": "batman" }] ``` ## [](#update5)update(Array, PathElement): Any この ​`update`​ 関数は、指定された ​`PathElement`​ 値で、指定された配列のインデックスを更新します。 この関数は、指定されたインデックスの位置に指定された値が含まれる新しい配列を返します。 ### [](#パラメーター-5)パラメーター
名前 説明

​objectValue

更新する配列。

​indexToUpdate

更新する配列のインデックス。インデックスは ​PathElement​ として指定する必要があります。

### [](#例-5)例 次の例では、入力配列内の要素の値を更新します。これは ​`index(1)`​ を使用してインデックスを ​`PathElement`​ として返し、それを ​`update`​ に渡します。このインデックスの位置にある値 ​`2`​ を ​`5`​ に置き換えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update index(1) with 5 ``` #### [](#出力-5)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update6)update(Array | Object | Null, Array): Any 指定された値で、指定されたパスの位置にある値を更新します。 ### [](#パラメーター-6)パラメーター
名前 説明

​objectValue

更新する値。配列、オブジェクト、または null 値を受け入れます。

​path

更新するパス。パスは文字列、数値、または ​PathElement​ の配列である必要があります。

### [](#例-6)例 次の例では、ユーザーの名前を更新します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {user: {name: "Mariano"}} update ["user", field("name")] with "Data Weave" ``` #### [](#出力-6)出力 ```Json { "user": { "name": "Data Weave" } } ``` ## [](#update7)update(Null, Number | String | PathElement): Any `update`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # update ## [](#update1)update(objectValue: Object, fieldName: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値でオブジェクトの項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目の名前を提供する文字列。

### [](#例)例 次の例では、指定された値でオブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目を更新します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update "name" with "Data Weave" ``` #### [](#出力)出力 ```Json { "name": "Data Weave" } ``` ## [](#update2)update(objectValue: Object, fieldName: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値でオブジェクト項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目名を指定する ​PathElement​。

### [](#例-2)例 次の例では、オブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目の値を更新します。これは ​`field("name")`​ を使用して ​`PathElement`​ を返し、それを ​`update`​ に渡します。​`with "Data Weave"`​ を使用して ​`name`​ の値 (​`Data Weave`​) を指定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update field("name") with "Data Weave" ``` #### [](#出力-2)出力 ```Json { "name": "Data Weave" } ``` ## [](#update3)update(arrayValue: Array, indexToUpdate: Number): UpdaterValueProvider 指定された値で配列インデックスを更新します。 この ​`update`​ 関数は、指定されたインデックスの値を変更する新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例では、入力配列 ​`[1,2,3]`​ 内の値 ​`2`​ (インデックスは ​`1`​) を ​`5`​ に置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update 1 with 5 ``` #### [](#出力-3)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update4)update(arrayValue: Array, indexToUpdate: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値で、指定された配列内のすべてのオブジェクトを更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

objectValue

更新するオブジェクトの配列。

indexToUpdate

更新する項目の名前を提供する文字列。

### [](#例-4)例 次の例では、オブジェクトの配列内の ​`role`​ 項目の値を更新します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [{role: "a", name: "spiderman"}, {role: "b", name: "batman"}] update "role" with "Super Hero" ``` #### [](#出力-4)出力 ```Json [{ "role": "Super Hero", "name": "spiderman" }, { "role": "Super Hero", "name": "batman" }] ``` ## [](#update5)update(arrayValue: Array, indexToUpdate: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値で、指定された配列のインデックスを更新します。 この関数は、指定されたインデックスの位置に指定された値が含まれる新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは ​PathElement​ として指定する必要があります。

### [](#例-5)例 次の例では、入力配列内の要素の値を更新します。これは ​`index(1)`​ を使用してインデックスを ​`PathElement`​ として返し、それを ​`update`​ に渡します。このインデックスの位置にある値 ​`2`​ を ​`5`​ に置き換えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update index(1) with 5 ``` #### [](#出力-5)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update6)update(value: Array | Object | Null, path: Array): UpdaterValueProvider 指定された値で、指定されたパスの位置にある値を更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-6)パラメーター
名前 説明

objectValue

更新する値。配列、オブジェクト、または null 値を受け入れます。

path

更新するパス。パスは文字列、数値、または ​PathElement​ の配列である必要があります。

### [](#例-6)例 次の例では、ユーザーの名前を更新します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {user: {name: "Mariano"}} update ["user", field("name")] with "Data Weave" ``` #### [](#出力-6)出力 ```Json { "user": { "name": "Data Weave" } } ``` ### [](#例-7)例 この例では、いずれかの繰り返し項目を更新します。 #### [](#入力)入力 ```XML Phoebe French Joey English ``` #### [](#ソース-7)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/xml --- payload update ["users", "user", "language"] with (if ($ == "English") "Gibberish" else $) ``` #### [](#出力-7)出力 ```XML Phoebe French Joey Gibberish ``` ## [](#update7)update(value: Null, toUpdate: Number | String | PathElement): UpdaterValueProvider `update`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ # update ## [](#update1)update(objectValue: Object, fieldName: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値でオブジェクトの項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目の名前を提供する文字列。

### [](#例)例 次の例では、指定された値でオブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目を更新します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update "name" with "Data Weave" ``` #### [](#出力)出力 ```Json { "name": "Data Weave" } ``` ## [](#update2)update(objectValue: Object, fieldName: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値でオブジェクト項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目名を指定する ​PathElement​。

### [](#例-2)例 次の例では、オブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目の値を更新します。これは ​`field("name")`​ を使用して ​`PathElement`​ を返し、それを ​`update`​ に渡します。​`with "Data Weave"`​ を使用して ​`name`​ の値 (​`Data Weave`​) を指定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update field("name") with "Data Weave" ``` #### [](#出力-2)出力 ```Json { "name": "Data Weave" } ``` ## [](#update3)update(arrayValue: Array, indexToUpdate: Number): UpdaterValueProvider 指定された値で配列インデックスを更新します。 この ​`update`​ 関数は、指定されたインデックスの値を変更する新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例では、入力配列 ​`[1,2,3]`​ 内の値 ​`2`​ (インデックスは ​`1`​) を ​`5`​ に置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update 1 with 5 ``` #### [](#出力-3)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update4)update(arrayValue: Array, indexToUpdate: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値で、指定された配列内のすべてのオブジェクトを更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

objectValue

更新するオブジェクトの配列。

indexToUpdate

更新する項目の名前を提供する文字列。

### [](#例-4)例 次の例では、オブジェクトの配列内の ​`role`​ 項目の値を更新します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [{role: "a", name: "spiderman"}, {role: "b", name: "batman"}] update "role" with "Super Hero" ``` #### [](#出力-4)出力 ```Json [{ "role": "Super Hero", "name": "spiderman" }, { "role": "Super Hero", "name": "batman" }] ``` ## [](#update5)update(arrayValue: Array, indexToUpdate: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値で、指定された配列のインデックスを更新します。 この関数は、指定されたインデックスの位置に指定された値が含まれる新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは ​PathElement​ として指定する必要があります。

### [](#例-5)例 次の例では、入力配列内の要素の値を更新します。これは ​`index(1)`​ を使用してインデックスを ​`PathElement`​ として返し、それを ​`update`​ に渡します。このインデックスの位置にある値 ​`2`​ を ​`5`​ に置き換えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update index(1) with 5 ``` #### [](#出力-5)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update6)update(value: Array | Object | Null, path: Array): UpdaterValueProvider 指定された値で、指定されたパスの位置にある値を更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-6)パラメーター
名前 説明

objectValue

更新する値。配列、オブジェクト、または null 値を受け入れます。

path

更新するパス。パスは文字列、数値、または ​PathElement​ の配列である必要があります。

### [](#例-6)例 次の例では、ユーザーの名前を更新します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {user: {name: "Mariano"}} update ["user", field("name")] with "Data Weave" ``` #### [](#出力-6)出力 ```Json { "user": { "name": "Data Weave" } } ``` ### [](#例-7)例 この例では、いずれかの繰り返し項目を更新します。 #### [](#入力)入力 ```XML Phoebe French Joey English ``` #### [](#ソース-7)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/xml --- payload update ["users", "user", "language"] with (if ($ == "English") "Gibberish" else $) ``` #### [](#出力-7)出力 ```XML Phoebe French Joey Gibberish ``` ## [](#update7)update(value: Null, toUpdate: Number | String | PathElement): UpdaterValueProvider `update`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ # update ## [](#update1)update(objectValue: Object, fieldName: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値でオブジェクトの項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目の名前を提供する文字列。

### [](#例)例 次の例では、指定された値でオブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目を更新します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update "name" with "Data Weave" ``` #### [](#出力)出力 ```Json { "name": "Data Weave" } ``` ## [](#update2)update(objectValue: Object, fieldName: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値でオブジェクト項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目名を指定する ​PathElement​。

### [](#例-2)例 次の例では、オブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目の値を更新します。これは ​`field("name")`​ を使用して ​`PathElement`​ を返し、それを ​`update`​ に渡します。​`with "Data Weave"`​ を使用して ​`name`​ の値 (​`Data Weave`​) を指定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update field("name") with "Data Weave" ``` #### [](#出力-2)出力 ```Json { "name": "Data Weave" } ``` ## [](#update3)update(arrayValue: Array, indexToUpdate: Number): UpdaterValueProvider 指定された値で配列インデックスを更新します。 この ​`update`​ 関数は、指定されたインデックスの値を変更する新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例では、入力配列 ​`[1,2,3]`​ 内の値 ​`2`​ (インデックスは ​`1`​) を ​`5`​ に置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update 1 with 5 ``` #### [](#出力-3)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update4)update(arrayValue: Array, indexToUpdate: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値で、指定された配列内のすべてのオブジェクトを更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

objectValue

更新するオブジェクトの配列。

indexToUpdate

更新する項目の名前を提供する文字列。

### [](#例-4)例 次の例では、オブジェクトの配列内の ​`role`​ 項目の値を更新します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [{role: "a", name: "spiderman"}, {role: "b", name: "batman"}] update "role" with "Super Hero" ``` #### [](#出力-4)出力 ```Json [{ "role": "Super Hero", "name": "spiderman" }, { "role": "Super Hero", "name": "batman" }] ``` ## [](#update5)update(arrayValue: Array, indexToUpdate: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値で、指定された配列のインデックスを更新します。 この関数は、指定されたインデックスの位置に指定された値が含まれる新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは ​PathElement​ として指定する必要があります。

### [](#例-5)例 次の例では、入力配列内の要素の値を更新します。これは ​`index(1)`​ を使用してインデックスを ​`PathElement`​ として返し、それを ​`update`​ に渡します。このインデックスの位置にある値 ​`2`​ を ​`5`​ に置き換えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update index(1) with 5 ``` #### [](#出力-5)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update6)update(value: Array | Object | Null, path: Array): UpdaterValueProvider 指定された値で、指定されたパスの位置にある値を更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-6)パラメーター
名前 説明

objectValue

更新する値。配列、オブジェクト、または null 値を受け入れます。

path

更新するパス。パスは文字列、数値、または ​PathElement​ の配列である必要があります。

### [](#例-6)例 次の例では、ユーザーの名前を更新します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {user: {name: "Mariano"}} update ["user", field("name")] with "Data Weave" ``` #### [](#出力-6)出力 ```Json { "user": { "name": "Data Weave" } } ``` ### [](#例-7)例 この例では、いずれかの繰り返し項目を更新します。 #### [](#入力)入力 ```XML Phoebe French Joey English ``` #### [](#ソース-7)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/xml --- payload update ["users", "user", "language"] with (if ($ == "English") "Gibberish" else $) ``` #### [](#出力-7)出力 ```XML Phoebe French Joey Gibberish ``` ## [](#update7)update(value: Null, toUpdate: Number | String | PathElement): UpdaterValueProvider `update`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ # update ## [](#update1)update(objectValue: Object, fieldName: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値でオブジェクトの項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目の名前を提供する文字列。

### [](#例)例 次の例では、指定された値でオブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目を更新します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update "name" with "Data Weave" ``` #### [](#出力)出力 ```Json { "name": "Data Weave" } ``` ## [](#update2)update(objectValue: Object, fieldName: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値でオブジェクト項目を更新します。 この関数は、指定された項目と値を含む新しいオブジェクトを返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-2)パラメーター
名前 説明

objectValue

更新するオブジェクト。

fieldName

項目名を指定する ​PathElement​。

### [](#例-2)例 次の例では、オブジェクト ​`{name: "Mariano"}`​ の ​`name`​ 項目の値を更新します。これは ​`field("name")`​ を使用して ​`PathElement`​ を返し、それを ​`update`​ に渡します。​`with "Data Weave"`​ を使用して ​`name`​ の値 (​`Data Weave`​) を指定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {name: "Mariano"} update field("name") with "Data Weave" ``` #### [](#出力-2)出力 ```Json { "name": "Data Weave" } ``` ## [](#update3)update(arrayValue: Array, indexToUpdate: Number): UpdaterValueProvider 指定された値で配列インデックスを更新します。 この ​`update`​ 関数は、指定されたインデックスの値を変更する新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-3)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは数値である必要があります。

### [](#例-3)例 次の例では、入力配列 ​`[1,2,3]`​ 内の値 ​`2`​ (インデックスは ​`1`​) を ​`5`​ に置き換えます。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update 1 with 5 ``` #### [](#出力-3)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update4)update(arrayValue: Array, indexToUpdate: String): UpdaterValueProvider この ​`update`​ 関数は、指定された文字列値で、指定された配列内のすべてのオブジェクトを更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-4)パラメーター
名前 説明

objectValue

更新するオブジェクトの配列。

indexToUpdate

更新する項目の名前を提供する文字列。

### [](#例-4)例 次の例では、オブジェクトの配列内の ​`role`​ 項目の値を更新します。 #### [](#ソース-4)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [{role: "a", name: "spiderman"}, {role: "b", name: "batman"}] update "role" with "Super Hero" ``` #### [](#出力-4)出力 ```Json [{ "role": "Super Hero", "name": "spiderman" }, { "role": "Super Hero", "name": "batman" }] ``` ## [](#update5)update(arrayValue: Array, indexToUpdate: PathElement): UpdaterValueProvider この ​`update`​ 関数は、指定された ​`PathElement`​ 値で、指定された配列のインデックスを更新します。 この関数は、指定されたインデックスの位置に指定された値が含まれる新しい配列を返します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-5)パラメーター
名前 説明

objectValue

更新する配列。

indexToUpdate

更新する配列のインデックス。インデックスは ​PathElement​ として指定する必要があります。

### [](#例-5)例 次の例では、入力配列内の要素の値を更新します。これは ​`index(1)`​ を使用してインデックスを ​`PathElement`​ として返し、それを ​`update`​ に渡します。このインデックスの位置にある値 ​`2`​ を ​`5`​ に置き換えます。 #### [](#ソース-5)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- [1,2,3] update index(1) with 5 ``` #### [](#出力-5)出力 ```Json [ 1, 5, 3 ] ``` ## [](#update6)update(value: Array | Object | Null, path: Array): UpdaterValueProvider 指定された値で、指定されたパスの位置にある値を更新します。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター-6)パラメーター
名前 説明

objectValue

更新する値。配列、オブジェクト、または null 値を受け入れます。

path

更新するパス。パスは文字列、数値、または ​PathElement​ の配列である必要があります。

### [](#例-6)例 次の例では、ユーザーの名前を更新します。 #### [](#ソース-6)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/json --- {user: {name: "Mariano"}} update ["user", field("name")] with "Data Weave" ``` #### [](#出力-6)出力 ```Json { "user": { "name": "Data Weave" } } ``` ### [](#例-7)例 この例では、いずれかの繰り返し項目を更新します。 #### [](#ソース-7)ソース ```DataWeave %dw 2.0 import * from dw::util::Values output application/xml --- payload update ["users", "user", "language"] with (if ($ == "English") "Gibberish" else $) ``` #### [](#入力)入力 ```XML Phoebe French Joey English ``` #### [](#出力-7)出力 ```XML Phoebe French Joey Gibberish ``` ## [](#update7)update(value: Null, toUpdate: Number | String | PathElement): UpdaterValueProvider `update`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.2 で導入されました。_ # upper ## [](#upper1)upper(String): String 指定された文字列を大文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

大文字に変換する文字列。

### [](#例)例 次の例では、小文字を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : upper("mulesoft") } ``` #### [](#出力)出力 ```JSON { "name": "MULESOFT" } ``` ## [](#upper2)upper(Null): Null `upper`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # upper ## [](#upper1)upper(text: String): String 指定された文字列を大文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

​text

大文字に変換する文字列。

### [](#例)例 次の例では、小文字を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : upper("mulesoft") } ``` #### [](#出力)出力 ```JSON { "name": "MULESOFT" } ``` ## [](#upper2)upper(value: Null): Null `upper`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # upper ## [](#upper1)upper(text: String): String 指定された文字列を大文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

大文字に変換する文字列。

### [](#例)例 次の例では、小文字を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : upper("mulesoft") } ``` #### [](#出力)出力 ```JSON { "name": "MULESOFT" } ``` ## [](#upper2)upper(value: Null): Null `upper`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # upper ## [](#upper1)upper(text: String): String 指定された文字列を大文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

大文字に変換する文字列。

### [](#例)例 次の例では、小文字を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : upper("mulesoft") } ``` #### [](#出力)出力 ```JSON { "name": "MULESOFT" } ``` ## [](#upper2)upper(value: Null): Null `upper`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # upper ## [](#upper1)upper(text: String): String 指定された文字列を大文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

大文字に変換する文字列。

### [](#例)例 次の例では、小文字を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : upper("mulesoft") } ``` #### [](#出力)出力 ```JSON { "name": "MULESOFT" } ``` ## [](#upper2)upper(value: Null): Null `upper`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # upper ## [](#upper1)upper(text: String): String 指定された文字列を大文字で返します。 ### [](#パラメーター)パラメーター
名前 説明

text

大文字に変換する文字列。

### [](#例)例 次の例では、小文字を大文字に変換します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "name" : upper("mulesoft") } ``` #### [](#出力)出力 ```JSON { "name": "MULESOFT" } ``` ## [](#upper2)upper(value: Null): Null `upper`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # URL (dw::core::URL) このモジュールには、文字列を操作するヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::URL`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​compose

カスタム補間値を使用して、URL コンポーネントを ​encodeURIComponent​ 結果に置き換えます。

​decodeURI

URI 内のエスケープシーケンス (​%20​ など) をデコードします。

​decodeURIComponent

​encodeURIComponent​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。

​encodeURI

UTF-8 エスケープシーケンスを使用して URI をエンコードします。

​encodeURIComponent

UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。

​parseURI

URL を解析し、​URI​ オブジェクトを返します。

## [](#型)型 - [URL の型](https://docs.mulesoft.com/jp/dataweave/2.3/dw-url-types) # URL (dw::core::URL) このモジュールには、URI を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::URL`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

​compose

カスタム文字列補間値を使用して、URL コンポーネントを ​encodeURIComponent​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。

​decodeURI

URI 内のエスケープシーケンス (​%20​ など) をデコードします。

​decodeURIComponent

​encodeURIComponent​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。

​encodeURI

UTF-8 エスケープシーケンスを使用して URI をエンコードします。

​encodeURIComponent

UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。

​parseURI

URL を解析し、​URI​ オブジェクトを返します。

## [](#型)型 - [URL の型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-url-types) # URL (dw::core::URL) このモジュールには、URI を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::URL`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

compose

カスタム文字列補間値を使用して、URL コンポーネントを ​encodeURIComponent​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。

decodeURI

URI 内のエスケープシーケンス (​%20​ など) をデコードします。

decodeURIComponent

encodeURIComponent​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。

encodeURI

UTF-8 エスケープシーケンスを使用して URI をエンコードします。

encodeURIComponent

UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。

parseURI

URL を解析し、​URI​ オブジェクトを返します。

## [](#型)型 - [URL の型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-url-types) # URL (dw::core::URL) このモジュールには、URI を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::URL`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

compose

カスタム文字列補間値を使用して、URL コンポーネントを ​encodeURIComponent​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。

decodeURI

URI 内のエスケープシーケンス (​%20​ など) をデコードします。

decodeURIComponent

encodeURIComponent​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。

encodeURI

UTF-8 エスケープシーケンスを使用して URI をエンコードします。

encodeURIComponent

UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。

parseURI

URL を解析し、​URI​ オブジェクトを返します。

## [](#型)型 - [URL の型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-url-types) # URL (dw::core::URL) このモジュールには、URI を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::URL`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

compose

カスタム文字列補間値を使用して、URL コンポーネントを ​encodeURIComponent​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。

decodeURI

URI 内のエスケープシーケンス (​%20​ など) をデコードします。

decodeURIComponent

encodeURIComponent​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。

encodeURI

UTF-8 エスケープシーケンスを使用して URI をエンコードします。

encodeURIComponent

UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。

parseURI

URL を解析し、​URI​ オブジェクトを返します。

## [](#型)型 - [URL の型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-url-types) # URL (dw::core::URL) このモジュールには、URI を処理するためのヘルパー関数が含まれます。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::core::URL`​ を DataWeave スクリプトの ヘッダーに追加します。 ## [](#関数)関数
名前 説明

compose

カスタム文字列補間値を使用して、URL コンポーネントを ​encodeURIComponent​ 結果に置き換えます。この関数は、標準コールまたは簡易バージョンを使用してコールできます。

decodeURI

URI 内のエスケープシーケンス (​%20​ など) をデコードします。

decodeURIComponent

encodeURIComponent​ または類似のルーチンによって以前に作成された Uniform Resource Identifier (URI) コンポーネントをデコードします。

encodeURI

UTF-8 エスケープシーケンスを使用して URI をエンコードします。

encodeURIComponent

UTF-8 エンコーディングを使用して、URI コンポーネント内の特定の文字をエスケープします。

parseURI

URL を解析し、​URI​ オブジェクトを返します。

## [](#型)型 - [URL の型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-url-types) # URL エンコード形式 MIME タイプ: `application/x-www-form-urlencoded`​ ID: `urlencoded`​ URL エンコードデータはキー-値ペアのコレクションを表します。DataWeave はこれらの値を、各値を文字列として含むオブジェクトとして表します。 ## [](#examples)例 次の例は、URL エンコード形式の使用方法を示しています。 - [例: URL エンコードデータを DataWeave (dw) 形式で表す](#example1)​ - [例: JSON オブジェクトから URL エンコードデータを生成](#example2)​ - [例: キー-値ペアのコレクションから URL エンコードデータを生成](#example3)​ - [例: URL エンコードデータをテキスト/プレーン形式に変換](#example4) ### [](#example1)例: URL エンコードデータを DataWeave (dw) 形式で表す 次の例は、簡単な URL エンコードデータが DataWeave でどのように表されるかを示しています。 #### [](#入力)入力 この URL エンコードデータが DataWeave ソースへの入力ペイロードとして機能します。 ```form-urlencoded name=Mariano&lastName=de+Achaval ``` #### [](#ソース)ソース DataWeave スクリプトは、URL エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 出力は、入力からのキー-値ペアのコレクションを含む DataWeave オブジェクトです。 ```dataweave { "name": "Mariano", "lastName": "de Achaval" } ``` ### [](#example2)例: JSON オブジェクトから URL エンコードデータを生成 次の例は、URL エンコードデータの生成方法を示しています。 ### [](#入力-2)入力 この JSON オブジェクトが DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Mariano" } ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力ペイロードの ​`name`​ キーの値を選択し、スクリプトの本文内のオブジェクトのすべての値を ​`urlencoded`​ 形式に変換します。 ```dataweave %dw 2.0 output urlencoded --- { name: payload.name, age: 37 } ``` #### [](#出力-2)出力 出力は、DataWeave スクリプトの本文内のキー-値ペアから構築された URL エンコードデータです。 ```form-urlencoded name=Mariano&age=37 ``` ### [](#example3)例: キー-値ペアのコレクションから URL エンコードデータを生成 DataWeave スクリプトは、URL エンコードされた出力を生成します。 #### [](#ソース-3)ソース DataWeave スクリプトは、スクリプトの本文内にある JSON 入力の形式を URL エンコード形式に変換します。 ```dataweave %dw 2.0 output application/x-www-form-urlencoded --- { "key" : "value", "key 1": "@here", "key" : "other value", "key 2%": null } ``` #### [](#出力-3)出力 出力は、URL エンコード形式の入力データを示します。 ```text key=value&key+1=%40here&key=other+value&key+2%25 ``` ### [](#example4)例: URL エンコードデータをテキスト/プレーン形式に変換 次の例では、URL エンコードされた入力をテキスト/プレーン形式および MIME タイプに変換します。 #### [](#ソース-4)ソース DataWeave スクリプトは、URL エンコードデータを読み取って、選択されたキーの値を連結します。 ```dataweave %dw 2.0 var myData read('key=value&key+1=%40here&key=other+value&key+2%25', 'application/x-www-form-urlencoded') output text/plain --- myData.*key[0] ++ myData.'key 1' ``` #### [](#出力-4)出力 出力はテキスト/プレーン形式です。 ```text value@here ``` ## [](#properties)Configuration のプロパティ DataWeave では、URL エンコード形式に対して次の設定プロパティがサポートされます。 ### [](#リーダープロパティ-url-エンコードデータ用)リーダープロパティ (URL エンコードデータ用) URL エンコードデータのリーダープロパティはありません。 ### [](#ライター-url-エンコードデータ)ライター (URL エンコードデータ) URL エンコード形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​encoding

​String

​null

使用するライターのエンコード。

## [](#mime_type)サポートされる MIME タイプ URL エンコード形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/x-www-form-urlencoded​

# URL エンコード形式 MIME タイプ: `application/x-www-form-urlencoded`​ ID: `urlencoded`​ URL エンコードデータはキー-値ペアのコレクションを表します。DataWeave はこれらの値を、各値を文字列として含むオブジェクトとして表します。 ## [](#examples)例 次の例は、URL エンコード形式の使用方法を示しています。 - [例: URL エンコードデータを DataWeave (dw) 形式で表す](#example1)​ - [例: JSON オブジェクトから URL エンコードデータを生成](#example2)​ - [例: キー-値ペアのコレクションから URL エンコードデータを生成](#example3)​ - [例: URL エンコードデータをテキスト/プレーン形式に変換](#example4) ### [](#example1)例: URL エンコードデータを DataWeave (dw) 形式で表す 次の例は、簡単な URL エンコードデータが DataWeave でどのように表されるかを示しています。 #### [](#入力)入力 この URL エンコードデータが DataWeave ソースへの入力ペイロードとして機能します。 ```form-urlencoded name=Mariano&lastName=de+Achaval ``` #### [](#ソース)ソース DataWeave スクリプトは、URL エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 出力は、入力からのキー-値ペアのコレクションを含む DataWeave オブジェクトです。 ```dataweave { "name": "Mariano", "lastName": "de Achaval" } ``` ### [](#example2)例: JSON オブジェクトから URL エンコードデータを生成 次の例は、URL エンコードデータの生成方法を示しています。 ### [](#入力-2)入力 この JSON オブジェクトが DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Mariano" } ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力ペイロードの ​`name`​ キーの値を選択し、スクリプトの本文内のオブジェクトのすべての値を ​`urlencoded`​ 形式に変換します。 ```dataweave %dw 2.0 output urlencoded --- { name: payload.name, age: 37 } ``` #### [](#出力-2)出力 出力は、DataWeave スクリプトの本文内のキー-値ペアから構築された URL エンコードデータです。 ```form-urlencoded name=Mariano&age=37 ``` ### [](#example3)例: キー-値ペアのコレクションから URL エンコードデータを生成 DataWeave スクリプトは、URL エンコードされた出力を生成します。 #### [](#ソース-3)ソース DataWeave スクリプトは、スクリプトの本文内にある JSON 入力の形式を URL エンコード形式に変換します。 ```dataweave %dw 2.0 output application/x-www-form-urlencoded --- { "key" : "value", "key 1": "@here", "key" : "other value", "key 2%": null } ``` #### [](#出力-3)出力 出力は、URL エンコード形式の入力データを示します。 ```text key=value&key+1=%40here&key=other+value&key+2%25 ``` ### [](#example4)例: URL エンコードデータをテキスト/プレーン形式に変換 次の例では、URL エンコードされた入力をテキスト/プレーン形式および MIME タイプに変換します。 #### [](#ソース-4)ソース DataWeave スクリプトは、URL エンコードデータを読み取って、選択されたキーの値を連結します。 ```dataweave %dw 2.0 var myData read('key=value&key+1=%40here&key=other+value&key+2%25', 'application/x-www-form-urlencoded') output text/plain --- myData.*key[0] ++ myData.'key 1' ``` #### [](#出力-4)出力 出力はテキスト/プレーン形式です。 ```text value@here ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding​

String​

​null​

出力で使用する文字セット (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/x-www-form-urlencoded​

# URL エンコード形式 MIME タイプ: `application/x-www-form-urlencoded` ID: `urlencoded` URL エンコードデータはキー-値ペアのコレクションを表します。DataWeave はこれらの値を、各値を文字列として含むオブジェクトとして表します。 ## [](#examples)例 次の例は、URL エンコード形式の使用方法を示しています。 - [例: URL エンコードデータを DataWeave (dw) 形式で表す](#example1) - [例: JSON オブジェクトから URL エンコードデータを生成](#example2) - [例: キー-値ペアのコレクションから URL エンコードデータを生成](#example3) - [例: URL エンコードデータをテキスト/プレーン形式に変換](#example4) ### [](#example1)例: URL エンコードデータを DataWeave (dw) 形式で表す 次の例は、簡単な URL エンコードデータが DataWeave でどのように表されるかを示しています。 #### [](#入力)入力 この URL エンコードデータが DataWeave ソースへの入力ペイロードとして機能します。 ```form-urlencoded name=Mariano&lastName=de+Achaval ``` #### [](#ソース)ソース DataWeave スクリプトは、URL エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 出力は、入力からのキー-値ペアのコレクションを含む DataWeave オブジェクトです。 ```dataweave { "name": "Mariano", "lastName": "de Achaval" } ``` ### [](#example2)例: JSON オブジェクトから URL エンコードデータを生成 次の例は、URL エンコードデータの生成方法を示しています。 #### [](#入力-2)入力 この JSON オブジェクトが DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Mariano" } ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力ペイロードの ​`name`​ キーの値を選択し、スクリプトの本文内のオブジェクトのすべての値を ​`urlencoded`​ 形式に変換します。 ```dataweave %dw 2.0 output urlencoded --- { name: payload.name, age: 37 } ``` #### [](#出力-2)出力 出力は、DataWeave スクリプトの本文内のキー-値ペアから構築された URL エンコードデータです。 ```form-urlencoded name=Mariano&age=37 ``` ### [](#example3)例: キー-値ペアのコレクションから URL エンコードデータを生成 DataWeave スクリプトは、URL エンコードされた出力を生成します。 #### [](#ソース-3)ソース DataWeave スクリプトは、スクリプトの本文内にある JSON 入力の形式を URL エンコード形式に変換します。 ```dataweave %dw 2.0 output application/x-www-form-urlencoded --- { "key" : "value", "key 1": "@here", "key" : "other value", "key 2%": null } ``` #### [](#出力-3)出力 出力は、URL エンコード形式の入力データを示します。 ```text key=value&key+1=%40here&key=other+value&key+2%25 ``` ### [](#example4)例: URL エンコードデータをテキスト/プレーン形式に変換 次の例では、URL エンコードされた入力をテキスト/プレーン形式および MIME タイプに変換します。 #### [](#ソース-4)ソース DataWeave スクリプトは、URL エンコードデータを読み取って、選択されたキーの値を連結します。 ```dataweave %dw 2.0 var myData read('key=value&key+1=%40here&key=other+value&key+2%25', 'application/x-www-form-urlencoded') output text/plain --- myData.*key[0] ++ myData.'key 1' ``` #### [](#出力-4)出力 出力はテキスト/プレーン形式です。 ```text value@here ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/x-www-form-urlencoded

# URL エンコード形式 MIME タイプ: `application/x-www-form-urlencoded` ID: `urlencoded` URL エンコードデータはキー-値ペアのコレクションを表します。DataWeave はこれらの値を、各値を文字列として含むオブジェクトとして表します。 ## [](#examples)例 次の例は、URL エンコード形式の使用方法を示しています。 - [例: URL エンコードデータを DataWeave (dw) 形式で表す](#example1) - [例: JSON オブジェクトから URL エンコードデータを生成](#example2) - [例: キー-値ペアのコレクションから URL エンコードデータを生成](#example3) - [例: URL エンコードデータをテキスト/プレーン形式に変換](#example4) ### [](#example1)例: URL エンコードデータを DataWeave (dw) 形式で表す 次の例は、簡単な URL エンコードデータが DataWeave でどのように表されるかを示しています。 #### [](#入力)入力 この URL エンコードデータが DataWeave ソースへの入力ペイロードとして機能します。 ```form-urlencoded name=Mariano&lastName=de+Achaval ``` #### [](#ソース)ソース DataWeave スクリプトは、URL エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 出力は、入力からのキー-値ペアのコレクションを含む DataWeave オブジェクトです。 ```dataweave { "name": "Mariano", "lastName": "de Achaval" } ``` ### [](#example2)例: JSON オブジェクトから URL エンコードデータを生成 次の例は、URL エンコードデータの生成方法を示しています。 #### [](#入力-2)入力 この JSON オブジェクトが DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Mariano" } ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力ペイロードの ​`name`​ キーの値を選択し、スクリプトの本文内のオブジェクトのすべての値を ​`urlencoded`​ 形式に変換します。 ```dataweave %dw 2.0 output urlencoded --- { name: payload.name, age: 37 } ``` #### [](#出力-2)出力 出力は、DataWeave スクリプトの本文内のキー-値ペアから構築された URL エンコードデータです。 ```form-urlencoded name=Mariano&age=37 ``` ### [](#example3)例: キー-値ペアのコレクションから URL エンコードデータを生成 DataWeave スクリプトは、URL エンコードされた出力を生成します。 #### [](#ソース-3)ソース DataWeave スクリプトは、スクリプトの本文内にある JSON 入力の形式を URL エンコード形式に変換します。 ```dataweave %dw 2.0 output application/x-www-form-urlencoded --- { "key" : "value", "key 1": "@here", "key" : "other value", "key 2%": null } ``` #### [](#出力-3)出力 出力は、URL エンコード形式の入力データを示します。 ```text key=value&key+1=%40here&key=other+value&key+2%25 ``` ### [](#example4)例: URL エンコードデータをテキスト/プレーン形式に変換 次の例では、URL エンコードされた入力をテキスト/プレーン形式および MIME タイプに変換します。 #### [](#ソース-4)ソース DataWeave スクリプトは、URL エンコードデータを読み取って、選択されたキーの値を連結します。 ```dataweave %dw 2.0 var myData read('key=value&key+1=%40here&key=other+value&key+2%25', 'application/x-www-form-urlencoded') output text/plain --- myData.*key[0] ++ myData.'key 1' ``` #### [](#出力-4)出力 出力はテキスト/プレーン形式です。 ```text value@here ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/x-www-form-urlencoded

# URL エンコード形式 MIME タイプ: `application/x-www-form-urlencoded` ID: `urlencoded` URL エンコードデータはキー-値ペアのコレクションを表します。DataWeave はこれらの値を、各値を文字列として含むオブジェクトとして表します。 ## [](#examples)例 次の例は、URL エンコード形式の使用方法を示しています。 - [例: URL エンコードデータを DataWeave (dw) 形式で表す](#example1) - [例: JSON オブジェクトから URL エンコードデータを生成](#example2) - [例: キー-値ペアのコレクションから URL エンコードデータを生成](#example3) - [例: URL エンコードデータをテキスト/プレーン形式に変換](#example4) ### [](#example1)例: URL エンコードデータを DataWeave (dw) 形式で表す 次の例は、簡単な URL エンコードデータが DataWeave でどのように表されるかを示しています。 #### [](#入力)入力 この URL エンコードデータが DataWeave ソースへの入力ペイロードとして機能します。 ```form-urlencoded name=Mariano&lastName=de+Achaval ``` #### [](#ソース)ソース DataWeave スクリプトは、URL エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 出力は、入力からのキー-値ペアのコレクションを含む DataWeave オブジェクトです。 ```dataweave { "name": "Mariano", "lastName": "de Achaval" } ``` ### [](#example2)例: JSON オブジェクトから URL エンコードデータを生成 次の例は、URL エンコードデータの生成方法を示しています。 #### [](#入力-2)入力 この JSON オブジェクトが DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Mariano" } ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力ペイロードの ​`name`​ キーの値を選択し、スクリプトの本文内のオブジェクトのすべての値を ​`urlencoded`​ 形式に変換します。 ```dataweave %dw 2.0 output urlencoded --- { name: payload.name, age: 37 } ``` #### [](#出力-2)出力 出力は、DataWeave スクリプトの本文内のキー-値ペアから構築された URL エンコードデータです。 ```form-urlencoded name=Mariano&age=37 ``` ### [](#example3)例: キー-値ペアのコレクションから URL エンコードデータを生成 DataWeave スクリプトは、URL エンコードされた出力を生成します。 #### [](#ソース-3)ソース DataWeave スクリプトは、スクリプトの本文内にある JSON 入力の形式を URL エンコード形式に変換します。 ```dataweave %dw 2.0 output application/x-www-form-urlencoded --- { "key" : "value", "key 1": "@here", "key" : "other value", "key 2%": null } ``` #### [](#出力-3)出力 出力は、URL エンコード形式の入力データを示します。 ```text key=value&key+1=%40here&key=other+value&key+2%25 ``` ### [](#example4)例: URL エンコードデータをテキスト/プレーン形式に変換 次の例では、URL エンコードされた入力をテキスト/プレーン形式および MIME タイプに変換します。 #### [](#ソース-4)ソース DataWeave スクリプトは、URL エンコードデータを読み取って、選択されたキーの値を連結します。 ```dataweave %dw 2.0 var myData read('key=value&key+1=%40here&key=other+value&key+2%25', 'application/x-www-form-urlencoded') output text/plain --- myData.*key[0] ++ myData.'key 1' ``` #### [](#出力-4)出力 出力はテキスト/プレーン形式です。 ```text value@here ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/x-www-form-urlencoded

# URL エンコード形式 MIME タイプ: `application/x-www-form-urlencoded` ID: `urlencoded` URL エンコードデータはキー-値ペアのコレクションを表します。DataWeave はこれらの値を、各値を文字列として含むオブジェクトとして表します。 ## [](#examples)例 次の例は、URL エンコード形式の使用方法を示しています。 - [例: URL エンコードデータを DataWeave (dw) 形式で表す](#example1) - [例: JSON オブジェクトから URL エンコードデータを生成](#example2) - [例: キー-値ペアのコレクションから URL エンコードデータを生成](#example3) - [例: URL エンコードデータをテキスト/プレーン形式に変換](#example4) ### [](#example1)例: URL エンコードデータを DataWeave (dw) 形式で表す 次の例は、簡単な URL エンコードデータが DataWeave でどのように表されるかを示しています。 #### [](#入力)入力 この URL エンコードデータが DataWeave ソースへの入力ペイロードとして機能します。 ```form-urlencoded name=Mariano&lastName=de+Achaval ``` #### [](#ソース)ソース DataWeave スクリプトは、URL エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 出力は、入力からのキー-値ペアのコレクションを含む DataWeave オブジェクトです。 ```dataweave { "name": "Mariano", "lastName": "de Achaval" } ``` ### [](#example2)例: JSON オブジェクトから URL エンコードデータを生成 次の例は、URL エンコードデータの生成方法を示しています。 #### [](#入力-2)入力 この JSON オブジェクトが DataWeave ソースへの入力ペイロードとして機能します。 ```json { "name": "Mariano" } ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力ペイロードの ​`name`​ キーの値を選択し、スクリプトの本文内のオブジェクトのすべての値を ​`urlencoded`​ 形式に変換します。 ```dataweave %dw 2.0 output urlencoded --- { name: payload.name, age: 37 } ``` #### [](#出力-2)出力 出力は、DataWeave スクリプトの本文内のキー-値ペアから構築された URL エンコードデータです。 ```form-urlencoded name=Mariano&age=37 ``` ### [](#example3)例: キー-値ペアのコレクションから URL エンコードデータを生成 DataWeave スクリプトは、URL エンコードされた出力を生成します。 #### [](#ソース-3)ソース DataWeave スクリプトは、スクリプトの本文内にある JSON 入力の形式を URL エンコード形式に変換します。 ```dataweave %dw 2.0 output application/x-www-form-urlencoded --- { "key" : "value", "key 1": "@here", "key" : "other value", "key 2%": null } ``` #### [](#出力-3)出力 出力は、URL エンコード形式の入力データを示します。 ```text key=value&key+1=%40here&key=other+value&key+2%25 ``` ### [](#example4)例: URL エンコードデータをテキスト/プレーン形式に変換 次の例では、URL エンコードされた入力をテキスト/プレーン形式および MIME タイプに変換します。 #### [](#ソース-4)ソース DataWeave スクリプトは、URL エンコードデータを読み取って、選択されたキーの値を連結します。 ```dataweave %dw 2.0 var myData read('key=value&key+1=%40here&key=other+value&key+2%25', 'application/x-www-form-urlencoded') output text/plain --- myData.*key[0] ++ myData.'key 1' ``` #### [](#出力-4)出力 出力はテキスト/プレーン形式です。 ```text value@here ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/x-www-form-urlencoded

# URL 型 (dw::core::URL)
型 定義 説明

URI

​type URI = { isValid: Boolean, host?: String, authority?: String, fragment?: String, path?: String, port?: Number, query?: String, scheme?: String, user?: String, isAbsolute?: Boolean, isOpaque?: Boolean }

URI 型を記述します。この項目の説明は、 「URL 型 (dw::core::URL)」を参照してください。

# URL 型 (dw::core::URL)
型 定義 説明

URI

​type URI = { isValid: Boolean, host?: String, authority?: String, fragment?: String, path?: String, port?: Number, query?: String, scheme?: String, user?: String, isAbsolute?: Boolean, isOpaque?: Boolean }

URI 型を記述します。この項目の説明は、​「URL 型 (dw::core::URL)」を参照してください。

# URL 型 (dw::core::URL)
型 定義 説明

URI

type URI = { isValid: Boolean, host?: String, authority?: String, fragment?: String, path?: String, port?: Number, query?: String, scheme?: String, user?: String, isAbsolute?: Boolean, isOpaque?: Boolean }

URI 型を記述します。この項目の説明は、 「URL 型 (dw::core::URL)」​を参照してください。

# URL 型 (dw::core::URL)
型 定義 説明

URI

type URI = { isValid: Boolean, host?: String, authority?: String, fragment?: String, path?: String, port?: Number, query?: String, scheme?: String, user?: String, isAbsolute?: Boolean, isOpaque?: Boolean }

URI 型を記述します。この項目の説明は、 「URL 型 (dw::core::URL)」​を参照してください。

# URL 型 (dw::core::URL)
型 定義 説明

URI

type URI = { isValid: Boolean, host?: String, authority?: String, fragment?: String, path?: String, port?: Number, query?: String, scheme?: String, user?: String, isAbsolute?: Boolean, isOpaque?: Boolean }

URI 型を記述します。この項目の説明は、 「URL 型 (dw::core::URL)」​を参照してください。

# URL 型 (dw::core::URL)
型 定義 説明

URI

type URI = { isValid: Boolean, host?: String, authority?: String, fragment?: String, path?: String, port?: Number, query?: String, scheme?: String, user?: String, isAbsolute?: Boolean, isOpaque?: Boolean }

URI 型を記述します。この項目の説明は、 「URL 型 (dw::core::URL)」​を参照してください。

# uuid ## [](#uuid1)uuid(): String 取得元として乱数を使用して、v4 UUID を返します。 ### [](#例)例 この例では、ランダムな v4 UUID を生成します。 #### [](#ソース)ソース %dw 2.0 output application/json --- uuid() #### [](#出力)出力 ```JSON "7cc64d24-f2ad-4d43-8893-fa24a0789a99" ``` # uuid ## [](#uuid1)uuid(): String 取得元として乱数を使用して、v4 UUID を返します。 ### [](#例)例 この例では、ランダムな v4 UUID を生成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- uuid() ``` #### [](#出力)出力 ```JSON "7cc64d24-f2ad-4d43-8893-fa24a0789a99" ``` # uuid ## [](#uuid1)uuid(): String 取得元として乱数を使用して、v4 UUID を返します。 ### [](#例)例 この例では、ランダムな v4 UUID を生成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- uuid() ``` #### [](#出力)出力 ```JSON "7cc64d24-f2ad-4d43-8893-fa24a0789a99" ``` # uuid ## [](#uuid1)uuid(): String 取得元として乱数を使用して、v4 UUID を返します。 ### [](#例)例 この例では、ランダムな v4 UUID を生成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- uuid() ``` #### [](#出力)出力 ```JSON "7cc64d24-f2ad-4d43-8893-fa24a0789a99" ``` # uuid ## [](#uuid1)uuid(): String 取得元として乱数を使用して、v4 UUID を返します。 ### [](#例)例 この例では、ランダムな v4 UUID を生成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- uuid() ``` #### [](#出力)出力 ```JSON "7cc64d24-f2ad-4d43-8893-fa24a0789a99" ``` # uuid ## [](#uuid1)uuid(): String 取得元として乱数を使用して、v4 UUID を返します。 ### [](#例)例 この例では、ランダムな v4 UUID を生成します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- uuid() ``` #### [](#出力)出力 ```JSON "7cc64d24-f2ad-4d43-8893-fa24a0789a99" ``` # Values (dw::util::Values) このユーティリティモジュールは値の変更を簡略化します。 このモジュールは Mule Runtime に含まれています。使用するには、DataWeave コードにインポートする必要があります。たとえば、スクリプトのヘッダーに行 ​`import * from dw::util::Values`​ を追加します。 _DataWeave 2.2.2 で導入されました。Mule 4.2.2 以降でサポートされます。_​ ## [](#関数)関数
名前 説明

​attr

この関数は、XML 属性を選択するために使用する ​PathElement​ を作成し、型の ​selector​ 項目に特定の文字列を入力します。

​field

この関数は、​オブジェクト項目​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に特定の文字列を入力します。

​index

この関数は、​配列要素​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に、指定されたインデックスを入力します。

​mask

この ​mask​ 関数は、指定された条件に一致するすべての​単純​要素を置き換えます。

​update

この ​update​ 関数は、指定された文字列値でオブジェクトの項目を更新します。

# Values (dw::util::Values) このユーティリティモジュールは値の変更を簡略化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Values`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_​ ## [](#関数)関数
名前 説明

​attr

この関数は、XML 属性を選択するために使用する ​PathElement​ を作成し、型の ​selector​ 項目に特定の文字列を入力します。

​field

この関数は、​オブジェクト項目​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に特定の文字列を入力します。

​index

この関数は、​配列要素​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に、指定されたインデックスを入力します。

​mask

この ​mask​ 関数は、指定された条件に一致するすべての​単純​要素を置き換えます。

​update

この ​update​ 関数は、指定された文字列値でオブジェクトの項目を更新します。

## [](#型)型 - [値のデータ型](https://docs.mulesoft.com/jp/dataweave/2.4/dw-values-types) # Values (dw::util::Values) このユーティリティモジュールは値の変更を簡略化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Values`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

attr

この関数は、XML 属性を選択するために使用する ​PathElement​ を作成し、型の ​selector​ 項目に特定の文字列を入力します。

field

この関数は、​オブジェクト項目​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に特定の文字列を入力します。

index

この関数は、​配列要素​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に、指定されたインデックスを入力します。

mask

この ​mask​ 関数は、指定された条件に一致するすべての​単純​要素を置き換えます。

update

この ​update​ 関数は、指定された文字列値でオブジェクトの項目を更新します。

## [](#型)型 - [値のデータ型](https://docs.mulesoft.com/jp/dataweave/2.5/dw-values-types) # Values (dw::util::Values) このユーティリティモジュールは値の変更を簡略化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Values`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

attr

この関数は、XML 属性を選択するために使用する ​PathElement​ を作成し、型の ​selector​ 項目に特定の文字列を入力します。

field

この関数は、​オブジェクト項目​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に特定の文字列を入力します。

index

この関数は、​配列要素​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に、指定されたインデックスを入力します。

mask

この ​mask​ 関数は、指定された条件に一致するすべての​単純​要素を置き換えます。

update

この ​update​ 関数は、指定された文字列値でオブジェクトの項目を更新します。

## [](#型)型 - [値のデータ型](https://docs.mulesoft.com/jp/dataweave/2.6/dw-values-types) # Values (dw::util::Values) このユーティリティモジュールは値の変更を簡略化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Values`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

attr

この関数は、XML 属性を選択するために使用する ​PathElement​ を作成し、型の ​selector​ 項目に特定の文字列を入力します。

field

この関数は、​オブジェクト項目​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に特定の文字列を入力します。

index

この関数は、​配列要素​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に、指定されたインデックスを入力します。

mask

この ​mask​ 関数は、指定された条件に一致するすべての​単純​要素を置き換えます。

update

この ​update​ 関数は、指定された文字列値でオブジェクトの項目を更新します。

## [](#型)型 - [値のデータ型](https://docs.mulesoft.com/jp/dataweave/2.7/dw-values-types) # Values (dw::util::Values) このユーティリティモジュールは値の変更を簡略化します。 このモジュールを使用するには、DataWeave コードにインポートする必要があります。その方法として、たとえば、行 ​`import * from dw::util::Values`​ を DataWeave スクリプトの ヘッダーに追加します。 _DataWeave バージョン 2.2.2 で導入されました。_ ## [](#関数)関数
名前 説明

attr

この関数は、XML 属性を選択するために使用する ​PathElement​ を作成し、型の ​selector​ 項目に特定の文字列を入力します。

field

この関数は、​オブジェクト項目​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に特定の文字列を入力します。

index

この関数は、​配列要素​を選択するために使用する ​PathElement​ データ型を作成し、型の ​selector​ 項目に、指定されたインデックスを入力します。

mask

この ​mask​ 関数は、指定された条件に一致するすべての​単純​要素を置き換えます。

update

この ​update​ 関数は、指定された文字列値でオブジェクトの項目を更新します。

## [](#型)型 - [値のデータ型](https://docs.mulesoft.com/jp/dataweave/2.8/dw-values-types) # Values 型 (dw::util::Values)
型 定義 説明

UpdaterValueProvider

​type UpdaterValueProvider = (newValueProvider: (oldValue: Any, index: Number) -> Any) -> ReturnType

更新関数の出力型を表す型。

DataWeave バージョン 2.4.0 で導入されました。​

# Values 型 (dw::util::Values)
型 定義 説明

UpdaterValueProvider

type UpdaterValueProvider = (newValueProvider: (oldValue: Any, index: Number) -> Any) -> ReturnType

更新関数の出力型を表す型。

DataWeave バージョン 2.4.0 で導入されました。​

# Values 型 (dw::util::Values)
型 定義 説明

UpdaterValueProvider

type UpdaterValueProvider = (newValueProvider: (oldValue: Any, index: Number) -> Any) -> ReturnType

更新関数の出力型を表す型。

DataWeave バージョン 2.4.0 で導入されました。​

# Values 型 (dw::util::Values)
型 定義 説明

UpdaterValueProvider

type UpdaterValueProvider = (newValueProvider: (oldValue: Any, index: Number) -> Any) -> ReturnType

更新関数の出力型を表す型。

DataWeave バージョン 2.4.0 で導入されました。​

# Values 型 (dw::util::Values)
型 定義 説明

UpdaterValueProvider

type UpdaterValueProvider = (newValueProvider: (oldValue: Any, index: Number) -> Any) -> ReturnType

更新関数の出力型を表す型。

DataWeave バージョン 2.4.0 で導入されました。​

# valueSet ## [](#valueset1)valueSet(​{ (K)?: V }​): Array オブジェクト内のキー-値ペアからの値の配列を返します。 このメソッドは​**非推奨**​です。代わりに、Core モジュールの ​`valuesOf`​ を使用してください。 ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "valueSet" : valueSet({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valueSet" : [true,1] } ``` # valueSet ## [](#valueset1)valueSet(obj: { (K)?: V }​): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _この関数は​**非推奨**​です。代わりに [dw::Core::valuesOf](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-valuesof) を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "valueSet" : valueSet({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valueSet" : [true,1] } ``` # valueSet ## [](#valueset1)valueSet(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::valuesOf](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-valuesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "valueSet" : valueSet({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valueSet" : [true,1] } ``` # valueSet ## [](#valueset1)valueSet(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::valuesOf](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-valuesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "valueSet" : valueSet({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valueSet" : [true,1] } ``` # valueSet ## [](#valueset1)valueSet(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::valuesOf](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-valuesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "valueSet" : valueSet({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valueSet" : [true,1] } ``` # valueSet ## [](#valueset1)valueSet(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _この関数は​**非推奨**​です。代わりに ​[dw::Core::valuesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-valuesof)​ を使用してください。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクトからの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Objects output application/json --- { "valueSet" : valueSet({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valueSet" : [true,1] } ``` # valuesOf ## [](#valuesof1)valuesOf(​{ (K)?: V }​): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "valuesOf" : valuesOf({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valuesOf" : [true,1] } ``` # valuesOf ## [](#valuesof1)valuesOf(obj: { (K)?: V }​): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "valuesOf" : valuesOf({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valuesOf" : [true,1] } ``` ## [](#valuesof2)valuesOf(obj: Null): Null `valuesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # valuesOf ## [](#valuesof1)valuesOf(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "valuesOf" : valuesOf({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valuesOf" : [true,1] } ``` ## [](#valuesof2)valuesOf(obj: Null): Null `valuesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # valuesOf ## [](#valuesof1)valuesOf(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "valuesOf" : valuesOf({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valuesOf" : [true,1] } ``` ## [](#valuesof2)valuesOf(obj: Null): Null `valuesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # valuesOf ## [](#valuesof1)valuesOf(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "valuesOf" : valuesOf({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valuesOf" : [true,1] } ``` ## [](#valuesof2)valuesOf(obj: Null): Null `valuesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # valuesOf ## [](#valuesof1)valuesOf(obj: { (K)?: V }): Array オブジェクト内のキー-値ペアからの値の配列を返します。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

obj

評価するオブジェクト。

### [](#例)例 次の例では、入力オブジェクト内のキー - 値ペアの値を返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "valuesOf" : valuesOf({a: true, b: 1}) } ``` #### [](#出力)出力 ```JSON { "valuesOf" : [true,1] } ``` ## [](#valuesof2)valuesOf(obj: Null): Null `valuesOf`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # version ## [](#version1)version(): String 現在実行中の DataWeave バージョンを返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#例)例 次の例では、DataWeave バージョンを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- version() ``` #### [](#出力)出力 ```Json "2.5" ``` # version ## [](#version1)version(): String 現在実行中の DataWeave バージョンを返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#例)例 次の例では、DataWeave バージョンを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- version() ``` #### [](#出力)出力 ```Json "2.5" ``` # version ## [](#version1)version(): String 現在実行中の DataWeave バージョンを返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#例)例 次の例では、DataWeave バージョンを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- version() ``` #### [](#出力)出力 ```Json "2.5" ``` # version ## [](#version1)version(): String 現在実行中の DataWeave バージョンを返します。 _DataWeave バージョン 2.5.0 で導入されました。_ ### [](#例)例 次の例では、DataWeave バージョンを返します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- version() ``` #### [](#出力)出力 ```Json "2.5" ``` # wait ## [](#wait1)wait(T, Number): T 指定されたタイムアウト (ミリ秒) の間、実行を停止します。
実行を停止すると、使用されているスレッドがブロックされるため、遅延が発生したり、パフォーマンスが低下したり、ランタイム全体がフリーズしたりする可能性があります。この操作は、制限された機能テストを目的とするものであり、本番アプリケーションやパフォーマンステストで使用したり、デプロイされた複数のアプリケーションで使用したりしないでください。
### [](#パラメーター)パラメーター
名前 説明

​value

任意の型の入力。

​timeout

待機する時間 (ミリ秒)。

### [](#例)例 次の例では、2000 ミリ秒 (2 秒) の間、実行を待機します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- { "user" : 1 } wait 2000 ``` #### [](#出力)出力 ```JSON { "user": 1 } ``` # wait ## [](#wait1)wait(value: T, timeout: Number): T 指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。
実行を停止すると、スレッドがブロックされるため、遅延が発生したり、パフォーマンスが低下したり、ランタイム全体がフリーズしたりする可能性があります。この操作は、制限された機能テストを目的とするものです。 本番アプリケーションやパフォーマンステストで使用したり、デプロイされた複数のアプリケーションで使用したりしないでください。
### [](#パラメーター)パラメーター
名前 説明

​value

任意の型の入力。

​timeout

待機する時間 (ミリ秒)。

### [](#例)例 次の例では、2000 ミリ秒 (2 秒) の間、実行を待機します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- { "user" : 1 } wait 2000 ``` #### [](#出力)出力 ```JSON { "user": 1 } ``` # wait ## [](#wait1)wait(value: T, timeout: Number): T 指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。
実行を停止すると、スレッドがブロックされるため、遅延が発生したり、パフォーマンスが低下したり、ランタイム全体がフリーズしたりする可能性があります。この操作は、制限された機能テストを目的とするものです。 本番アプリケーションやパフォーマンステストで使用したり、デプロイされた複数のアプリケーションで使用したりしないでください。
### [](#パラメーター)パラメーター
名前 説明

value

任意の型の入力。

timeout

待機する時間 (ミリ秒)。

### [](#例)例 次の例では、2000 ミリ秒 (2 秒) の間、実行を待機します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- { "user" : 1 } wait 2000 ``` #### [](#出力)出力 ```JSON { "user": 1 } ``` # wait ## [](#wait1)wait(value: T, timeout: Number): T 指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。
実行を停止すると、スレッドがブロックされるため、遅延が発生したり、パフォーマンスが低下したり、ランタイム全体がフリーズしたりする可能性があります。この操作は、制限された機能テストを目的とするものです。 本番アプリケーションやパフォーマンステストで使用したり、デプロイされた複数のアプリケーションで使用したりしないでください。
### [](#パラメーター)パラメーター
名前 説明

value

任意の型の入力。

timeout

待機する時間 (ミリ秒)。

### [](#例)例 次の例では、2000 ミリ秒 (2 秒) の間、実行を待機します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- { "user" : 1 } wait 2000 ``` #### [](#出力)出力 ```JSON { "user": 1 } ``` # wait ## [](#wait1)wait(value: T, timeout: Number): T 指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。
実行を停止すると、スレッドがブロックされるため、遅延が発生したり、パフォーマンスが低下したり、ランタイム全体がフリーズしたりする可能性があります。この操作は、制限された機能テストを目的とするものです。 本番アプリケーションやパフォーマンステストで使用したり、デプロイされた複数のアプリケーションで使用したりしないでください。
### [](#パラメーター)パラメーター
名前 説明

value

任意の型の入力。

timeout

待機する時間 (ミリ秒)。

### [](#例)例 次の例では、2000 ミリ秒 (2 秒) の間、実行を待機します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- { "user" : 1 } wait 2000 ``` #### [](#出力)出力 ```JSON { "user": 1 } ``` # wait ## [](#wait1)wait(value: T, timeout: Number): T 指定されたタイムアウト期間 (ミリ秒) の間、実行を停止します。
実行を停止すると、スレッドがブロックされるため、遅延が発生したり、パフォーマンスが低下したり、ランタイム全体がフリーズしたりする可能性があります。この操作は、制限された機能テストを目的とするものです。 本番アプリケーションやパフォーマンステストで使用したり、デプロイされた複数のアプリケーションで使用したりしないでください。
### [](#パラメーター)パラメーター
名前 説明

value

任意の型の入力。

timeout

待機する時間 (ミリ秒)。

### [](#例)例 次の例では、2000 ミリ秒 (2 秒) の間、実行を待機します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::Runtime output application/json --- { "user" : 1 } wait 2000 ``` #### [](#出力)出力 ```JSON { "user": 1 } ``` # with ## [](#with1)with(((V, U) -> R) -> X, (V, U) -> R): X 置換要素を指定するヘルパー関数。この関数は、​`replace`​、​`update`​、または ​`mask`​ と共に使用してデータ置換を実行します。 ### [](#パラメーター)パラメーター
名前 説明

​toBeReplaced

置換される元の値。

​replacer

入力値を置換する値。

### [](#例)例 次の例では、文字列内のすべての数字を文字「x」に置換します。 ​`replace`​ 関数ではベース文字列、および置換する文字を選択する正規表現を指定し、​`with`​ では使用する置換文字列を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "ssn" : "987-65-4321" replace /[0-9]/ with("x") } ``` #### [](#出力)出力 ```JSON { "ssn": "xxx-xx-xxxx" } ``` # with ## [](#with1)with(toBeReplaced: ((V, U) -> R) -> X, replacer: (V, U) -> R): X 置換要素を指定するヘルパー関数。この関数は、​`replace`​、​`update`​、または ​`mask`​ と共に使用してデータ置換を実行します。 ### [](#パラメーター)パラメーター
名前 説明

​toBeReplaced

置換される元の値。

​replacer

入力値を置換する値。

### [](#例)例 次の例では、文字列内のすべての数字を文字「x」に置換します。​`replace`​ 関数ではベース文字列、および置換する文字を選択する正規表現を指定し、​`with`​ では使用する置換文字列を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "ssn" : "987-65-4321" replace /[0-9]/ with("x") } ``` #### [](#出力)出力 ```JSON { "ssn": "xxx-xx-xxxx" } ``` # with ## [](#with1)with(toBeReplaced: ((V, U) -> R) -> X, replacer: (V, U) -> R): X 置換要素を指定するヘルパー関数。この関数は、​`replace`​、​`update`​、または ​`mask`​ と共に使用してデータ置換を実行します。 ### [](#パラメーター)パラメーター
名前 説明

toBeReplaced

置換される元の値。

replacer

入力値を置換する値。

### [](#例)例 次の例では、文字列内のすべての数字を文字「x」に置換します。​`replace`​ 関数ではベース文字列、および置換する文字を選択する正規表現を指定し、​`with`​ では使用する置換文字列を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "ssn" : "987-65-4321" replace /[0-9]/ with("x") } ``` #### [](#出力)出力 ```JSON { "ssn": "xxx-xx-xxxx" } ``` # with ## [](#with1)with(toBeReplaced: ((V, U) -> R) -> X, replacer: (V, U) -> R): X 置換要素を指定するヘルパー関数。この関数は、​`replace`​、​`update`​、または ​`mask`​ と共に使用してデータ置換を実行します。 ### [](#パラメーター)パラメーター
名前 説明

toBeReplaced

置換される元の値。

replacer

入力値を置換する値。

### [](#例)例 次の例では、文字列内のすべての数字を文字「x」に置換します。​`replace`​ 関数ではベース文字列、および置換する文字を選択する正規表現を指定し、​`with`​ では使用する置換文字列を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "ssn" : "987-65-4321" replace /[0-9]/ with("x") } ``` #### [](#出力)出力 ```JSON { "ssn": "xxx-xx-xxxx" } ``` # with ## [](#with1)with(toBeReplaced: ((V, U) -> R) -> X, replacer: (V, U) -> R): X 置換要素を指定するヘルパー関数。この関数は、​`replace`​、​`update`​、または ​`mask`​ と共に使用してデータ置換を実行します。 ### [](#パラメーター)パラメーター
名前 説明

toBeReplaced

置換される元の値。

replacer

入力値を置換する値。

### [](#例)例 次の例では、文字列内のすべての数字を文字「x」に置換します。​`replace`​ 関数ではベース文字列、および置換する文字を選択する正規表現を指定し、​`with`​ では使用する置換文字列を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "ssn" : "987-65-4321" replace /[0-9]/ with("x") } ``` #### [](#出力)出力 ```JSON { "ssn": "xxx-xx-xxxx" } ``` # with ## [](#with1)with(toBeReplaced: ((V, U) -> R) -> X, replacer: (V, U) -> R): X 置換要素を指定するヘルパー関数。この関数は、​`replace`​、​`update`​、または ​`mask`​ と共に使用してデータ置換を実行します。 ### [](#パラメーター)パラメーター
名前 説明

toBeReplaced

置換される元の値。

replacer

入力値を置換する値。

### [](#例)例 次の例では、文字列内のすべての数字を文字「x」に置換します。​`replace`​ 関数ではベース文字列、および置換する文字を選択する正規表現を指定し、​`with`​ では使用する置換文字列を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { "ssn" : "987-65-4321" replace /[0-9]/ with("x") } ``` #### [](#出力)出力 ```JSON { "ssn": "xxx-xx-xxxx" } ``` # withMaxSize ## [](#withmaxsize1)withMaxSize(String, Number): String 文字列長が指定された ​`maxLength`​ より長くないことを確認します。 文字列の長さが ​`maxLength`​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​maxLength

文字列の最大長さ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`withMaxSize`​ の動作を示します。 `withMaxSize`​ が 0 の場合、関数は空の文字列を返します。入力が ​`null`​ であれば、出力は常に ​`null`​ になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import withMaxSize from dw::core::Strings output application/json --- { a: "123" withMaxSize 10, b: "123" withMaxSize 3, c: "123" withMaxSize 2, d: "" withMaxSize 0, e: null withMaxSize 23, } ``` #### [](#出力)出力 ```JSON { "a": "123", "b": "123", "c": "12", "d": "", "e": null } ``` ## [](#withmaxsize2)withMaxSize(Null, Number): Null `withMaxSize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # withMaxSize ## [](#withmaxsize1)withMaxSize(text: String, maxLength: Number): String 文字列長が指定された ​`maxLength`​ より長くないことを確認します。 文字列の長さが ​`maxLength`​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。 _DataWeave バージョン 2.3.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​maxLength

文字列の最大長さ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`withMaxSize`​ の動作を示します。 `withMaxSize`​ が 0 の場合、関数は空の文字列を返します。入力が ​`null`​ であれば、出力は常に ​`null`​ になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import withMaxSize from dw::core::Strings output application/json --- { a: "123" withMaxSize 10, b: "123" withMaxSize 3, c: "123" withMaxSize 2, d: "" withMaxSize 0, e: null withMaxSize 23, } ``` #### [](#出力)出力 ```JSON { "a": "123", "b": "123", "c": "12", "d": "", "e": null } ``` ## [](#withmaxsize2)withMaxSize(text: Null, maxLength: Number): Null `withMaxSize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_​ # withMaxSize ## [](#withmaxsize1)withMaxSize(text: String, maxLength: Number): String 文字列長が指定された ​`maxLength`​ より長くないことを確認します。 文字列の長さが ​`maxLength`​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

maxLength

文字列の最大長さ。

### [](#例)例 次の例では、同じ文字列の異なる ​`maxLength`​ での ​`withMaxSize`​ の動作を示します。 `withMaxSize`​ が 0 の場合、関数は未変更の文字列を返します。入力が ​`null`​ であれば、出力は常に ​`null`​ になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import withMaxSize from dw::core::Strings output application/json --- { a: "123" withMaxSize 10, b: "123" withMaxSize 3, c: "123" withMaxSize 2, d: "123" withMaxSize 0, e: null withMaxSize 23, } ``` #### [](#出力)出力 ```JSON { "a": "123", "b": "123", "c": "12", "d": "123", "e": null } ``` ## [](#withmaxsize2)withMaxSize(text: Null, maxLength: Number): Null `withMaxSize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # withMaxSize ## [](#withmaxsize1)withMaxSize(text: String, maxLength: Number): String 文字列長が指定された ​`maxLength`​ より長くないことを確認します。 文字列の長さが ​`maxLength`​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

maxLength

文字列の最大長さ。

### [](#例)例 次の例では、同じ文字列の異なる ​`maxLength`​ での ​`withMaxSize`​ の動作を示します。 `withMaxSize`​ が 0 の場合、関数は未変更の文字列を返します。入力が ​`null`​ であれば、出力は常に ​`null`​ になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import withMaxSize from dw::core::Strings output application/json --- { a: "123" withMaxSize 10, b: "123" withMaxSize 3, c: "123" withMaxSize 2, d: "123" withMaxSize 0, e: null withMaxSize 23, } ``` #### [](#出力)出力 ```JSON { "a": "123", "b": "123", "c": "12", "d": "123", "e": null } ``` ## [](#withmaxsize2)withMaxSize(text: Null, maxLength: Number): Null `withMaxSize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # withMaxSize ## [](#withmaxsize1)withMaxSize(text: String, maxLength: Number): String 文字列長が指定された ​`maxLength`​ より長くないことを確認します。 文字列の長さが ​`maxLength`​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

maxLength

文字列の最大長さ。

### [](#例)例 次の例では、同じ文字列の異なる ​`maxLength`​ での ​`withMaxSize`​ の動作を示します。 `withMaxSize`​ が 0 の場合、関数は未変更の文字列を返します。入力が ​`null`​ であれば、出力は常に ​`null`​ になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import withMaxSize from dw::core::Strings output application/json --- { a: "123" withMaxSize 10, b: "123" withMaxSize 3, c: "123" withMaxSize 2, d: "123" withMaxSize 0, e: null withMaxSize 23, } ``` #### [](#出力)出力 ```JSON { "a": "123", "b": "123", "c": "12", "d": "123", "e": null } ``` ## [](#withmaxsize2)withMaxSize(text: Null, maxLength: Number): Null `withMaxSize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # withMaxSize ## [](#withmaxsize1)withMaxSize(text: String, maxLength: Number): String 文字列長が指定された ​`maxLength`​ より長くないことを確認します。 文字列の長さが ​`maxLength`​ よりも長い場合、関数では文字列長が長さ制限を満たすまで、文字が左から右に切り捨てられます。 _DataWeave バージョン 2.3.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

maxLength

文字列の最大長さ。

### [](#例)例 次の例では、同じ文字列の異なる ​`maxLength`​ での ​`withMaxSize`​ の動作を示します。 `withMaxSize`​ が 0 の場合、関数は未変更の文字列を返します。入力が ​`null`​ であれば、出力は常に ​`null`​ になります。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import withMaxSize from dw::core::Strings output application/json --- { a: "123" withMaxSize 10, b: "123" withMaxSize 3, c: "123" withMaxSize 2, d: "123" withMaxSize 0, e: null withMaxSize 23, } ``` #### [](#出力)出力 ```JSON { "a": "123", "b": "123", "c": "12", "d": "123", "e": null } ``` ## [](#withmaxsize2)withMaxSize(text: Null, maxLength: Number): Null `withMaxSize`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.3.0 で導入されました。_ # words ## [](#words1)words(text: String): Array 文字列からの単語の配列を返します。 単語間の区切り文字には空白スペース、改行、タブなどがあります。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

単語に分割する文字列。

### [](#例)例 次の例では、文字列を含まれている ​`words`​ 別に分割しています。 `\n`​ は改行を表し、​`\t`​ はタブを表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import words from dw::core::Strings output application/json --- words("hello world\nhere\t\t\tdata-weave") ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#words2)words(text: Null): Null `words`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # words ## [](#words1)words(text: String): Array 文字列からの単語の配列を返します。 単語間の区切り文字には空白スペース、改行、タブなどがあります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

単語に分割する文字列。

### [](#例)例 次の例では、文字列を含まれている ​`words`​ 別に分割しています。 `\n`​ は改行を表し、​`\t`​ はタブを表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import words from dw::core::Strings output application/json --- words("hello world\nhere\t\t\tdata-weave") ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#words2)words(text: Null): Null `words`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # words ## [](#words1)words(text: String): Array 文字列からの単語の配列を返します。 単語間の区切り文字には空白スペース、改行、タブなどがあります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

単語に分割する文字列。

### [](#例)例 次の例では、文字列を含まれている ​`words`​ 別に分割しています。 `\n`​ は改行を表し、​`\t`​ はタブを表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import words from dw::core::Strings output application/json --- words("hello world\nhere\t\t\tdata-weave") ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#words2)words(text: Null): Null `words`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # words ## [](#words1)words(text: String): Array 文字列からの単語の配列を返します。 単語間の区切り文字には空白スペース、改行、タブなどがあります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

単語に分割する文字列。

### [](#例)例 次の例では、文字列を含まれている ​`words`​ 別に分割しています。 `\n`​ は改行を表し、​`\t`​ はタブを表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import words from dw::core::Strings output application/json --- words("hello world\nhere\t\t\tdata-weave") ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#words2)words(text: Null): Null `words`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # words ## [](#words1)words(text: String): Array 文字列からの単語の配列を返します。 単語間の区切り文字には空白スペース、改行、タブなどがあります。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

単語に分割する文字列。

### [](#例)例 次の例では、文字列を含まれている ​`words`​ 別に分割しています。 `\n`​ は改行を表し、​`\t`​ はタブを表します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import words from dw::core::Strings output application/json --- words("hello world\nhere\t\t\tdata-weave") ``` #### [](#出力)出力 ```Json ["hello", "world", "here", "data-weave"] ``` ## [](#words2)words(text: Null): Null `words`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # wrapIfMissing ## [](#wrapifmissing1)wrapIfMissing(String, String): String 指定された文字列の先頭または末尾から ​`wrapper`​ が欠落している場合、​`text`​ を ​`wrapper`​ でラップします。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapIfMissing(null, "'"), "b": wrapIfMissing("", "'"), "c": wrapIfMissing("ab", "x"), "d": wrapIfMissing("'ab'", "'"), "e": wrapIfMissing("/", '/'), "f": wrapIfMissing("a/b/c", '/'), "g": wrapIfMissing("/a/b/c", '/'), "h": wrapIfMissing("a/b/c/", '/') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "'", "c": "xabx", "d": "'ab'", "e": "/", "f": "/a/b/c/", "g": "/a/b/c/", "h": "/a/b/c/" } ``` ## [](#wrapifmissing2)wrapIfMissing(Null, String): Null `wrapIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # wrapIfMissing ## [](#wrapifmissing1)wrapIfMissing(text: String, wrapper: String): String 指定された文字列の先頭または末尾から ​`wrapper`​ が欠落している場合、​`text`​ を ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapIfMissing(null, "'"), "b": wrapIfMissing("", "'"), "c": wrapIfMissing("ab", "x"), "d": wrapIfMissing("'ab'", "'"), "e": wrapIfMissing("/", '/'), "f": wrapIfMissing("a/b/c", '/'), "g": wrapIfMissing("/a/b/c", '/'), "h": wrapIfMissing("a/b/c/", '/') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "'", "c": "xabx", "d": "'ab'", "e": "/", "f": "/a/b/c/", "g": "/a/b/c/", "h": "/a/b/c/" } ``` ## [](#wrapifmissing2)wrapIfMissing(text: Null, wrapper: String): Null `wrapIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # wrapIfMissing ## [](#wrapifmissing1)wrapIfMissing(text: String, wrapper: String): String 指定された文字列の先頭または末尾から ​`wrapper`​ が欠落している場合、​`text`​ を ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapIfMissing(null, "'"), "b": wrapIfMissing("", "'"), "c": wrapIfMissing("ab", "x"), "d": wrapIfMissing("'ab'", "'"), "e": wrapIfMissing("/", '/'), "f": wrapIfMissing("a/b/c", '/'), "g": wrapIfMissing("/a/b/c", '/'), "h": wrapIfMissing("a/b/c/", '/') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "'", "c": "xabx", "d": "'ab'", "e": "/", "f": "/a/b/c/", "g": "/a/b/c/", "h": "/a/b/c/" } ``` ## [](#wrapifmissing2)wrapIfMissing(text: Null, wrapper: String): Null `wrapIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapIfMissing ## [](#wrapifmissing1)wrapIfMissing(text: String, wrapper: String): String 指定された文字列の先頭または末尾から ​`wrapper`​ が欠落している場合、​`text`​ を ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapIfMissing(null, "'"), "b": wrapIfMissing("", "'"), "c": wrapIfMissing("ab", "x"), "d": wrapIfMissing("'ab'", "'"), "e": wrapIfMissing("/", '/'), "f": wrapIfMissing("a/b/c", '/'), "g": wrapIfMissing("/a/b/c", '/'), "h": wrapIfMissing("a/b/c/", '/') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "'", "c": "xabx", "d": "'ab'", "e": "/", "f": "/a/b/c/", "g": "/a/b/c/", "h": "/a/b/c/" } ``` ## [](#wrapifmissing2)wrapIfMissing(text: Null, wrapper: String): Null `wrapIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapIfMissing ## [](#wrapifmissing1)wrapIfMissing(text: String, wrapper: String): String 指定された文字列の先頭または末尾から ​`wrapper`​ が欠落している場合、​`text`​ を ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapIfMissing(null, "'"), "b": wrapIfMissing("", "'"), "c": wrapIfMissing("ab", "x"), "d": wrapIfMissing("'ab'", "'"), "e": wrapIfMissing("/", '/'), "f": wrapIfMissing("a/b/c", '/'), "g": wrapIfMissing("/a/b/c", '/'), "h": wrapIfMissing("a/b/c/", '/') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "'", "c": "xabx", "d": "'ab'", "e": "/", "f": "/a/b/c/", "g": "/a/b/c/", "h": "/a/b/c/" } ``` ## [](#wrapifmissing2)wrapIfMissing(text: Null, wrapper: String): Null `wrapIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapIfMissing ## [](#wrapifmissing1)wrapIfMissing(text: String, wrapper: String): String 指定された文字列の先頭または末尾から ​`wrapper`​ が欠落している場合、​`text`​ を ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapIfMissing`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapIfMissing(null, "'"), "b": wrapIfMissing("", "'"), "c": wrapIfMissing("ab", "x"), "d": wrapIfMissing("'ab'", "'"), "e": wrapIfMissing("/", '/'), "f": wrapIfMissing("a/b/c", '/'), "g": wrapIfMissing("/a/b/c", '/'), "h": wrapIfMissing("a/b/c/", '/') } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "'", "c": "xabx", "d": "'ab'", "e": "/", "f": "/a/b/c/", "g": "/a/b/c/", "h": "/a/b/c/" } ``` ## [](#wrapifmissing2)wrapIfMissing(text: Null, wrapper: String): Null `wrapIfMissing`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapWith ## [](#wrapwith1)wrapWith(String, String): String 指定された ​`text`​ を、指定された ​`wrapper`​ でラップします。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapWith(null, "'"), "b": wrapWith("", "'"), "c": wrapWith("ab", "x"), "d": wrapWith("'ab'", "'"), "e": wrapWith("ab", "'") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "''", "c": "xabx", "d": "''ab''", "e": "'ab'" } ``` ## [](#wrapwith2)wrapWith(Null, String): Null `wrapWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 # wrapWith ## [](#wrapwith1)wrapWith(text: String, wrapper: String): String 指定された ​`text`​ を、指定された ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

入力文字列。

​wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapWith(null, "'"), "b": wrapWith("", "'"), "c": wrapWith("ab", "x"), "d": wrapWith("'ab'", "'"), "e": wrapWith("ab", "'") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "''", "c": "xabx", "d": "''ab''", "e": "'ab'" } ``` ## [](#wrapwith2)wrapWith(text: Null, wrapper: Any): Null `wrapWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_​ # wrapWith ## [](#wrapwith1)wrapWith(text: String, wrapper: String): String 指定された ​`text`​ を、指定された ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapWith(null, "'"), "b": wrapWith("", "'"), "c": wrapWith("ab", "x"), "d": wrapWith("'ab'", "'"), "e": wrapWith("ab", "'") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "''", "c": "xabx", "d": "''ab''", "e": "'ab'" } ``` ## [](#wrapwith2)wrapWith(text: Null, wrapper: Any): Null `wrapWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapWith ## [](#wrapwith1)wrapWith(text: String, wrapper: String): String 指定された ​`text`​ を、指定された ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapWith(null, "'"), "b": wrapWith("", "'"), "c": wrapWith("ab", "x"), "d": wrapWith("'ab'", "'"), "e": wrapWith("ab", "'") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "''", "c": "xabx", "d": "''ab''", "e": "'ab'" } ``` ## [](#wrapwith2)wrapWith(text: Null, wrapper: Any): Null `wrapWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapWith ## [](#wrapwith1)wrapWith(text: String, wrapper: String): String 指定された ​`text`​ を、指定された ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapWith(null, "'"), "b": wrapWith("", "'"), "c": wrapWith("ab", "x"), "d": wrapWith("'ab'", "'"), "e": wrapWith("ab", "'") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "''", "c": "xabx", "d": "''ab''", "e": "'ab'" } ``` ## [](#wrapwith2)wrapWith(text: Null, wrapper: Any): Null `wrapWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # wrapWith ## [](#wrapwith1)wrapWith(text: String, wrapper: String): String 指定された ​`text`​ を、指定された ​`wrapper`​ でラップします。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

入力文字列。

wrapper

ラップするために使用するコンテンツ。

### [](#例)例 次の例では、さまざまな入力とサイズでの ​`wrapWith`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Strings output application/json --- { "a": wrapWith(null, "'"), "b": wrapWith("", "'"), "c": wrapWith("ab", "x"), "d": wrapWith("'ab'", "'"), "e": wrapWith("ab", "'") } ``` #### [](#出力)出力 ```JSON { "a": null, "b": "''", "c": "xabx", "d": "''ab''", "e": "'ab'" } ``` ## [](#wrapwith2)wrapWith(text: Null, wrapper: Any): Null `wrapWith`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.2.0 で導入されました。_ # write ## [](#write1)write(Any, String, Object): String | Binary 値を、サポートされる形式で文字列またはバイナリとして記述します。 指定された形式 (MIME タイプ) での値のシリアル化表現の文字列またはバイナリを返します。この関数では、入力とは異なる形式に記述することができます。データはこの新しい形式で検証される必要があります。検証されない場合、エラーが発生します。たとえば、​`application/xml`​ コンテンツは ​`application/json`​ 形式内では有効ではありませんが、​`text/plain`​ は有効になる可能性があります。 ### [](#パラメーター)パラメーター
名前 説明

​value

記述する値。サポート対象の任意のデータ型の値を使用できます。

​contentType

記述でサポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

​writerProperties

省略可能: ライター設定プロパティを設定します。ライター設定プロパティ (および他のサポートされる MIME タイプ) については、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 この例では、文字列 ​`world`​ をプレーンテキスト (​`text/plain"`​) で記述します。文字列は、キー ​`hello`​ を含む JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { hello : write("world", "text/plain") } ``` #### [](#出力)出力 ```JSON { "hello": "world" } ``` ### [](#例-2)例 次の例では、JSON 入力を取り込み、ペイロードを CSV 形式で記述します。区切り文字にはパイプ (​`|`​) を使用し、ヘッダー (JSON オブジェクトのキーと一致する) を含めます。 スクリプトで ​`"header":false`​ を使用すると、出力には ​`Name|Email|Id|Title`​ ヘッダーが含まれません。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { "output" : write(payload, "application/csv", {"header":true, "separator" : "|"}) } ``` #### [](#入力)入力 ```JSON [ { "Name": "Mr White", "Email": "white@mulesoft.com", "Id": "1234", "Title": "Chief Java Prophet" }, { "Name": "Mr Orange", "Email": "orange@mulesoft.com", "Id": "4567", "Title": "Integration Ninja" } ] ``` #### [](#出力-2)出力 ```XML Name|Email|Id|Title Mr White|white@mulesoft.com|1234|Chief Java Prophet Mr Orange|orange@mulesoft.com|4567|Integration Ninja ``` # write ## [](#write1)write(value: Any, contentType: String = "application/dw", writerProperties: Object = ​{}​): String | Binary 値を、サポートされる形式で文字列またはバイナリとして記述します。 指定された形式 (MIME タイプ) での値のシリアル化表現の文字列またはバイナリを返します。この関数では、入力とは異なる形式に記述することができます。データはこの新しい形式で検証される必要があります。検証されない場合、エラーが発生します。たとえば、​`application/xml`​ コンテンツは ​`application/json`​ 形式内では有効ではありませんが、​`text/plain`​ は有効になる可能性があります。 すべてのテキストベースのデータ形式 (XML、JSON、CSV など) では ​`String`​ 値を、すべてのバイナリ形式 (Excel、MultiPart、OctetStream など) では ​`Binary`​ 値を返します。 ### [](#パラメーター)パラメーター
名前 説明

​value

記述する値。サポート対象の任意のデータ型の値を使用できます。

​contentType

記述でサポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

​writerProperties

省略可能: ライター設定プロパティを設定します。ライター設定プロパティ (および他のサポートされる MIME タイプ) については、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 この例では、文字列 ​`world`​ をプレーンテキスト (​`text/plain"`​) で記述します。文字列は、キー ​`hello`​ を含む JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { hello : write("world", "text/plain") } ``` #### [](#出力)出力 ```JSON { "hello": "world" } ``` ### [](#例-2)例 次の例では、JSON 入力を取り込み、ペイロードを CSV 形式で記述します。区切り文字にはパイプ (​`|`​) を使用し、ヘッダー (JSON オブジェクトのキーと一致する) を含めます。 スクリプトで ​`"header":false`​ を使用すると、出力には ​`Name|Email|Id|Title`​ ヘッダーが含まれません。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { "output" : write(payload, "application/csv", {"header":true, "separator" : "|"}) } ``` #### [](#入力)入力 ```JSON [ { "Name": "Mr White", "Email": "white@mulesoft.com", "Id": "1234", "Title": "Chief Java Prophet" }, { "Name": "Mr Orange", "Email": "orange@mulesoft.com", "Id": "4567", "Title": "Integration Ninja" } ] ``` #### [](#出力-2)出力 ```XML Name|Email|Id|Title Mr White|white@mulesoft.com|1234|Chief Java Prophet Mr Orange|orange@mulesoft.com|4567|Integration Ninja ``` # write ## [](#write1)write(value: Any, contentType: String = "application/dw", writerProperties: Object = {}): String | Binary 値を、サポートされる形式で文字列またはバイナリとして記述します。 指定された形式 (MIME タイプ) での値のシリアル化表現の文字列またはバイナリを返します。この関数では、入力とは異なる形式に記述することができます。データはこの新しい形式で検証される必要があります。検証されない場合、エラーが発生します。たとえば、​`application/xml`​ コンテンツは ​`application/json`​ 形式内では有効ではありませんが、​`text/plain`​ は有効になる可能性があります。 すべてのテキストベースのデータ形式 (XML、JSON、CSV など) では ​`String`​ 値を、すべてのバイナリ形式 (Excel、MultiPart、OctetStream など) では ​`Binary`​ 値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

記述する値。サポート対象の任意のデータ型の値を使用できます。

contentType

記述でサポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

writerProperties

省略可能: ライター設定プロパティを設定します。ライター設定プロパティ (および他のサポートされる MIME タイプ) については、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 この例では、文字列 ​`world`​ をプレーンテキスト (​`text/plain"`​) で記述します。文字列は、キー ​`hello`​ を含む JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { hello : write("world", "text/plain") } ``` #### [](#出力)出力 ```JSON { "hello": "world" } ``` ### [](#例-2)例 次の例では、JSON 入力を取り込み、ペイロードを CSV 形式で記述します。区切り文字にはパイプ (​`|`​) を使用し、ヘッダー (JSON オブジェクトのキーと一致する) を含めます。 スクリプトで ​`"header":false`​ を使用すると、出力には ​`Name|Email|Id|Title`​ ヘッダーが含まれません。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { "output" : write(payload, "application/csv", {"header":true, "separator" : "|"}) } ``` #### [](#入力)入力 ```JSON [ { "Name": "Mr White", "Email": "white@mulesoft.com", "Id": "1234", "Title": "Chief Java Prophet" }, { "Name": "Mr Orange", "Email": "orange@mulesoft.com", "Id": "4567", "Title": "Integration Ninja" } ] ``` #### [](#出力-2)出力 ```XML Name|Email|Id|Title Mr White|white@mulesoft.com|1234|Chief Java Prophet Mr Orange|orange@mulesoft.com|4567|Integration Ninja ``` # write ## [](#write1)write(value: Any, contentType: String = "application/dw", writerProperties: Object = {}): String | Binary 値を、サポートされる形式で文字列またはバイナリとして記述します。 指定された形式 (MIME タイプ) での値のシリアル化表現の文字列またはバイナリを返します。この関数では、入力とは異なる形式に記述することができます。データはこの新しい形式で検証される必要があります。検証されない場合、エラーが発生します。たとえば、​`application/xml`​ コンテンツは ​`application/json`​ 形式内では有効ではありませんが、​`text/plain`​ は有効になる可能性があります。 すべてのテキストベースのデータ形式 (XML、JSON、CSV など) では ​`String`​ 値を、すべてのバイナリ形式 (Excel、MultiPart、OctetStream など) では ​`Binary`​ 値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

記述する値。サポート対象の任意のデータ型の値を使用できます。

contentType

記述でサポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

writerProperties

省略可能: ライター設定プロパティを設定します。ライター設定プロパティ (および他のサポートされる MIME タイプ) については、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 この例では、文字列 ​`world`​ をプレーンテキスト (​`text/plain"`​) で記述します。文字列は、キー ​`hello`​ を含む JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { hello : write("world", "text/plain") } ``` #### [](#出力)出力 ```JSON { "hello": "world" } ``` ### [](#例-2)例 次の例では、JSON 入力を取り込み、ペイロードを CSV 形式で記述します。区切り文字にはパイプ (​`|`​) を使用し、ヘッダー (JSON オブジェクトのキーと一致する) を含めます。 スクリプトで ​`"header":false`​ を使用すると、出力には ​`Name|Email|Id|Title`​ ヘッダーが含まれません。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { "output" : write(payload, "application/csv", {"header":true, "separator" : "|"}) } ``` #### [](#入力)入力 ```JSON [ { "Name": "Mr White", "Email": "white@mulesoft.com", "Id": "1234", "Title": "Chief Java Prophet" }, { "Name": "Mr Orange", "Email": "orange@mulesoft.com", "Id": "4567", "Title": "Integration Ninja" } ] ``` #### [](#出力-2)出力 ```XML Name|Email|Id|Title Mr White|white@mulesoft.com|1234|Chief Java Prophet Mr Orange|orange@mulesoft.com|4567|Integration Ninja ``` # write ## [](#write1)write(value: Any, contentType: String = "application/dw", writerProperties: Object = {}): String | Binary 値を、サポートされる形式で文字列またはバイナリとして記述します。 指定された形式 (MIME タイプ) での値のシリアル化表現の文字列またはバイナリを返します。この関数では、入力とは異なる形式に記述することができます。データはこの新しい形式で検証される必要があります。検証されない場合、エラーが発生します。たとえば、​`application/xml`​ コンテンツは ​`application/json`​ 形式内では有効ではありませんが、​`text/plain`​ は有効になる可能性があります。 すべてのテキストベースのデータ形式 (XML、JSON、CSV など) では ​`String`​ 値を、すべてのバイナリ形式 (Excel、MultiPart、OctetStream など) では ​`Binary`​ 値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

記述する値。サポート対象の任意のデータ型の値を使用できます。

contentType

記述でサポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

writerProperties

省略可能: ライター設定プロパティを設定します。ライター設定プロパティ (および他のサポートされる MIME タイプ) については、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 この例では、文字列 ​`world`​ をプレーンテキスト (​`text/plain"`​) で記述します。文字列は、キー ​`hello`​ を含む JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { hello : write("world", "text/plain") } ``` #### [](#出力)出力 ```JSON { "hello": "world" } ``` ### [](#例-2)例 次の例では、JSON 入力を取り込み、ペイロードを CSV 形式で記述します。区切り文字にはパイプ (​`|`​) を使用し、ヘッダー (JSON オブジェクトのキーと一致する) を含めます。 スクリプトで ​`"header":false`​ を使用すると、出力には ​`Name|Email|Id|Title`​ ヘッダーが含まれません。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { "output" : write(payload, "application/csv", {"header":true, "separator" : "|"}) } ``` #### [](#入力)入力 ```JSON [ { "Name": "Mr White", "Email": "white@mulesoft.com", "Id": "1234", "Title": "Chief Java Prophet" }, { "Name": "Mr Orange", "Email": "orange@mulesoft.com", "Id": "4567", "Title": "Integration Ninja" } ] ``` #### [](#出力-2)出力 ```XML Name|Email|Id|Title Mr White|white@mulesoft.com|1234|Chief Java Prophet Mr Orange|orange@mulesoft.com|4567|Integration Ninja ``` # write ## [](#write1)write(value: Any, contentType: String = "application/dw", writerProperties: Object = {}): String | Binary 値を、サポートされる形式で文字列またはバイナリとして記述します。 指定された形式 (MIME タイプ) での値のシリアル化表現の文字列またはバイナリを返します。この関数では、入力とは異なる形式に記述することができます。データはこの新しい形式で検証される必要があります。検証されない場合、エラーが発生します。たとえば、​`application/xml`​ コンテンツは ​`application/json`​ 形式内では有効ではありませんが、​`text/plain`​ は有効になる可能性があります。 すべてのテキストベースのデータ形式 (XML、JSON、CSV など) では ​`String`​ 値を、すべてのバイナリ形式 (Excel、MultiPart、OctetStream など) では ​`Binary`​ 値を返します。 ### [](#パラメーター)パラメーター
名前 説明

value

記述する値。サポート対象の任意のデータ型の値を使用できます。

contentType

記述でサポートされる形式 (または MIME タイプ)。デフォルト: application/dw​。

writerProperties

省略可能: ライター設定プロパティを設定します。ライター設定プロパティ (および他のサポートされる MIME タイプ) については、 「サポートされるデータ形式」​を参照してください。

### [](#例)例 この例では、文字列 ​`world`​ をプレーンテキスト (​`text/plain"`​) で記述します。文字列は、キー ​`hello`​ を含む JSON オブジェクトの値として出力されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- { hello : write("world", "text/plain") } ``` #### [](#出力)出力 ```JSON { "hello": "world" } ``` ### [](#例-2)例 次の例では、JSON 入力を取り込み、ペイロードを CSV 形式で記述します。区切り文字にはパイプ (​`|`​) を使用し、ヘッダー (JSON オブジェクトのキーと一致する) を含めます。 スクリプトで ​`"header":false`​ を使用すると、出力には ​`Name|Email|Id|Title`​ ヘッダーが含まれません。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/xml --- { "output" : write(payload, "application/csv", {"header":true, "separator" : "|"}) } ``` #### [](#入力)入力 ```JSON [ { "Name": "Mr White", "Email": "white@mulesoft.com", "Id": "1234", "Title": "Chief Java Prophet" }, { "Name": "Mr Orange", "Email": "orange@mulesoft.com", "Id": "4567", "Title": "Integration Ninja" } ] ``` #### [](#出力-2)出力 ```XML Name|Email|Id|Title Mr White|white@mulesoft.com|1234|Chief Java Prophet Mr Orange|orange@mulesoft.com|4567|Integration Ninja ``` # writeLinesWith ## [](#writelineswith1)writeLinesWith(Array, String): Binary 指定された行を書き込んで、バイナリコンテンツを返します。 _DataWeave 2.2.0 で導入されました。Mule 4.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​content

書き込む項目の配列。

​charset

書き込み時に使用するエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) を各反復の後に挿入します。具体的には、​`map`​ を使用して ​`to(1, 10)`​ の結果 (​`[1,2,3,4,5]`​) を反復処理した後、指定されたコンテンツ ("Line $") を書き込みます。このコンテンツには、配列内の各番号の代わりに名前のない変数 ​`$`​ が含まれます。 `writeLinesWith "UTF-8"`​ のない式 ​`{ lines: to(1, 10) map "Line $" }`​ では、オブジェクトの値として単に行番号の配列 (​`{ "lines": [ "line 1", "line 2", "line 3", "line 4", "line 5" ] }`​) が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json --- { lines: to(1, 10) map "Line $" writeLinesWith "UTF-8" } ``` #### [](#出力)出力 ```JSON { "lines": "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n" } ``` # writeLinesWith ## [](#writelineswith1)writeLinesWith(content: Array, charset: String): Binary 指定された行を書き込んで、バイナリコンテンツを返します。 _DataWeave バージョン 2.2.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​content

書き込む項目の配列。

​charset

書き込み時に使用するエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) を各反復の後に挿入します。具体的には、​`map`​ を使用して ​`to(1, 10)`​ の結果 (​`[1,2,3,4,5]`​) を反復処理した後、指定されたコンテンツ ("Line $") を書き込みます。このコンテンツには、配列内の各番号の代わりに名前のない変数 ​`$`​ が含まれます。 `writeLinesWith "UTF-8"`​ のない式 ​`{ lines: to(1, 10) map "Line $" }`​ では、オブジェクトの値として単に行番号の配列 (​`{ "lines": [ "line 1", "line 2", "line 3", "line 4", "line 5" ] }`​) が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json --- { lines: to(1, 10) map "Line $" writeLinesWith "UTF-8" } ``` #### [](#出力)出力 ```JSON { "lines": "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n" } ``` # writeLinesWith ## [](#writelineswith1)writeLinesWith(content: Array, charset: String): Binary 指定された行を書き込んで、バイナリコンテンツを返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

書き込む項目の配列。

charset

書き込み時に使用するエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) を各反復の後に挿入します。具体的には、​`map`​ を使用して ​`to(1, 10)`​ の結果 (​`[1,2,3,4,5]`​) を反復処理した後、指定されたコンテンツ ("Line $") を書き込みます。このコンテンツには、配列内の各番号の代わりに名前のない変数 ​`$`​ が含まれます。 `writeLinesWith "UTF-8"`​ のない式 ​`{ lines: to(1, 10) map "Line $" }`​ では、オブジェクトの値として単に行番号の配列 (​`{ "lines": [ "line 1", "line 2", "line 3", "line 4", "line 5" ] }`​) が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json --- { lines: to(1, 10) map "Line $" writeLinesWith "UTF-8" } ``` #### [](#出力)出力 ```JSON { "lines": "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n" } ``` # writeLinesWith ## [](#writelineswith1)writeLinesWith(content: Array, charset: String): Binary 指定された行を書き込んで、バイナリコンテンツを返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

書き込む項目の配列。

charset

書き込み時に使用するエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) を各反復の後に挿入します。具体的には、​`map`​ を使用して ​`to(1, 10)`​ の結果 (​`[1,2,3,4,5]`​) を反復処理した後、指定されたコンテンツ ("Line $") を書き込みます。このコンテンツには、配列内の各番号の代わりに名前のない変数 ​`$`​ が含まれます。 `writeLinesWith "UTF-8"`​ のない式 ​`{ lines: to(1, 10) map "Line $" }`​ では、オブジェクトの値として単に行番号の配列 (​`{ "lines": [ "line 1", "line 2", "line 3", "line 4", "line 5" ] }`​) が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json --- { lines: to(1, 10) map "Line $" writeLinesWith "UTF-8" } ``` #### [](#出力)出力 ```JSON { "lines": "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n" } ``` # writeLinesWith ## [](#writelineswith1)writeLinesWith(content: Array, charset: String): Binary 指定された行を書き込んで、バイナリコンテンツを返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

書き込む項目の配列。

charset

書き込み時に使用するエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) を各反復の後に挿入します。具体的には、​`map`​ を使用して ​`to(1, 10)`​ の結果 (​`[1,2,3,4,5]`​) を反復処理した後、指定されたコンテンツ ("Line $") を書き込みます。このコンテンツには、配列内の各番号の代わりに名前のない変数 ​`$`​ が含まれます。 `writeLinesWith "UTF-8"`​ のない式 ​`{ lines: to(1, 10) map "Line $" }`​ では、オブジェクトの値として単に行番号の配列 (​`{ "lines": [ "line 1", "line 2", "line 3", "line 4", "line 5" ] }`​) が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json --- { lines: to(1, 10) map "Line $" writeLinesWith "UTF-8" } ``` #### [](#出力)出力 ```JSON { "lines": "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n" } ``` # writeLinesWith ## [](#writelineswith1)writeLinesWith(content: Array, charset: String): Binary 指定された行を書き込んで、バイナリコンテンツを返します。 _DataWeave バージョン 2.2.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

content

書き込む項目の配列。

charset

書き込み時に使用するエンコードを表す文字列。

### [](#例)例 次の例では、改行 (​`\n`​) を各反復の後に挿入します。具体的には、​`map`​ を使用して ​`to(1, 10)`​ の結果 (​`[1,2,3,4,5]`​) を反復処理した後、指定されたコンテンツ ("Line $") を書き込みます。このコンテンツには、配列内の各番号の代わりに名前のない変数 ​`$`​ が含まれます。 `writeLinesWith "UTF-8"`​ のない式 ​`{ lines: to(1, 10) map "Line $" }`​ では、オブジェクトの値として単に行番号の配列 (​`{ "lines": [ "line 1", "line 2", "line 3", "line 4", "line 5" ] }`​) が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Binaries output application/json --- { lines: to(1, 10) map "Line $" writeLinesWith "UTF-8" } ``` #### [](#出力)出力 ```JSON { "lines": "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n" } ``` # XML から JSON への変換 これらのシンプルな DataWeave の例では XML 入力を JSON 出力に正常に変更します。通常、複雑な変換では ​`map`​ または ​`mapObject`​ 関数を使用する必要があります。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 次の DataWeave スクリプトは、出力項目の名前 (またはキー) を入力項目の値にマップします。入力項目は、関数を含まないセレクター式で指定します。このスクリプトでは、一部の項目の順序や名前も変更します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { address1: payload.order.buyer.address, city: payload.order.buyer.city, country: payload.order.buyer.nationality, email: payload.order.buyer.email, name: payload.order.buyer.name, postalCode: payload.order.buyer.postCode, stateOrProvince: payload.order.buyer.state } ``` 入力 XML ペイロード: ```xml 5 MuleSoft Connect 2016 3 credit-card USD 1 mike@hotmail.com Michael
Koala Boulevard 314
San Diego CA 1345 USA
main branch Mathew Chow
``` 出力 JSON: ```json { "address1": "Koala Boulevard 314", "city": "San Diego", "country": "USA", "email": "mike@hotmail.com", "name": "Michael", "postalCode": "1345", "stateOrProvince": "CA" } ``` 次の例では、DataWeave スクリプトで同じキーの複数の XML ノードが含まれる XML を有効な JSON に変換し、同じキーの JSON ノードを作成するのではなく配列を作成します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json duplicateKeyAsArray=true --- payload ``` 入力 XML ペイロード: ```xml 100.0 498.00 ``` 出力 JSON: ```json { "order": { "product-lineitems": { "product-lineitem": [ { "net-price": "100.0" }, { "net-price": "498.00" } ] } } } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data) - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # XML から JSON への変換 これらのシンプルな DataWeave の例では XML 入力を JSON 出力に正常に変更します。通常、複雑な変換では ​`map`​ または ​`mapObject`​ 関数を使用する必要があります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の DataWeave スクリプトは、出力項目の名前 (またはキー) を入力項目の値にマップします。入力項目は、関数を含まないセレクター式で指定します。このスクリプトでは、一部の項目の順序や名前も変更します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { address1: payload.order.buyer.address, city: payload.order.buyer.city, country: payload.order.buyer.nationality, email: payload.order.buyer.email, name: payload.order.buyer.name, postalCode: payload.order.buyer.postCode, stateOrProvince: payload.order.buyer.state } ``` 入力 XML ペイロード: ```xml 5 MuleSoft Connect 2016 3 credit-card USD 1 mike@hotmail.com Michael
Koala Boulevard 314
San Diego CA 1345 USA
main branch Mathew Chow
``` 出力 JSON: ```json { "address1": "Koala Boulevard 314", "city": "San Diego", "country": "USA", "email": "mike@hotmail.com", "name": "Michael", "postalCode": "1345", "stateOrProvince": "CA" } ``` 次の例では、DataWeave スクリプトで同じキーの複数の XML ノードが含まれる XML を有効な JSON に変換し、同じキーの JSON ノードを作成するのではなく配列を作成します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json duplicateKeyAsArray=true --- payload ``` 入力 XML ペイロード: ```xml 100.0 498.00 ``` 出力 JSON: ```json { "order": { "product-lineitems": { "product-lineitem": [ { "net-price": "100.0" }, { "net-price": "498.00" } ] } } } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-extract-data) - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # XML から JSON への変換 これらのシンプルな DataWeave の例では XML 入力を JSON 出力に正常に変更します。通常、複雑な変換では ​`map`​ または ​`mapObject`​ 関数を使用する必要があります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の DataWeave スクリプトは、出力項目の名前 (またはキー) を入力項目の値にマップします。入力項目は、関数を含まないセレクター式で指定します。このスクリプトでは、一部の項目の順序や名前も変更します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { address1: payload.order.buyer.address, city: payload.order.buyer.city, country: payload.order.buyer.nationality, email: payload.order.buyer.email, name: payload.order.buyer.name, postalCode: payload.order.buyer.postCode, stateOrProvince: payload.order.buyer.state } ``` 入力 XML ペイロード: ```xml 5 MuleSoft Connect 2016 3 credit-card USD 1 mike@hotmail.com Michael
Koala Boulevard 314
San Diego CA 1345 USA
main branch Mathew Chow
``` 出力 JSON: ```json { "address1": "Koala Boulevard 314", "city": "San Diego", "country": "USA", "email": "mike@hotmail.com", "name": "Michael", "postalCode": "1345", "stateOrProvince": "CA" } ``` 次の例では、DataWeave スクリプトで同じキーの複数の XML ノードが含まれる XML を有効な JSON に変換し、同じキーの JSON ノードを作成するのではなく配列を作成します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json duplicateKeyAsArray=true --- payload ``` 入力 XML ペイロード: ```xml 100.0 498.00 ``` 出力 JSON: ```json { "order": { "product-lineitems": { "product-lineitem": [ { "net-price": "100.0" }, { "net-price": "498.00" } ] } } } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-extract-data) - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # XML から JSON への変換 これらのシンプルな DataWeave の例では XML 入力を JSON 出力に正常に変更します。通常、複雑な変換では ​`map`​ または ​`mapObject`​ 関数を使用する必要があります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の DataWeave スクリプトは、出力項目の名前 (またはキー) を入力項目の値にマップします。入力項目は、関数を含まないセレクター式で指定します。このスクリプトでは、一部の項目の順序や名前も変更します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { address1: payload.order.buyer.address, city: payload.order.buyer.city, country: payload.order.buyer.nationality, email: payload.order.buyer.email, name: payload.order.buyer.name, postalCode: payload.order.buyer.postCode, stateOrProvince: payload.order.buyer.state } ``` 入力 XML ペイロード: ```xml 5 MuleSoft Connect 2016 3 credit-card USD 1 mike@hotmail.com Michael
Koala Boulevard 314
San Diego CA 1345 USA
main branch Mathew Chow
``` 出力 JSON: ```json { "address1": "Koala Boulevard 314", "city": "San Diego", "country": "USA", "email": "mike@hotmail.com", "name": "Michael", "postalCode": "1345", "stateOrProvince": "CA" } ``` 次の例では、DataWeave スクリプトで同じキーの複数の XML ノードが含まれる XML を有効な JSON に変換し、同じキーの JSON ノードを作成するのではなく配列を作成します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json duplicateKeyAsArray=true --- payload ``` 入力 XML ペイロード: ```xml 100.0 498.00 ``` 出力 JSON: ```json { "order": { "product-lineitems": { "product-lineitem": [ { "net-price": "100.0" }, { "net-price": "498.00" } ] } } } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data) - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # XML から JSON への変換 これらのシンプルな DataWeave の例では XML 入力を JSON 出力に正常に変更します。通常、複雑な変換では ​`map`​ または ​`mapObject`​ 関数を使用する必要があります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の DataWeave スクリプトは、出力項目の名前 (またはキー) を入力項目の値にマップします。入力項目は、関数を含まないセレクター式で指定します。このスクリプトでは、一部の項目の順序や名前も変更します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { address1: payload.order.buyer.address, city: payload.order.buyer.city, country: payload.order.buyer.nationality, email: payload.order.buyer.email, name: payload.order.buyer.name, postalCode: payload.order.buyer.postCode, stateOrProvince: payload.order.buyer.state } ``` 入力 XML ペイロード: ```xml 5 MuleSoft Connect 2016 3 credit-card USD 1 mike@hotmail.com Michael
Koala Boulevard 314
San Diego CA 1345 USA
main branch Mathew Chow
``` 出力 JSON: ```json { "address1": "Koala Boulevard 314", "city": "San Diego", "country": "USA", "email": "mike@hotmail.com", "name": "Michael", "postalCode": "1345", "stateOrProvince": "CA" } ``` 次の例では、DataWeave スクリプトで同じキーの複数の XML ノードが含まれる XML を有効な JSON に変換し、同じキーの JSON ノードを作成するのではなく配列を作成します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json duplicateKeyAsArray=true --- payload ``` 入力 XML ペイロード: ```xml 100.0 498.00 ``` 出力 JSON: ```json { "order": { "product-lineitems": { "product-lineitem": [ { "net-price": "100.0" }, { "net-price": "498.00" } ] } } } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-extract-data) - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # XML から JSON への変換 これらのシンプルな DataWeave の例では XML 入力を JSON 出力に正常に変更します。通常、複雑な変換では ​`map`​ または ​`mapObject`​ 関数を使用する必要があります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の DataWeave スクリプトは、出力項目の名前 (またはキー) を入力項目の値にマップします。入力項目は、関数を含まないセレクター式で指定します。このスクリプトでは、一部の項目の順序や名前も変更します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { address1: payload.order.buyer.address, city: payload.order.buyer.city, country: payload.order.buyer.nationality, email: payload.order.buyer.email, name: payload.order.buyer.name, postalCode: payload.order.buyer.postCode, stateOrProvince: payload.order.buyer.state } ``` 入力 XML ペイロード: ```xml 5 MuleSoft Connect 2016 3 credit-card USD 1 mike@hotmail.com Michael
Koala Boulevard 314
San Diego CA 1345 USA
main branch Mathew Chow
``` 出力 JSON: ```json { "address1": "Koala Boulevard 314", "city": "San Diego", "country": "USA", "email": "mike@hotmail.com", "name": "Michael", "postalCode": "1345", "stateOrProvince": "CA" } ``` 次の例では、DataWeave スクリプトで同じキーの複数の XML ノードが含まれる XML を有効な JSON に変換し、同じキーの JSON ノードを作成するのではなく配列を作成します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json duplicateKeyAsArray=true --- payload ``` 入力 XML ペイロード: ```xml 100.0 498.00 ``` 出力 JSON: ```json { "order": { "product-lineitems": { "product-lineitem": [ { "net-price": "100.0" }, { "net-price": "498.00" } ] } } } ``` ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-extract-data) - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # XML スキーマの再利用 `xmlschema!`​ モジュールローダーを使用して、XML スキーマファイル (​`.xsd`​) をモジュールとして DataWeave スクリプトにインポートできます。このローダーにより、各自のスキーマで宣言されている型を DataWeave で直接使用できます。 DataWeave は、XSD ファイルを読み込み、ファイルの宣言を他の DataWeave モジュールの型と同じようにアクセスできる DataWeave 型ディレクティブを変換します。ディレクティブを使用して、新しい型を作成したり、変数の型をチェックしたり、パターンを照合したり、型を使用する新しい関数を宣言したりします。DataWeave では、これらの型の使用方法に制限はありません。 次の例は、DataWeave スクリプトでパス ​`org/weave/myfolder/User.xsd`​ の XSD ファイルを検索する方法を示しています。 import \* from xmlschema!org::weave::myfolder::User ## [](#インポート構文)インポート構文 XML スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の XML スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToXsdSchemaFile`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.xsd`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.xsd`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from xmlschema!\_pathToXsdSchemaFile\_ 次の例は、型をインポートする方法を示しています。 import \* from xmlschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 次の例は、型を使用して XML スキーマファイルを DataWeave スクリプトにインポートする方法を示しています。 XSD ファイル (​`User.xsd`​): ```XML ``` DataWeave スクリプト: ```dataweave %dw 2.0 import * from xmlschema!org::weave::myfolder::User { Root @(id:"test") :{ employee: { "name": "Mariano" } } match { case is Root -> true else -> false } } ``` ## [](#xml-モデルから-dataweave-型へ)XML モデルから DataWeave 型へ XML スキーマの型システムは DataWeave 型ディレクティブに変換されますが、この 2 つの型モデルは異なるため、結果として DataWeave 型で表される XML モデルがまったく同じにはならない可能性があります。 次のファイルは、XSD がどのように DataWeave コードに変換されるのかを示しています。これらのファイルは動的に生成されて表示されませんが、生成された XSD ファイルの型がどのようにコンシュームされるのかを理解するのに役立ちます。 ### [](#組み込みの-xml-スキーマの型)組み込みの XML スキーマの型 DataWeave では、次の XSD 型がサポートされています。​`xs`​ は XMLSchema のデフォルトの名前空間です。
XSD 型 DataWeave 型

xs:number

Number

xs:int

Number

xs:integer

Number

xs:long

Number

xs:short

Number

xs:byte

Number

xs:double

Number

xs:decimal

Number

xs:unsignedLong

Number

xs:unsignedInt

Number

xs:unsignedShort

Number

xs:unsignedByte

Number

xs:positiveInteger

Number

xs:negativeInteger

Number

xs:nonNegativeInteger

Number

xs:nonPositiveInteger

Number

xs:hexBinary

Binary

xs:base64Binary

Binary

xs:boolean

Boolean

xs:any

String

xs:string

String

xs:normalizedString

String

xs:datetime

DateTime

xs:time

Time

xs:date

LocalDateTime

XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type RootElementDefinition = {| Root: { string: String, normalizedString: String, integer: Number, negativeInteger: Number, int: Number, unsignedInt: Number, unsignedLong: Number, unsignedShort: Number, float: Number, double: Number, date: LocalDateTime, dateTime: DateTime, time: Time, boolean: Boolean, hexBinary: Binary, base64Binary: Binary, decimal: Number } |} type Root = RootElementDefinition ``` ### [](#ルート要素の宣言)ルート要素の宣言 XSD ファイルで宣言されている各ルート要素 (​``​) では、以下が生成されます。 - 要素名の後に ​`ElementDefinition`​ 拡張が続く DataWeave ​`type`​ ディレクティブ。 - XSD のすべてのルート要素で構成される、​`Union`​ 型の ​`Root`​ という ​`type`​ ディレクティブ。 次の例は、ルート要素を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type AnotherRootElementDefinition = {| AnotherRoot @("type"?: String): {- name: String -} |} type RootElementDefinition = {| Root @("type"?: String): {- color: String, age: Number -} |} type Root = AnotherRootElementDefinition | RootElementDefinition ``` ### [](#複雑型)複雑型 各自のスキーマで参照したり、他の構造で再利用したりできる、スキーマの最上位要素として宣言されている名前付き複雑型は、独自の型ディレクティブを生成します。これらの型ディレクティブ名には、​`Definition`​ 拡張が続く ​`complextype`​ 名が含まれます。 次の例は、複雑型を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root @(id?: String): {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#importsincludes)Imports/Includes XSD スキーマファイルの imports または includes を使用すると、指定された ​`schemaLocation`​ にあるスキーマファイルを参照するために XML スキーマモジュールローダーを使用する ​`import`​ ディレクティブが DataWeave モジュールに含まれます。この場所は、メインスキーマに相対的に宣言されている必要があります。次の例の[型の選択](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selecting-types)の使用方法に注意してください。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://common.com/COMMON import xmlschema!org::mule::weave::v2::module::xmlschema::moduleloader::imports::common type RootElementDefinition = {| Root: common::RequestHeaderDefinition.ns0#RequestHeader |} type Root = RootElementDefinition ``` ### [](#choice)Choice この XML スキーマ構造を DataWeave の ​`UnionType`​ にマップできます。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root: {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#名前空間)名前空間 XML スキーマファイルの名前空間は、DataWeave 型ディレクティブに直接変換されます。 次の例は、要素が存在する特定の ​`targetNamespace`​ 属性を設定する方法を示しています。DataWeave に変換されるこの名前空間では、これらの型の選択および移動が必要になります。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://NamespaceTest.com/CommonTypes type RootElementDefinition = {| ns0#Root: { ns0#string: String, ns0#normalizedString: String, ns0#integer: Number, ns0#negativeInteger: Number, ns0#int: Number, ns0#unsignedInt: Number, ns0#unsignedLong: Number, ns0#unsignedShort: Number, ns0#float: Number, ns0#double: Number, ns0#date: LocalDateTime, ns0#dateTime: DateTime, ns0#time: Time, ns0#boolean: Boolean, ns0#hexBinary: Binary, ns0#base64Binary: Binary, ns0#decimal: Number } |} type Root = RootElementDefinition ``` # XML スキーマの再利用 `xmlschema!`​ モジュールローダーを使用して、XML スキーマファイル (​`.xsd`​) をモジュールとして DataWeave スクリプトにインポートできます。このローダーにより、各自のスキーマで宣言されている型を DataWeave で直接使用できます。 DataWeave は、XSD ファイルを読み込み、ファイルの宣言を他の DataWeave モジュールの型と同じようにアクセスできる DataWeave 型ディレクティブを変換します。ディレクティブを使用して、新しい型を作成したり、変数の型をチェックしたり、パターンを照合したり、型を使用する新しい関数を宣言したりします。DataWeave では、これらの型の使用方法に制限はありません。 次の例は、DataWeave スクリプトでパス ​`org/weave/myfolder/User.xsd`​ の XSD ファイルを検索する方法を示しています。 import \* from xmlschema!org::weave::myfolder::User ## [](#インポート構文)インポート構文 XML スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の XML スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToXsdSchemaFile`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.xsd`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.xsd`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from xmlschema!\_pathToXsdSchemaFile\_ 次の例は、型をインポートする方法を示しています。 import \* from xmlschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 次の例は、型を使用して XML スキーマファイルを DataWeave スクリプトにインポートする方法を示しています。 XSD ファイル (​`User.xsd`​): ```XML ``` DataWeave スクリプト: ```dataweave %dw 2.0 import * from xmlschema!org::weave::myfolder::User { Root @(id:"test") :{ employee: { "name": "Mariano" } } match { case is Root -> true else -> false } } ``` ## [](#xml-モデルから-dataweave-型へ)XML モデルから DataWeave 型へ XML スキーマの型システムは DataWeave 型ディレクティブに変換されますが、この 2 つの型モデルは異なるため、結果として DataWeave 型で表される XML モデルがまったく同じにはならない可能性があります。 次のファイルは、XSD がどのように DataWeave コードに変換されるのかを示しています。これらのファイルは動的に生成されて表示されませんが、生成された XSD ファイルの型がどのようにコンシュームされるのかを理解するのに役立ちます。 ### [](#組み込みの-xml-スキーマの型)組み込みの XML スキーマの型 DataWeave では、次の XSD 型がサポートされています。​`xs`​ は XMLSchema のデフォルトの名前空間です。
XSD 型 DataWeave 型

xs:number

Number

xs:int

Number

xs:integer

Number

xs:long

Number

xs:short

Number

xs:byte

Number

xs:double

Number

xs:decimal

Number

xs:unsignedLong

Number

xs:unsignedInt

Number

xs:unsignedShort

Number

xs:unsignedByte

Number

xs:positiveInteger

Number

xs:negativeInteger

Number

xs:nonNegativeInteger

Number

xs:nonPositiveInteger

Number

xs:hexBinary

Binary

xs:base64Binary

Binary

xs:boolean

Boolean

xs:any

String

xs:string

String

xs:normalizedString

String

xs:datetime

DateTime

xs:time

Time

xs:date

LocalDateTime

XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type RootElementDefinition = {| Root: { string: String, normalizedString: String, integer: Number, negativeInteger: Number, int: Number, unsignedInt: Number, unsignedLong: Number, unsignedShort: Number, float: Number, double: Number, date: LocalDateTime, dateTime: DateTime, time: Time, boolean: Boolean, hexBinary: Binary, base64Binary: Binary, decimal: Number } |} type Root = RootElementDefinition ``` ### [](#ルート要素の宣言)ルート要素の宣言 XSD ファイルで宣言されている各ルート要素 (​``​) では、以下が生成されます。 - 要素名の後に ​`ElementDefinition`​ 拡張が続く DataWeave ​`type`​ ディレクティブ。 - XSD のすべてのルート要素で構成される、​`Union`​ 型の ​`Root`​ という ​`type`​ ディレクティブ。 次の例は、ルート要素を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type AnotherRootElementDefinition = {| AnotherRoot @("type"?: String): {- name: String -} |} type RootElementDefinition = {| Root @("type"?: String): {- color: String, age: Number -} |} type Root = AnotherRootElementDefinition | RootElementDefinition ``` ### [](#複雑型)複雑型 各自のスキーマで参照したり、他の構造で再利用したりできる、スキーマの最上位要素として宣言されている名前付き複雑型は、独自の型ディレクティブを生成します。これらの型ディレクティブ名には、​`Definition`​ 拡張が続く ​`complextype`​ 名が含まれます。 次の例は、複雑型を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root @(id?: String): {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#importsincludes)Imports/Includes XSD スキーマファイルの imports または includes を使用すると、指定された ​`schemaLocation`​ にあるスキーマファイルを参照するために XML スキーマモジュールローダーを使用する ​`import`​ ディレクティブが DataWeave モジュールに含まれます。この場所は、メインスキーマに相対的に宣言されている必要があります。次の例の[型の選択](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selecting-types)の使用方法に注意してください。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://common.com/COMMON import xmlschema!org::mule::weave::v2::module::xmlschema::moduleloader::imports::common type RootElementDefinition = {| Root: common::RequestHeaderDefinition.ns0#RequestHeader |} type Root = RootElementDefinition ``` ### [](#choice)Choice この XML スキーマ構造を DataWeave の ​`UnionType`​ にマップできます。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root: {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#名前空間)名前空間 XML スキーマファイルの名前空間は、DataWeave 型ディレクティブに直接変換されます。 次の例は、要素が存在する特定の ​`targetNamespace`​ 属性を設定する方法を示しています。DataWeave に変換されるこの名前空間では、これらの型の選択および移動が必要になります。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://NamespaceTest.com/CommonTypes type RootElementDefinition = {| ns0#Root: { ns0#string: String, ns0#normalizedString: String, ns0#integer: Number, ns0#negativeInteger: Number, ns0#int: Number, ns0#unsignedInt: Number, ns0#unsignedLong: Number, ns0#unsignedShort: Number, ns0#float: Number, ns0#double: Number, ns0#date: LocalDateTime, ns0#dateTime: DateTime, ns0#time: Time, ns0#boolean: Boolean, ns0#hexBinary: Binary, ns0#base64Binary: Binary, ns0#decimal: Number } |} type Root = RootElementDefinition ``` # XML スキーマの再利用 `xmlschema!`​ モジュールローダーを使用して、XML スキーマファイル (​`.xsd`​) をモジュールとして DataWeave スクリプトにインポートできます。このローダーにより、各自のスキーマで宣言されている型を DataWeave で直接使用できます。 DataWeave は、XSD ファイルを読み込み、ファイルの宣言を他の DataWeave モジュールの型と同じようにアクセスできる DataWeave 型ディレクティブを変換します。ディレクティブを使用して、新しい型を作成したり、変数の型をチェックしたり、パターンを照合したり、型を使用する新しい関数を宣言したりします。DataWeave では、これらの型の使用方法に制限はありません。 次の例は、DataWeave スクリプトでパス ​`org/weave/myfolder/User.xsd`​ の XSD ファイルを検索する方法を示しています。 import \* from xmlschema!org::weave::myfolder::User ## [](#インポート構文)インポート構文 XML スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の XML スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToXsdSchemaFile`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.xsd`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.xsd`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from xmlschema!\_pathToXsdSchemaFile\_ 次の例は、型をインポートする方法を示しています。 import \* from xmlschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 次の例は、型を使用して XML スキーマファイルを DataWeave スクリプトにインポートする方法を示しています。 XSD ファイル (​`User.xsd`​): ```XML ``` DataWeave スクリプト: ```dataweave %dw 2.0 import * from xmlschema!org::weave::myfolder::User { Root @(id:"test") :{ employee: { "name": "Mariano" } } match { case is Root -> true else -> false } } ``` ## [](#xml-モデルから-dataweave-型へ)XML モデルから DataWeave 型へ XML スキーマの型システムは DataWeave 型ディレクティブに変換されますが、この 2 つの型モデルは異なるため、結果として DataWeave 型で表される XML モデルがまったく同じにはならない可能性があります。 次のファイルは、XSD がどのように DataWeave コードに変換されるのかを示しています。これらのファイルは動的に生成されて表示されませんが、生成された XSD ファイルの型がどのようにコンシュームされるのかを理解するのに役立ちます。 ### [](#組み込みの-xml-スキーマの型)組み込みの XML スキーマの型 DataWeave では、次の XSD 型がサポートされています。​`xs`​ は XMLSchema のデフォルトの名前空間です。
XSD 型 DataWeave 型

xs:number

Number

xs:int

Number

xs:integer

Number

xs:long

Number

xs:short

Number

xs:byte

Number

xs:double

Number

xs:decimal

Number

xs:unsignedLong

Number

xs:unsignedInt

Number

xs:unsignedShort

Number

xs:unsignedByte

Number

xs:positiveInteger

Number

xs:negativeInteger

Number

xs:nonNegativeInteger

Number

xs:nonPositiveInteger

Number

xs:hexBinary

Binary

xs:base64Binary

Binary

xs:boolean

Boolean

xs:any

String

xs:string

String

xs:normalizedString

String

xs:datetime

DateTime

xs:time

Time

xs:date

LocalDateTime

XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type RootElementDefinition = {| Root: { string: String, normalizedString: String, integer: Number, negativeInteger: Number, int: Number, unsignedInt: Number, unsignedLong: Number, unsignedShort: Number, float: Number, double: Number, date: LocalDateTime, dateTime: DateTime, time: Time, boolean: Boolean, hexBinary: Binary, base64Binary: Binary, decimal: Number } |} type Root = RootElementDefinition ``` ### [](#ルート要素の宣言)ルート要素の宣言 XSD ファイルで宣言されている各ルート要素 (​``​) では、以下が生成されます。 - 要素名の後に ​`ElementDefinition`​ 拡張が続く DataWeave ​`type`​ ディレクティブ。 - XSD のすべてのルート要素で構成される、​`Union`​ 型の ​`Root`​ という ​`type`​ ディレクティブ。 次の例は、ルート要素を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type AnotherRootElementDefinition = {| AnotherRoot @("type"?: String): {- name: String -} |} type RootElementDefinition = {| Root @("type"?: String): {- color: String, age: Number -} |} type Root = AnotherRootElementDefinition | RootElementDefinition ``` ### [](#複雑型)複雑型 各自のスキーマで参照したり、他の構造で再利用したりできる、スキーマの最上位要素として宣言されている名前付き複雑型は、独自の型ディレクティブを生成します。これらの型ディレクティブ名には、​`Definition`​ 拡張が続く ​`complextype`​ 名が含まれます。 次の例は、複雑型を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root @(id?: String): {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#importsincludes)Imports/Includes XSD スキーマファイルの imports または includes を使用すると、指定された ​`schemaLocation`​ にあるスキーマファイルを参照するために XML スキーマモジュールローダーを使用する ​`import`​ ディレクティブが DataWeave モジュールに含まれます。この場所は、メインスキーマに相対的に宣言されている必要があります。次の例の[型の選択](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selecting-types)の使用方法に注意してください。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://common.com/COMMON import xmlschema!org::mule::weave::v2::module::xmlschema::moduleloader::imports::common type RootElementDefinition = {| Root: common::RequestHeaderDefinition.ns0#RequestHeader |} type Root = RootElementDefinition ``` ### [](#choice)Choice この XML スキーマ構造を DataWeave の ​`UnionType`​ にマップできます。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root: {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#名前空間)名前空間 XML スキーマファイルの名前空間は、DataWeave 型ディレクティブに直接変換されます。 次の例は、要素が存在する特定の ​`targetNamespace`​ 属性を設定する方法を示しています。DataWeave に変換されるこの名前空間では、これらの型の選択および移動が必要になります。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://NamespaceTest.com/CommonTypes type RootElementDefinition = {| ns0#Root: { ns0#string: String, ns0#normalizedString: String, ns0#integer: Number, ns0#negativeInteger: Number, ns0#int: Number, ns0#unsignedInt: Number, ns0#unsignedLong: Number, ns0#unsignedShort: Number, ns0#float: Number, ns0#double: Number, ns0#date: LocalDateTime, ns0#dateTime: DateTime, ns0#time: Time, ns0#boolean: Boolean, ns0#hexBinary: Binary, ns0#base64Binary: Binary, ns0#decimal: Number } |} type Root = RootElementDefinition ``` # XML スキーマの再利用 `xmlschema!`​ モジュールローダーを使用して、XML スキーマファイル (​`.xsd`​) をモジュールとして DataWeave スクリプトにインポートできます。このローダーにより、各自のスキーマで宣言されている型を DataWeave で直接使用できます。 DataWeave は、XSD ファイルを読み込み、ファイルの宣言を他の DataWeave モジュールの型と同じようにアクセスできる DataWeave 型ディレクティブを変換します。ディレクティブを使用して、新しい型を作成したり、変数の型をチェックしたり、パターンを照合したり、型を使用する新しい関数を宣言したりします。DataWeave では、これらの型の使用方法に制限はありません。 次の例は、DataWeave スクリプトでパス ​`org/weave/myfolder/User.xsd`​ の XSD ファイルを検索する方法を示しています。 import \* from xmlschema!org::weave::myfolder::User ## [](#インポート構文)インポート構文 XML スキーマの型をインポートするには、以下の構文を使用します。 - `typeToImport`​: `*`​ を使用してスキーマで定義されているすべての型をインポートしたり、スキーマの 1 つの型 (​`Root`​ など) をインポートしたりできます。異なる名前の XML スキーマの型 (​`Root as Person`​ など) をインポートすることもできます。これにより、スクリプトでその名前を使用して型を参照できます。 - `pathToXsdSchemaFile`​: スキーマファイルへのパスを指定するには、ファイルの区切り文字を ​`::`​ に置き換えて、ファイル名の ​`.xsd`​ 拡張子を削除します。たとえば、スキーマへのパスが ​`example/schema/Person.xsd`​ の場合、​`example::schema::Person`​ を使用します。 import \_typesToImport\_ from xmlschema!\_pathToXsdSchemaFile\_ 次の例は、型をインポートする方法を示しています。 import \* from xmlschema!example::schema::Person ## [](#dataweave-スクリプトでの型の使用)DataWeave スクリプトでの型の使用 次の例は、型を使用して XML スキーマファイルを DataWeave スクリプトにインポートする方法を示しています。 XSD ファイル (​`User.xsd`​): ```XML ``` DataWeave スクリプト: ```dataweave %dw 2.0 import * from xmlschema!org::weave::myfolder::User { Root @(id:"test") :{ employee: { "name": "Mariano" } } match { case is Root -> true else -> false } } ``` ## [](#xml-モデルから-dataweave-型へ)XML モデルから DataWeave 型へ XML スキーマの型システムは DataWeave 型ディレクティブに変換されますが、この 2 つの型モデルは異なるため、結果として DataWeave 型で表される XML モデルがまったく同じにはならない可能性があります。 次のファイルは、XSD がどのように DataWeave コードに変換されるのかを示しています。これらのファイルは動的に生成されて表示されませんが、生成された XSD ファイルの型がどのようにコンシュームされるのかを理解するのに役立ちます。 ### [](#組み込みの-xml-スキーマの型)組み込みの XML スキーマの型 DataWeave では、次の XSD 型がサポートされています。​`xs`​ は XMLSchema のデフォルトの名前空間です。
XSD 型 DataWeave 型

xs:number

Number

xs:int

Number

xs:integer

Number

xs:long

Number

xs:short

Number

xs:byte

Number

xs:double

Number

xs:decimal

Number

xs:unsignedLong

Number

xs:unsignedInt

Number

xs:unsignedShort

Number

xs:unsignedByte

Number

xs:positiveInteger

Number

xs:negativeInteger

Number

xs:nonNegativeInteger

Number

xs:nonPositiveInteger

Number

xs:hexBinary

Binary

xs:base64Binary

Binary

xs:boolean

Boolean

xs:any

String

xs:string

String

xs:normalizedString

String

xs:datetime

DateTime

xs:time

Time

xs:date

LocalDateTime

XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type RootElementDefinition = {| Root: { string: String, normalizedString: String, integer: Number, negativeInteger: Number, int: Number, unsignedInt: Number, unsignedLong: Number, unsignedShort: Number, float: Number, double: Number, date: LocalDateTime, dateTime: DateTime, time: Time, boolean: Boolean, hexBinary: Binary, base64Binary: Binary, decimal: Number } |} type Root = RootElementDefinition ``` ### [](#ルート要素の宣言)ルート要素の宣言 XSD ファイルで宣言されている各ルート要素 (​``​) では、以下が生成されます。 - 要素名の後に ​`ElementDefinition`​ 拡張が続く DataWeave ​`type`​ ディレクティブ。 - XSD のすべてのルート要素で構成される、​`Union`​ 型の ​`Root`​ という ​`type`​ ディレクティブ。 次の例は、ルート要素を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type AnotherRootElementDefinition = {| AnotherRoot @("type"?: String): {- name: String -} |} type RootElementDefinition = {| Root @("type"?: String): {- color: String, age: Number -} |} type Root = AnotherRootElementDefinition | RootElementDefinition ``` ### [](#複雑型)複雑型 各自のスキーマで参照したり、他の構造で再利用したりできる、スキーマの最上位要素として宣言されている名前付き複雑型は、独自の型ディレクティブを生成します。これらの型ディレクティブ名には、​`Definition`​ 拡張が続く ​`complextype`​ 名が含まれます。 次の例は、複雑型を宣言する方法を示しています。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root @(id?: String): {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#importsincludes)Imports/Includes XSD スキーマファイルの imports または includes を使用すると、指定された ​`schemaLocation`​ にあるスキーマファイルを参照するために XML スキーマモジュールローダーを使用する ​`import`​ ディレクティブが DataWeave モジュールに含まれます。この場所は、メインスキーマに相対的に宣言されている必要があります。次の例の[型の選択](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selecting-types)の使用方法に注意してください。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://common.com/COMMON import xmlschema!org::mule::weave::v2::module::xmlschema::moduleloader::imports::common type RootElementDefinition = {| Root: common::RequestHeaderDefinition.ns0#RequestHeader |} type Root = RootElementDefinition ``` ### [](#choice)Choice この XML スキーマ構造を DataWeave の ​`UnionType`​ にマップできます。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 type EmployeeDefinition = { employee: {- name: String -} } type MemberDefinition = { member: {- id: String -} } type RootElementDefinition = {| Root: {| employee: EmployeeDefinition.employee |} | {| member: MemberDefinition.member |} |} type Root = RootElementDefinition ``` ### [](#名前空間)名前空間 XML スキーマファイルの名前空間は、DataWeave 型ディレクティブに直接変換されます。 次の例は、要素が存在する特定の ​`targetNamespace`​ 属性を設定する方法を示しています。DataWeave に変換されるこの名前空間では、これらの型の選択および移動が必要になります。 XSD: ```XML ``` 生成された DataWeave モジュール ```dataweave %dw 2.0 ns ns0 http://NamespaceTest.com/CommonTypes type RootElementDefinition = {| ns0#Root: { ns0#string: String, ns0#normalizedString: String, ns0#integer: Number, ns0#negativeInteger: Number, ns0#int: Number, ns0#unsignedInt: Number, ns0#unsignedLong: Number, ns0#unsignedShort: Number, ns0#float: Number, ns0#double: Number, ns0#date: LocalDateTime, ns0#dateTime: DateTime, ns0#time: Time, ns0#boolean: Boolean, ns0#hexBinary: Binary, ns0#base64Binary: Binary, ns0#decimal: Number } |} type Root = RootElementDefinition ``` # XML タグへの属性の挿入 この DataWeave の例では、​`@(key:value)`​ 構文 (​`@(loc: "US")`​ など) を使用して、属性を XML タグに挿入します。この例では、​`title`​ 要素に 2 つの属性を入力し、各 ​`author`​ 要素に 1 つの属性を入力します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 次の関数を使用します。 - `mapObject`​: 変数 ​`myInput`​ で定義された入力 XML 内の各本を反復処理します。 - `map`​: 各本の ​`author`​ 要素を反復処理します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = read(' Everyday Italian 2005 30 Giada De Laurentiis Harry Potter 2005 29.99 J K. Rowling XQuery Kick Start 2003 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 2003 39.95 Erik T. Ray ', 'application/xml') output application/xml --- bookstore: myInput.bookstore mapObject (book) -> { book : { title @(lang: "en", year: book.year): book.title, price: book.price, (book.*author map author @(loc: "US"): $) } } ``` 出力 XML: ```xml Everyday Italian 30 Giada De Laurentiis Harry Potter 29.99 J K. Rowling XQuery Kick Start 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 39.95 Erik T. Ray ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-remove-certain-xml-attributes) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-include-xml-namespaces) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # XML タグへの属性の挿入 この DataWeave の例では、​`@(key:value)`​ 構文 (​`@(loc: "US")`​ など) を使用して、属性を XML タグに挿入します。この例では、​`title`​ 要素に 2 つの属性を入力し、各 ​`author`​ 要素に 1 つの属性を入力します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の関数を使用します。 - `mapObject`​: 変数 ​`myInput`​ で定義された入力 XML 内の各本を反復処理します。 - `map`​: 各本の ​`author`​ 要素を反復処理します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = read(' Everyday Italian 2005 30 Giada De Laurentiis Harry Potter 2005 29.99 J K. Rowling XQuery Kick Start 2003 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 2003 39.95 Erik T. Ray ', 'application/xml') output application/xml --- bookstore: myInput.bookstore mapObject (book) -> { book : { title @(lang: "en", year: book.year): book.title, price: book.price, (book.*author map author @(loc: "US"): $) } } ``` 出力 XML: ```xml Everyday Italian 30 Giada De Laurentiis Harry Potter 29.99 J K. Rowling XQuery Kick Start 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 39.95 Erik T. Ray ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-remove-certain-xml-attributes) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-include-xml-namespaces) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # XML タグへの属性の挿入 この DataWeave の例では、​`@(key:value)`​ 構文 (​`@(loc: "US")`​ など) を使用して、属性を XML タグに挿入します。この例では、​`title`​ 要素に 2 つの属性を入力し、各 ​`author`​ 要素に 1 つの属性を入力します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の関数を使用します。 - `mapObject`​: 変数 ​`myInput`​ で定義された入力 XML 内の各本を反復処理します。 - `map`​: 各本の ​`author`​ 要素を反復処理します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = read(' Everyday Italian 2005 30 Giada De Laurentiis Harry Potter 2005 29.99 J K. Rowling XQuery Kick Start 2003 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 2003 39.95 Erik T. Ray ', 'application/xml') output application/xml --- bookstore: myInput.bookstore mapObject (book) -> { book : { title @(lang: "en", year: book.year): book.title, price: book.price, (book.*author map author @(loc: "US"): $) } } ``` 出力 XML: ```xml Everyday Italian 30 Giada De Laurentiis Harry Potter 29.99 J K. Rowling XQuery Kick Start 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 39.95 Erik T. Ray ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-remove-certain-xml-attributes) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-include-xml-namespaces) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # XML タグへの属性の挿入 この DataWeave の例では、​`@(key:value)`​ 構文 (​`@(loc: "US")`​ など) を使用して、属性を XML タグに挿入します。この例では、​`title`​ 要素に 2 つの属性を入力し、各 ​`author`​ 要素に 1 つの属性を入力します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の関数を使用します。 - `mapObject`​: 変数 ​`myInput`​ で定義された入力 XML 内の各本を反復処理します。 - `map`​: 各本の ​`author`​ 要素を反復処理します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = read(' Everyday Italian 2005 30 Giada De Laurentiis Harry Potter 2005 29.99 J K. Rowling XQuery Kick Start 2003 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 2003 39.95 Erik T. Ray ', 'application/xml') output application/xml --- bookstore: myInput.bookstore mapObject (book) -> { book : { title @(lang: "en", year: book.year): book.title, price: book.price, (book.*author map author @(loc: "US"): $) } } ``` 出力 XML: ```xml Everyday Italian 30 Giada De Laurentiis Harry Potter 29.99 J K. Rowling XQuery Kick Start 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 39.95 Erik T. Ray ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-remove-certain-xml-attributes) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-include-xml-namespaces) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # XML タグへの属性の挿入 この DataWeave の例では、​`@(key:value)`​ 構文 (​`@(loc: "US")`​ など) を使用して、属性を XML タグに挿入します。この例では、​`title`​ 要素に 2 つの属性を入力し、各 ​`author`​ 要素に 1 つの属性を入力します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の関数を使用します。 - `mapObject`​: 変数 ​`myInput`​ で定義された入力 XML 内の各本を反復処理します。 - `map`​: 各本の ​`author`​ 要素を反復処理します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = read(' Everyday Italian 2005 30 Giada De Laurentiis Harry Potter 2005 29.99 J K. Rowling XQuery Kick Start 2003 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 2003 39.95 Erik T. Ray ', 'application/xml') output application/xml --- bookstore: myInput.bookstore mapObject (book) -> { book : { title @(lang: "en", year: book.year): book.title, price: book.price, (book.*author map author @(loc: "US"): $) } } ``` 出力 XML: ```xml Everyday Italian 30 Giada De Laurentiis Harry Potter 29.99 J K. Rowling XQuery Kick Start 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 39.95 Erik T. Ray ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-remove-certain-xml-attributes) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-include-xml-namespaces) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # XML タグへの属性の挿入 この DataWeave の例では、​`@(key:value)`​ 構文 (​`@(loc: "US")`​ など) を使用して、属性を XML タグに挿入します。この例では、​`title`​ 要素に 2 つの属性を入力し、各 ​`author`​ 要素に 1 つの属性を入力します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の関数を使用します。 - `mapObject`​: 変数 ​`myInput`​ で定義された入力 XML 内の各本を反復処理します。 - `map`​: 各本の ​`author`​ 要素を反復処理します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInput = read(' Everyday Italian 2005 30 Giada De Laurentiis Harry Potter 2005 29.99 J K. Rowling XQuery Kick Start 2003 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 2003 39.95 Erik T. Ray ', 'application/xml') output application/xml --- bookstore: myInput.bookstore mapObject (book) -> { book : { title @(lang: "en", year: book.year): book.title, price: book.price, (book.*author map author @(loc: "US"): $) } } ``` 出力 XML: ```xml Everyday Italian 30 Giada De Laurentiis Harry Potter 29.99 J K. Rowling XQuery Kick Start 49.99 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan Learning XML 39.95 Erik T. Ray ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-remove-certain-xml-attributes) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-include-xml-namespaces) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # XML 名前空間を含める ヘッダーでさまざまな名前空間を定義し、各タグで参照できます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。 次の例では、以下を使用します。 - ヘッダーの名前空間定義用の ​`ns`​ - XML 要素の他の属性を定義する ​`@` DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml ns orders http://www.acme.com/shemas/Orders ns stores http://www.acme.com/shemas/Stores --- root: orders#orders: { stores#shipNodeId: "SF01", stores#shipNodeId @(shipsVia:"LA01"): "NY03" } ``` 出力 XML: ```xml SF01 NY03 ``` ## [](#動的に生成された名前空間の値)動的に生成された名前空間の値 _サポートの開始は Mule バージョン 4.2.1 以降_​ 名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。 DataWeave スクリプト: ```dataweave %dw 2.0 fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value } fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value } var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace output application/xml --- root: { mytagA: dynKeyNs(namespace1, "myTest1"), myTagB: dynKeyNs(namespace2, "myTest2"), myTagC: dynAttrNs(namespace1, "myTest1"), myTagD: dynAttrNs(namespace2, "myTest2") } ``` 出力 XML: ```xml myTest1 myTest2 myTest1 myTest2 ``` ## [](#ハイフン文字が含まれる-xml-名前空間の使用)ハイフン文字が含まれる XML 名前空間の使用 次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (​`-`​) などの特殊文字を名前空間の定義で使用できるようになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace --- {myNS#bla : "dw"} ``` 出力 XML: ```xml dw ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # XML 名前空間を含める ヘッダーでさまざまな名前空間を定義し、各タグで参照できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。 次の例では、以下を使用します。 - ヘッダーの名前空間定義用の ​`ns`​ - XML 要素の他の属性を定義する ​`@` DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml ns orders http://www.acme.com/shemas/Orders ns stores http://www.acme.com/shemas/Stores --- root: orders#orders: { stores#shipNodeId: "SF01", stores#shipNodeId @(shipsVia:"LA01"): "NY03" } ``` 出力 XML: ```xml SF01 NY03 ``` ## [](#動的に生成された名前空間の値)動的に生成された名前空間の値 _サポートの開始は Mule バージョン 4.2.1 以降_​ 名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。 DataWeave スクリプト: ```dataweave %dw 2.0 fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value } fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value } var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace output application/xml --- root: { mytagA: dynKeyNs(namespace1, "myTest1"), myTagB: dynKeyNs(namespace2, "myTest2"), myTagC: dynAttrNs(namespace1, "myTest1"), myTagD: dynAttrNs(namespace2, "myTest2") } ``` 出力 XML: ```xml myTest1 myTest2 myTest1 myTest2 ``` ## [](#ハイフン文字が含まれる-xml-名前空間の使用)ハイフン文字が含まれる XML 名前空間の使用 次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (​`-`​) などの特殊文字を名前空間の定義で使用できるようになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace --- {myNS#bla : "dw"} ``` 出力 XML: ```xml dw ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # XML 名前空間を含める ヘッダーでさまざまな名前空間を定義し、各タグで参照できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。 次の例では、以下を使用します。 - ヘッダーの名前空間定義用の ​`ns` - XML 要素の他の属性を定義する ​`@` DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml ns orders http://www.acme.com/shemas/Orders ns stores http://www.acme.com/shemas/Stores --- root: orders#orders: { stores#shipNodeId: "SF01", stores#shipNodeId @(shipsVia:"LA01"): "NY03" } ``` 出力 XML: ```xml SF01 NY03 ``` ## [](#動的に生成された名前空間の値)動的に生成された名前空間の値 _サポートの開始は Mule バージョン 4.2.1 以降_ 名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。 DataWeave スクリプト: ```dataweave %dw 2.0 fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value } fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value } var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace output application/xml --- root: { mytagA: dynKeyNs(namespace1, "myTest1"), myTagB: dynKeyNs(namespace2, "myTest2"), myTagC: dynAttrNs(namespace1, "myTest1"), myTagD: dynAttrNs(namespace2, "myTest2") } ``` 出力 XML: ```xml myTest1 myTest2 myTest1 myTest2 ``` ## [](#ハイフン文字が含まれる-xml-名前空間の使用)ハイフン文字が含まれる XML 名前空間の使用 次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (​`-`​) などの特殊文字を名前空間の定義で使用できるようになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace --- {myNS#bla : "dw"} ``` 出力 XML: ```xml dw ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # XML 名前空間を含める ヘッダーでさまざまな名前空間を定義し、各タグで参照できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。 次の例では、以下を使用します。 - ヘッダーの名前空間定義用の ​`ns` - XML 要素の他の属性を定義する ​`@` DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml ns orders http://www.acme.com/shemas/Orders ns stores http://www.acme.com/shemas/Stores --- root: orders#orders: { stores#shipNodeId: "SF01", stores#shipNodeId @(shipsVia:"LA01"): "NY03" } ``` 出力 XML: ```xml SF01 NY03 ``` ## [](#動的に生成された名前空間の値)動的に生成された名前空間の値 _サポートの開始は Mule バージョン 4.2.1 以降_ 名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。 DataWeave スクリプト: ```dataweave %dw 2.0 fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value } fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value } var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace output application/xml --- root: { mytagA: dynKeyNs(namespace1, "myTest1"), myTagB: dynKeyNs(namespace2, "myTest2"), myTagC: dynAttrNs(namespace1, "myTest1"), myTagD: dynAttrNs(namespace2, "myTest2") } ``` 出力 XML: ```xml myTest1 myTest2 myTest1 myTest2 ``` ## [](#ハイフン文字が含まれる-xml-名前空間の使用)ハイフン文字が含まれる XML 名前空間の使用 次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (​`-`​) などの特殊文字を名前空間の定義で使用できるようになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace --- {myNS#bla : "dw"} ``` 出力 XML: ```xml dw ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # XML 名前空間を含める ヘッダーでさまざまな名前空間を定義し、各タグで参照できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。 次の例では、以下を使用します。 - ヘッダーの名前空間定義用の ​`ns` - XML 要素の他の属性を定義する ​`@` DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml ns orders http://www.acme.com/shemas/Orders ns stores http://www.acme.com/shemas/Stores --- root: orders#orders: { stores#shipNodeId: "SF01", stores#shipNodeId @(shipsVia:"LA01"): "NY03" } ``` 出力 XML: ```xml SF01 NY03 ``` ## [](#動的に生成された名前空間の値)動的に生成された名前空間の値 _サポートの開始は Mule バージョン 4.2.1 以降_ 名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。 DataWeave スクリプト: ```dataweave %dw 2.0 fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value } fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value } var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace output application/xml --- root: { mytagA: dynKeyNs(namespace1, "myTest1"), myTagB: dynKeyNs(namespace2, "myTest2"), myTagC: dynAttrNs(namespace1, "myTest1"), myTagD: dynAttrNs(namespace2, "myTest2") } ``` 出力 XML: ```xml myTest1 myTest2 myTest1 myTest2 ``` ## [](#ハイフン文字が含まれる-xml-名前空間の使用)ハイフン文字が含まれる XML 名前空間の使用 次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (​`-`​) などの特殊文字を名前空間の定義で使用できるようになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace --- {myNS#bla : "dw"} ``` 出力 XML: ```xml dw ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # XML 名前空間を含める ヘッダーでさまざまな名前空間を定義し、各タグで参照できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 Mule 4.2.1 リリース以降、DataWeave では、名前空間キーおよび属性を動的に生成できます。 次の例では、以下を使用します。 - ヘッダーの名前空間定義用の ​`ns` - XML 要素の他の属性を定義する ​`@` DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml ns orders http://www.acme.com/shemas/Orders ns stores http://www.acme.com/shemas/Stores --- root: orders#orders: { stores#shipNodeId: "SF01", stores#shipNodeId @(shipsVia:"LA01"): "NY03" } ``` 出力 XML: ```xml SF01 NY03 ``` ## [](#動的に生成された名前空間の値)動的に生成された名前空間の値 _サポートの開始は Mule バージョン 4.2.1 以降_ 名前空間キーおよび属性の次のサンプル出力値では、DataWeave が DataWeave 変数で定義された入力を使用してその役割を果たしています。 DataWeave スクリプト: ```dataweave %dw 2.0 fun dynKeyNs(ns0: Namespace, value: Any) = { ns0#myDynKey: value } fun dynAttrNs(ns0: Namespace, value: Any) = { myChildTag @(ns0#myDynAttribute: true): value } var namespace1 = {uri: "http://acme.com", prefix: "ns0"} as Namespace var namespace2 = {uri: "http://emca.com", prefix: "ns0"} as Namespace output application/xml --- root: { mytagA: dynKeyNs(namespace1, "myTest1"), myTagB: dynKeyNs(namespace2, "myTest2"), myTagC: dynAttrNs(namespace1, "myTest1"), myTagD: dynAttrNs(namespace2, "myTest2") } ``` 出力 XML: ```xml myTest1 myTest2 myTest1 myTest2 ``` ## [](#ハイフン文字が含まれる-xml-名前空間の使用)ハイフン文字が含まれる XML 名前空間の使用 次の DataWeave スクリプトでは、オブジェクトとして XML 名前空間を定義する方法を示しています。これにより、ハイフン (​`-`​) などの特殊文字を名前空間の定義で使用できるようになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml var myNS = {uri: "http://www.abc.com", prefix: "ns-0"} as Namespace --- {myNS#bla : "dw"} ``` 出力 XML: ```xml dw ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # XML 属性を渡す DataWeave を使用すると、XML タグ入力元内から対象出力 XML に属性を渡すことができます。この DataWeave の例は、入力元ペイロードの ​`NameDetail`​ 項目の XML 属性を XML 出力の ​`TargetName`​ 項目に渡す方法を示しています。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、以下を使用します。 - `NameDetail`​ 要素の配列を返す ​`.*`​ 複数値セレクター。 - 入力の NameDetail 要素の配列を反復処理する ​`map`​ 関数。 - 入力から属性を動的に選択することで、新しい出力タグの属性を作成する動的属性式 ​`@dynamicAttributes`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { Result: { (payload.Names.*NameDetail map ( nameDetail , indexOfNameDetail ) -> { TargetName @((nameDetail.@)): { item: nameDetail.item } }) } } ``` 入力 XML ペイロード: ```xml doo dah dab ``` 出力 XML: ```xml doo dah dab ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-insert-attribute) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-include-xml-namespaces) - [出力からの項目の除外](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-exclude-field) - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-a-field-when-present) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # XML 属性を渡す DataWeave を使用すると、XML タグ入力元内から対象出力 XML に属性を渡すことができます。この DataWeave の例は、入力元ペイロードの ​`NameDetail`​ 項目の XML 属性を XML 出力の ​`TargetName`​ 項目に渡す方法を示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - `NameDetail`​ 要素の配列を返す ​`.*`​ 複数値セレクター。 - 入力の NameDetail 要素の配列を反復処理する ​`map`​ 関数。 - 入力から属性を動的に選択することで、新しい出力タグの属性を作成する動的属性式 ​`@dynamicAttributes`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { Result: { (payload.Names.*NameDetail map ( nameDetail , indexOfNameDetail ) -> { TargetName @((nameDetail.@)): { item: nameDetail.item } }) } } ``` 入力 XML ペイロード: ```xml doo dah dab ``` 出力 XML: ```xml doo dah dab ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-insert-attribute) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-include-xml-namespaces) - [出力からの項目の除外](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-exclude-field) - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-a-field-when-present) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # XML 属性を渡す DataWeave を使用すると、XML タグ入力元内から対象出力 XML に属性を渡すことができます。この DataWeave の例は、入力元ペイロードの ​`NameDetail`​ 項目の XML 属性を XML 出力の ​`TargetName`​ 項目に渡す方法を示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - `NameDetail`​ 要素の配列を返す ​`.*`​ 複数値セレクター。 - 入力の NameDetail 要素の配列を反復処理する ​`map`​ 関数。 - 入力から属性を動的に選択することで、新しい出力タグの属性を作成する動的属性式 ​`@dynamicAttributes`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { Result: { (payload.Names.*NameDetail map ( nameDetail , indexOfNameDetail ) -> { TargetName @((nameDetail.@)): { item: nameDetail.item } }) } } ``` 入力 XML ペイロード: ```xml doo dah dab ``` 出力 XML: ```xml doo dah dab ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-insert-attribute) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-include-xml-namespaces) - [出力からの項目の除外](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-exclude-field) - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-a-field-when-present) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # XML 属性を渡す DataWeave を使用すると、XML タグ入力元内から対象出力 XML に属性を渡すことができます。この DataWeave の例は、入力元ペイロードの ​`NameDetail`​ 項目の XML 属性を XML 出力の ​`TargetName`​ 項目に渡す方法を示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - `NameDetail`​ 要素の配列を返す ​`.*`​ 複数値セレクター。 - 入力の NameDetail 要素の配列を反復処理する ​`map`​ 関数。 - 入力から属性を動的に選択することで、新しい出力タグの属性を作成する動的属性式 ​`@dynamicAttributes`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { Result: { (payload.Names.*NameDetail map ( nameDetail , indexOfNameDetail ) -> { TargetName @((nameDetail.@)): { item: nameDetail.item } }) } } ``` 入力 XML ペイロード: ```xml doo dah dab ``` 出力 XML: ```xml doo dah dab ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-insert-attribute) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-include-xml-namespaces) - [出力からの項目の除外](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-exclude-field) - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-a-field-when-present) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # XML 属性を渡す DataWeave を使用すると、XML タグ入力元内から対象出力 XML に属性を渡すことができます。この DataWeave の例は、入力元ペイロードの ​`NameDetail`​ 項目の XML 属性を XML 出力の ​`TargetName`​ 項目に渡す方法を示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - `NameDetail`​ 要素の配列を返す ​`.*`​ 複数値セレクター。 - 入力の NameDetail 要素の配列を反復処理する ​`map`​ 関数。 - 入力から属性を動的に選択することで、新しい出力タグの属性を作成する動的属性式 ​`@dynamicAttributes`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { Result: { (payload.Names.*NameDetail map ( nameDetail , indexOfNameDetail ) -> { TargetName @((nameDetail.@)): { item: nameDetail.item } }) } } ``` 入力 XML ペイロード: ```xml doo dah dab ``` 出力 XML: ```xml doo dah dab ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-insert-attribute) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-include-xml-namespaces) - [出力からの項目の除外](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-exclude-field) - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-a-field-when-present) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # XML 属性を渡す DataWeave を使用すると、XML タグ入力元内から対象出力 XML に属性を渡すことができます。この DataWeave の例は、入力元ペイロードの ​`NameDetail`​ 項目の XML 属性を XML 出力の ​`TargetName`​ 項目に渡す方法を示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - `NameDetail`​ 要素の配列を返す ​`.*`​ 複数値セレクター。 - 入力の NameDetail 要素の配列を反復処理する ​`map`​ 関数。 - 入力から属性を動的に選択することで、新しい出力タグの属性を作成する動的属性式 ​`@dynamicAttributes`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { Result: { (payload.Names.*NameDetail map ( nameDetail , indexOfNameDetail ) -> { TargetName @((nameDetail.@)): { item: nameDetail.item } }) } } ``` 入力 XML ペイロード: ```xml doo dah dab ``` 出力 XML: ```xml doo dah dab ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-insert-attribute) - [XML 名前空間を含める](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-include-xml-namespaces) - [出力からの項目の除外](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-exclude-field) - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-a-field-when-present) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # XML 形式 MIME タイプ: `application/xml`​ ID: `xml`​ XML データ構造は、他のオブジェクト、文字列、または ​`null`​ 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では ​`namespaces`​、​`CData`​、​`xsi:types`​ がネイティブにサポートされます。 XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#format_xml_cdata)CData カスタム型 `CData`​ は、文字データ (CDATA) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。​`CData`​ 型は、​`CDATA`​ ブロック内でコンテンツをラップするか、​`CDATA`​ ブロック内に入力文字列があるかどうかを確認するように XML ライターに指示します。DataWeave では、​`CData`​ は型 ​`String`​ から継承されます。 ## [](#examples)例 次の例は、XML 形式の使用方法を示しています。 - [例: 入力 XML データをストリーミング](#example1)​ - [例: XML の null または空の文字列](#example2)​ - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example3)​ - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example4)​ - [例: XML 属性を DataWeave (dw) 形式で表す](#example5)​ - [例: XML 名前空間を DataWeave (dw) 形式で表す](#example6)​ - [例: CDATA 要素を作成](#example7)​ - [例: `String`​ に CDATA があるかどうかを確認](#example8)​ - [例: `inlineCloseOn`​ ライタープロパティを使用](#example9)​ - [例: 反復 JSON キーを反復 XML 要素に変換](#example10)​ - [例: XML 要素を JSON 形式に変換して文字を置換](#example11) ### [](#example1)例: 入力 XML データをストリーミング 次の例は、XML ストリーミングの設定方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。 - `streaming=true` - `collectionPath="root.repeated"` `collectionPath`​ 設定では、ストリーミングする要素を選択します。 ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。 #### [](#入力)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは ​`myXML.xml`​ ファイルのコンテンツであるとします。 myXML.xml ```xml Text Mariano de Achaval 36 Shokida Leandro 30 29 Ana Felissati 29 Chibana Christian ``` #### [](#ソース)ソース DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave ​`map`​ 関数を使用して反復キーを反復処理します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"}) output application/dw --- myInput.root.repeated.*user map { n: $.name, l: $.lastName, a: $.age } ``` #### [](#出力)出力 スクリプトは、マップされた入力 XML を DataWeave (dw) 形式および MIME タイプに変換します。 ```json [ { "n": "Mariano", "l": "de Achaval", "a": "36" }, { "n": "Leandro", "l": "Shokida", "a": "30" }, { "n": "Ana", "l": "Felissati", "a": "29" }, { "n": "Christian", "l": "Chibana", "a": "29" } ] ``` ### [](#example2)例: XML の null または空の文字列 XML で ​`null`​ 値を表す標準の方法はないため、​`nil`​ 属性が ​`true`​ に設定されている場合、リーダーは値を ​`null`​ にマップします。 #### [](#入力-2)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。 ` の ​`nil`​ 設定に注意してください。 ```xml ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力 XML を JSON 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/json --- payload ``` #### [](#出力-2)出力 出力は JSON 形式です。入力の ​`nil`​ 値が ​`null`​ に変換されていることに注意してください。 ```json { "book": { "author": null } } ``` ### [](#example3)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では ​`nullValueOn`​ のデフォルトを使用するため、​`title`​ および ​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-3)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-3)ソース DataWeave スクリプトは XML 入力を JSON に変換します。デモ目的で ​`nullValueOn`​ のデフォルト (​`blank`​) が明示的に設定されていることに注意してください。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "blank"}) output application/json --- myInput ``` #### [](#出力-3)出力 JSON 出力の ​`title`​ および ​`author`​ キーは ​`null`​ 値に割り当てられます。 ```json { "book": { "author": null, "title": null } } ``` ### [](#example4)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では、XML リーダープロパティ ​`nullValueOn`​ が ​`empty`​ に設定されているため、​`title`​ 要素の値を ​`String`​ にマップし、​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-4)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。​`title`​ 要素のタグは改行 (非表示文字 ​`\n`​) によって分割されていますが、​`author`​ 要素のタグはどの文字によっても分割されていません。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-4)ソース DataWeave スクリプトは DataWeave 変数を使用して ​`myXML.xml`​ のコンテンツを入力し、​`nullValueOn: "empty"`​ を適用します。スクリプトは XML 入力を JSON に変換します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "empty"}) output application/json --- myInput ``` #### [](#出力-4)出力 JSON 出力では ​`author`​ 要素の値が ​`null`​ にマップされ、​`title`​ 要素の値が ​`String`​ 値の ​`"\n\n"`​ (改行文字) にマップされます。 ```json { "book": { "author": null, "title": "\n\n" } } ``` ### [](#example5)例: XML 属性を DataWeave (dw) 形式で表す 次の例では、XML 属性を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-5)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。 ```xml MuleSoft ``` #### [](#ソース-5)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-5)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML 入力からの属性と空の値がどのように表されているかに注意してください。 ```dataweave { users: { company: "MuleSoft", user @(name: "Leandro",lastName: "Shokida"): "", user @(name: "Mariano",lastName: "Achaval"): "" } } ``` ### [](#example6)例: XML 名前空間を DataWeave (dw) 形式で表す 次の例では、XML 名前空間を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-6)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#ソース-6)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-6)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。 ```dataweave ns h http://www.w3.org/TR/html4/ ns f https://www.w3schools.com/furniture --- { root: { h#table: { h#tr: { h#td: "Apples", h#td: "Bananas" } }, f#table: { f#name: "African Coffee Table", f#width: "80", f#length: "120" } } } ``` ### [](#example7)例: CDATA 要素を作成 次の例は、​`CData`​ 型を使用して XML 出力内で CDATA 要素を作成する方法を示しています。 #### [](#ソース-7)ソース DataWeave スクリプトの本文では、​`String`​ 値が ​`CData`​ 型に型強制されます。 ```dataweave %dw 2.0 output application/xml --- { test: "A text " as CData } ``` #### [](#出力-7)出力 出力では、入力の ​`String`​ 値が CDATA ブロックで囲まれ、CDATA ブロックには入力からの特殊文字 (​`<`​ と ​`>`​) が含まれます。 ```xml ]]> ``` ### [](#example8)例: `String`​ に CDATA があるかどうかを確認 次の例は、提供された ​`String`​ 値が CDATA かどうかを示しています。 #### [](#入力-7)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。​`test`​ 要素に CDATA ブロックが含まれていることに注意してください。 ```xml ]]> ``` #### [](#ソース-8)ソース DataWeave スクリプトは ​`is CData`​ 式を使用して ​`String`​ 値が CDATA かどうかを判別します。 ```dataweave %dw 2.0 output application/json --- { test: payload.test is CDATA } ``` #### [](#出力-8)出力 JSON 出力には、入力の ​`true`​ 値が CDATA であることを示す値 ​`String`​ が含まれます。 ```json { "test": true } ``` ### [](#example9)例: `inlineCloseOn`​ ライタープロパティを使用 次の例では、​`inlineCloseOn`​ ライタープロパティを値 ​`none`​ と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。 #### [](#ソース-9)ソース DataWeave スクリプトは本文コンテンツを XML に変換します。​`emptyElement`​ キーの値が ​`null`​ であることに注意してください。 ```dataweave %dw 2.0s output application/xml inlineCloseOn="none" --- { someXml: { parentElement: { emptyElement1: null, emptyElement2: null, emptyElement3: null } } } ``` #### [](#出力-9)出力 `emptyElement`​ 要素は空です。これに値 ​`null`​ は含まれません。 ```xml ``` ### [](#example10)例: 反復 JSON キーを反復 XML 要素に変換 XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。 #### [](#入力-8)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の ​`name`​ キーが反復していることに注意してください。 ```json { "friends": [ {"name": "Mariano"}, {"name": "Shoki"}, {"name": "Tomo"}, {"name": "Ana"} ] } ``` #### [](#ソース-10)ソース DataWeave スクリプトは、​`friends`​ キーの値を選択します。 ```dataweave %dw 2.0 output application/xml --- friends: { (payload.friends) } ``` #### [](#出力-10)出力 出力では、​`name`​ キーが XML 要素として表されます。 ```xml Mariano Shoki Tomo Ana ``` [「自己終了 XML タグの出力」の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-self-closing-xml-tags)​も参照してください。 ### [](#example11)例: XML 要素を JSON 形式に変換して文字を置換 この例では、​`Id`​、​`Name`​、​`Address`​ など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、​`replace`​ 関数を使用して各 ​`Address`​ 要素を反復処理し、文字 ​`-`​ と ​`/`​ を空白スペースに置き換えます。 #### [](#入力-9)入力 この XML 入力が DataWeave ソースへのペイロードとして機能します。​`Address`​ 要素に ​`-`​ と ​`/`​ の文字が含まれていることに注意してください。 ```xml 1 Mule
MuleSoft Avenue - 123
2 Max
MuleSoft Avenue-456/5/e
``` #### [](#ソース-11)ソース 次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。​`payload01.Address replace /([\-\,\/])/ with " "`​ の指示により、​`-`​ と ​`/`​ の文字が空白スペースに置き換えられます。 ```dataweave %dw 2.0 output application/json --- payload.root.*employees map ((payload01 , indexOfPayload01) -> { Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " } ) ``` #### [](#出力-11)出力 出力は、JSON に変換された XML 要素を表します。 ```JSON [ { "Id": "1", "Name": "Mule", "Address": "MuleSoft Avenue 123" }, { "Id": "2", "Name": "Max", "Address": "MuleSoft Avenue 456 5 e" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、XML 形式に対して次の設定プロパティがサポートされます。 ### [](#reader-のプロパティ)Reader のプロパティ XML 形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

collectionPath​

String

null

コレクションが配置されているドキュメントへのパス。ストリーミングする要素の場所を識別するパス式を指定します。「​例: 入力 XML データをストリーミング​」を参照してください。

​externalEntities

​Boolean

​false

外部エンティティを処理する必要があるかどうかを示します。デフォルトでは、これは XXE 攻撃を回避するために無効になっています。 有効な値は、​true​ または ​false​ です。

​indexedReader

​Boolean

​true

DataWeave では、しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードでは、​false​ に設定されている場合、DataWeave ではメモリ内リーダーを使用します。有効な値は、​true​ または ​false​ です。

​maxAttributeSize

​Number

​-1

XML 属性で受け入れられる最大文字数を設定します。Mule 4.2.1 以降で使用できます。

​maxEntityCount

​Number

​1

エンティティ拡張の最大数。 この制限は、Billion Laughs 攻撃を回避するために設定されます。

​nullValueOn

​String

​blank

空または空白のテキストを含む要素を ​null​ 値として読み取るかどうかを示します。有効な値は、​empty​、​none​、​blank​ です。「​例: 欠落している XML 値に対して ​null​ 値を出力​」と「​例: 欠落している XML 値に対して ​null​ 値を出力​」を参照してください。

optimizeFor

String

'speed'

XML パーサーの設定方法を示します。有効な値は、​speed​ と ​memory​ です。

streaming

Boolean

​false

入力をストリーミングするかどうかを示します (エントリを順次アクセスする場合のみ使用します)。有効なオプションは、​true​ または ​false​ です。「​例: 入力 XML データをストリーミング​」を参照してください。

supportDtd

Boolean

​false

DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。有効な値は、​true​ または ​false​ です。Mule システムプロパティ ​com.mulesoft.dw.xml.supportDTD​ を設定してこのプロパティを有効にすることもできます。このプロパティのデフォルトは、Mule バージョン 4.3.0-20210601 (2021 年 6 月の DataWeave バージョン 2.3.0 のパッチを含む) で ​true​ から ​false​ に変更されました。

### [](#writer-のプロパティ)Writer のプロパティ XML 形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

バッファライターのサイズ。

​encoding

​String

​null

使用するライターのエンコード。

​deferred

​Boolean

​false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​escapeCR

​Boolean

​false

キャリッジリターン (CR) をエスケープするかどうか。 有効な値は、​true​ または ​false​ です。Mule 4.2.1 以降で使用できます。

​indent

​Boolean

​true

コードをインデントして読みやすくするか、コードを 1 行に圧縮するかを示します。 有効な値は、​true​ または ​false​ です。

​inlineCloseOn

​String

​empty

ライターでどのような場合にインラインの終了タグを使用し、どのような場合に開始終了タグを使用するかを示します。 有効な値は、​empty​ または ​none​ です。

​onInvalidChar

​String

​null

有効な値は、​base64​、​ignore​、​none​ です。

​skipNullOn

​String

​null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトでは、ライターはスキップしません。有効な値は、​elements​、​attributes​、​everywhere​ です。

​writeDeclaration

​Boolean

​true

XML ヘッダーの宣言を書き込むかどうかを示します。有効な値は、​true​ または ​false​ です。

​writeNilOnNull

​Boolean

​false

値が ​null​ の場合に nil 属性を書き込むかどうかを示します。有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ XML 形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/xml​

/+xml​

# XML 形式 MIME タイプ: `application/xml` ID: `xml` XML データ構造は、他のオブジェクト、文字列、または ​`null`​ 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では ​`namespaces`​、​`CData`​、​`xsi:types`​ がネイティブにサポートされます。 XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#format_xml_cdata)CData カスタム型 `CData`​ は、文字データ (CData) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。​`CData`​ 型は、​`CData`​ ブロック内でコンテンツをラップするか、​`CData`​ ブロック内に入力文字列があるかどうかを確認するように XML ライターに指示します。DataWeave では、​`CData`​ は型 ​`String`​ から継承されます。 ## [](#examples)例 次の例は、XML 形式の使用方法を示しています。 - [例: 入力 XML データをストリーミング](#example1) - [例: XML の null または空の文字列](#example2) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example3) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example4) - [例: XML 属性を DataWeave (dw) 形式で表す](#example5) - [例: XML 名前空間を DataWeave (dw) 形式で表す](#example6) - [例: CData 要素を作成](#example7) - [例: `String`​ に CData があるかどうかを確認](#example8) - [例: `inlineCloseOn`​ ライタープロパティを使用](#example9) - [例: 反復 JSON キーを反復 XML 要素に変換](#example10) - [例: XML 要素を JSON 形式に変換して文字を置換](#example11) さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats)​を参照してください。 ### [](#example1)例: 入力 XML データをストリーミング 次の例は、XML ストリーミングのセットアップ方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。 - `streaming=true` - `collectionPath="root.repeated"` `collectionPath`​ 設定では、ストリーミングする要素を選択します。 ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。 #### [](#入力)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは ​`myXML.xml`​ ファイルのコンテンツであるとします。 myXML.xml ```xml Text Mariano de Achaval 36 Shokida Leandro 30 29 Ana Felissati 29 Chibana Christian ``` #### [](#ソース)ソース DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave ​`map`​ 関数を使用して反復キーを反復処理します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"}) output application/dw --- myInput.root.repeated.*user map { n: $.name, l: $.lastName, a: $.age } ``` #### [](#出力)出力 スクリプトは、マップされた入力 XML を DataWeave (dw) 形式および MIME タイプに変換します。 ```json [ { "n": "Mariano", "l": "de Achaval", "a": "36" }, { "n": "Leandro", "l": "Shokida", "a": "30" }, { "n": "Ana", "l": "Felissati", "a": "29" }, { "n": "Christian", "l": "Chibana", "a": "29" } ] ``` ### [](#example2)例: XML の null または空の文字列 XML で ​`null`​ 値を表す標準の方法はないため、​`nil`​ 属性が ​`true`​ に設定されている場合、リーダーは値を ​`null`​ にマップします。 #### [](#入力-2)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。 ` の ​`nil`​ 設定に注意してください。 ```xml ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力 XML を JSON 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/json --- payload ``` #### [](#出力-2)出力 出力は JSON 形式です。入力の ​`nil`​ 値が ​`null`​ に変換されていることに注意してください。 ```json { "book": { "author": null } } ``` ### [](#example3)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では ​`nullValueOn`​ のデフォルトを使用するため、​`title`​ および ​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-3)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-3)ソース DataWeave スクリプトは XML 入力を JSON に変換します。デモ目的で ​`nullValueOn`​ のデフォルト (​`blank`​) が明示的に設定されていることに注意してください。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "blank"}) output application/json --- myInput ``` #### [](#出力-3)出力 JSON 出力の ​`title`​ および ​`author`​ キーは ​`null`​ 値に割り当てられます。 ```json { "book": { "author": null, "title": null } } ``` ### [](#example4)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では、XML リーダープロパティ ​`nullValueOn`​ が ​`empty`​ に設定されているため、​`title`​ 要素の値を ​`String`​ にマップし、​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-4)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。​`title`​ 要素のタグは改行 (非表示文字 ​`\n`​) によって分割されていますが、​`author`​ 要素のタグはどの文字によっても分割されていません。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-4)ソース DataWeave スクリプトは DataWeave 変数を使用して ​`myXML.xml`​ のコンテンツを入力し、​`nullValueOn: "empty"`​ を適用します。スクリプトは XML 入力を JSON に変換します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "empty"}) output application/json --- myInput ``` #### [](#出力-4)出力 JSON 出力では ​`author`​ 要素の値が ​`null`​ にマップされ、​`title`​ 要素の値が ​`String`​ 値の ​`"\n\n"`​ (改行文字) にマップされます。 ```json { "book": { "author": null, "title": "\n\n" } } ``` ### [](#example5)例: XML 属性を DataWeave (dw) 形式で表す 次の例では、XML 属性を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-5)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。 ```xml MuleSoft ``` #### [](#ソース-5)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-5)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML 入力からの属性と空の値がどのように表されているかに注意してください。 ```dataweave { users: { company: "MuleSoft", user @(name: "Leandro",lastName: "Shokida"): "", user @(name: "Mariano",lastName: "Achaval"): "" } } ``` ### [](#example6)例: XML 名前空間を DataWeave (dw) 形式で表す 次の例では、XML 名前空間を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-6)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#ソース-6)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-6)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。 ```dataweave ns h http://www.w3.org/TR/html4/ ns f https://www.w3schools.com/furniture --- { root: { h#table: { h#tr: { h#td: "Apples", h#td: "Bananas" } }, f#table: { f#name: "African Coffee Table", f#width: "80", f#length: "120" } } } ``` ### [](#example7)例: CData 要素を作成 次の例は、​`CData`​ 型を使用して XML 出力内で CData 要素を作成する方法を示しています。 #### [](#ソース-7)ソース DataWeave スクリプトの本文では、​`String`​ 値が ​`CData`​ 型に型強制されます。 ```dataweave %dw 2.0 output application/xml --- { test: "A text
" as CData } ``` #### [](#出力-7)出力 出力では、入力の ​`String`​ 値が CData ブロックで囲まれ、CData ブロックには入力からの特殊文字 (​`<`​ と ​`>`​) が含まれます。 ```xml ]]> ``` ### [](#example8)例: `String`​ に CData があるかどうかを確認 次の例は、提供された ​`String`​ 値が CData かどうかを示しています。 #### [](#入力-7)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。​`test`​ 要素に CData ブロックが含まれていることに注意してください。 ```xml ]]> ``` #### [](#ソース-8)ソース DataWeave スクリプトは ​`is CData`​ 式を使用して ​`String`​ 値が CData かどうかを判別します。 ```dataweave %dw 2.0 output application/json --- { test: payload.test is CData } ``` #### [](#出力-8)出力 JSON 出力には、入力の ​`String`​ 値が CData であることを示す値 ​`true`​ が含まれます。 ```json { "test": true } ``` ### [](#example9)例: `inlineCloseOn`​ ライタープロパティを使用 次の例では、​`inlineCloseOn`​ ライタープロパティを値 ​`none`​ と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。 #### [](#ソース-9)ソース DataWeave スクリプトは本文コンテンツを XML に変換します。​`emptyElement`​ キーの値が ​`null`​ であることに注意してください。 ```dataweave %dw 2.0 output application/xml inlineCloseOn="none" --- { someXml: { parentElement: { emptyElement1: null, emptyElement2: null, emptyElement3: null } } } ``` #### [](#出力-9)出力 `emptyElement`​ 要素は空です。これに値 ​`null`​ は含まれません。 ```xml ``` ### [](#example10)例: 反復 JSON キーを反復 XML 要素に変換 XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。 #### [](#入力-8)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の ​`name`​ キーが反復していることに注意してください。 ```json { "friends": [ {"name": "Mariano"}, {"name": "Shoki"}, {"name": "Tomo"}, {"name": "Ana"} ] } ``` #### [](#ソース-10)ソース DataWeave スクリプトは、​`friends`​ キーの値を選択します。 ```dataweave %dw 2.0 output application/xml --- friends: { (payload.friends) } ``` #### [](#出力-10)出力 出力では、​`name`​ キーが XML 要素として表されます。 ```xml Mariano Shoki Tomo Ana ``` [「自己終了 XML タグの出力」の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-self-closing-xml-tags)​も参照してください。 ### [](#example11)例: XML 要素を JSON 形式に変換して文字を置換 この例では、​`Id`​、​`Name`​、​`Address`​ など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、​`replace`​ 関数を使用して各 ​`Address`​ 要素を反復処理し、文字 ​`-`​ と ​`/`​ を空白スペースに置き換えます。 #### [](#入力-9)入力 この XML 入力が DataWeave ソースへのペイロードとして機能します。​`Address`​ 要素に ​`-`​ と ​`/`​ の文字が含まれていることに注意してください。 ```xml 1 Mule
MuleSoft Avenue - 123
2 Max
MuleSoft Avenue-456/5/e
``` #### [](#ソース-11)ソース 次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。​`payload01.Address replace /([\-\,\/])/ with " "`​ の指示により、​`-`​ と ​`/`​ の文字が空白スペースに置き換えられます。 ```dataweave %dw 2.0 output application/json --- payload.root.*employees map ((payload01 , indexOfPayload01) -> { Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " } ) ``` #### [](#出力-11)出力 出力は、JSON に変換された XML 要素を表します。 ```JSON [ { "Id": "1", "Name": "Mule", "Address": "MuleSoft Avenue 123" }, { "Id": "2", "Name": "Max", "Address": "MuleSoft Avenue 456 5 e" } ] ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

collectionPath

String

null

コレクションが配置されているドキュメント内の場所へのパスを設定します。ストリーミングする要素の場所を識別するパス式を受け入れます。

externalEntities

Boolean

false

外部エンティティを処理するかどうかを示します。デフォルトでは、XML 外部エンティティ (XXE) 攻撃を回避するために無効になっています。

有効な値は、​true​ または ​false​ です。

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

maxAttributeSize

Number

-1

XML 属性で受け入れられる最大文字数を設定します。 Mule 4.2.1 以降で使用できます。

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

nullValueOn

String

'blank'

空または空白のテキストを含む要素を ​null​ 値として読み取るかどうかを示します。

有効な値は ​empty​、​none​、​blank​ です。

optimizeFor

String

'speed'

使用する XML パーサーの最適化の種別を設定します。

有効な値は、​speed​ または ​memory​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。

有効な値は、​true​ または ​false​ です。

supportDtd

Boolean

false

DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。Mule システムプロパティ ​com.mulesoft.dw.xml.supportDTD​ を設定してこのプロパティを有効にすることもできます。このプロパティのデフォルトは、Mule バージョン 4.3.0-20210601 (2021 年 6 月の DataWeave バージョン 2.3.0 のパッチを含む) で ​true​ から ​false​ に変更されました。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

defaultNamespace

String

null

出力 XML のデフォルトの名前空間を指定します。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

doubleQuoteInDeclaration

Boolean

false

true​ に設定すると、XML 宣言の二重引用符をエスケープします。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用する文字セット (UTF-8 など)。

escapeCR

Boolean

false

true​ に設定すると、​CR​ 文字をエスケープします。

有効な値は、​true​ または ​false​ です。

escapeGT

Boolean

false

true​ に設定すると、「>」文字をエスケープします。

有効な値は、​true​ または ​false​ です。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

inlineCloseOn

String

'empty'

インラインの終了タグを出力します。この値が ​null​ の場合は明示的に開始および終了タグを出力します。

有効な値は、​empty​ または ​none​ です。

onInvalidChar

String

null

有効な値は ​base64​、​ignore​、​none​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • elements​ + XML 出力内の ​null​ 要素を無視して除外します。たとえば、​output application/xml skipNullOn="arrays"​ のようにします。

  • attributes `​ + XML 内の ​`null​ 属性を無視して除外します。たとえば、​output application/xml skipNullOn="objects"​ のようにします。

  • everywhere​ + ​skipNullOn​ を要素と属性に適用します。たとえば、​output application/xml skipNullOn="everywhere"​ のようにします。

有効な値は ​elements​、​attributes​、​everywhere​ です。

writeDeclaration

Boolean

true

true​ に設定すると、XML ヘッダー宣言を出力します。

有効な値は、​true​ または ​false​ です。

writeDeclaredNamespaces

String

null

XML のルート要素内の宣言する名前空間をマークします。

  • All​: ルート要素内の宣言された名前空間をすべて出力します。

  • ids:<comma separated namespace id>​: 指定された名前空間のみを出力します。

  • regex:<regex>​: 一致する名前空間のみを出力します。

writeNilOnNull

Boolean

false

このプロパティが ​true​ に設定されている場合、​null​ 値の ​nil​ 属性を出力します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/xml

/​+xml

# XML 形式 MIME タイプ: `application/xml` ID: `xml` XML データ構造は、他のオブジェクト、文字列、または ​`null`​ 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では ​`namespaces`​、​`CData`​、​`xsi:types`​ がネイティブにサポートされます。 XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#format_xml_cdata)`CData`​ カスタム型 `CData`​ は、文字データ (CDATA) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。​`CData`​ 型により、XML ライターは ​`CDATA`​ ブロック内でコンテンツをラップしたり、​`CDATA`​ ブロック内に入力文字列があるかどうかを確認したりできるようになります。DataWeave では、​`CData`​ は型 ​`String`​ から継承されます。 ## [](#doctype-カスタム型)`DocType`​ カスタム型 `DocType`​ は、文書型宣言 (DTD) を識別するために使用する XML のカスタム DataWeave データ型です。 ## [](#dtd-の読み取りおよび書き込み)DTD の読み取りおよび書き込み _DataWeave 2.5.0 で導入されました。Mule 4.5.0 以降でサポートされます。_ DataWeave は、XML ファイルの文書型宣言の読み取りおよび書き込みを行うことができます。 文書型宣言を読み取るには、​[システムプロパティ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-system-properties)​を ​`com.mulesoft.dw.xml_reader.parseDtd`​ に設定できます。 DataWeave は、読み取りフェーズで文書型宣言を解析して、コンテンツをルート要素のメタデータとして保存します。​`DocType`​ 値は、​`docType`​ 変数に保存されます。メタデータセレクター (​`^`​) を使用して、次のような式でその変数の値を抽出できます。 - `payload.^docType` 例​[例: DTD 値を読み取る](#example12)​、​[例: DTD 値を書き込む](#example13)​、​[例: DTD 値を文字列表現に変換する](#example14)​を参照してください。 [メタデータセレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors)​を使用してアクセスできます。 NOTE デフォルトでは、宣言が読み取りおよび書き込みされる場合でも、DTD は無効になっています。詳細は、​[Reader のプロパティ](#reader_properties)​の XML リーダープロパティ ​`supportDtd`​ を参照してください。 ## [](#examples)例 次の例は、XML 形式の使用方法を示しています。 - [例: 入力 XML データをストリーミング](#example1) - [例: XML の null または空の文字列](#example2) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example3) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example4) - [例: XML 属性を DataWeave (dw) 形式で表す](#example5) - [例: XML 名前空間を DataWeave (dw) 形式で表す](#example6) - [例: CDATA 要素を作成](#example7) - [例: `String`​ に CDATA があるかどうかを確認](#example8) - [例: `inlineCloseOn`​ ライタープロパティを使用](#example9) - [例: 反復 JSON キーを反復 XML 要素に変換](#example10) - [例: XML 要素を JSON に変換して文字を置換する](#example11) - [例: DTD 値を読み取る](#example12) - [例: DTD 値を書き込む](#example13) - [例: DTD 値を文字列表現に変換する](#example14) さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats)​を参照してください。 ### [](#example1)例: 入力 XML データをストリーミング 次の例は、XML ストリーミングのセットアップ方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。 - `streaming=true` - `collectionPath="root.repeated"` `collectionPath`​ 設定では、ストリーミングする要素を選択します。 ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。 #### [](#入力)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは ​`myXML.xml`​ という XML ファイルのコンテンツであるとします。 myXML.xml ```xml Text Mariano de Achaval 36 Shokida Leandro 30 29 Ana Felissati 29 Chibana Christian ``` #### [](#ソース)ソース DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave ​`map`​ 関数を使用して反復キーを反復処理します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"}) output application/dw --- myInput.root.repeated.*user map { n: $.name, l: $.lastName, a: $.age } ``` #### [](#出力)出力 スクリプトは、マップされた入力 XML を DataWeave (dw) 形式および MIME タイプに変換します。 ```json [ { "n": "Mariano", "l": "de Achaval", "a": "36" }, { "n": "Leandro", "l": "Shokida", "a": "30" }, { "n": "Ana", "l": "Felissati", "a": "29" }, { "n": "Christian", "l": "Chibana", "a": "29" } ] ``` ### [](#example2)例: XML の null または空の文字列 XML で ​`null`​ 値を表す標準の方法はないため、​`nil`​ 属性が ​`true`​ に設定されている場合、リーダーは値を ​`null`​ にマップします。 #### [](#入力-2)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。 ` の ​`nil`​ 設定に注意してください。 ```xml ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力 XML を JSON 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/json --- payload ``` #### [](#出力-2)出力 出力は JSON 形式です。入力の ​`nil`​ 値が ​`null`​ に変換されていることに注意してください。 ```json { "book": { "author": null } } ``` ### [](#example3)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では ​`nullValueOn`​ のデフォルトを使用するため、​`title`​ および ​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-3)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-3)ソース DataWeave スクリプトは XML 入力を JSON に変換します。デモ目的で ​`nullValueOn`​ のデフォルト (​`blank`​) が明示的に設定されていることに注意してください。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "blank"}) output application/json --- myInput ``` #### [](#出力-3)出力 JSON 出力の ​`title`​ および ​`author`​ キーは ​`null`​ 値に割り当てられます。 ```json { "book": { "author": null, "title": null } } ``` ### [](#example4)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では、XML リーダープロパティ ​`nullValueOn`​ が ​`empty`​ に設定されているため、​`title`​ 要素の値を ​`String`​ にマップし、​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-4)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。​`title`​ 要素のタグは改行 (非表示文字 ​`\n`​) によって分割されていますが、​`author`​ 要素のタグはどの文字によっても分割されていません。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-4)ソース DataWeave スクリプトは DataWeave 変数を使用して ​`myXML.xml`​ のコンテンツを入力し、​`nullValueOn: "empty"`​ を適用します。スクリプトは XML 入力を JSON に変換します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "empty"}) output application/json --- myInput ``` #### [](#出力-4)出力 JSON 出力では ​`author`​ 要素の値が ​`null`​ にマップされ、​`title`​ 要素の値が ​`String`​ 値の ​`"\n\n"`​ (改行文字) にマップされます。 ```json { "book": { "author": null, "title": "\n\n" } } ``` ### [](#example5)例: XML 属性を DataWeave (dw) 形式で表す 次の例では、XML 属性を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-5)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。 ```xml MuleSoft ``` #### [](#ソース-5)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-5)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML 入力からの属性と空の値がどのように表されているかに注意してください。 ```dataweave { users: { company: "MuleSoft", user @(name: "Leandro",lastName: "Shokida"): "", user @(name: "Mariano",lastName: "Achaval"): "" } } ``` ### [](#example6)例: XML 名前空間を DataWeave (dw) 形式で表す 次の例では、XML 名前空間を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-6)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#ソース-6)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-6)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。 ```dataweave ns h http://www.w3.org/TR/html4/ ns f https://www.w3schools.com/furniture --- { root: { h#table: { h#tr: { h#td: "Apples", h#td: "Bananas" } }, f#table: { f#name: "African Coffee Table", f#width: "80", f#length: "120" } } } ``` ### [](#example7)例: CDATA 要素を作成 次の例は、​`CData`​ 型を使用して XML 出力内で CDATA 要素を作成する方法を示しています。 #### [](#ソース-7)ソース DataWeave スクリプトの本文では、​`String`​ 値が ​`CData`​ 型に型強制されます。 ```dataweave %dw 2.0 output application/xml --- { test: "A text
" as CData } ``` #### [](#出力-7)出力 出力では、入力の ​`String`​ 値が CDATA ブロックで囲まれ、CDATA ブロックには入力からの特殊文字 (​`<`​ と ​`>`​) が含まれます。 ```xml ]]> ``` ### [](#example8)例: `String`​ に CDATA があるかどうかを確認 次の例は、提供された ​`String`​ 値が CDATA かどうかを示しています。 #### [](#入力-7)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。​`test`​ 要素に CDATA ブロックが含まれていることに注意してください。 ```xml ]]> ``` #### [](#ソース-8)ソース DataWeave スクリプトは ​`is CData`​ 式を使用して ​`String`​ 値が CDATA かどうかを判別します。 ```dataweave %dw 2.0 output application/json --- { test: payload.test is CDATA } ``` #### [](#出力-8)出力 JSON 出力には、入力の ​`String`​ 値が CDATA であることを示す値 ​`true`​ が含まれます。 ```json { "test": true } ``` ### [](#example9)例: `inlineCloseOn`​ ライタープロパティを使用 次の例では、​`inlineCloseOn`​ ライタープロパティを値 ​`none`​ と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。 #### [](#ソース-9)ソース DataWeave スクリプトは本文コンテンツを XML に変換します。​`emptyElement`​ キーの値が ​`null`​ であることに注意してください。 ```dataweave %dw 2.0 output application/xml inlineCloseOn="none" --- { someXml: { parentElement: { emptyElement1: null, emptyElement2: null, emptyElement3: null } } } ``` #### [](#出力-9)出力 `emptyElement`​ 要素は空です。これに値 ​`null`​ は含まれません。 ```xml ``` ### [](#example10)例: 反復 JSON キーを反復 XML 要素に変換 XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。 #### [](#入力-8)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の ​`name`​ キーが反復していることに注意してください。 ```json { "friends": [ {"name": "Mariano"}, {"name": "Shoki"}, {"name": "Tomo"}, {"name": "Ana"} ] } ``` #### [](#ソース-10)ソース DataWeave スクリプトは、​`friends`​ キーの値を選択します。 ```dataweave %dw 2.0 output application/xml --- friends: { (payload.friends) } ``` #### [](#出力-10)出力 出力では、​`name`​ キーが XML 要素として表されます。 ```xml Mariano Shoki Tomo Ana ``` [「自己終了 XML タグの出力」の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-self-closing-xml-tags)​も参照してください。 ### [](#example11)例: XML 要素を JSON に変換して文字を置換する この例では、​`Id`​、​`Name`​、​`Address`​ など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、​`replace`​ 関数を使用して各 ​`Address`​ 要素を反復処理し、文字 ​`-`​ と ​`/`​ を空白スペースに置き換えます。 #### [](#入力-9)入力 この XML 入力が DataWeave ソースへのペイロードとして機能します。​`Address`​ 要素に ​`-`​ と ​`/`​ の文字が含まれていることに注意してください。 ```xml 1 Mule
MuleSoft Avenue - 123
2 Max
MuleSoft Avenue-456/5/e
``` #### [](#ソース-11)ソース 次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。​`payload01.Address replace /([\-\,\/])/ with " "`​ の指示により、​`-`​ と ​`/`​ の文字が空白スペースに置き換えられます。 ```dataweave %dw 2.0 output application/json --- payload.root.*employees map ((payload01 , indexOfPayload01) -> { Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " } ) ``` #### [](#出力-11)出力 出力は、JSON に変換された XML 要素を表します。 ```JSON [ { "Id": "1", "Name": "Mule", "Address": "MuleSoft Avenue 123" }, { "Id": "2", "Name": "Max", "Address": "MuleSoft Avenue 456 5 e" } ] ``` ### [](#example12)例: DTD 値を読み取る 次の DataWeave スクリプトは、​`DocType`​ 値が含まれる XML 入力ペイロードを JSON に変換します。式 ​`payload.^docType`​ を使用して、その文書型ディレクティブの値を抽出します。 #### [](#入力-10)入力 ```xml
TestIdentity Identity
``` #### [](#ソース-12)ソース ```dataweave %dw 2.0 output application/json --- { header: { senderId: payload.cXML.Header.From.Credential.Identity, receiverId: payload.cXML.Header.To.Credential.Identity, docType: payload.^docType } } ``` #### [](#出力-12)出力 ```json { "header": { "senderId": "Identity", "receiverId": "TestIdentity", "docType": { "rootName": "cXML", "systemId": "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" } } } ``` ### [](#example13)例: DTD 値を書き込む 次の例は、​`docType`​ メタデータを使用して XML 出力内で ​`DocType`​ 値を作成する方法を示しています。 #### [](#ソース-13)ソース ```dataweave %dw 2.0 output application/xml ns xml http://www.w3.org/XML/1998/namespace var cXmlObj = { cXML @(payloadID: "9949494", xml#lang: "en-US", timestamp: "2002-02-04T18:39:09-08:00"): { Header: { From: { Credential @(domain: "NetworkId"): { Identity: "Identity" } } } } } as Object { docType: { rootName: "cXML", systemId: "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd" } } --- cXmlObj ``` #### [](#出力-13)出力 ```xml
Identity
``` ### [](#example14)例: DTD 値を文字列表現に変換する 次の例では、​[Dtd Module (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-dtd)​ を使用して、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#入力-11)入力 ```xml
Identity Identity
``` #### [](#ソース-14)ソース ```dataweave %dw 2.0 output application/json import * from dw::xml::Dtd --- docTypeAsString(payload.^docType) ``` #### [](#出力-14)出力 ```JSON "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

collectionPath

String

null

コレクションが配置されているドキュメント内の場所へのパスを設定します。ストリーミングする要素の場所を識別するパス式を受け入れます。

externalEntities

Boolean

false

外部エンティティを処理するかどうかを示します。デフォルトでは、XML 外部エンティティ (XXE) 攻撃を回避するために無効になっています。

有効な値は、​true​ または ​false​ です。

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

maxAttributeSize

Number

-1

XML 属性で受け入れられる最大文字数を設定します。 Mule 4.2.1 以降で使用できます。

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

nullValueOn

String

'blank'

空または空白のテキストを含む要素を ​null​ 値として読み取るかどうかを示します。

有効な値は ​empty​、​none​、​blank​ です。

optimizeFor

String

'speed'

使用する XML パーサーの最適化の種別を設定します。

有効な値は、​speed​ または ​memory​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

supportDtd

Boolean

false

DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。Mule システムプロパティ ​com.mulesoft.dw.xml.supportDTD​ を設定してこのプロパティを有効にすることもできます。このプロパティのデフォルトは、Mule バージョン 4.3.0-20210601 (2021 年 6 月の DataWeave バージョン 2.3.0 のパッチを含む) で ​true​ から ​false​ に変更されました。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

defaultNamespace

String

null

出力 XML のデフォルトの名前空間を指定します。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

doubleQuoteInDeclaration

Boolean

false

true​ に設定すると、XML 宣言の二重引用符をエスケープします。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escapeCR

Boolean

false

true​ に設定すると、​CR​ 文字をエスケープします。

有効な値は、​true​ または ​false​ です。

escapeGT

Boolean

false

true​ に設定すると、「>」文字をエスケープします。

有効な値は、​true​ または ​false​ です。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

inlineCloseOn

String

'empty'

インラインの終了タグを出力します。この値が ​null​ の場合は明示的に開始および終了タグを出力します。

有効な値は、​empty​ または ​none​ です。

onInvalidChar

String

null

有効な値は ​base64​、​ignore​、​none​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • elements​ + XML 出力内の ​null​ 要素を無視して除外します。たとえば、​output application/xml skipNullOn="arrays"​ のようにします。

  • attributes `​ + XML 内の ​`null​ 属性を無視して除外します。たとえば、​output application/xml skipNullOn="objects"​ のようにします。

  • everywhere​ + ​skipNullOn​ を要素と属性に適用します。たとえば、​output application/xml skipNullOn="everywhere"​ のようにします。

有効な値は ​elements​、​attributes​、​everywhere​ です。

writeDeclaration

Boolean

true

true​ に設定すると、XML ヘッダー宣言を出力します。

有効な値は、​true​ または ​false​ です。

writeDeclaredNamespaces

String

null

XML のルート要素内の宣言する名前空間をマークします。

  • All​: ルート要素内の宣言された名前空間をすべて出力します。

  • ids:<comma separated namespace id>​: 指定された名前空間のみを出力します。

  • regex:<regex>​: 一致する名前空間のみを出力します。

writeNilOnNull

Boolean

false

このプロパティが ​true​ に設定されている場合、​null​ 値の ​nil​ 属性を出力します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/xml

/​+xml

# XML 形式 MIME タイプ: `application/xml` ID: `xml` XML データ構造は、他のオブジェクト、文字列、または ​`null`​ 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では ​`namespaces`​、​`CData`​、​`xsi:types`​ がネイティブにサポートされます。 XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#format_xml_cdata)`CData`​ カスタム型 `CData`​ は、文字データ (CDATA) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。​`CData`​ 型により、XML ライターは ​`CDATA`​ ブロック内でコンテンツをラップしたり、​`CDATA`​ ブロック内に入力文字列があるかどうかを確認したりできるようになります。DataWeave では、​`CData`​ は型 ​`String`​ から継承されます。 ## [](#doctype-カスタム型)`DocType`​ カスタム型 `DocType`​ は、文書型宣言 (DTD) を識別するために使用する XML のカスタム DataWeave データ型です。 ## [](#dtd-の読み取りおよび書き込み)DTD の読み取りおよび書き込み _DataWeave 2.5.0 で導入されました。Mule 4.5.0 以降でサポートされます。_ DataWeave は、XML ファイルの文書型宣言の読み取りおよび書き込みを行うことができます。 DataWeave は、読み取りフェーズで文書型宣言を解析して、コンテンツをルート要素のメタデータとして保存します。​`DocType`​ 値は、​`docType`​ 変数に保存されます。 [メタデータセレクター](https://docs.mulesoft.com/dataweave/latest/dataweave-selectors)​ (​`^`​) を使用して、次のような式でその変数の値を抽出できます。 - `payload.^docType` 例​[例: DTD 値を読み取る](#example12)​、​[例: DTD 値を書き込む](#example13)​、​[例: DTD 値を文字列表現に変換する](#example14)​を参照してください。 [メタデータセレクター](https://docs.mulesoft.com/dataweave/latest/dataweave-selectors.adoc)​を使用してアクセスできます。 NOTE デフォルトでは、宣言が読み取りおよび書き込みされる場合でも、DTD は無効になっています。詳細は、​[Reader のプロパティ](#reader_properties)​の XML リーダープロパティ ​`supportDtd`​ を参照してください。 ## [](#examples)例 次の例は、XML 形式の使用方法を示しています。 - [例: 入力 XML データをストリーミング](#example1) - [例: XML の null または空の文字列](#example2) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example3) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example4) - [例: XML 属性を DataWeave (dw) 形式で表す](#example5) - [例: XML 名前空間を DataWeave (dw) 形式で表す](#example6) - [例: CDATA 要素を作成](#example7) - [例: `String`​ に CDATA があるかどうかを確認](#example8) - [例: `inlineCloseOn`​ ライタープロパティを使用](#example9) - [例: 反復 JSON キーを反復 XML 要素に変換](#example10) - [例: XML 要素を JSON に変換して文字を置換する](#example11) - [例: DTD 値を読み取る](#example12) - [例: DTD 値を書き込む](#example13) - [例: DTD 値を文字列表現に変換する](#example14) さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats)​を参照してください。 ### [](#example1)例: 入力 XML データをストリーミング 次の例は、XML ストリーミングのセットアップ方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。 - `streaming=true` - `collectionPath="root.repeated"` `collectionPath`​ 設定では、ストリーミングする要素を選択します。 ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。 #### [](#入力)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは ​`myXML.xml`​ という XML ファイルのコンテンツであるとします。 myXML.xml ```xml Text Mariano de Achaval 36 Shokida Leandro 30 29 Ana Felissati 29 Chibana Christian ``` #### [](#ソース)ソース DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave ​`map`​ 関数を使用して反復キーを反復処理します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"}) output application/dw --- myInput.root.repeated.*user map { n: $.name, l: $.lastName, a: $.age } ``` #### [](#出力)出力 スクリプトは、マップされた入力 XML を DataWeave (dw) 形式および MIME タイプに変換します。 ```json [ { "n": "Mariano", "l": "de Achaval", "a": "36" }, { "n": "Leandro", "l": "Shokida", "a": "30" }, { "n": "Ana", "l": "Felissati", "a": "29" }, { "n": "Christian", "l": "Chibana", "a": "29" } ] ``` ### [](#example2)例: XML の null または空の文字列 XML で ​`null`​ 値を表す標準の方法はないため、​`nil`​ 属性が ​`true`​ に設定されている場合、リーダーは値を ​`null`​ にマップします。 #### [](#入力-2)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。 ` の ​`nil`​ 設定に注意してください。 ```xml ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力 XML を JSON 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/json --- payload ``` #### [](#出力-2)出力 出力は JSON 形式です。入力の ​`nil`​ 値が ​`null`​ に変換されていることに注意してください。 ```json { "book": { "author": null } } ``` ### [](#example3)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では ​`nullValueOn`​ のデフォルトを使用するため、​`title`​ および ​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-3)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-3)ソース DataWeave スクリプトは XML 入力を JSON に変換します。デモ目的で ​`nullValueOn`​ のデフォルト (​`blank`​) が明示的に設定されていることに注意してください。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "blank"}) output application/json --- myInput ``` #### [](#出力-3)出力 JSON 出力の ​`title`​ および ​`author`​ キーは ​`null`​ 値に割り当てられます。 ```json { "book": { "author": null, "title": null } } ``` ### [](#example4)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では、XML リーダープロパティ ​`nullValueOn`​ が ​`empty`​ に設定されているため、​`title`​ 要素の値を ​`String`​ にマップし、​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-4)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。​`title`​ 要素のタグは改行 (非表示文字 ​`\n`​) によって分割されていますが、​`author`​ 要素のタグはどの文字によっても分割されていません。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-4)ソース DataWeave スクリプトは DataWeave 変数を使用して ​`myXML.xml`​ のコンテンツを入力し、​`nullValueOn: "empty"`​ を適用します。スクリプトは XML 入力を JSON に変換します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "empty"}) output application/json --- myInput ``` #### [](#出力-4)出力 JSON 出力では ​`author`​ 要素の値が ​`null`​ にマップされ、​`title`​ 要素の値が ​`String`​ 値の ​`"\n\n"`​ (改行文字) にマップされます。 ```json { "book": { "author": null, "title": "\n\n" } } ``` ### [](#example5)例: XML 属性を DataWeave (dw) 形式で表す 次の例では、XML 属性を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-5)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。 ```xml MuleSoft ``` #### [](#ソース-5)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-5)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML 入力からの属性と空の値がどのように表されているかに注意してください。 ```dataweave { users: { company: "MuleSoft", user @(name: "Leandro",lastName: "Shokida"): "", user @(name: "Mariano",lastName: "Achaval"): "" } } ``` ### [](#example6)例: XML 名前空間を DataWeave (dw) 形式で表す 次の例では、XML 名前空間を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-6)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#ソース-6)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-6)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。 ```dataweave ns h http://www.w3.org/TR/html4/ ns f https://www.w3schools.com/furniture --- { root: { h#table: { h#tr: { h#td: "Apples", h#td: "Bananas" } }, f#table: { f#name: "African Coffee Table", f#width: "80", f#length: "120" } } } ``` ### [](#example7)例: CDATA 要素を作成 次の例は、​`CData`​ 型を使用して XML 出力内で CDATA 要素を作成する方法を示しています。 #### [](#ソース-7)ソース DataWeave スクリプトの本文では、​`String`​ 値が ​`CData`​ 型に型強制されます。 ```dataweave %dw 2.0 output application/xml --- { test: "A text
" as CData } ``` #### [](#出力-7)出力 出力では、入力の ​`String`​ 値が CDATA ブロックで囲まれ、CDATA ブロックには入力からの特殊文字 (​`<`​ と ​`>`​) が含まれます。 ```xml ]]> ``` ### [](#example8)例: `String`​ に CDATA があるかどうかを確認 次の例は、提供された ​`String`​ 値が CDATA かどうかを示しています。 #### [](#入力-7)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。​`test`​ 要素に CDATA ブロックが含まれていることに注意してください。 ```xml ]]> ``` #### [](#ソース-8)ソース DataWeave スクリプトは ​`is CData`​ 式を使用して ​`String`​ 値が CDATA かどうかを判別します。 ```dataweave %dw 2.0 output application/json --- { test: payload.test is CDATA } ``` #### [](#出力-8)出力 JSON 出力には、入力の ​`String`​ 値が CDATA であることを示す値 ​`true`​ が含まれます。 ```json { "test": true } ``` ### [](#example9)例: `inlineCloseOn`​ ライタープロパティを使用 次の例では、​`inlineCloseOn`​ ライタープロパティを値 ​`none`​ と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。 #### [](#ソース-9)ソース DataWeave スクリプトは本文コンテンツを XML に変換します。​`emptyElement`​ キーの値が ​`null`​ であることに注意してください。 ```dataweave %dw 2.0 output application/xml inlineCloseOn="none" --- { someXml: { parentElement: { emptyElement1: null, emptyElement2: null, emptyElement3: null } } } ``` #### [](#出力-9)出力 `emptyElement`​ 要素は空です。これに値 ​`null`​ は含まれません。 ```xml ``` ### [](#example10)例: 反復 JSON キーを反復 XML 要素に変換 XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。 #### [](#入力-8)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の ​`name`​ キーが反復していることに注意してください。 ```json { "friends": [ {"name": "Mariano"}, {"name": "Shoki"}, {"name": "Tomo"}, {"name": "Ana"} ] } ``` #### [](#ソース-10)ソース DataWeave スクリプトは、​`friends`​ キーの値を選択します。 ```dataweave %dw 2.0 output application/xml --- friends: { (payload.friends) } ``` #### [](#出力-10)出力 出力では、​`name`​ キーが XML 要素として表されます。 ```xml Mariano Shoki Tomo Ana ``` [「自己終了 XML タグの出力」の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-self-closing-xml-tags)​も参照してください。 ### [](#example11)例: XML 要素を JSON に変換して文字を置換する この例では、​`Id`​、​`Name`​、​`Address`​ など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、​`replace`​ 関数を使用して各 ​`Address`​ 要素を反復処理し、文字 ​`-`​ と ​`/`​ を空白スペースに置き換えます。 #### [](#入力-9)入力 この XML 入力が DataWeave ソースへのペイロードとして機能します。​`Address`​ 要素に ​`-`​ と ​`/`​ の文字が含まれていることに注意してください。 ```xml 1 Mule
MuleSoft Avenue - 123
2 Max
MuleSoft Avenue-456/5/e
``` #### [](#ソース-11)ソース 次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。​`payload01.Address replace /([\-\,\/])/ with " "`​ の指示により、​`-`​ と ​`/`​ の文字が空白スペースに置き換えられます。 ```dataweave %dw 2.0 output application/json --- payload.root.*employees map ((payload01 , indexOfPayload01) -> { Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " } ) ``` #### [](#出力-11)出力 出力は、JSON に変換された XML 要素を表します。 ```JSON [ { "Id": "1", "Name": "Mule", "Address": "MuleSoft Avenue 123" }, { "Id": "2", "Name": "Max", "Address": "MuleSoft Avenue 456 5 e" } ] ``` ### [](#example12)例: DTD 値を読み取る 次の DataWeave スクリプトは、​`DocType`​ 値が含まれる XML 入力ペイロードを JSON に変換します。式 ​`payload.^docType`​ を使用して、その文書型ディレクティブの値を抽出します。 #### [](#入力-10)入力 ```xml
TestIdentity Identity
``` #### [](#ソース-12)ソース ```dataweave %dw 2.0 output application/json --- { header: { senderId: payload.cXML.Header.From.Credential.Identity, receiverId: payload.cXML.Header.To.Credential.Identity, docType: payload.^docType } } ``` #### [](#出力-12)出力 ```json { "header": { "senderId": "Identity", "receiverId": "TestIdentity", "docType": { "rootName": "cXML", "systemId": "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" } } } ``` ### [](#example13)例: DTD 値を書き込む 次の例は、​`docType`​ メタデータを使用して XML 出力内で ​`DocType`​ 値を作成する方法を示しています。 #### [](#ソース-13)ソース ```dataweave %dw 2.0 output application/xml ns xml http://www.w3.org/XML/1998/namespace var cXmlObj = { cXML @(payloadID: "9949494", xml#lang: "en-US", timestamp: "2002-02-04T18:39:09-08:00"): { Header: { From: { Credential @(domain: "NetworkId"): { Identity: "Identity" } } } } } as Object { docType: { rootName: "cXML", systemId: "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd" } } --- cXmlObj ``` #### [](#出力-13)出力 ```xml
Identity
``` ### [](#example14)例: DTD 値を文字列表現に変換する 次の例では、​[Dtd Module (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-dtd)​ を使用して、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#入力-11)入力 ```xml
Identity Identity
``` #### [](#ソース-14)ソース ```dataweave %dw 2.0 output application/json import * from dw::xml::Dtd --- docTypeAsString(payload.^docType) ``` #### [](#出力-14)出力 ```JSON "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

collectionPath

String

null

コレクションが配置されているドキュメント内の場所へのパスを設定します。ストリーミングする要素の場所を識別するパス式を受け入れます。

externalEntities

Boolean

false

外部エンティティを処理するかどうかを示します。デフォルトでは、XML 外部エンティティ (XXE) 攻撃を回避するために無効になっています。

有効な値は、​true​ または ​false​ です。

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

maxAttributeSize

Number

-1

XML 属性で受け入れられる最大文字数を設定します。 Mule 4.2.1 以降で使用できます。

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

nullValueOn

String

'blank'

空または空白のテキストを含む要素を ​null​ 値として読み取るかどうかを示します。

有効な値は ​empty​、​none​、​blank​ です。

optimizeFor

String

'speed'

使用する XML パーサーの最適化の種別を設定します。

有効な値は、​speed​ または ​memory​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

supportDtd

Boolean

false

DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。Mule システムプロパティ ​com.mulesoft.dw.xml.supportDTD​ を設定してこのプロパティを有効にすることもできます。このプロパティのデフォルトは、Mule バージョン 4.3.0-20210601 (2021 年 6 月の DataWeave バージョン 2.3.0 のパッチを含む) で ​true​ から ​false​ に変更されました。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

defaultNamespace

String

null

出力 XML のデフォルトの名前空間を指定します。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

doubleQuoteInDeclaration

Boolean

false

true​ に設定すると、XML 宣言の二重引用符をエスケープします。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escapeCR

Boolean

false

true​ に設定すると、​CR​ 文字をエスケープします。

有効な値は、​true​ または ​false​ です。

escapeGT

Boolean

false

true​ に設定すると、「>」文字をエスケープします。

有効な値は、​true​ または ​false​ です。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

inlineCloseOn

String

'empty'

インラインの終了タグを出力します。この値が ​null​ の場合は明示的に開始および終了タグを出力します。

有効な値は、​empty​ または ​none​ です。

onInvalidChar

String

null

有効な値は ​base64​、​ignore​、​none​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • elements​ + XML 出力内の ​null​ 要素を無視して除外します。たとえば、​output application/xml skipNullOn="arrays"​ のようにします。

  • attributes `​ + XML 内の ​`null​ 属性を無視して除外します。たとえば、​output application/xml skipNullOn="objects"​ のようにします。

  • everywhere​ + ​skipNullOn​ を要素と属性に適用します。たとえば、​output application/xml skipNullOn="everywhere"​ のようにします。

有効な値は ​elements​、​attributes​、​everywhere​ です。

writeDeclaration

Boolean

true

true​ に設定すると、XML ヘッダー宣言を出力します。

有効な値は、​true​ または ​false​ です。

writeDeclaredNamespaces

String

null

XML のルート要素内の宣言する名前空間をマークします。

  • All​: ルート要素内の宣言された名前空間をすべて出力します。

  • ids:<comma separated namespace id>​: 指定された名前空間のみを出力します。

  • regex:<regex>​: 一致する名前空間のみを出力します。

writeNilOnNull

Boolean

false

このプロパティが ​true​ に設定されている場合、​null​ 値の ​nil​ 属性を出力します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/xml

/​+xml

# XML 形式 MIME タイプ: `application/xml` ID: `xml` XML データ構造は、他のオブジェクト、文字列、または ​`null`​ 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では ​`namespaces`​、​`CData`​、​`xsi:types`​ がネイティブにサポートされます。 XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#format_xml_cdata)`CData`​ カスタム型 `CData`​ は、文字データ (CDATA) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。​`CData`​ 型により、XML ライターは ​`CDATA`​ ブロック内でコンテンツをラップしたり、​`CDATA`​ ブロック内に入力文字列があるかどうかを確認したりできるようになります。DataWeave では、​`CData`​ は型 ​`String`​ から継承されます。 ## [](#doctype-カスタム型)`DocType`​ カスタム型 `DocType`​ は、文書型宣言 (DTD) を識別するために使用する XML のカスタム DataWeave データ型です。 ## [](#dtd-の読み取りおよび書き込み)DTD の読み取りおよび書き込み _DataWeave 2.5.0 で導入されました。Mule 4.5.0 以降でサポートされます。_ DataWeave は、XML ファイルの文書型宣言の読み取りおよび書き込みを行うことができます。 DataWeave は、読み取りフェーズで文書型宣言を解析して、コンテンツをルート要素のメタデータとして保存します。​`DocType`​ 値は、​`docType`​ 変数に保存されます。 [メタデータセレクター](https://docs.mulesoft.com/dataweave/latest/dataweave-selectors)​ (​`^`​) を使用して、次のような式でその変数の値を抽出できます。 - `payload.^docType` 例​[例: DTD 値を読み取る](#example12)​、​[例: DTD 値を書き込む](#example13)​、​[例: DTD 値を文字列表現に変換する](#example14)​を参照してください。 [メタデータセレクター](https://docs.mulesoft.com/dataweave/latest/dataweave-selectors.adoc)​を使用してアクセスできます。 NOTE デフォルトでは、宣言が読み取りおよび書き込みされる場合でも、DTD は無効になっています。詳細は、​[Reader のプロパティ](#reader_properties)​の XML リーダープロパティ ​`supportDtd`​ を参照してください。 ## [](#examples)例 次の例は、XML 形式の使用方法を示しています。 - [例: 入力 XML データをストリーミング](#example1) - [例: XML の null または空の文字列](#example2) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example3) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example4) - [例: XML 属性を DataWeave (dw) 形式で表す](#example5) - [例: XML 名前空間を DataWeave (dw) 形式で表す](#example6) - [例: CDATA 要素を作成](#example7) - [例: `String`​ に CDATA があるかどうかを確認](#example8) - [例: `inlineCloseOn`​ ライタープロパティを使用](#example9) - [例: 反復 JSON キーを反復 XML 要素に変換](#example10) - [例: XML 要素を JSON に変換して文字を置換する](#example11) - [例: DTD 値を読み取る](#example12) - [例: DTD 値を書き込む](#example13) - [例: DTD 値を文字列表現に変換する](#example14) さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats)​を参照してください。 ### [](#example1)例: 入力 XML データをストリーミング 次の例は、XML ストリーミングのセットアップ方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。 - `streaming=true` - `collectionPath="root.repeated"` `collectionPath`​ 設定では、ストリーミングする要素を選択します。 ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。 #### [](#入力)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは ​`myXML.xml`​ という XML ファイルのコンテンツであるとします。 myXML.xml ```xml Text Mariano de Achaval 36 Shokida Leandro 30 29 Ana Felissati 29 Chibana Christian ``` #### [](#ソース)ソース DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave ​`map`​ 関数を使用して反復キーを反復処理します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"}) output application/dw --- myInput.root.repeated.*user map { n: $.name, l: $.lastName, a: $.age } ``` #### [](#出力)出力 スクリプトは、マップされた入力 XML を DataWeave (dw) 形式および MIME タイプに変換します。 ```json [ { "n": "Mariano", "l": "de Achaval", "a": "36" }, { "n": "Leandro", "l": "Shokida", "a": "30" }, { "n": "Ana", "l": "Felissati", "a": "29" }, { "n": "Christian", "l": "Chibana", "a": "29" } ] ``` ### [](#example2)例: XML の null または空の文字列 XML で ​`null`​ 値を表す標準の方法はないため、​`nil`​ 属性が ​`true`​ に設定されている場合、リーダーは値を ​`null`​ にマップします。 #### [](#入力-2)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。 ` の ​`nil`​ 設定に注意してください。 ```xml ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力 XML を JSON 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/json --- payload ``` #### [](#出力-2)出力 出力は JSON 形式です。入力の ​`nil`​ 値が ​`null`​ に変換されていることに注意してください。 ```json { "book": { "author": null } } ``` ### [](#example3)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では ​`nullValueOn`​ のデフォルトを使用するため、​`title`​ および ​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-3)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-3)ソース DataWeave スクリプトは XML 入力を JSON に変換します。デモ目的で ​`nullValueOn`​ のデフォルト (​`blank`​) が明示的に設定されていることに注意してください。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "blank"}) output application/json --- myInput ``` #### [](#出力-3)出力 JSON 出力の ​`title`​ および ​`author`​ キーは ​`null`​ 値に割り当てられます。 ```json { "book": { "author": null, "title": null } } ``` ### [](#example4)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では、XML リーダープロパティ ​`nullValueOn`​ が ​`empty`​ に設定されているため、​`title`​ 要素の値を ​`String`​ にマップし、​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-4)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。​`title`​ 要素のタグは改行 (非表示文字 ​`\n`​) によって分割されていますが、​`author`​ 要素のタグはどの文字によっても分割されていません。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-4)ソース DataWeave スクリプトは DataWeave 変数を使用して ​`myXML.xml`​ のコンテンツを入力し、​`nullValueOn: "empty"`​ を適用します。スクリプトは XML 入力を JSON に変換します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "empty"}) output application/json --- myInput ``` #### [](#出力-4)出力 JSON 出力では ​`author`​ 要素の値が ​`null`​ にマップされ、​`title`​ 要素の値が ​`String`​ 値の ​`"\n\n"`​ (改行文字) にマップされます。 ```json { "book": { "author": null, "title": "\n\n" } } ``` ### [](#example5)例: XML 属性を DataWeave (dw) 形式で表す 次の例では、XML 属性を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-5)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。 ```xml MuleSoft ``` #### [](#ソース-5)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-5)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML 入力からの属性と空の値がどのように表されているかに注意してください。 ```dataweave { users: { company: "MuleSoft", user @(name: "Leandro",lastName: "Shokida"): "", user @(name: "Mariano",lastName: "Achaval"): "" } } ``` ### [](#example6)例: XML 名前空間を DataWeave (dw) 形式で表す 次の例では、XML 名前空間を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-6)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#ソース-6)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-6)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。 ```dataweave ns h http://www.w3.org/TR/html4/ ns f https://www.w3schools.com/furniture --- { root: { h#table: { h#tr: { h#td: "Apples", h#td: "Bananas" } }, f#table: { f#name: "African Coffee Table", f#width: "80", f#length: "120" } } } ``` ### [](#example7)例: CDATA 要素を作成 次の例は、​`CData`​ 型を使用して XML 出力内で CDATA 要素を作成する方法を示しています。 #### [](#ソース-7)ソース DataWeave スクリプトの本文では、​`String`​ 値が ​`CData`​ 型に型強制されます。 ```dataweave %dw 2.0 output application/xml --- { test: "A text
" as CData } ``` #### [](#出力-7)出力 出力では、入力の ​`String`​ 値が CDATA ブロックで囲まれ、CDATA ブロックには入力からの特殊文字 (​`<`​ と ​`>`​) が含まれます。 ```xml ]]> ``` ### [](#example8)例: `String`​ に CDATA があるかどうかを確認 次の例は、提供された ​`String`​ 値が CDATA かどうかを示しています。 #### [](#入力-7)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。​`test`​ 要素に CDATA ブロックが含まれていることに注意してください。 ```xml ]]> ``` #### [](#ソース-8)ソース DataWeave スクリプトは ​`is CData`​ 式を使用して ​`String`​ 値が CDATA かどうかを判別します。 ```dataweave %dw 2.0 output application/json --- { test: payload.test is CDATA } ``` #### [](#出力-8)出力 JSON 出力には、入力の ​`String`​ 値が CDATA であることを示す値 ​`true`​ が含まれます。 ```json { "test": true } ``` ### [](#example9)例: `inlineCloseOn`​ ライタープロパティを使用 次の例では、​`inlineCloseOn`​ ライタープロパティを値 ​`none`​ と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。 #### [](#ソース-9)ソース DataWeave スクリプトは本文コンテンツを XML に変換します。​`emptyElement`​ キーの値が ​`null`​ であることに注意してください。 ```dataweave %dw 2.0 output application/xml inlineCloseOn="none" --- { someXml: { parentElement: { emptyElement1: null, emptyElement2: null, emptyElement3: null } } } ``` #### [](#出力-9)出力 `emptyElement`​ 要素は空です。これに値 ​`null`​ は含まれません。 ```xml ``` ### [](#example10)例: 反復 JSON キーを反復 XML 要素に変換 XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。 #### [](#入力-8)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の ​`name`​ キーが反復していることに注意してください。 ```json { "friends": [ {"name": "Mariano"}, {"name": "Shoki"}, {"name": "Tomo"}, {"name": "Ana"} ] } ``` #### [](#ソース-10)ソース DataWeave スクリプトは、​`friends`​ キーの値を選択します。 ```dataweave %dw 2.0 output application/xml --- friends: { (payload.friends) } ``` #### [](#出力-10)出力 出力では、​`name`​ キーが XML 要素として表されます。 ```xml Mariano Shoki Tomo Ana ``` [「自己終了 XML タグの出力」の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-self-closing-xml-tags)​も参照してください。 ### [](#example11)例: XML 要素を JSON に変換して文字を置換する この例では、​`Id`​、​`Name`​、​`Address`​ など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、​`replace`​ 関数を使用して各 ​`Address`​ 要素を反復処理し、文字 ​`-`​ と ​`/`​ を空白スペースに置き換えます。 #### [](#入力-9)入力 この XML 入力が DataWeave ソースへのペイロードとして機能します。​`Address`​ 要素に ​`-`​ と ​`/`​ の文字が含まれていることに注意してください。 ```xml 1 Mule
MuleSoft Avenue - 123
2 Max
MuleSoft Avenue-456/5/e
``` #### [](#ソース-11)ソース 次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。​`payload01.Address replace /([\-\,\/])/ with " "`​ の指示により、​`-`​ と ​`/`​ の文字が空白スペースに置き換えられます。 ```dataweave %dw 2.0 output application/json --- payload.root.*employees map ((payload01 , indexOfPayload01) -> { Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " } ) ``` #### [](#出力-11)出力 出力は、JSON に変換された XML 要素を表します。 ```JSON [ { "Id": "1", "Name": "Mule", "Address": "MuleSoft Avenue 123" }, { "Id": "2", "Name": "Max", "Address": "MuleSoft Avenue 456 5 e" } ] ``` ### [](#example12)例: DTD 値を読み取る 次の DataWeave スクリプトは、​`DocType`​ 値が含まれる XML 入力ペイロードを JSON に変換します。式 ​`payload.^docType`​ を使用して、その文書型ディレクティブの値を抽出します。 #### [](#入力-10)入力 ```xml
TestIdentity Identity
``` #### [](#ソース-12)ソース ```dataweave %dw 2.0 output application/json --- { header: { senderId: payload.cXML.Header.From.Credential.Identity, receiverId: payload.cXML.Header.To.Credential.Identity, docType: payload.^docType } } ``` #### [](#出力-12)出力 ```json { "header": { "senderId": "Identity", "receiverId": "TestIdentity", "docType": { "rootName": "cXML", "systemId": "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" } } } ``` ### [](#example13)例: DTD 値を書き込む 次の例は、​`docType`​ メタデータを使用して XML 出力内で ​`DocType`​ 値を作成する方法を示しています。 #### [](#ソース-13)ソース ```dataweave %dw 2.0 output application/xml ns xml http://www.w3.org/XML/1998/namespace var cXmlObj = { cXML @(payloadID: "9949494", xml#lang: "en-US", timestamp: "2002-02-04T18:39:09-08:00"): { Header: { From: { Credential @(domain: "NetworkId"): { Identity: "Identity" } } } } } as Object { docType: { rootName: "cXML", systemId: "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd" } } --- cXmlObj ``` #### [](#出力-13)出力 ```xml
Identity
``` ### [](#example14)例: DTD 値を文字列表現に変換する 次の例では、​[Dtd Module (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-dtd)​ を使用して、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#入力-11)入力 ```xml
Identity Identity
``` #### [](#ソース-14)ソース ```dataweave %dw 2.0 output application/json import * from dw::xml::Dtd --- docTypeAsString(payload.^docType) ``` #### [](#出力-14)出力 ```JSON "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

collectionPath

String

null

コレクションが配置されているドキュメント内の場所へのパスを設定します。ストリーミングする要素の場所を識別するパス式を受け入れます。

externalEntities

Boolean

false

外部エンティティを処理するかどうかを示します。デフォルトでは、XML 外部エンティティ (XXE) 攻撃を回避するために無効になっています。

有効な値は、​true​ または ​false​ です。

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

maxAttributeSize

Number

-1

XML 属性で受け入れられる最大文字数を設定します。 Mule 4.2.1 以降で使用できます。

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

nullValueOn

String

'blank'

空または空白のテキストを含む要素を ​null​ 値として読み取るかどうかを示します。

有効な値は ​empty​、​none​、​blank​ です。

optimizeFor

String

'speed'

使用する XML パーサーの最適化の種別を設定します。

有効な値は、​speed​ または ​memory​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

supportDtd

Boolean

false

DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。Mule システムプロパティ ​com.mulesoft.dw.xml.supportDTD​ を設定してこのプロパティを有効にすることもできます。このプロパティのデフォルトは、Mule バージョン 4.3.0-20210601 (2021 年 6 月の DataWeave バージョン 2.3.0 のパッチを含む) で ​true​ から ​false​ に変更されました。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

defaultNamespace

String

null

出力 XML のデフォルトの名前空間を指定します。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

doubleQuoteInDeclaration

Boolean

false

true​ に設定すると、XML 宣言の二重引用符をエスケープします。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escapeCR

Boolean

false

true​ に設定すると、​CR​ 文字をエスケープします。

有効な値は、​true​ または ​false​ です。

escapeGT

Boolean

false

true​ に設定すると、「>」文字をエスケープします。

有効な値は、​true​ または ​false​ です。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

inlineCloseOn

String

'empty'

インラインの終了タグを出力します。この値が ​null​ の場合は明示的に開始および終了タグを出力します。

有効な値は、​empty​ または ​none​ です。

onInvalidChar

String

null

有効な値は ​base64​、​ignore​、​none​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • elements​ + XML 出力内の ​null​ 要素を無視して除外します。たとえば、​output application/xml skipNullOn="arrays"​ のようにします。

  • attributes `​ + XML 内の ​`null​ 属性を無視して除外します。たとえば、​output application/xml skipNullOn="objects"​ のようにします。

  • everywhere​ + ​skipNullOn​ を要素と属性に適用します。たとえば、​output application/xml skipNullOn="everywhere"​ のようにします。

有効な値は ​elements​、​attributes​、​everywhere​ です。

writeDeclaration

Boolean

true

true​ に設定すると、XML ヘッダー宣言を出力します。

有効な値は、​true​ または ​false​ です。

writeDeclaredNamespaces

String

null

XML のルート要素内の宣言する名前空間をマークします。

  • All​: ルート要素内の宣言された名前空間をすべて出力します。

  • ids:<comma separated namespace id>​: 指定された名前空間のみを出力します。

  • regex:<regex>​: 一致する名前空間のみを出力します。

writeNilOnNull

Boolean

false

このプロパティが ​true​ に設定されている場合、​null​ 値の ​nil​ 属性を出力します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/xml

/​+xml

# XML 形式 MIME タイプ: `application/xml` ID: `xml` XML データ構造は、他のオブジェクト、文字列、または ​`null`​ 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では ​`namespaces`​、​`CData`​、​`xsi:types`​ がネイティブにサポートされます。 XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。 - インデックス付き - メモリ内 - ストリーミング DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#dw_readers_writers)​を参照してください。 ## [](#format_xml_cdata)`CData`​ カスタム型 `CData`​ は、文字データ (CDATA) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。​`CData`​ 型により、XML ライターは ​`CDATA`​ ブロック内でコンテンツをラップしたり、​`CDATA`​ ブロック内に入力文字列があるかどうかを確認したりできるようになります。DataWeave では、​`CData`​ は型 ​`String`​ から継承されます。 ## [](#doctype-カスタム型)`DocType`​ カスタム型 `DocType`​ は、文書型宣言 (DTD) を識別するために使用する XML のカスタム DataWeave データ型です。 ## [](#dtd-の読み取りおよび書き込み)DTD の読み取りおよび書き込み _DataWeave 2.5.0 で導入されました。Mule 4.5.0 以降でサポートされます。_ DataWeave は、XML ファイルの文書型宣言の読み取りおよび書き込みを行うことができます。 DataWeave は、読み取りフェーズで文書型宣言を解析して、コンテンツをルート要素のメタデータとして保存します。​`DocType`​ 値は、​`docType`​ 変数に保存されます。 [メタデータセレクター](https://docs.mulesoft.com/dataweave/latest/dataweave-selectors)​ (​`^`​) を使用して、次のような式でその変数の値を抽出できます。 - `payload.^docType` 例​[例: DTD 値を読み取る](#example12)​、​[例: DTD 値を書き込む](#example13)​、​[例: DTD 値を文字列表現に変換する](#example14)​を参照してください。 NOTE デフォルトでは、宣言が読み取りおよび書き込みされる場合でも、DTD は無効になっています。詳細は、​[Reader のプロパティ](#reader_properties)​の XML リーダープロパティ ​`supportDtd`​ を参照してください。 ## [](#examples)例 次の例は、XML 形式の使用方法を示しています。 - [例: 入力 XML データをストリーミング](#example1) - [例: XML の null または空の文字列](#example2) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example3) - [例: 欠落している XML 値に対して ​`null`​ 値を出力](#example4) - [例: XML 属性を DataWeave (dw) 形式で表す](#example5) - [例: XML 名前空間を DataWeave (dw) 形式で表す](#example6) - [例: CDATA 要素を作成](#example7) - [例: `String`​ に CDATA があるかどうかを確認](#example8) - [例: `inlineCloseOn`​ ライタープロパティを使用](#example9) - [例: 反復 JSON キーを反復 XML 要素に変換](#example10) - [例: XML 要素を JSON に変換して文字を置換する](#example11) - [例: DTD 値を読み取る](#example12) - [例: DTD 値を書き込む](#example13) - [例: DTD 値を文字列表現に変換する](#example14) さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats)​を参照してください。 ### [](#example1)例: 入力 XML データをストリーミング 次の例は、XML ストリーミングのセットアップ方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。 - `streaming=true` - `collectionPath="root.repeated"` `collectionPath`​ 設定では、ストリーミングする要素を選択します。 ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。 #### [](#入力)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは ​`myXML.xml`​ という XML ファイルのコンテンツであるとします。 myXML.xml ```xml Text Mariano de Achaval 36 Shokida Leandro 30 29 Ana Felissati 29 Chibana Christian ``` #### [](#ソース)ソース DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave ​`map`​ 関数を使用して反復キーを反復処理します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"}) output application/dw --- myInput.root.repeated.*user map { n: $.name, l: $.lastName, a: $.age } ``` #### [](#出力)出力 スクリプトは、マップされた入力 XML を DataWeave (dw) 形式および MIME タイプに変換します。 ```json [ { "n": "Mariano", "l": "de Achaval", "a": "36" }, { "n": "Leandro", "l": "Shokida", "a": "30" }, { "n": "Ana", "l": "Felissati", "a": "29" }, { "n": "Christian", "l": "Chibana", "a": "29" } ] ``` ### [](#example2)例: XML の null または空の文字列 XML で ​`null`​ 値を表す標準の方法はないため、​`nil`​ 属性が ​`true`​ に設定されている場合、リーダーは値を ​`null`​ にマップします。 #### [](#入力-2)入力 次の XML が DataWeave ソースへの入力ペイロードとして機能します。 ` の ​`nil`​ 設定に注意してください。 ```xml ``` #### [](#ソース-2)ソース DataWeave スクリプトは入力 XML を JSON 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/json --- payload ``` #### [](#出力-2)出力 出力は JSON 形式です。入力の ​`nil`​ 値が ​`null`​ に変換されていることに注意してください。 ```json { "book": { "author": null } } ``` ### [](#example3)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では ​`nullValueOn`​ のデフォルトを使用するため、​`title`​ および ​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-3)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-3)ソース DataWeave スクリプトは XML 入力を JSON に変換します。デモ目的で ​`nullValueOn`​ のデフォルト (​`blank`​) が明示的に設定されていることに注意してください。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "blank"}) output application/json --- myInput ``` #### [](#出力-3)出力 JSON 出力の ​`title`​ および ​`author`​ キーは ​`null`​ 値に割り当てられます。 ```json { "book": { "author": null, "title": null } } ``` ### [](#example4)例: 欠落している XML 値に対して ​`null`​ 値を出力 XML リーダープロパティ ​`nullValueOn`​ は、値 ​`blank`​ (デフォルト) または ​`empty`​ を受け入れます。 次の例では、XML リーダープロパティ ​`nullValueOn`​ が ​`empty`​ に設定されているため、​`title`​ 要素の値を ​`String`​ にマップし、​`author`​ 要素の値を ​`null`​ にマップします。 #### [](#入力-4)入力 次の XML が DataWeave ソースへの入力として機能します。​`title`​ および ​`author`​ 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。​`title`​ 要素のタグは改行 (非表示文字 ​`\n`​) によって分割されていますが、​`author`​ 要素のタグはどの文字によっても分割されていません。 この入力はファイル ​`myInput.xml`​ 内のコンテンツであるとします。 myXML.xml コンテンツ: ```xml ``` #### [](#ソース-4)ソース DataWeave スクリプトは DataWeave 変数を使用して ​`myXML.xml`​ のコンテンツを入力し、​`nullValueOn: "empty"`​ を適用します。スクリプトは XML 入力を JSON に変換します。 ```dataweave %dw 2.0 var myInput readUrl('classpath://myXML.xml', 'application/xml', {nullValueOn: "empty"}) output application/json --- myInput ``` #### [](#出力-4)出力 JSON 出力では ​`author`​ 要素の値が ​`null`​ にマップされ、​`title`​ 要素の値が ​`String`​ 値の ​`"\n\n"`​ (改行文字) にマップされます。 ```json { "book": { "author": null, "title": "\n\n" } } ``` ### [](#example5)例: XML 属性を DataWeave (dw) 形式で表す 次の例では、XML 属性を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-5)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。 ```xml MuleSoft ``` #### [](#ソース-5)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-5)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML 入力からの属性と空の値がどのように表されているかに注意してください。 ```dataweave { users: { company: "MuleSoft", user @(name: "Leandro",lastName: "Shokida"): "", user @(name: "Mariano",lastName: "Achaval"): "" } } ``` ### [](#example6)例: XML 名前空間を DataWeave (dw) 形式で表す 次の例では、XML 名前空間を正規 DataWeave 表現 (​`application/dw`​ 形式および MIME タイプ) にマップします。 #### [](#入力-6)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。 ```xml Apples Bananas African Coffee Table 80 120 ``` #### [](#ソース-6)ソース DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` #### [](#出力-6)出力 出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。 ```dataweave ns h http://www.w3.org/TR/html4/ ns f https://www.w3schools.com/furniture --- { root: { h#table: { h#tr: { h#td: "Apples", h#td: "Bananas" } }, f#table: { f#name: "African Coffee Table", f#width: "80", f#length: "120" } } } ``` ### [](#example7)例: CDATA 要素を作成 次の例は、​`CData`​ 型を使用して XML 出力内で CDATA 要素を作成する方法を示しています。 #### [](#ソース-7)ソース DataWeave スクリプトの本文では、​`String`​ 値が ​`CData`​ 型に型強制されます。 ```dataweave %dw 2.0 output application/xml --- { test: "A text
" as CData } ``` #### [](#出力-7)出力 出力では、入力の ​`String`​ 値が CDATA ブロックで囲まれ、CDATA ブロックには入力からの特殊文字 (​`<`​ と ​`>`​) が含まれます。 ```xml ]]> ``` ### [](#example8)例: `String`​ に CDATA があるかどうかを確認 次の例は、提供された ​`String`​ 値が CDATA かどうかを示しています。 #### [](#入力-7)入力 この XML が DataWeave ソースへの入力ペイロードとして機能します。​`test`​ 要素に CDATA ブロックが含まれていることに注意してください。 ```xml ]]> ``` #### [](#ソース-8)ソース DataWeave スクリプトは ​`is CData`​ 式を使用して ​`String`​ 値が CDATA かどうかを判別します。 ```dataweave %dw 2.0 output application/json --- { test: payload.test is CDATA } ``` #### [](#出力-8)出力 JSON 出力には、入力の ​`String`​ 値が CDATA であることを示す値 ​`true`​ が含まれます。 ```json { "test": true } ``` ### [](#example9)例: `inlineCloseOn`​ ライタープロパティを使用 次の例では、​`inlineCloseOn`​ ライタープロパティを値 ​`none`​ と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。 #### [](#ソース-9)ソース DataWeave スクリプトは本文コンテンツを XML に変換します。​`emptyElement`​ キーの値が ​`null`​ であることに注意してください。 ```dataweave %dw 2.0 output application/xml inlineCloseOn="none" --- { someXml: { parentElement: { emptyElement1: null, emptyElement2: null, emptyElement3: null } } } ``` #### [](#出力-9)出力 `emptyElement`​ 要素は空です。これに値 ​`null`​ は含まれません。 ```xml ``` ### [](#example10)例: 反復 JSON キーを反復 XML 要素に変換 XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。 次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。 #### [](#入力-8)入力 この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の ​`name`​ キーが反復していることに注意してください。 ```json { "friends": [ {"name": "Mariano"}, {"name": "Shoki"}, {"name": "Tomo"}, {"name": "Ana"} ] } ``` #### [](#ソース-10)ソース DataWeave スクリプトは、​`friends`​ キーの値を選択します。 ```dataweave %dw 2.0 output application/xml --- friends: { (payload.friends) } ``` #### [](#出力-10)出力 出力では、​`name`​ キーが XML 要素として表されます。 ```xml Mariano Shoki Tomo Ana ``` [「自己終了 XML タグの出力」の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-self-closing-xml-tags)​も参照してください。 ### [](#example11)例: XML 要素を JSON に変換して文字を置換する この例では、​`Id`​、​`Name`​、​`Address`​ など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、​`replace`​ 関数を使用して各 ​`Address`​ 要素を反復処理し、文字 ​`-`​ と ​`/`​ を空白スペースに置き換えます。 #### [](#入力-9)入力 この XML 入力が DataWeave ソースへのペイロードとして機能します。​`Address`​ 要素に ​`-`​ と ​`/`​ の文字が含まれていることに注意してください。 ```xml 1 Mule
MuleSoft Avenue - 123
2 Max
MuleSoft Avenue-456/5/e
``` #### [](#ソース-11)ソース 次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。​`payload01.Address replace /([\-\,\/])/ with " "`​ の指示により、​`-`​ と ​`/`​ の文字が空白スペースに置き換えられます。 ```dataweave %dw 2.0 output application/json --- payload.root.*employees map ((payload01 , indexOfPayload01) -> { Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " } ) ``` #### [](#出力-11)出力 出力は、JSON に変換された XML 要素を表します。 ```JSON [ { "Id": "1", "Name": "Mule", "Address": "MuleSoft Avenue 123" }, { "Id": "2", "Name": "Max", "Address": "MuleSoft Avenue 456 5 e" } ] ``` ### [](#example12)例: DTD 値を読み取る 次の DataWeave スクリプトは、​`DocType`​ 値が含まれる XML 入力ペイロードを JSON に変換します。式 ​`payload.^docType`​ を使用して、その文書型ディレクティブの値を抽出します。 #### [](#入力-10)入力 ```xml
TestIdentity Identity
``` #### [](#ソース-12)ソース ```dataweave %dw 2.0 output application/json --- { header: { senderId: payload.cXML.Header.From.Credential.Identity, receiverId: payload.cXML.Header.To.Credential.Identity, docType: payload.^docType } } ``` #### [](#出力-12)出力 ```json { "header": { "senderId": "Identity", "receiverId": "TestIdentity", "docType": { "rootName": "cXML", "systemId": "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" } } } ``` ### [](#example13)例: DTD 値を書き込む 次の例は、​`docType`​ メタデータを使用して XML 出力内で ​`DocType`​ 値を作成する方法を示しています。 #### [](#ソース-13)ソース ```dataweave %dw 2.0 output application/xml ns xml http://www.w3.org/XML/1998/namespace var cXmlObj = { cXML @(payloadID: "9949494", xml#lang: "en-US", timestamp: "2002-02-04T18:39:09-08:00"): { Header: { From: { Credential @(domain: "NetworkId"): { Identity: "Identity" } } } } } as Object { docType: { rootName: "cXML", systemId: "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd" } } --- cXmlObj ``` #### [](#出力-13)出力 ```xml
Identity
``` ### [](#example14)例: DTD 値を文字列表現に変換する 次の例では、​[Dtd Module (dw::xml::Dtd)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-dtd)​ を使用して、​`systemId`​ が含まれる ​`DocType`​ 値を文字列表現に変換します。 #### [](#入力-11)入力 ```xml
Identity Identity
``` #### [](#ソース-14)ソース ```dataweave %dw 2.0 output application/json import * from dw::xml::Dtd --- docTypeAsString(payload.^docType) ``` #### [](#出力-14)出力 ```JSON "cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

collectionPath

String

null

コレクションが配置されているドキュメント内の場所へのパスを設定します。ストリーミングする要素の場所を識別するパス式を受け入れます。

externalEntities

Boolean

false

外部エンティティを処理するかどうかを示します。デフォルトでは、XML 外部エンティティ (XXE) 攻撃を回避するために無効になっています。

有効な値は、​true​ または ​false​ です。

indexedReader

Boolean

true

しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。

有効な値は、​true​ または ​false​ です。

maxAttributeSize

Number

-1

XML 属性で受け入れられる最大文字数を設定します。 Mule 4.2.1 以降で使用できます。

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

nullValueOn

String

'blank'

空または空白のテキストを含む要素を ​null​ 値として読み取るかどうかを示します。

有効な値は ​empty​、​none​、​blank​ です。

optimizeFor

String

'speed'

使用する XML パーサーの最適化の種別を設定します。

有効な値は、​speed​ または ​memory​ です。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

supportDtd

Boolean

false

DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。Mule システムプロパティ ​com.mulesoft.dw.xml.supportDTD​ を設定してこのプロパティを有効にすることもできます。このプロパティのデフォルトは、Mule バージョン 4.3.0-20210601 (2021 年 6 月の DataWeave バージョン 2.3.0 のパッチを含む) で ​true​ から ​false​ に変更されました。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

defaultNamespace

String

null

出力 XML のデフォルトの名前空間を指定します。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

doubleQuoteInDeclaration

Boolean

false

true​ に設定すると、XML 宣言の二重引用符をエスケープします。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escapeCR

Boolean

false

true​ に設定すると、​CR​ 文字をエスケープします。

有効な値は、​true​ または ​false​ です。

escapeGT

Boolean

false

true​ に設定すると、「>」文字をエスケープします。

有効な値は、​true​ または ​false​ です。

indent

Boolean

true

デフォルトでは出力をインデントして読みやすくします。​false​ に設定すると、出力を 1 行に圧縮します。

有効な値は、​true​ または ​false​ です。

inlineCloseOn

String

'empty'

インラインの終了タグを出力します。この値が ​null​ の場合は明示的に開始および終了タグを出力します。

有効な値は、​empty​ または ​none​ です。

onInvalidChar

String

null

有効な値は ​base64​、​ignore​、​none​ です。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • elements​ + XML 出力内の ​null​ 要素を無視して除外します。たとえば、​output application/xml skipNullOn="arrays"​ のようにします。

  • attributes `​ + XML 内の ​`null​ 属性を無視して除外します。たとえば、​output application/xml skipNullOn="objects"​ のようにします。

  • everywhere​ + ​skipNullOn​ を要素と属性に適用します。たとえば、​output application/xml skipNullOn="everywhere"​ のようにします。

有効な値は ​elements​、​attributes​、​everywhere​ です。

writeDeclaration

Boolean

true

true​ に設定すると、XML ヘッダー宣言を出力します。

有効な値は、​true​ または ​false​ です。

writeDeclaredNamespaces

String

null

XML のルート要素内の宣言する名前空間をマークします。

  • All​: ルート要素内の宣言された名前空間をすべて出力します。

  • ids:<comma separated namespace id>​: 指定された名前空間のみを出力します。

  • regex:<regex>​: 一致する名前空間のみを出力します。

writeNilOnNull

Boolean

false

このプロパティが ​true​ に設定されている場合、​null​ 値の ​nil​ 属性を出力します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/xml

/​+xml

# XML 要素の選択 DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- payload.language ``` 入力 XML ペイロード: ```json DataWeave ``` 出力 XML: ```json DataWeave ``` 1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { myroot: payload.root } ``` 入力 XML ペイロード: ```json SE1 E2 ``` 出力 XML: ```json SE1 E2 ``` 次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { newname : payload.language.name } ``` 入力 XML ペイロード: ```json DataWeave 2.0 ``` 出力 XML: ```json DataWeave ``` 次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { version : payload.language[1] } ``` 入力 XML ペイロード: ```json DataWeave 2.0 ``` 出力 XML: ```json 2.0 ``` 入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { mysubelement : payload.root[0].subelement1 } ``` 入力 XML ペイロード: ```json SE1 E2 ``` 出力 XML: ```json SE1 ``` # XML 要素の選択 DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- payload.language ``` 入力 XML ペイロード: ```xml DataWeave ``` 出力 XML: ```xml DataWeave ``` 1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { myroot: payload.root } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 E2 ``` 次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { newname : payload.language.name } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml DataWeave ``` 次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { version : payload.language[1] } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml 2.0 ``` 入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { mysubelement : payload.root[0].subelement1 } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 ``` # XML 要素の選択 DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- payload.language ``` 入力 XML ペイロード: ```xml DataWeave ``` 出力 XML: ```xml DataWeave ``` 1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { myroot: payload.root } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 E2 ``` 次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { newname : payload.language.name } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml DataWeave ``` 次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { version : payload.language[1] } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml 2.0 ``` 入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { mysubelement : payload.root[0].subelement1 } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 ``` # XML 要素の選択 DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- payload.language ``` 入力 XML ペイロード: ```xml DataWeave ``` 出力 XML: ```xml DataWeave ``` 1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { myroot: payload.root } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 E2 ``` 次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { newname : payload.language.name } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml DataWeave ``` 次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { version : payload.language[1] } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml 2.0 ``` 入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { mysubelement : payload.root[0].subelement1 } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 ``` # XML 要素の選択 DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- payload.language ``` 入力 XML ペイロード: ```xml DataWeave ``` 出力 XML: ```xml DataWeave ``` 1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { myroot: payload.root } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 E2 ``` 次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { newname : payload.language.name } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml DataWeave ``` 次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { version : payload.language[1] } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml 2.0 ``` 入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { mysubelement : payload.root[0].subelement1 } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 ``` # XML 要素の選択 DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- payload.language ``` 入力 XML ペイロード: ```xml DataWeave ``` 出力 XML: ```xml DataWeave ``` 1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { myroot: payload.root } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 E2 ``` 次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { newname : payload.language.name } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml DataWeave ``` 次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { version : payload.language[1] } ``` 入力 XML ペイロード: ```xml DataWeave 2.0 ``` 出力 XML: ```xml 2.0 ``` 入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { mysubelement : payload.root[0].subelement1 } ``` 入力 XML ペイロード: ```xml SE1 E2 ``` 出力 XML: ```xml SE1 ``` # xsiType ## [](#xsitype1)xsiType(String, Namespace) `xsi:type`​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。 _DataWeave 2.2.2 で導入されました。Mule 4.2.2 以降でサポートされます。_​ ### [](#パラメーター)パラメーター
名前 説明

​name

プレフィックスなしで参照されるスキーマ ​type​ の名前。

​namespace

この型の名前空間。

### [](#例)例 次の例では、さまざまな入力での ​`xsiType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/xml ns acme http://acme.com --- { user @((xsiType("user", acme))): { name: "Peter", lastName: "Parker" } } ``` #### [](#出力)出力 ```Xml Peter Parker ``` # xsiType ## [](#xsitype1)xsiType(name: String, namespace: Namespace) `xsi:type`​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。 _DataWeave バージョン 2.2.2 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​name

プレフィックスなしで参照されるスキーマ ​type​ の名前。

​namespace

この型の名前空間。

### [](#例)例 次の例では、さまざまな入力での ​`xsiType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/xml ns acme http://acme.com --- { user @((xsiType("user", acme))): { name: "Peter", lastName: "Parker" } } ``` #### [](#出力)出力 ```Xml Peter Parker ``` # xsiType ## [](#xsitype1)xsiType(name: String, namespace: Namespace) `xsi:type`​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

name

プレフィックスなしで参照されるスキーマ ​type​ の名前。

namespace

この型の名前空間。

### [](#例)例 次の例では、さまざまな入力での ​`xsiType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/xml ns acme http://acme.com --- { user @((xsiType("user", acme))): { name: "Peter", lastName: "Parker" } } ``` #### [](#出力)出力 ```Xml Peter Parker ``` # xsiType ## [](#xsitype1)xsiType(name: String, namespace: Namespace) `xsi:type`​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

name

プレフィックスなしで参照されるスキーマ ​type​ の名前。

namespace

この型の名前空間。

### [](#例)例 次の例では、さまざまな入力での ​`xsiType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/xml ns acme http://acme.com --- { user @((xsiType("user", acme))): { name: "Peter", lastName: "Parker" } } ``` #### [](#出力)出力 ```Xml Peter Parker ``` # xsiType ## [](#xsitype1)xsiType(name: String, namespace: Namespace) `xsi:type`​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

name

プレフィックスなしで参照されるスキーマ ​type​ の名前。

namespace

この型の名前空間。

### [](#例)例 次の例では、さまざまな入力での ​`xsiType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/xml ns acme http://acme.com --- { user @((xsiType("user", acme))): { name: "Peter", lastName: "Parker" } } ``` #### [](#出力)出力 ```Xml Peter Parker ``` # xsiType ## [](#xsitype1)xsiType(name: String, namespace: Namespace) `xsi:type`​ 型の属性を作成します。このメソッドはオブジェクトを返すため、動的属性と共に使用する必要があります。 _DataWeave バージョン 2.2.2 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

name

プレフィックスなしで参照されるスキーマ ​type​ の名前。

namespace

この型の名前空間。

### [](#例)例 次の例では、さまざまな入力での ​`xsiType`​ の動作を示します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/xml ns acme http://acme.com --- { user @((xsiType("user", acme))): { name: "Peter", lastName: "Parker" } } ``` #### [](#出力)出力 ```Xml Peter Parker ``` # YAML 形式 MIME タイプ: `application/yaml`​ ID: `yaml`​ YAML データ形式の値は DataWeave 値に一対一でマップされます。 DataWeave では、次のすべての YAML 型がサポートされます。 - `String`​ - `Boolean`​ - `Number`​ - `Nil`​ - `Mapping`​ - `Sequences` ## [](#examples)例: YAML を DataWeave 形式 (dw) で表す 次の例は、YAML 値が DataWeave でどのように表されるかを示しています。 ### [](#入力)入力 この例では、次の YAML スニペットが DataWeave ソースの入力ペイロードとして機能します。 ```yaml american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves ``` ### [](#取得元)取得元 DataWeave スクリプトは、YAML エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 次の出力は、YAML 入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } ``` ## [](#properties)Configuration のプロパティ DataWeave では、YAML 形式に対して次の設定プロパティがサポートされます。 ### [](#reader-のプロパティ)Reader のプロパティ YAML 形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

​maxEntityCount

​Number

​1

エンティティ拡張の最大数。この制限は、Billion Laughs 攻撃 (サービス拒否攻撃) を回避するために指定します。

### [](#writer-のプロパティ)Writer のプロパティ YAML 形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​encoding

​String

​UTF-8

使用するライターのエンコード。

​skipNullOn

​String

​null

指定されたデータ構造の ​null​ 値をスキップします。有効な値は、​arrays​、​objects​、​everywhere​ です。プロパティを設定しない限り、ライターはこの値をスキップしません。

## [](#mime_type)サポートされる MIME タイプ YAML 形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/yaml​

text/yaml​

application/x-yaml​

text/x-yaml​

# YAML 形式 MIME タイプ: `application/yaml`​ ID: `yaml`​ YAML データ形式の値は DataWeave 値に一対一でマップされます。 DataWeave では、次のすべての YAML 型がサポートされます。 - `String`​ - `Boolean`​ - `Number`​ - `Nil`​ - `Mapping`​ - `Sequences` ## [](#examples_yaml)例: YAML を DataWeave 形式 (dw) で表す 次の例は、YAML 値が DataWeave でどのように表されるかを示しています。 ### [](#入力)入力 この例では、次の YAML スニペットが DataWeave ソースの入力ペイロードとして機能します。 ```yaml american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves ``` ### [](#ソース)ソース DataWeave スクリプトは、YAML エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 次の出力は、YAML 入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

maxEntityCount​

Number​

​1​

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding​

String​

​'UTF-8'​

出力で使用するエンコーディング (UTF-8 など)。

skipNullOn​

String​

​null​

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + YAML 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/yaml skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/yaml skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/yaml skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeDeclaration​

Boolean​

​true​

ヘッダーの宣言を書き込むかどうかを示します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/yaml​

text/yaml​

application/x-yaml​

text/x-yaml​

# YAML 形式 MIME タイプ: `application/yaml` ID: `yaml` YAML データ形式の値は DataWeave 値に一対一でマップされます。 DataWeave では、次のすべての YAML 型がサポートされます。 - `String` - `Boolean` - `Number` - `Nil` - `Mapping` - `Sequences` ## [](#examples_yaml)例: YAML を DataWeave 形式 (dw) で表す 次の例は、YAML 値が DataWeave でどのように表されるかを示しています。 ### [](#入力)入力 この例では、次の YAML スニペットが DataWeave ソースの入力ペイロードとして機能します。 ```yaml american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves ``` ### [](#ソース)ソース DataWeave スクリプトは、YAML エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 次の出力は、YAML 入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + YAML 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/yaml skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/yaml skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/yaml skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeDeclaration

Boolean

true

ヘッダーの宣言を書き込むかどうかを示します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/yaml

text/yaml

application/x-yaml

text/x-yaml

# YAML 形式 MIME タイプ: `application/yaml` ID: `yaml` YAML データ形式の値は DataWeave 値に一対一でマップされます。 DataWeave では、次のすべての YAML 型がサポートされます。 - `String` - `Boolean` - `Number` - `Nil` - `Mapping` - `Sequences` ## [](#examples_yaml)例: YAML を DataWeave 形式 (dw) で表す 次の例は、YAML 値が DataWeave でどのように表されるかを示しています。 ### [](#入力)入力 この例では、次の YAML スニペットが DataWeave ソースの入力ペイロードとして機能します。 ```yaml american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves ``` ### [](#ソース)ソース DataWeave スクリプトは、YAML エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 次の出力は、YAML 入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + YAML 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/yaml skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/yaml skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/yaml skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeDeclaration

Boolean

true

ヘッダーの宣言を書き込むかどうかを示します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/yaml

text/yaml

application/x-yaml

text/x-yaml

# YAML 形式 MIME タイプ: `application/yaml` ID: `yaml` YAML データ形式の値は DataWeave 値に一対一でマップされます。 DataWeave では、次のすべての YAML 型がサポートされます。 - `String` - `Boolean` - `Number` - `Nil` - `Mapping` - `Sequences` ## [](#examples_yaml)例: YAML を DataWeave 形式 (dw) で表す 次の例は、YAML 値が DataWeave でどのように表されるかを示しています。 ### [](#入力)入力 この例では、次の YAML スニペットが DataWeave ソースの入力ペイロードとして機能します。 ```yaml american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves ``` ### [](#ソース)ソース DataWeave スクリプトは、YAML エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 次の出力は、YAML 入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + YAML 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/yaml skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/yaml skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/yaml skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeDeclaration

Boolean

true

ヘッダーの宣言を書き込むかどうかを示します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/yaml

text/yaml

application/x-yaml

text/x-yaml

# YAML 形式 MIME タイプ: `application/yaml` ID: `yaml` YAML データ形式の値は DataWeave 値に一対一でマップされます。 DataWeave では、次のすべての YAML 型がサポートされます。 - `String` - `Boolean` - `Number` - `Nil` - `Mapping` - `Sequences` ## [](#examples_yaml)例: YAML を DataWeave 形式 (dw) で表す 次の例は、YAML 値が DataWeave でどのように表されるかを示しています。 ### [](#入力)入力 この例では、次の YAML スニペットが DataWeave ソースの入力ペイロードとして機能します。 ```yaml american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves ``` ### [](#ソース)ソース DataWeave スクリプトは、YAML エンコードされた入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 次の出力は、YAML 入力が DataWeave (​`dw`​) 形式でどのように表わされるかを示しています。 ```dataweave { "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

maxEntityCount

Number

1

エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

'UTF-8'

出力で使用するエンコード (UTF-8 など)。

skipNullOn

String

null

指定されたデータ構造の ​null​ 値をスキップします。デフォルトではスキップしません。

  • arrays​ + YAML 出力の配列内の ​null​ 値を無視して除外します。たとえば、​output application/yaml skipNullOn="arrays"​ のようにします。

  • objects​ + 値が ​null​ のキー-値ペア (例: output application/yaml skipNullOn="objects"​) を無視します。

  • everywhere​ + ​skipNullOn​ を配列とオブジェクトに適用します。たとえば、​output application/yaml skipNullOn="everywhere"​ のようにします。

有効な値は ​arrays​、​objects​、​everywhere​ です。

writeDeclaration

Boolean

true

ヘッダーの宣言を書き込むかどうかを示します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/yaml

text/yaml

application/x-yaml

text/x-yaml

# years ## [](#years1)years(nYears: Number): Period 指定された年数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​nYears

年数の整数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`years`​ の動作を示します。 DateTime (日時) 値に 1 年を加算し、整数 4 を Period (期間) 形式の年数 (​`P4Y`​) に変換します。 `years(-1) + years(2)`​ では月数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextYear: |2020-10-05T20:22:34.385Z| + years(1), fourYearPeriod: years(4), addNegativeValue: years(-1) + years(2) } ``` #### [](#出力)出力 ```Json { "nextYear": "2021-10-05T20:22:34.385Z", "fourYearPeriod": "P4Y", "addNegativeValue": 12 } ``` # years ## [](#years1)years(nYears: Number): Period 指定された年数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nYears

年数の整数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`years`​ の動作を示します。 DateTime (日時) 値に 1 年を加算し、整数 4 を Period (期間) 形式の年数 (​`P4Y`​) に変換します。 `years(-1) + years(2)`​ では月数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextYear: |2020-10-05T20:22:34.385Z| + years(1), fourYearPeriod: years(4), addNegativeValue: years(-1) + years(2) } ``` #### [](#出力)出力 ```Json { "nextYear": "2021-10-05T20:22:34.385Z", "fourYearPeriod": "P4Y", "addNegativeValue": 12 } ``` # years ## [](#years1)years(nYears: Number): Period 指定された年数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nYears

年数の整数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`years`​ の動作を示します。 DateTime (日時) 値に 1 年を加算し、整数 4 を Period (期間) 形式の年数 (​`P4Y`​) に変換します。 `years(-1) + years(2)`​ では月数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextYear: |2020-10-05T20:22:34.385Z| + years(1), fourYearPeriod: years(4), addNegativeValue: years(-1) + years(2) } ``` #### [](#出力)出力 ```Json { "nextYear": "2021-10-05T20:22:34.385Z", "fourYearPeriod": "P4Y", "addNegativeValue": 12 } ``` # years ## [](#years1)years(nYears: Number): Period 指定された年数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nYears

年数の整数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`years`​ の動作を示します。 DateTime (日時) 値に 1 年を加算し、整数 4 を Period (期間) 形式の年数 (​`P4Y`​) に変換します。 `years(-1) + years(2)`​ では月数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextYear: |2020-10-05T20:22:34.385Z| + years(1), fourYearPeriod: years(4), addNegativeValue: years(-1) + years(2) } ``` #### [](#出力)出力 ```Json { "nextYear": "2021-10-05T20:22:34.385Z", "fourYearPeriod": "P4Y", "addNegativeValue": 12 } ``` # years ## [](#years1)years(nYears: Number): Period 指定された年数から Period (期間) 値を作成します。 この関数では、​`period`​ 関数を入力値に適用します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

nYears

年数の整数。 正または負の数値が有効です。

### [](#例)例 次の例では、さまざまな入力での ​`years`​ の動作を示します。 DateTime (日時) 値に 1 年を加算し、整数 4 を Period (期間) 形式の年数 (​`P4Y`​) に変換します。 `years(-1) + years(2)`​ では月数が返されます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Periods output application/json --- { nextYear: |2020-10-05T20:22:34.385Z| + years(1), fourYearPeriod: years(4), addNegativeValue: years(-1) + years(2) } ``` #### [](#出力)出力 ```Json { "nextYear": "2021-10-05T20:22:34.385Z", "fourYearPeriod": "P4Y", "addNegativeValue": 12 } ``` # yesterday ## [](#yesterday1)yesterday(): Date 昨日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#例)例 次の例では、​`yesterday`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- yesterday() ``` #### [](#出力)出力 ```Json "2021-05-14" ``` # yesterday ## [](#yesterday1)yesterday(): Date 昨日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`yesterday`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- yesterday() ``` #### [](#出力)出力 ```Json "2021-05-14" ``` # yesterday ## [](#yesterday1)yesterday(): Date 昨日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`yesterday`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- yesterday() ``` #### [](#出力)出力 ```Json "2021-05-14" ``` # yesterday ## [](#yesterday1)yesterday(): Date 昨日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`yesterday`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- yesterday() ``` #### [](#出力)出力 ```Json "2021-05-14" ``` # yesterday ## [](#yesterday1)yesterday(): Date 昨日の日付を ​`Date`​ 型として返します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#例)例 次の例では、​`yesterday`​ 関数の出力を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import * from dw::core::Dates output application/json --- yesterday() ``` #### [](#出力)出力 ```Json "2021-05-14" ``` # zip ## [](#zip1)zip(Array, Array): Array> 2 つの配列からの要素を配列の配列にマージします。 出力配列内の 1 番目のサブ配列には、入力サブ配列の 1 番目のインデックスが含まれます。2 番目のインデックスには入力の 2 番目のインデックスが含まれ、3 番目には 3 番目のインデックスが含まれ、各配列内に同じ番号のインデックスがあれば、以降同様にインデックスが含まれます。 ### [](#パラメーター)パラメーター
名前 説明

​left

関数の左側の配列。

​right

関数の右側の配列。

### [](#例)例 次の例では、​`zip`​ の左側と右側にある配列を組み合わせます。返された配列の配列の 1 番目のインデックス (​`[0,1]`​) には、指定された各配列の 1 番目のインデックスが含まれます。出力配列の 2 番目のインデックス (​`[1,"b"]`​) には、指定された各配列の 2 番目のインデックスが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0,1] zip ["a","b"] ``` #### [](#出力)出力 ```JSON [ [0,"a"], [1,"b"] ] ``` ### [](#例-2)例 次の例では、左側の配列と右側の配列の要素を組み合わせます。同じインデックスの対応要素がある要素のみが配列で返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"], "b" : [0, 1, 2, 3] zip ["a"], "c" : [0, 1, 2, 3] zip ["a", "b"], "d" : [0, 1, 2] zip ["a", "b", "c", "d"] } ``` #### [](#出力-2)出力 ```JSON { "a": [ [0,"a"], [1,"b"], [2,"c"], [3,"d"] ], "b": [ [0,"a"] ], "c": [ [0,"a"], [1,"b"] ], "d": [ [0,"a"], [1,"b"], [2,"c"] ] } ``` ### [](#例-3)例 次の例では、3 つ以上の配列を組み合わせます。​`list4`​ の ​`["aA", "bB"]`​ からの項目は出力に含まれません。他の入力配列に含まれるインデックスが 2 個のみのためです。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json var myvar = { "list1": ["a", "b"], "list2": [1, 2, 3], "list3": ["aa", "bb"], "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]] } --- ((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4 ``` #### [](#出力-3)出力 ```JSON [ [ [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ] ], [ [ [ "b", 2 ], "bb" ], [ 11, 12 ] ] ] ``` # zip ## [](#zip1)zip(left: Array, right: Array): Array> 2 つの配列からの要素を配列の配列にマージします。 出力配列内の 1 番目のサブ配列には、入力サブ配列の 1 番目のインデックスが含まれます。2 番目のインデックスには入力の 2 番目のインデックスが含まれ、3 番目には 3 番目のインデックスが含まれ、各配列内に同じ番号のインデックスがあれば、以降同様にインデックスが含まれます。 ### [](#パラメーター)パラメーター
名前 説明

​left

関数の左側の配列。

​right

関数の右側の配列。

### [](#例)例 次の例では、​`zip`​ の左側と右側にある配列を組み合わせます。返された配列の配列の 1 番目のインデックス (​`[0,1]`​) には、指定された各配列の 1 番目のインデックスが含まれます。出力配列の 2 番目のインデックス (​`[1,"b"]`​) には、指定された各配列の 2 番目のインデックスが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0,1] zip ["a","b"] ``` #### [](#出力)出力 ```JSON [ [0,"a"], [1,"b"] ] ``` ### [](#例-2)例 次の例では、左側の配列と右側の配列の要素を組み合わせます。同じインデックスの対応要素がある要素のみが配列で返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"], "b" : [0, 1, 2, 3] zip ["a"], "c" : [0, 1, 2, 3] zip ["a", "b"], "d" : [0, 1, 2] zip ["a", "b", "c", "d"] } ``` #### [](#出力-2)出力 ```JSON { "a": [ [0,"a"], [1,"b"], [2,"c"], [3,"d"] ], "b": [ [0,"a"] ], "c": [ [0,"a"], [1,"b"] ], "d": [ [0,"a"], [1,"b"], [2,"c"] ] } ``` ### [](#例-3)例 次の例では、3 つ以上の配列を組み合わせます。​`list4`​ の ​`["aA", "bB"]`​ からの項目は出力に含まれません。他の入力配列に含まれるインデックスが 2 個のみのためです。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json var myvar = { "list1": ["a", "b"], "list2": [1, 2, 3], "list3": ["aa", "bb"], "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]] } --- ((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4 ``` #### [](#出力-3)出力 ```JSON [ [ [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ] ], [ [ [ "b", 2 ], "bb" ], [ 11, 12 ] ] ] ``` # zip ## [](#zip1)zip(left: Array, right: Array): Array> 2 つの配列からの要素を配列の配列にマージします。 出力配列内の 1 番目のサブ配列には、入力サブ配列の 1 番目のインデックスが含まれます。2 番目のインデックスには入力の 2 番目のインデックスが含まれ、3 番目には 3 番目のインデックスが含まれ、各配列内に同じ番号のインデックスがあれば、以降同様にインデックスが含まれます。 ### [](#パラメーター)パラメーター
名前 説明

left

関数の左側の配列。

right

関数の右側の配列。

### [](#例)例 次の例では、​`zip`​ の左側と右側にある配列を組み合わせます。返された配列の配列の 1 番目のインデックス (​`[0,1]`​) には、指定された各配列の 1 番目のインデックスが含まれます。出力配列の 2 番目のインデックス (​`[1,"b"]`​) には、指定された各配列の 2 番目のインデックスが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0,1] zip ["a","b"] ``` #### [](#出力)出力 ```JSON [ [0,"a"], [1,"b"] ] ``` ### [](#例-2)例 次の例では、左側の配列と右側の配列の要素を組み合わせます。同じインデックスの対応要素がある要素のみが配列で返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"], "b" : [0, 1, 2, 3] zip ["a"], "c" : [0, 1, 2, 3] zip ["a", "b"], "d" : [0, 1, 2] zip ["a", "b", "c", "d"] } ``` #### [](#出力-2)出力 ```JSON { "a": [ [0,"a"], [1,"b"], [2,"c"], [3,"d"] ], "b": [ [0,"a"] ], "c": [ [0,"a"], [1,"b"] ], "d": [ [0,"a"], [1,"b"], [2,"c"] ] } ``` ### [](#例-3)例 次の例では、3 つ以上の配列を組み合わせます。​`list4`​ の ​`["aA", "bB"]`​ からの項目は出力に含まれません。他の入力配列に含まれるインデックスが 2 個のみのためです。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json var myvar = { "list1": ["a", "b"], "list2": [1, 2, 3], "list3": ["aa", "bb"], "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]] } --- ((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4 ``` #### [](#出力-3)出力 ```JSON [ [ [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ] ], [ [ [ "b", 2 ], "bb" ], [ 11, 12 ] ] ] ``` # zip ## [](#zip1)zip(left: Array, right: Array): Array> 2 つの配列からの要素を配列の配列にマージします。 出力配列内の 1 番目のサブ配列には、入力サブ配列の 1 番目のインデックスが含まれます。2 番目のインデックスには入力の 2 番目のインデックスが含まれ、3 番目には 3 番目のインデックスが含まれ、各配列内に同じ番号のインデックスがあれば、以降同様にインデックスが含まれます。 ### [](#パラメーター)パラメーター
名前 説明

left

関数の左側の配列。

right

関数の右側の配列。

### [](#例)例 次の例では、​`zip`​ の左側と右側にある配列を組み合わせます。返された配列の配列の 1 番目のインデックス (​`[0,1]`​) には、指定された各配列の 1 番目のインデックスが含まれます。出力配列の 2 番目のインデックス (​`[1,"b"]`​) には、指定された各配列の 2 番目のインデックスが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0,1] zip ["a","b"] ``` #### [](#出力)出力 ```JSON [ [0,"a"], [1,"b"] ] ``` ### [](#例-2)例 次の例では、左側の配列と右側の配列の要素を組み合わせます。同じインデックスの対応要素がある要素のみが配列で返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"], "b" : [0, 1, 2, 3] zip ["a"], "c" : [0, 1, 2, 3] zip ["a", "b"], "d" : [0, 1, 2] zip ["a", "b", "c", "d"] } ``` #### [](#出力-2)出力 ```JSON { "a": [ [0,"a"], [1,"b"], [2,"c"], [3,"d"] ], "b": [ [0,"a"] ], "c": [ [0,"a"], [1,"b"] ], "d": [ [0,"a"], [1,"b"], [2,"c"] ] } ``` ### [](#例-3)例 次の例では、3 つ以上の配列を組み合わせます。​`list4`​ の ​`["aA", "bB"]`​ からの項目は出力に含まれません。他の入力配列に含まれるインデックスが 2 個のみのためです。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json var myvar = { "list1": ["a", "b"], "list2": [1, 2, 3], "list3": ["aa", "bb"], "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]] } --- ((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4 ``` #### [](#出力-3)出力 ```JSON [ [ [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ] ], [ [ [ "b", 2 ], "bb" ], [ 11, 12 ] ] ] ``` # zip ## [](#zip1)zip(left: Array, right: Array): Array> 2 つの配列からの要素を配列の配列にマージします。 出力配列内の 1 番目のサブ配列には、入力サブ配列の 1 番目のインデックスが含まれます。2 番目のインデックスには入力の 2 番目のインデックスが含まれ、3 番目には 3 番目のインデックスが含まれ、各配列内に同じ番号のインデックスがあれば、以降同様にインデックスが含まれます。 ### [](#パラメーター)パラメーター
名前 説明

left

関数の左側の配列。

right

関数の右側の配列。

### [](#例)例 次の例では、​`zip`​ の左側と右側にある配列を組み合わせます。返された配列の配列の 1 番目のインデックス (​`[0,1]`​) には、指定された各配列の 1 番目のインデックスが含まれます。出力配列の 2 番目のインデックス (​`[1,"b"]`​) には、指定された各配列の 2 番目のインデックスが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0,1] zip ["a","b"] ``` #### [](#出力)出力 ```JSON [ [0,"a"], [1,"b"] ] ``` ### [](#例-2)例 次の例では、左側の配列と右側の配列の要素を組み合わせます。同じインデックスの対応要素がある要素のみが配列で返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"], "b" : [0, 1, 2, 3] zip ["a"], "c" : [0, 1, 2, 3] zip ["a", "b"], "d" : [0, 1, 2] zip ["a", "b", "c", "d"] } ``` #### [](#出力-2)出力 ```JSON { "a": [ [0,"a"], [1,"b"], [2,"c"], [3,"d"] ], "b": [ [0,"a"] ], "c": [ [0,"a"], [1,"b"] ], "d": [ [0,"a"], [1,"b"], [2,"c"] ] } ``` ### [](#例-3)例 次の例では、3 つ以上の配列を組み合わせます。​`list4`​ の ​`["aA", "bB"]`​ からの項目は出力に含まれません。他の入力配列に含まれるインデックスが 2 個のみのためです。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json var myvar = { "list1": ["a", "b"], "list2": [1, 2, 3], "list3": ["aa", "bb"], "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]] } --- ((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4 ``` #### [](#出力-3)出力 ```JSON [ [ [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ] ], [ [ [ "b", 2 ], "bb" ], [ 11, 12 ] ] ] ``` # zip ## [](#zip1)zip(left: Array, right: Array): Array> 2 つの配列からの要素を配列の配列にマージします。 出力配列内の 1 番目のサブ配列には、入力サブ配列の 1 番目のインデックスが含まれます。2 番目のインデックスには入力の 2 番目のインデックスが含まれ、3 番目には 3 番目のインデックスが含まれ、各配列内に同じ番号のインデックスがあれば、以降同様にインデックスが含まれます。 ### [](#パラメーター)パラメーター
名前 説明

left

関数の左側の配列。

right

関数の右側の配列。

### [](#例)例 次の例では、​`zip`​ の左側と右側にある配列を組み合わせます。返された配列の配列の 1 番目のインデックス (​`[0,1]`​) には、指定された各配列の 1 番目のインデックスが含まれます。出力配列の 2 番目のインデックス (​`[1,"b"]`​) には、指定された各配列の 2 番目のインデックスが含まれます。 #### [](#ソース)ソース ```DataWeave %dw 2.0 output application/json --- [0,1] zip ["a","b"] ``` #### [](#出力)出力 ```JSON [ [0,"a"], [1,"b"] ] ``` ### [](#例-2)例 次の例では、左側の配列と右側の配列の要素を組み合わせます。同じインデックスの対応要素がある要素のみが配列で返されます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 output application/json --- { "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"], "b" : [0, 1, 2, 3] zip ["a"], "c" : [0, 1, 2, 3] zip ["a", "b"], "d" : [0, 1, 2] zip ["a", "b", "c", "d"] } ``` #### [](#出力-2)出力 ```JSON { "a": [ [0,"a"], [1,"b"], [2,"c"], [3,"d"] ], "b": [ [0,"a"] ], "c": [ [0,"a"], [1,"b"] ], "d": [ [0,"a"], [1,"b"], [2,"c"] ] } ``` ### [](#例-3)例 次の例では、3 つ以上の配列を組み合わせます。​`list4`​ の ​`["aA", "bB"]`​ からの項目は出力に含まれません。他の入力配列に含まれるインデックスが 2 個のみのためです。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 output application/json var myvar = { "list1": ["a", "b"], "list2": [1, 2, 3], "list3": ["aa", "bb"], "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]] } --- ((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4 ``` #### [](#出力-3)出力 ```JSON [ [ [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ] ], [ [ [ "b", 2 ], "bb" ], [ 11, 12 ] ] ] ``` # オブジェクトキーのマップ この DataWeave 例では、​`mapObject`​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、​`(sheet)1`​、​`(sheet)2`​) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が ​`append`​ オブジェクトの ​`Id`​ キーの値に等しい場合、別のオブジェクト ​`append`​ を最後の項目として一致するシート配列に追加します。 例では、​`fun extractNumber`​ 関数を使用してシートページ名 ​`pageName`​ からシート番号を抽出します。 続いて、DataWeave 関数の ​`mapObject`​ はルートのすべてのシートで反復され、​`extractNumber`​ が ​`append.Id`​ 値に一致する場合、この関数によって ​`append`​ オブジェクトが一致するシートオブジェクトに追加されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var append = { "Id": "2", "Access": "4444", "Subteam": "1", } fun extractNumber(pageName: Key) = (pageName as String match /\(sheet\)([0-9]+)/)[1] --- payload mapObject ((value, key, index) -> do { if(extractNumber(key) == append.Id) {(key): value << append} else {(key): value} }) ``` 入力 JSON ペイロード: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 } ] } ``` 出力 JSON: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 }, { "Id": "2", "Access": "4444", "Subteam": "1" } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # オブジェクトキーのマップ この DataWeave 例では、​`mapObject`​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、​`(sheet)1`​、​`(sheet)2`​) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が ​`append`​ オブジェクトの ​`Id`​ キーの値に等しい場合、別のオブジェクト ​`append`​ を最後の項目として一致するシート配列に追加します。 例では、​`fun extractNumber`​ 関数を使用してシートページ名 ​`pageName`​ からシート番号を抽出します。 続いて、DataWeave 関数の ​`mapObject`​ はルートのすべてのシートで反復され、​`extractNumber`​ が ​`append.Id`​ 値に一致する場合、この関数によって ​`append`​ オブジェクトが一致するシートオブジェクトに追加されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var append = { "Id": "2", "Access": "4444", "Subteam": "1", } fun extractNumber(pageName: Key) = (pageName as String match /\(sheet\)([0-9]+)/)[1] --- payload mapObject ((value, key, index) -> do { if(extractNumber(key) == append.Id) {(key): value << append} else {(key): value} }) ``` 入力 JSON ペイロード: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 } ] } ``` 出力 JSON: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 }, { "Id": "2", "Access": "4444", "Subteam": "1" } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # オブジェクトキーのマップ この DataWeave 例では、​`mapObject`​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、​`(sheet)1`​、​`(sheet)2`​) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が ​`append`​ オブジェクトの ​`Id`​ キーの値に等しい場合、別のオブジェクト ​`append`​ を最後の項目として一致するシート配列に追加します。 例では、​`fun extractNumber`​ 関数を使用してシートページ名 ​`pageName`​ からシート番号を抽出します。 続いて、DataWeave 関数の ​`mapObject`​ はルートのすべてのシートで反復され、​`extractNumber`​ が ​`append.Id`​ 値に一致する場合、この関数によって ​`append`​ オブジェクトが一致するシートオブジェクトに追加されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var append = { "Id": "2", "Access": "4444", "Subteam": "1", } fun extractNumber(pageName: Key) = (pageName as String match /\(sheet\)([0-9]+)/)[1] --- payload mapObject ((value, key, index) -> do { if(extractNumber(key) == append.Id) {(key): value << append} else {(key): value} }) ``` 入力 JSON ペイロード: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 } ] } ``` 出力 JSON: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 }, { "Id": "2", "Access": "4444", "Subteam": "1" } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # オブジェクトキーのマップ この DataWeave 例では、​`mapObject`​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、​`(sheet)1`​、​`(sheet)2`​) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が ​`append`​ オブジェクトの ​`Id`​ キーの値に等しい場合、別のオブジェクト ​`append`​ を最後の項目として一致するシート配列に追加します。 例では、​`fun extractNumber`​ 関数を使用してシートページ名 ​`pageName`​ からシート番号を抽出します。 続いて、DataWeave 関数の ​`mapObject`​ はルートのすべてのシートで反復され、​`extractNumber`​ が ​`append.Id`​ 値に一致する場合、この関数によって ​`append`​ オブジェクトが一致するシートオブジェクトに追加されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var append = { "Id": "2", "Access": "4444", "Subteam": "1", } fun extractNumber(pageName: Key) = (pageName as String match /\(sheet\)([0-9]+)/)[1] --- payload mapObject ((value, key, index) -> do { if(extractNumber(key) == append.Id) {(key): value << append} else {(key): value} }) ``` 入力 JSON ペイロード: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 } ] } ``` 出力 JSON: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 }, { "Id": "2", "Access": "4444", "Subteam": "1" } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # オブジェクトキーのマップ この DataWeave 例では、​`mapObject`​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、​`(sheet)1`​、​`(sheet)2`​) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が ​`append`​ オブジェクトの ​`Id`​ キーの値に等しい場合、別のオブジェクト ​`append`​ を最後の項目として一致するシート配列に追加します。 例では、​`fun extractNumber`​ 関数を使用してシートページ名 ​`pageName`​ からシート番号を抽出します。 続いて、DataWeave 関数の ​`mapObject`​ はルートのすべてのシートで反復され、​`extractNumber`​ が ​`append.Id`​ 値に一致する場合、この関数によって ​`append`​ オブジェクトが一致するシートオブジェクトに追加されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var append = { "Id": "2", "Access": "4444", "Subteam": "1", } fun extractNumber(pageName: Key) = (pageName as String match /\(sheet\)([0-9]+)/)[1] --- payload mapObject ((value, key, index) -> do { if(extractNumber(key) == append.Id) {(key): value << append} else {(key): value} }) ``` 入力 JSON ペイロード: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 } ] } ``` 出力 JSON: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 }, { "Id": "2", "Access": "4444", "Subteam": "1" } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # オブジェクトキーのマップ この DataWeave 例では、​`mapObject`​ 関数を使用してオブジェクトの配列を反復処理し、指定された条件の値と一致する新しいオブジェクトを追加します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 入力はシートが含まれる JSON オブジェクトで構成されています。すべてのシートの値 (たとえば、​`(sheet)1`​、​`(sheet)2`​) はオブジェクトの配列です。DataWeave スクリプトでは、シート番号が ​`append`​ オブジェクトの ​`Id`​ キーの値に等しい場合、別のオブジェクト ​`append`​ を最後の項目として一致するシート配列に追加します。 例では、​`fun extractNumber`​ 関数を使用してシートページ名 ​`pageName`​ からシート番号を抽出します。 続いて、DataWeave 関数の ​`mapObject`​ はルートのすべてのシートで反復され、​`extractNumber`​ が ​`append.Id`​ 値に一致する場合、この関数によって ​`append`​ オブジェクトが一致するシートオブジェクトに追加されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var append = { "Id": "2", "Access": "4444", "Subteam": "1", } fun extractNumber(pageName: Key) = (pageName as String match /\(sheet\)([0-9]+)/)[1] --- payload mapObject ((value, key, index) -> do { if(extractNumber(key) == append.Id) {(key): value << append} else {(key): value} }) ``` 入力 JSON ペイロード: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 } ] } ``` 出力 JSON: ```json { "(sheet)1": [ { "Id": 1.0, "Team": "Mule", "timestamp": "2019-09-26T16:37:54", "Access": 12431 } ], "(sheet)2": [ { "Id": 2.0, "Team": "Max", "timestamp": "2019-09-26T16:37:54", "Access": 81243 }, { "Id": 2.0, "Team": "Max Mule", "timestamp": "2019-09-26T18:00:54", "Access": 67676 }, { "Id": "2", "Access": "4444", "Subteam": "1" } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # オブジェクトのマップ この DataWeave の例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - 「books」配列の要素を調べる ​`map`​。 - 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。 - 各キーを大文字に設定する ​`upper`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # オブジェクトのマップ 以下の DataWeave の例では、​`mapObject`​ 関数を使用してオブジェクトのキーと値を反復処理します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#最初の例)最初の例 この例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。 この例では、次の DataWeave 関数を使用します。 - 「books」配列の要素を調べる ​`map`​。 - 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。 - 各キーを大文字に設定する ​`upper`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ``` ## [](#2-番目の例)2 番目の例 この例では、​`mapObject`​ 関数を使用して、ペイロードで ​`groupBy`​ を使用した結果であるオブジェクトのキーと値を反復処理します。入力ペイロードに ​`FirstName`​、​`LastName`​、および ​`Age`​ キーの値が同じオブジェクトがある場合、DataWeave スクリプトでそれらのオブジェクトが CSV ファイルの 1 行に変換されます。それらのオブジェクトの残りの ​`Team Name`​ および ​`Role`​ キーの値は、CSV の 1 行上では ​`:`​ で連結されます。 入力 JSON ペイロード: ```json [ { "Sr.No.": 1, "FirstName": "Charles", "LastName": "Lock", "Age": 40, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 2, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 3, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "technology", "Role": "advisor" }, { "Sr.No.": 4, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 35, "Team Name": "development", "Role": "developer" }, { "Sr.No.": 5, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 6, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 7, "FirstName": "Josh", "LastName": "Lee", "Age": 42, "Team Name": "Scrum team1", "Role": "developer" } ] ``` 上記の入力の例では、​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ はそれぞれ名、姓、年齢が同じであるため、同じ人物です。一方、​`Sr.No. 4`​ は名と姓は同じですが、年齢が違うため、別の人物です。 DataWeave スクリプト: ```dataweave output application/csv --- valuesOf( payload groupBy ((item, index) -> ( item.FirstName ++ item.LastName ++ item.Age)) mapObject ((value, key, index) -> (index): { "Sr.No.": value."Sr.No." joinBy ":", "FirstName": value.FirstName[0], "LastName": value.LastName[0], "Age": value.Age[0], "Team Name": value."Team Name" joinBy ":", "Role": value.Role joinBy ":" }) ) ``` DataWeave スクリプトはオブジェクトのキー ​`FirstName`​、​`LastName`​、​`Age`​ の繰り返される値をキー-値 ​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ でマージします。これらの値は CSV の 1 行上では ​`,`​ で区切られます。それらのオブジェクトの ​`Team Name`​ および ​`Role`​ の値は、CSV の 1 行上では ​`:`​ で連結されます。 出力 CSV: ```CSV Sr.No.,FirstName,LastName,Age,Team Name,Role 1,Charles,Lock,40,Scrum team 1,developer 2:3,Josh,Rodriguez,45,architecture:technology,SA:advisor 4,Josh,Rodriguez,35,development,developer 5:6,Jane,Rodriguez,30,architecture:Scrum team 1,SA:developer 7,Josh,Lee,42,Scrum team1,developer ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # オブジェクトのマップ 以下の DataWeave の例では、​`mapObject`​ 関数を使用してオブジェクトのキーと値を反復処理します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#最初の例)最初の例 この例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。 この例では、次の DataWeave 関数を使用します。 - 「books」配列の要素を調べる ​`map`​。 - 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。 - 各キーを大文字に設定する ​`upper`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ``` ## [](#2-番目の例)2 番目の例 この例では、​`mapObject`​ 関数を使用して、ペイロードで ​`groupBy`​ を使用した結果であるオブジェクトのキーと値を反復処理します。入力ペイロードに ​`FirstName`​、​`LastName`​、および ​`Age`​ キーの値が同じオブジェクトがある場合、DataWeave スクリプトでそれらのオブジェクトが CSV ファイルの 1 行に変換されます。それらのオブジェクトの残りの ​`Team Name`​ および ​`Role`​ キーの値は、CSV の 1 行上では ​`:`​ で連結されます。 入力 JSON ペイロード: ```json [ { "Sr.No.": 1, "FirstName": "Charles", "LastName": "Lock", "Age": 40, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 2, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 3, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "technology", "Role": "advisor" }, { "Sr.No.": 4, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 35, "Team Name": "development", "Role": "developer" }, { "Sr.No.": 5, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 6, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 7, "FirstName": "Josh", "LastName": "Lee", "Age": 42, "Team Name": "Scrum team1", "Role": "developer" } ] ``` 上記の入力の例では、​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No.` ​\` 6\`​ はそれぞれ名、姓、年齢が同じであるため、同じ人物です。一方、​`Sr.No. 4`​ は名と姓は同じですが、年齢が違うため、別の人物です。 DataWeave スクリプト: ```dataweave output application/csv --- valuesOf( payload groupBy ((item, index) -> ( item.FirstName ++ item.LastName ++ item.Age)) mapObject ((value, key, index) -> (index): { "Sr.No.": value."Sr.No." joinBy ":", "FirstName": value.FirstName[0], "LastName": value.LastName[0], "Age": value.Age[0], "Team Name": value."Team Name" joinBy ":", "Role": value.Role joinBy ":" }) ) ``` DataWeave スクリプトはオブジェクトのキー ​`FirstName`​、​`LastName`​、​`Age`​ の繰り返される値をキー-値 ​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ でマージします。これらの値は CSV の 1 行上では ​`,`​ で区切られます。それらのオブジェクトの ​`Team Name`​ および ​`Role`​ の値は、CSV の 1 行上では ​`:`​ で連結されます。 出力 CSV: ```CSV Sr.No.,FirstName,LastName,Age,Team Name,Role 1,Charles,Lock,40,Scrum team 1,developer 2:3,Josh,Rodriguez,45,architecture:technology,SA:advisor 4,Josh,Rodriguez,35,development,developer 5:6,Jane,Rodriguez,30,architecture:Scrum team 1,SA:developer 7,Josh,Lee,42,Scrum team1,developer ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # オブジェクトのマップ 以下の DataWeave の例では、​`mapObject`​ 関数を使用してオブジェクトのキーと値を反復処理します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#最初の例)最初の例 この例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。 この例では、次の DataWeave 関数を使用します。 - 「books」配列の要素を調べる ​`map`​。 - 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。 - 各キーを大文字に設定する ​`upper`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ``` ## [](#2-番目の例)2 番目の例 この例では、​`mapObject`​ 関数を使用して、ペイロードで ​`groupBy`​ を使用した結果であるオブジェクトのキーと値を反復処理します。入力ペイロードに ​`FirstName`​、​`LastName`​、および ​`Age`​ キーの値が同じオブジェクトがある場合、DataWeave スクリプトでそれらのオブジェクトが CSV ファイルの 1 行に変換されます。それらのオブジェクトの残りの ​`Team Name`​ および ​`Role`​ キーの値は、CSV の 1 行上では ​`:`​ で連結されます。 入力 JSON ペイロード: ```json [ { "Sr.No.": 1, "FirstName": "Charles", "LastName": "Lock", "Age": 40, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 2, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 3, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "technology", "Role": "advisor" }, { "Sr.No.": 4, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 35, "Team Name": "development", "Role": "developer" }, { "Sr.No.": 5, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 6, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 7, "FirstName": "Josh", "LastName": "Lee", "Age": 42, "Team Name": "Scrum team1", "Role": "developer" } ] ``` 上記の入力の例では、​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No.` ​\` 6\`​ はそれぞれ名、姓、年齢が同じであるため、同じ人物です。一方、​`Sr.No. 4`​ は名と姓は同じですが、年齢が違うため、別の人物です。 DataWeave スクリプト: ```dataweave output application/csv --- valuesOf( payload groupBy ((item, index) -> ( item.FirstName ++ item.LastName ++ item.Age)) mapObject ((value, key, index) -> (index): { "Sr.No.": value."Sr.No." joinBy ":", "FirstName": value.FirstName[0], "LastName": value.LastName[0], "Age": value.Age[0], "Team Name": value."Team Name" joinBy ":", "Role": value.Role joinBy ":" }) ) ``` DataWeave スクリプトはオブジェクトのキー ​`FirstName`​、​`LastName`​、​`Age`​ の繰り返される値をキー-値 ​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ でマージします。これらの値は CSV の 1 行上では ​`,`​ で区切られます。それらのオブジェクトの ​`Team Name`​ および ​`Role`​ の値は、CSV の 1 行上では ​`:`​ で連結されます。 出力 CSV: ```CSV Sr.No.,FirstName,LastName,Age,Team Name,Role 1,Charles,Lock,40,Scrum team 1,developer 2:3,Josh,Rodriguez,45,architecture:technology,SA:advisor 4,Josh,Rodriguez,35,development,developer 5:6,Jane,Rodriguez,30,architecture:Scrum team 1,SA:developer 7,Josh,Lee,42,Scrum team1,developer ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # オブジェクトのマップ 以下の DataWeave の例では、​`mapObject`​ 関数を使用してオブジェクトのキーと値を反復処理します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#最初の例)最初の例 この例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。 この例では、次の DataWeave 関数を使用します。 - 「books」配列の要素を調べる ​`map`​。 - 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。 - 各キーを大文字に設定する ​`upper`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ``` ## [](#2-番目の例)2 番目の例 この例では、​`mapObject`​ 関数を使用して、ペイロードで ​`groupBy`​ を使用した結果であるオブジェクトのキーと値を反復処理します。入力ペイロードに ​`FirstName`​、​`LastName`​、および ​`Age`​ キーの値が同じオブジェクトがある場合、DataWeave スクリプトでそれらのオブジェクトが CSV ファイルの 1 行に変換されます。それらのオブジェクトの残りの ​`Team Name`​ および ​`Role`​ キーの値は、CSV の 1 行上では ​`:`​ で連結されます。 入力 JSON ペイロード: ```json [ { "Sr.No.": 1, "FirstName": "Charles", "LastName": "Lock", "Age": 40, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 2, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 3, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "technology", "Role": "advisor" }, { "Sr.No.": 4, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 35, "Team Name": "development", "Role": "developer" }, { "Sr.No.": 5, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 6, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 7, "FirstName": "Josh", "LastName": "Lee", "Age": 42, "Team Name": "Scrum team1", "Role": "developer" } ] ``` 上記の入力の例では、​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No.` ​\` 6\`​ はそれぞれ名、姓、年齢が同じであるため、同じ人物です。一方、​`Sr.No. 4`​ は名と姓は同じですが、年齢が違うため、別の人物です。 DataWeave スクリプト: ```dataweave output application/csv --- valuesOf( payload groupBy ((item, index) -> ( item.FirstName ++ item.LastName ++ item.Age)) mapObject ((value, key, index) -> (index): { "Sr.No.": value."Sr.No." joinBy ":", "FirstName": value.FirstName[0], "LastName": value.LastName[0], "Age": value.Age[0], "Team Name": value."Team Name" joinBy ":", "Role": value.Role joinBy ":" }) ) ``` DataWeave スクリプトはオブジェクトのキー ​`FirstName`​、​`LastName`​、​`Age`​ の繰り返される値をキー-値 ​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ でマージします。これらの値は CSV の 1 行上では ​`,`​ で区切られます。それらのオブジェクトの ​`Team Name`​ および ​`Role`​ の値は、CSV の 1 行上では ​`:`​ で連結されます。 出力 CSV: ```CSV Sr.No.,FirstName,LastName,Age,Team Name,Role 1,Charles,Lock,40,Scrum team 1,developer 2:3,Josh,Rodriguez,45,architecture:technology,SA:advisor 4,Josh,Rodriguez,35,development,developer 5:6,Jane,Rodriguez,30,architecture:Scrum team 1,SA:developer 7,Josh,Lee,42,Scrum team1,developer ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # オブジェクトのマップ 以下の DataWeave の例では、​`mapObject`​ 関数を使用してオブジェクトのキーと値を反復処理します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#最初の例)最初の例 この例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。 この例では、次の DataWeave 関数を使用します。 - 「books」配列の要素を調べる ​`map`​。 - 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。 - 各キーを大文字に設定する ​`upper`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- items: payload.books map (item, index) -> { book: item mapObject (value, key) -> { (upper(key)): value } } ``` 入力 JSON ペイロード: ```json { "books": [ { "-category": "cooking", "title":"Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, { "-category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, { "-category": "web", "title": "XQuery Kick Start", "author": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "year": "2003", "price": "49.99" }, { "-category": "web", "-cover": "paperback", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" } ] } ``` 出力 JSON: ```json { "items": [ { "book": { "-CATEGORY": "cooking", "TITLE": "Everyday Italian", "AUTHOR": "Giada De Laurentiis", "YEAR": "2005", "PRICE": "30.00" } }, { "book": { "-CATEGORY": "children", "TITLE": "Harry Potter", "AUTHOR": "J K. Rowling", "YEAR": "2005", "PRICE": "29.99" } }, { "book": { "-CATEGORY": "web", "TITLE": "XQuery Kick Start", "AUTHOR": [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "YEAR": "2003", "PRICE": "49.99" } }, { "book": { "-CATEGORY": "web", "-COVER": "paperback", "TITLE": "Learning XML", "AUTHOR": "Erik T. Ray", "YEAR": "2003", "PRICE": "39.95" } } ] } ``` ## [](#2-番目の例)2 番目の例 この例では、​`mapObject`​ 関数を使用して、ペイロードで ​`groupBy`​ を使用した結果であるオブジェクトのキーと値を反復処理します。入力ペイロードに ​`FirstName`​、​`LastName`​、および ​`Age`​ キーの値が同じオブジェクトがある場合、DataWeave スクリプトでそれらのオブジェクトが CSV ファイルの 1 行に変換されます。それらのオブジェクトの残りの ​`Team Name`​ および ​`Role`​ キーの値は、CSV の 1 行上では ​`:`​ で連結されます。 入力 JSON ペイロード: ```json [ { "Sr.No.": 1, "FirstName": "Charles", "LastName": "Lock", "Age": 40, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 2, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 3, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 45, "Team Name": "technology", "Role": "advisor" }, { "Sr.No.": 4, "FirstName": "Josh", "LastName": "Rodriguez", "Age": 35, "Team Name": "development", "Role": "developer" }, { "Sr.No.": 5, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "architecture", "Role": "SA" }, { "Sr.No.": 6, "FirstName": "Jane", "LastName": "Rodriguez", "Age": 30, "Team Name": "Scrum team 1", "Role": "developer" }, { "Sr.No.": 7, "FirstName": "Josh", "LastName": "Lee", "Age": 42, "Team Name": "Scrum team1", "Role": "developer" } ] ``` 上記の入力の例では、​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ はそれぞれ名、姓、年齢が同じであるため、同じ人物です。一方、​`Sr.No. 4`​ は名と姓は同じですが、年齢が違うため、別の人物です。 DataWeave スクリプト: ```dataweave output application/csv --- valuesOf( payload groupBy ((item, index) -> ( item.FirstName ++ item.LastName ++ item.Age)) mapObject ((value, key, index) -> (index): { "Sr.No.": value."Sr.No." joinBy ":", "FirstName": value.FirstName[0], "LastName": value.LastName[0], "Age": value.Age[0], "Team Name": value."Team Name" joinBy ":", "Role": value.Role joinBy ":" }) ) ``` DataWeave スクリプトはオブジェクトのキー ​`FirstName`​、​`LastName`​、​`Age`​ の繰り返される値をキー-値 ​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ でマージします。これらの値は CSV の 1 行上では ​`,`​ で区切られます。それらのオブジェクトの ​`Team Name`​ および ​`Role`​ の値は、CSV の 1 行上では ​`:`​ で連結されます。 出力 CSV: ```CSV Sr.No.,FirstName,LastName,Age,Team Name,Role 1,Charles,Lock,40,Scrum team 1,developer 2:3,Josh,Rodriguez,45,architecture:technology,SA:advisor 4,Josh,Rodriguez,35,development,developer 5:6,Jane,Rodriguez,30,architecture:Scrum team 1,SA:developer 7,Josh,Lee,42,Scrum team1,developer ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map) - [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-object-elements-as-an-array) - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-extract-data) - [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-perform-basic-transformation) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # オブジェクト要素の配列としてのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、キー ​`book`​ に一致するオブジェクト要素を反復処理します。入力には、無視されるキー ​`magazine`​ も含まれます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - キー ​`"book"`​ に一致する要素が含まれる配列を返す複数値セレクター ​`*book`​。 - 複数値セレクターによって返される配列の各オブジェクトを調べる ​`map`​。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInputExample = { "inventory": { "book" : { "category": "cooking", "title": "Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, "book" :{ "category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, "book" :{ "category": "web", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" }, "magazine" :{ "category": "web", "title": "Wired Magazine", "edition": "03-2017", "price": "15.95" }, "magazine" :{ "category": "business", "title": "Time Magazine", "edition": "04-2017", "price": "17.95" } } } output application/json --- items: myInputExample.inventory.*book map (item, index) -> { "theType": "book", "theID": index, "theCategory": item.category, "theTitle": item.title, "theAuthor": item.author, "theYear": item.year, "thePrice": item.price as Number } ``` 出力 JSON: ```json { "items": [ { "theType": "book", "theID": 0, "theCategory": "cooking", "theTitle": "Everyday Italian", "theAuthor": "Giada De Laurentiis", "theYear": "2005", "thePrice": 30.00 }, { "theType": "book", "theID": 1, "theCategory": "children", "theTitle": "Harry Potter", "theAuthor": "J K. Rowling", "theYear": "2005", "thePrice": 29.99 }, { "theType": "book", "theID": 2, "theCategory": "web", "theTitle": "Learning XML", "theAuthor": "Erik T. Ray", "theYear": "2003", "thePrice": 39.95 } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map-an-object) - [項目の除外](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-exclude-field) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # オブジェクト要素の配列としてのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、キー ​`book`​ に一致するオブジェクト要素を反復処理します。入力には、無視されるキー ​`magazine`​ も含まれます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - キー ​`"book"`​ に一致する要素が含まれる配列を返す複数値セレクター ​`*book`​。 - 複数値セレクターによって返される配列の各オブジェクトを調べる ​`map`​。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInputExample = { "inventory": { "book" : { "category": "cooking", "title": "Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, "book" :{ "category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, "book" :{ "category": "web", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" }, "magazine" :{ "category": "web", "title": "Wired Magazine", "edition": "03-2017", "price": "15.95" }, "magazine" :{ "category": "business", "title": "Time Magazine", "edition": "04-2017", "price": "17.95" } } } output application/json --- items: myInputExample.inventory.*book map (item, index) -> { "theType": "book", "theID": index, "theCategory": item.category, "theTitle": item.title, "theAuthor": item.author, "theYear": item.year, "thePrice": item.price as Number } ``` 出力 JSON: ```json { "items": [ { "theType": "book", "theID": 0, "theCategory": "cooking", "theTitle": "Everyday Italian", "theAuthor": "Giada De Laurentiis", "theYear": "2005", "thePrice": 30.00 }, { "theType": "book", "theID": 1, "theCategory": "children", "theTitle": "Harry Potter", "theAuthor": "J K. Rowling", "theYear": "2005", "thePrice": 29.99 }, { "theType": "book", "theID": 2, "theCategory": "web", "theTitle": "Learning XML", "theAuthor": "Erik T. Ray", "theYear": "2003", "thePrice": 39.95 } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-an-object) - [項目の除外](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-exclude-field) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # オブジェクト要素の配列としてのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、キー ​`book`​ に一致するオブジェクト要素を反復処理します。入力には、無視されるキー ​`magazine`​ も含まれます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - キー ​`"book"`​ に一致する要素が含まれる配列を返す複数値セレクター ​`*book`​。 - 複数値セレクターによって返される配列の各オブジェクトを調べる ​`map`​。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInputExample = { "inventory": { "book" : { "category": "cooking", "title": "Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, "book" :{ "category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, "book" :{ "category": "web", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" }, "magazine" :{ "category": "web", "title": "Wired Magazine", "edition": "03-2017", "price": "15.95" }, "magazine" :{ "category": "business", "title": "Time Magazine", "edition": "04-2017", "price": "17.95" } } } output application/json --- items: myInputExample.inventory.*book map (item, index) -> { "theType": "book", "theID": index, "theCategory": item.category, "theTitle": item.title, "theAuthor": item.author, "theYear": item.year, "thePrice": item.price as Number } ``` 出力 JSON: ```json { "items": [ { "theType": "book", "theID": 0, "theCategory": "cooking", "theTitle": "Everyday Italian", "theAuthor": "Giada De Laurentiis", "theYear": "2005", "thePrice": 30.00 }, { "theType": "book", "theID": 1, "theCategory": "children", "theTitle": "Harry Potter", "theAuthor": "J K. Rowling", "theYear": "2005", "thePrice": 29.99 }, { "theType": "book", "theID": 2, "theCategory": "web", "theTitle": "Learning XML", "theAuthor": "Erik T. Ray", "theYear": "2003", "thePrice": 39.95 } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map-an-object) - [項目の除外](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-exclude-field) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # オブジェクト要素の配列としてのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、キー ​`book`​ に一致するオブジェクト要素を反復処理します。入力には、無視されるキー ​`magazine`​ も含まれます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - キー ​`"book"`​ に一致する要素が含まれる配列を返す複数値セレクター ​`*book`​。 - 複数値セレクターによって返される配列の各オブジェクトを調べる ​`map`​。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInputExample = { "inventory": { "book" : { "category": "cooking", "title": "Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, "book" :{ "category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, "book" :{ "category": "web", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" }, "magazine" :{ "category": "web", "title": "Wired Magazine", "edition": "03-2017", "price": "15.95" }, "magazine" :{ "category": "business", "title": "Time Magazine", "edition": "04-2017", "price": "17.95" } } } output application/json --- items: myInputExample.inventory.*book map (item, index) -> { "theType": "book", "theID": index, "theCategory": item.category, "theTitle": item.title, "theAuthor": item.author, "theYear": item.year, "thePrice": item.price as Number } ``` 出力 JSON: ```json { "items": [ { "theType": "book", "theID": 0, "theCategory": "cooking", "theTitle": "Everyday Italian", "theAuthor": "Giada De Laurentiis", "theYear": "2005", "thePrice": 30.00 }, { "theType": "book", "theID": 1, "theCategory": "children", "theTitle": "Harry Potter", "theAuthor": "J K. Rowling", "theYear": "2005", "thePrice": 29.99 }, { "theType": "book", "theID": 2, "theCategory": "web", "theTitle": "Learning XML", "theAuthor": "Erik T. Ray", "theYear": "2003", "thePrice": 39.95 } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-an-object) - [項目の除外](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-exclude-field) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # オブジェクト要素の配列としてのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、キー ​`book`​ に一致するオブジェクト要素を反復処理します。入力には、無視されるキー ​`magazine`​ も含まれます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - キー ​`"book"`​ に一致する要素が含まれる配列を返す複数値セレクター ​`*book`​。 - 複数値セレクターによって返される配列の各オブジェクトを調べる ​`map`​。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInputExample = { "inventory": { "book" : { "category": "cooking", "title": "Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, "book" :{ "category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, "book" :{ "category": "web", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" }, "magazine" :{ "category": "web", "title": "Wired Magazine", "edition": "03-2017", "price": "15.95" }, "magazine" :{ "category": "business", "title": "Time Magazine", "edition": "04-2017", "price": "17.95" } } } output application/json --- items: myInputExample.inventory.*book map (item, index) -> { "theType": "book", "theID": index, "theCategory": item.category, "theTitle": item.title, "theAuthor": item.author, "theYear": item.year, "thePrice": item.price as Number } ``` 出力 JSON: ```json { "items": [ { "theType": "book", "theID": 0, "theCategory": "cooking", "theTitle": "Everyday Italian", "theAuthor": "Giada De Laurentiis", "theYear": "2005", "thePrice": 30.00 }, { "theType": "book", "theID": 1, "theCategory": "children", "theTitle": "Harry Potter", "theAuthor": "J K. Rowling", "theYear": "2005", "thePrice": 29.99 }, { "theType": "book", "theID": 2, "theCategory": "web", "theTitle": "Learning XML", "theAuthor": "Erik T. Ray", "theYear": "2003", "thePrice": 39.95 } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map-an-object) - [項目の除外](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-exclude-field) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # オブジェクト要素の配列としてのマップ この DataWeave の例では、DataWeave ​`map`​ 関数を使用して、キー ​`book`​ に一致するオブジェクト要素を反復処理します。入力には、無視されるキー ​`magazine`​ も含まれます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の DataWeave 関数を使用します。 - キー ​`"book"`​ に一致する要素が含まれる配列を返す複数値セレクター ​`*book`​。 - 複数値セレクターによって返される配列の各オブジェクトを調べる ​`map`​。 DataWeave スクリプト: ```dataweave %dw 2.0 var myInputExample = { "inventory": { "book" : { "category": "cooking", "title": "Everyday Italian", "author": "Giada De Laurentiis", "year": "2005", "price": "30.00" }, "book" :{ "category": "children", "title": "Harry Potter", "author": "J K. Rowling", "year": "2005", "price": "29.99" }, "book" :{ "category": "web", "title": "Learning XML", "author": "Erik T. Ray", "year": "2003", "price": "39.95" }, "magazine" :{ "category": "web", "title": "Wired Magazine", "edition": "03-2017", "price": "15.95" }, "magazine" :{ "category": "business", "title": "Time Magazine", "edition": "04-2017", "price": "17.95" } } } output application/json --- items: myInputExample.inventory.*book map (item, index) -> { "theType": "book", "theID": index, "theCategory": item.category, "theTitle": item.title, "theAuthor": item.author, "theYear": item.year, "thePrice": item.price as Number } ``` 出力 JSON: ```json { "items": [ { "theType": "book", "theID": 0, "theCategory": "cooking", "theTitle": "Everyday Italian", "theAuthor": "Giada De Laurentiis", "theYear": "2005", "thePrice": 30.00 }, { "theType": "book", "theID": 1, "theCategory": "children", "theTitle": "Harry Potter", "theAuthor": "J K. Rowling", "theYear": "2005", "thePrice": 29.99 }, { "theType": "book", "theID": 2, "theCategory": "web", "theTitle": "Learning XML", "theAuthor": "Erik T. Ray", "theYear": "2003", "thePrice": 39.95 } ] } ``` ## [](#関連する例)関連する例 - [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map) - [オブジェクトのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-an-object) - [項目の除外](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-exclude-field) - [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-rename-keys) ## [](#関連情報)関連情報 - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # カスタムモジュールおよびマッピングの作成 組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.3/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。 - カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。 - カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。 多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。 カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​を参照してください。 ## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。 ![キーを大文字にしてペイロード値をマップする関数を含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-mapping-file.png) Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル 1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。 - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。 - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。 `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーションの コンポーネントの DataWeave スクリプトでそのモジュールにアクセスして使用できるようになります。 2. 次のように、マッピングファイルで関数を作成します。 例: マッピングファイルのコンテンツ ```dataweave %dw 2.0 import dw::core::Strings fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key" --- payload mapObject ((value, key) -> { (capitalizeKey(key as String)) : value } ) ``` 3. DWL 関数モジュールファイルを保存します。 ### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用 マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。 このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。 `MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。 - ヘッダーで ​`import`​ ディレクティブを指定します。 - `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。 例: DataWeave スクリプトにマッピングをインポートして使用する ```dataweave %dw 2.0 import modules::MyMapping output application/json --- MyMapping::main(payload: { "user" : "bar" }) ``` 次に、結果を示します。 出力 ```json { "UserKey": "bar" } ``` [capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。 ## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用 カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。) ![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-function-custom.png) Figure 2. 例: Studio プロジェクトのカスタムモジュール カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。 例: カスタム DataWeave モジュール ```dataweave %dw 2.0 fun myFunc(myInput: String) = myInput ++ "_" var name = "MyData" ns mynamespace http://acme.com/bar ``` カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。 - ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。 - `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。 例: カスタム DataWeave モジュールをインポートして使用する ```dataweave %dw 2.0 import modules::MyModule output application/json --- MyModule::myFunc("dataweave") ++ "name" ``` いくつかの方法でモジュールまたは要素をインポートできます。 - モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。 - モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。 - モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。 出力 ```json "dataweave_name" ``` ## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て 名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。 `MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。 例: カスタムモジュール ```dataweave %dw 2.0 fun myFunc(name:String) = name ++ "_" var myVar = "Test" ``` カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。 例: インポートされる要素に別名を適用する ```dataweave %dw 2.0 import myFunc as appendDash, myVar as weaveName from modules::MyModule var myVar = "Mapping" output application/json --- appendDash("dataweave") ++ weaveName ++ "_" ++ myVar ``` このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。 次のようにインポートされるモジュールの別名を作成できます。 例: インポートされるモジュールに別名を適用する ```dataweave %dw 2.0 import modules::MyModule as WeaveMod output application/json --- WeaveMod::myFunc("dataweave") ``` ## [](#dwl-ファイルの参照)DWL ファイルの参照 DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。 詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction#dwl_file)​を参照してください。 # カスタムモジュールおよびマッピングの作成 組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.4/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。 - カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。 - カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。 多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。 カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-functions)​を参照してください。 ## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。 ![キーを大文字にしてペイロード値をマップする関数を含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-mapping-file.png) Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル 1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。 - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。 - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。 `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーション内のどの DataWeave スクリプトでもそのモジュールにアクセスして使用できるようになります。 2. 次のように、マッピングファイルで関数を作成します。 例: マッピングファイルのコンテンツ ```dataweave %dw 2.0 import dw::core::Strings fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key" --- payload mapObject ((value, key) -> { (capitalizeKey(key as String)) : value } ) ``` 3. DWL 関数モジュールファイルを保存します。 ### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用 マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。 このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。 `MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。 - ヘッダーで ​`import`​ ディレクティブを指定します。 - `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。 例: DataWeave スクリプトにマッピングをインポートして使用する ```dataweave %dw 2.0 import modules::MyMapping output application/json --- MyMapping::main(payload: { "user" : "bar" }) ``` 次に、結果を示します。 出力 ```json { "UserKey": "bar" } ``` [capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。 ## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用 カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。) ![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-function-custom.png) Figure 2. 例: Studio プロジェクトのカスタムモジュール カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。 例: カスタム DataWeave モジュール ```dataweave %dw 2.0 var name = "MyData" fun myFunc(myInput: String) = myInput ++ "_" type User = { name: String, lastname: String } ns mynamespace http://acme.com/bar ``` カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。 - ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。 - `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。 例: カスタム DataWeave モジュールをインポートして使用する ```dataweave %dw 2.0 import modules::MyModule output application/json --- MyModule::myFunc("dataweave") ++ "name" ``` いくつかの方法でモジュールまたは要素をインポートできます。 - モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。 - モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。 - モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。 出力 ```json "dataweave_name" ``` ## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て 名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。 `MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。 例: カスタムモジュール ```dataweave %dw 2.0 fun myFunc(name:String) = name ++ "_" var myVar = "Test" ``` カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。 例: インポートされる要素に別名を適用する ```dataweave %dw 2.0 import myFunc as appendDash, myVar as weaveName from modules::MyModule var myVar = "Mapping" output application/json --- appendDash("dataweave") ++ weaveName ++ "_" ++ myVar ``` このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。 次のようにインポートされるモジュールの別名を作成できます。 例: インポートされるモジュールに別名を適用する ```dataweave %dw 2.0 import modules::MyModule as WeaveMod output application/json --- WeaveMod::myFunc("dataweave") ``` ## [](#dwl-ファイルの参照)DWL ファイルの参照 DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。 詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction#dwl_file)​を参照してください。 ## [](#docs-dw-lib)カスタム DataWeave モジュールのドキュメントの記述 DataWeave では、関数、型、アノテーション、およびこれらが含まれるモジュールのドキュメント化に AsciiDoc テキスト形式の使用をサポートしています。 ### [](#dataweave-関数のドキュメント化)DataWeave 関数のドキュメント化 DataWeave では、関数コードをドキュメント化するための複数セクションのテンプレートを定義しています。テンプレートでは、次の目的のセクションが提供されます。 - 関数の説明。 - AsciiDoc テーブル形式でのパラメーターの説明。 - 入力、DataWeave スクリプト、生成される出力のセクションが含まれるコード例。 関数の説明の下でパラメーターと例のセクションを定義するために、テンプレートでは AsciiDoc の見出しの文法を使用しています。 - `=== Parameters` - `=== Example` - `==== Source` - `==== Input` - `==== Output` 次の関数テンプレートは、関数のドキュメント化に関する指針となります。テンプレートで示されているように、一部のセクションは省略可能です。 ```DataWeave /** * %Replace with your function description% * * * %Add additional information to your function description% (optional section) * * === Parameters (optional section) * * [%header, cols="1,1,3"] * |=== * | Name | Type | Description * | %`The parameter name`% | %`The parameter type`% | %The parameter description% (one row per param) * |=== * * === Example (optional section) * * %The example description% (optional) * * ==== Source (optional section) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Input (optional section) * * The input description (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Output (optional section) * * %The output description% (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- */ ``` #### [](#説明セクション)説明セクション このセクションでは、関数の説明を提供します。このセクションはコメントの上部で開始され、最初のセクションの見出しの前の行までになります。セクションヘッダーがない場合、説明は関数のコメントの最後までになります。 説明は次のパートで構成されます。 - 簡単な説明: 最初のパラグラフで、関数の主な説明となります。 - 詳細な説明: 関数に関する追加情報。この省略可能な説明は、簡単な説明の下で 2 つの改行を挟んで開始されます。 パラメーターと例のセクションを含む説明が含まれている​[例](#example-documentation)​を参照してください。 各パートは自動生成ドキュメントで便利です。 #### [](#パラメーターセクション)パラメーターセクション 省略可能な ​`=== Parameters`​ セクションで、関数のパラメーターについて説明します。 テンプレートでは、AsciiDoc テーブル形式を使用してテーブル行で各パラメーターをドキュメント化しています。 \[%header, cols="1,1,3"\] |=== | 名前 | 型 | 説明 | yourParameter1 | パラメーターの型 | ここに説明を記述します。 | yourParameter2 | パラメーターの型 | ここに説明を記述します。 |=== #### [](#例セクション)例セクション 0 個以上の ​`=== Example`​ セクションを使用して、関数の仕組みを説明するために必要な例を提供できます。 このセクションには、次の省略可能なサブセクションが含まれます。 - DataWeave スクリプトへの入力用の ​`==== Input`​。 - DataWeave スクリプト用の ​`==== Source`​。 - スクリプトによって生成される出力用の ​`==== Output`​。 すべてのサブセクションは、省略可能な説明と省略可能なコードセクションが含まれる同じテンプレートに従います。 セクションの説明 \[source,%The language%,linenums\] ---- YOUR CODE ---- 次の例では、 [log](https://docs.mulesoft.com/dataweave/2.4/dw-core-functions-log)​ 関数のドキュメントを示しています。 /\*\* \* Without changing the value of the input, ​\`log\`​ returns the input as a system \* log.So this makes it very simple to debug your code, because any expression or subexpression can be wrapped \* with ​\*log\*​ and the result will be printed out without modifying the result of the expression. \* The output is going to be printed in application/dw format. \* (1) \* \* The prefix parameter is optional and allows to easily find the log output. \* \* \* この関数を使用して、DataWeave スクリプトのデバッグを容易にします。A Mule app \* outputs the results through the ​\`DefaultLoggingService\`, which you can see \* in the Studio console. \* \* === Parameters \* \* \[%header, cols="1,13"\] \* |=== \* | 名前 | 型 | 説明 \* | ​\`prefix\`​ | ​\`String\`​ | 通常はログを説明する文字列 (省略可能)。 \* | ​\`value\`​ | ​\`T\`​ | ログに記録する値。 \* |=== \* \* === Example \* \* 次の例では、指定されたメッセージをログに記録します。Note that the ​\`DefaultLoggingService\` \* in a Mule app that is running in Studio returns the message \* \`WARNING - "Houston, we have a problem,"\`​ adding the dash ​\`-\`​ between the \* prefix and value.The Logger component's ​\`LoggerMessageProcessor\`​ returns \* the input string ​\`"Houston, we have a problem."\`, without the ​\`WARNING\`​ prefix. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* --- \* log("WARNING", "Houston, we have a problem") \* ---- \* \* ==== Output \* \* \`Console Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "WARNING - Houston, we have a problem" \* ---- \* \* \`Expression Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "Houston, we have a problem" \* ---- \* \* === Example \* \* This example shows how to log the result of expression ​\`myUser.user\`​ without modifying the \* original expression ​\`myUser.user.friend.name\`​. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* \* var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } \* --- \* log("User", myUser.user).friend.name \* ---- \* \* ==== Output \* \* \`Console output\`​ \* \* \[source,console,linenums\] \* ---- \* User - { \* friend: { \* name: "Shoki" \* }, \* id: 1, \* name: "Tomo" \* } \* ---- \* \* \`Expression Output\`​ \* \* \[source,DataWeave,linenums\] \* ---- \* "Shoki" \* ---- \*/ ### [](#dataweave-モジュールのドキュメント化)DataWeave モジュールのドキュメント化 DataWeave モジュールの説明は、構造化されたテンプレートに従いません。 唯一の要件は、ドキュメントを DataWeave バージョンタグの上に配置することです。 次の例では、 [dw::Core](https://docs.mulesoft.com/dataweave/2.4/dw-core)​ モジュールをドキュメント化しています。 ```dataweave /** * This module contains core DataWeave functions for data transformations. * It is automatically imported into any DataWeave script. For documentation * on DataWeave _1.0_ functions, see * https://docs.mulesoft.com/dataweave/1.2/dataweave-operators[DataWeave Operators]. */ %dw 2.0 ``` ### [](#アノテーションと型のドキュメント化)アノテーションと型のドキュメント化 アノテーションと型のドキュメント化は、構造化されたテンプレートに従いません。 唯一の要件は、アノテーションまたは型の定義の上に説明を記述することです。 次の例では、​`@StreamCapable`​ アノテーションをドキュメント化しています。 ```dataweave /** * Annotation that marks a parameter as stream capable, which means that this * field will consume an array of objects in a forward-only manner. */ @AnnotationTarget(targets = ["Parameter", "Variable"]) annotation StreamCapable() ``` 次の例では、 [dw::extension::DataFormat](https://docs.mulesoft.com/dataweave/2.4/dw-dataformat)​ モジュールにある ​`EncodingSettings`​ 型をドキュメント化しています。 ```dataweave /** * Represents encoding settings. */ @Since(version = "2.2.0") type EncodingSettings = { /** * Encoding that the writer uses for output. Defaults to "UTF-8". */ encoding?: String {defaultValue: "UTF-8"} } ``` # カスタムモジュールおよびマッピングの作成 組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.5/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。 - カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。 - カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。 多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。 カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-functions)​を参照してください。 ## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。 ![キーを大文字にしてペイロード値をマップする関数を含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-mapping-file.png) Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル 1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。 - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。 - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。 `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーション内のどの DataWeave スクリプトでもそのモジュールにアクセスして使用できるようになります。 2. 次のように、マッピングファイルで関数を作成します。 例: マッピングファイルのコンテンツ ```dataweave %dw 2.0 import dw::core::Strings fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key" --- payload mapObject ((value, key) -> { (capitalizeKey(key as String)) : value } ) ``` 3. DWL 関数モジュールファイルを保存します。 ### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用 マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。 このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。 `MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。 - ヘッダーで ​`import`​ ディレクティブを指定します。 - `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。 例: DataWeave スクリプトにマッピングをインポートして使用する ```dataweave %dw 2.0 import modules::MyMapping output application/json --- MyMapping::main(payload: { "user" : "bar" }) ``` 次に、結果を示します。 出力 ```json { "UserKey": "bar" } ``` [capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。 ## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用 カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。) ![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-function-custom.png) Figure 2. 例: Studio プロジェクトのカスタムモジュール カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。 例: カスタム DataWeave モジュール ```dataweave %dw 2.0 var name = "MyData" fun myFunc(myInput: String) = myInput ++ "_" type User = { name: String, lastname: String } ns mynamespace http://acme.com/bar ``` カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。 - ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。 - `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。 例: カスタム DataWeave モジュールをインポートして使用する ```dataweave %dw 2.0 import modules::MyModule output application/json --- MyModule::myFunc("dataweave") ++ "name" ``` いくつかの方法でモジュールまたは要素をインポートできます。 - モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。 - モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。 - モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。 出力 ```json "dataweave_name" ``` ## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て 名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。 `MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。 例: カスタムモジュール ```dataweave %dw 2.0 fun myFunc(name:String) = name ++ "_" var myVar = "Test" ``` カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。 例: インポートされる要素に別名を適用する ```dataweave %dw 2.0 import myFunc as appendDash, myVar as weaveName from modules::MyModule var myVar = "Mapping" output application/json --- appendDash("dataweave") ++ weaveName ++ "_" ++ myVar ``` このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。 次のようにインポートされるモジュールの別名を作成できます。 例: インポートされるモジュールに別名を適用する ```dataweave %dw 2.0 import modules::MyModule as WeaveMod output application/json --- WeaveMod::myFunc("dataweave") ``` ## [](#dwl-ファイルの参照)DWL ファイルの参照 DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。 詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction#dwl_file)​を参照してください。 ## [](#docs-dw-lib)カスタム DataWeave モジュールのドキュメントの記述 DataWeave では、関数、型、アノテーション、およびこれらが含まれるモジュールのドキュメント化に AsciiDoc テキスト形式の使用をサポートしています。 ### [](#dataweave-関数のドキュメント化)DataWeave 関数のドキュメント化 DataWeave では、関数コードをドキュメント化するための複数セクションのテンプレートを定義しています。テンプレートでは、次の目的のセクションが提供されます。 - 関数の説明。 - AsciiDoc テーブル形式でのパラメーターの説明。 - 入力、DataWeave スクリプト、生成される出力のセクションが含まれるコード例。 関数の説明の下でパラメーターと例のセクションを定義するために、テンプレートでは AsciiDoc の見出しの文法を使用しています。 - `=== Parameters` - `=== Example` - `==== Source` - `==== Input` - `==== Output` 次の関数テンプレートは、関数のドキュメント化に関する指針となります。テンプレートで示されているように、一部のセクションは省略可能です。 ```DataWeave /** * %Replace with your function description% * * * %Add additional information to your function description% (optional section) * * === Parameters (optional section) * * [%header, cols="1,1,3"] * |=== * | Name | Type | Description * | %`The parameter name`% | %`The parameter type`% | %The parameter description% (one row per param) * |=== * * === Example (optional section) * * %The example description% (optional) * * ==== Source (optional section) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Input (optional section) * * The input description (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Output (optional section) * * %The output description% (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- */ ``` #### [](#説明セクション)説明セクション このセクションでは、関数の説明を提供します。このセクションはコメントの上部で開始され、最初のセクションの見出しの前の行までになります。セクションヘッダーがない場合、説明は関数のコメントの最後までになります。 説明は次のパートで構成されます。 - 簡単な説明: 最初のパラグラフで、関数の主な説明となります。 - 詳細な説明: 関数に関する追加情報。この省略可能な説明は、簡単な説明の下で 2 つの改行を挟んで開始されます。 パラメーターと例のセクションを含む説明が含まれている​[例](#example-documentation)​を参照してください。 各パートは自動生成ドキュメントで便利です。 #### [](#パラメーターセクション)パラメーターセクション 省略可能な ​`=== Parameters`​ セクションで、関数のパラメーターについて説明します。 テンプレートでは、AsciiDoc テーブル形式を使用してテーブル行で各パラメーターをドキュメント化しています。 \[%header, cols="1,1,3"\] |=== | Name | Type | Description | yourParameter1 | パラメーターの型 | ここに説明を記述します。 | yourParameter2 | パラメーターの型 | ここに説明を記述します。 |=== #### [](#例セクション)例セクション 0 個以上の ​`=== Example`​ セクションを使用して、関数の仕組みを説明するために必要な例を提供できます。 このセクションには、次の省略可能なサブセクションが含まれます。 - DataWeave スクリプトへの入力用の ​`==== Input`​。 - DataWeave スクリプト用の ​`==== Source`​。 - スクリプトによって生成される出力用の ​`==== Output`​。 すべてのサブセクションは、省略可能な説明と省略可能なコードセクションが含まれる同じテンプレートに従います。 セクションの説明 \[source,%The language%,linenums\] ---- YOUR CODE ---- 次の例では、 [log](https://docs.mulesoft.com/dataweave/2.4/dw-core-functions-log)​ 関数のドキュメントを示しています。 /\*\* \* Without changing the value of the input, ​\`log\`​ returns the input as a system \* log.So this makes it very simple to debug your code, because any expression or subexpression can be wrapped \* with ​\*log\*​ and the result will be printed out without modifying the result of the expression. \* The output is going to be printed in application/dw format. \* (1) \* \* The prefix parameter is optional and allows to easily find the log output. \* \* \* この関数を使用して、DataWeave スクリプトのデバッグを容易にします。A Mule app \* outputs the results through the ​\`DefaultLoggingService\`, which you can see \* in the Studio console. \* \* === Parameters \* \* \[%header, cols="1,13"\] \* |=== \* | 名前 | Type | Description \* | ​\`prefix\`​ | ​\`String\`​ | 通常はログを説明する文字列 (省略可能)。 \* | ​\`value\`​ | ​\`T\`​ | ログに記録する値。 \* |=== \* \* === Example \* \* 次の例では、指定されたメッセージをログに記録します。Note that the ​\`DefaultLoggingService\` \* in a Mule app that is running in Studio returns the message \* \`WARNING - "Houston, we have a problem,"\`​ adding the dash ​\`-\`​ between the \* prefix and value.The Logger component's ​\`LoggerMessageProcessor\`​ returns \* the input string ​\`"Houston, we have a problem."\`, without the ​\`WARNING\`​ prefix. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* --- \* log("WARNING", "Houston, we have a problem") \* ---- \* \* ==== Output \* \* \`Console Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "WARNING - Houston, we have a problem" \* ---- \* \* \`Expression Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "Houston, we have a problem" \* ---- \* \* === Example \* \* This example shows how to log the result of expression ​\`myUser.user\`​ without modifying the \* original expression ​\`myUser.user.friend.name\`​. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* \* var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } \* --- \* log("User", myUser.user).friend.name \* ---- \* \* ==== Output \* \* \`Console output\`​ \* \* \[source,console,linenums\] \* ---- \* User - { \* friend: { \* name: "Shoki" \* }, \* id: 1, \* name: "Tomo" \* } \* ---- \* \* \`Expression Output\`​ \* \* \[source,DataWeave,linenums\] \* ---- \* "Shoki" \* ---- \*/ ### [](#dataweave-モジュールのドキュメント化)DataWeave モジュールのドキュメント化 DataWeave モジュールの説明は、構造化されたテンプレートに従いません。 唯一の要件は、ドキュメントを DataWeave バージョンタグの上に配置することです。 次の例では、 [dw::Core](https://docs.mulesoft.com/dataweave/2.4/dw-core)​ モジュールをドキュメント化しています。 ```dataweave /** * This module contains core DataWeave functions for data transformations. * It is automatically imported into any DataWeave script. For documentation * on DataWeave _1.0_ functions, see * https://docs.mulesoft.com/dataweave/1.2/dataweave-operators[DataWeave Operators]. */ %dw 2.0 ``` ### [](#アノテーションと型のドキュメント化)アノテーションと型のドキュメント化 アノテーションと型のドキュメント化は、構造化されたテンプレートに従いません。 唯一の要件は、アノテーションまたは型の定義の上に説明を記述することです。 次の例では、​`@StreamCapable`​ アノテーションをドキュメント化しています。 ```dataweave /** * Annotation that marks a parameter as stream capable, which means that this * field will consume an array of objects in a forward-only manner. */ @AnnotationTarget(targets = ["Parameter", "Variable"]) annotation StreamCapable() ``` 次の例では、 [dw::extension::DataFormat](https://docs.mulesoft.com/dataweave/2.4/dw-dataformat)​ モジュールにある ​`EncodingSettings`​ 型をドキュメント化しています。 ```dataweave /** * Represents encoding settings. */ @Since(version = "2.2.0") type EncodingSettings = { /** * Encoding that the writer uses for output. Defaults to "UTF-8". */ encoding?: String {defaultValue: "UTF-8"} } ``` ## [](#関連情報)関連情報 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-reuse-modules) # カスタムモジュールおよびマッピングの作成 組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.6/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。 - カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。 - カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。 多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。 カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-functions)​を参照してください。 ## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。 ![キーを大文字にしてペイロード値をマップする関数を含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-mapping-file.png) Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル 1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。 - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。 - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。 `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーション内のどの DataWeave スクリプトでもそのモジュールにアクセスして使用できるようになります。 2. 次のように、マッピングファイルで関数を作成します。 例: マッピングファイルのコンテンツ ```dataweave %dw 2.0 import dw::core::Strings fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key" --- payload mapObject ((value, key) -> { (capitalizeKey(key as String)) : value } ) ``` 3. DWL 関数モジュールファイルを保存します。 ### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用 マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。 このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。 `MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。 - ヘッダーで ​`import`​ ディレクティブを指定します。 - `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。 例: DataWeave スクリプトにマッピングをインポートして使用する ```dataweave %dw 2.0 import modules::MyMapping output application/json --- MyMapping::main(payload: { "user" : "bar" }) ``` 次に、結果を示します。 出力 ```json { "UserKey": "bar" } ``` [capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。 ## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用 カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。) ![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-function-custom.png) Figure 2. 例: Studio プロジェクトのカスタムモジュール カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。 例: カスタム DataWeave モジュール ```dataweave %dw 2.0 var name = "MyData" fun myFunc(myInput: String) = myInput ++ "_" type User = { name: String, lastname: String } ns mynamespace http://acme.com/bar ``` カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。 - ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。 - `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。 例: カスタム DataWeave モジュールをインポートして使用する ```dataweave %dw 2.0 import modules::MyModule output application/json --- MyModule::myFunc("dataweave") ++ "name" ``` いくつかの方法でモジュールまたは要素をインポートできます。 - モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。 - モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。 - モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。 出力 ```json "dataweave_name" ``` ## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て 名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。 `MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。 例: カスタムモジュール ```dataweave %dw 2.0 fun myFunc(name:String) = name ++ "_" var myVar = "Test" ``` カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。 例: インポートされる要素に別名を適用する ```dataweave %dw 2.0 import myFunc as appendDash, myVar as weaveName from modules::MyModule var myVar = "Mapping" output application/json --- appendDash("dataweave") ++ weaveName ++ "_" ++ myVar ``` このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。 次のようにインポートされるモジュールの別名を作成できます。 例: インポートされるモジュールに別名を適用する ```dataweave %dw 2.0 import modules::MyModule as WeaveMod output application/json --- WeaveMod::myFunc("dataweave") ``` ## [](#dwl-ファイルの参照)DWL ファイルの参照 DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。 詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction#dwl_file)​を参照してください。 ## [](#docs-dw-lib)カスタム DataWeave モジュールのドキュメントの記述 DataWeave では、関数、型、アノテーション、およびこれらが含まれるモジュールのドキュメント化に AsciiDoc テキスト形式の使用をサポートしています。 ### [](#dataweave-関数のドキュメント化)DataWeave 関数のドキュメント化 DataWeave では、関数コードをドキュメント化するための複数セクションのテンプレートを定義しています。テンプレートでは、次の目的のセクションが提供されます。 - 関数の説明。 - AsciiDoc テーブル形式でのパラメーターの説明。 - 入力、DataWeave スクリプト、生成される出力のセクションが含まれるコード例。 関数の説明の下でパラメーターと例のセクションを定義するために、テンプレートでは AsciiDoc の見出しの文法を使用しています。 - `=== Parameters` - `=== Example` - `==== Source` - `==== Input` - `==== Output` 次の関数テンプレートは、関数のドキュメント化に関する指針となります。テンプレートで示されているように、一部のセクションは省略可能です。 ```DataWeave /** * %Replace with your function description% * * * %Add additional information to your function description% (optional section) * * === Parameters (optional section) * * [%header, cols="1,1,3"] * |=== * | Name | Type | Description * | %`The parameter name`% | %`The parameter type`% | %The parameter description% (one row per param) * |=== * * === Example (optional section) * * %The example description% (optional) * * ==== Source (optional section) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Input (optional section) * * The input description (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Output (optional section) * * %The output description% (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- */ ``` #### [](#説明セクション)説明セクション このセクションでは、関数の説明を提供します。このセクションはコメントの上部で開始され、最初のセクションの見出しの前の行までになります。セクションヘッダーがない場合、説明は関数のコメントの最後までになります。 説明は次のパートで構成されます。 - 簡単な説明: 最初のパラグラフで、関数の主な説明となります。 - 詳細な説明: 関数に関する追加情報。この省略可能な説明は、簡単な説明の下で 2 つの改行を挟んで開始されます。 パラメーターと例のセクションを含む説明が含まれている​[例](#example-documentation)​を参照してください。 各パートは自動生成ドキュメントで便利です。 #### [](#パラメーターセクション)パラメーターセクション 省略可能な ​`=== Parameters`​ セクションで、関数のパラメーターについて説明します。 テンプレートでは、AsciiDoc テーブル形式を使用してテーブル行で各パラメーターをドキュメント化しています。 \[%header, cols="1,1,3"\] |=== | Name | Type | Description | yourParameter1 | パラメーターの型 | ここに説明を記述します。 | yourParameter2 | パラメーターの型 | ここに説明を記述します。 |=== #### [](#例セクション)例セクション 0 個以上の ​`=== Example`​ セクションを使用して、関数の仕組みを説明するために必要な例を提供できます。 このセクションには、次の省略可能なサブセクションが含まれます。 - DataWeave スクリプトへの入力用の ​`==== Input`​。 - DataWeave スクリプト用の ​`==== Source`​。 - スクリプトによって生成される出力用の ​`==== Output`​。 すべてのサブセクションは、省略可能な説明と省略可能なコードセクションが含まれる同じテンプレートに従います。 セクションの説明 \[source,%The language%,linenums\] ---- YOUR CODE ---- 次の例では、 [log](https://docs.mulesoft.com/dataweave/2.4/dw-core-functions-log)​ 関数のドキュメントを示しています。 /\*\* \* Without changing the value of the input, ​\`log\`​ returns the input as a system \* log.So this makes it very simple to debug your code, because any expression or subexpression can be wrapped \* with ​\*log\*​ and the result will be printed out without modifying the result of the expression. \* The output is going to be printed in application/dw format. \* (1) \* \* The prefix parameter is optional and allows to easily find the log output. \* \* \* この関数を使用して、DataWeave スクリプトのデバッグを容易にします。A Mule app \* outputs the results through the ​\`DefaultLoggingService\`, which you can see \* in the Studio console. \* \* === Parameters \* \* \[%header, cols="1,13"\] \* |=== \* | 名前 | Type | Description \* | ​\`prefix\`​ | ​\`String\`​ | 通常はログを説明する文字列 (省略可能)。 \* | ​\`value\`​ | ​\`T\`​ | ログに記録する値。 \* |=== \* \* === Example \* \* 次の例では、指定されたメッセージをログに記録します。Note that the ​\`DefaultLoggingService\` \* in a Mule app that is running in Studio returns the message \* \`WARNING - "Houston, we have a problem,"\`​ adding the dash ​\`-\`​ between the \* prefix and value.The Logger component's ​\`LoggerMessageProcessor\`​ returns \* the input string ​\`"Houston, we have a problem."\`, without the ​\`WARNING\`​ prefix. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* --- \* log("WARNING", "Houston, we have a problem") \* ---- \* \* ==== Output \* \* \`Console Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "WARNING - Houston, we have a problem" \* ---- \* \* \`Expression Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "Houston, we have a problem" \* ---- \* \* === Example \* \* This example shows how to log the result of expression ​\`myUser.user\`​ without modifying the \* original expression ​\`myUser.user.friend.name\`​. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* \* var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } \* --- \* log("User", myUser.user).friend.name \* ---- \* \* ==== Output \* \* \`Console output\`​ \* \* \[source,console,linenums\] \* ---- \* User - { \* friend: { \* name: "Shoki" \* }, \* id: 1, \* name: "Tomo" \* } \* ---- \* \* \`Expression Output\`​ \* \* \[source,DataWeave,linenums\] \* ---- \* "Shoki" \* ---- \*/ ### [](#dataweave-モジュールのドキュメント化)DataWeave モジュールのドキュメント化 DataWeave モジュールの説明は、構造化されたテンプレートに従いません。 唯一の要件は、ドキュメントを DataWeave バージョンタグの上に配置することです。 次の例では、 [dw::Core](https://docs.mulesoft.com/dataweave/2.4/dw-core)​ モジュールをドキュメント化しています。 ```dataweave /** * This module contains core DataWeave functions for data transformations. * It is automatically imported into any DataWeave script. For documentation * on DataWeave _1.0_ functions, see * https://docs.mulesoft.com/dataweave/1.2/dataweave-operators[DataWeave Operators]. */ %dw 2.0 ``` ### [](#アノテーションと型のドキュメント化)アノテーションと型のドキュメント化 アノテーションと型のドキュメント化は、構造化されたテンプレートに従いません。 唯一の要件は、アノテーションまたは型の定義の上に説明を記述することです。 次の例では、​`@StreamCapable`​ アノテーションをドキュメント化しています。 ```dataweave /** * Annotation that marks a parameter as stream capable, which means that this * field will consume an array of objects in a forward-only manner. */ @AnnotationTarget(targets = ["Parameter", "Variable"]) annotation StreamCapable() ``` 次の例では、 [dw::extension::DataFormat](https://docs.mulesoft.com/dataweave/2.4/dw-dataformat)​ モジュールにある ​`EncodingSettings`​ 型をドキュメント化しています。 ```dataweave /** * Represents encoding settings. */ @Since(version = "2.2.0") type EncodingSettings = { /** * Encoding that the writer uses for output. Defaults to "UTF-8". */ encoding?: String {defaultValue: "UTF-8"} } ``` ## [](#関連情報)関連情報 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-reuse-modules) # カスタムモジュールおよびマッピングの作成 組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.7/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。 - カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。 - カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。 多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。 カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-functions)​を参照してください。 ## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。 ![Studio プロジェクトで DataWeave マッピングファイルが表示されているテキストエディター](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-mapping-file.png) Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル 1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。 - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。 - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。 `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーション内のどの DataWeave スクリプトでもそのモジュールにアクセスして使用できるようになります。 2. 次のように、マッピングファイルで関数を作成します。 例: マッピングファイルのコンテンツ ```dataweave %dw 2.0 import dw::core::Strings fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key" --- payload mapObject ((value, key) -> { (capitalizeKey(key as String)) : value } ) ``` 3. DWL 関数モジュールファイルを保存します。 ### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用 マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。 このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。 `MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。 - ヘッダーで ​`import`​ ディレクティブを指定します。 - `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。 例: DataWeave スクリプトにマッピングをインポートして使用する ```dataweave %dw 2.0 import modules::MyMapping output application/json --- MyMapping::main(payload: { "user" : "bar" }) ``` 次に、結果を示します。 出力 ```json { "UserKey": "bar" } ``` [capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。 ## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用 カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。) ![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-function-custom.png) Figure 2. 例: Studio プロジェクトのカスタムモジュール カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。 例: カスタム DataWeave モジュール ```dataweave %dw 2.0 var name = "MyData" fun myFunc(myInput: String) = myInput ++ "_" type User = { name: String, lastname: String } ns mynamespace http://acme.com/bar ``` カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。 - ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。 - `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。 例: カスタム DataWeave モジュールをインポートして使用する ```dataweave %dw 2.0 import modules::MyModule output application/json --- MyModule::myFunc("dataweave") ++ "name" ``` いくつかの方法でモジュールまたは要素をインポートできます。 - モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。 - モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。 - モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。 出力 ```json "dataweave_name" ``` ## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て 名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。 `MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。 例: カスタムモジュール ```dataweave %dw 2.0 fun myFunc(name:String) = name ++ "_" var myVar = "Test" ``` カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。 例: インポートされる要素に別名を適用する ```dataweave %dw 2.0 import myFunc as appendDash, myVar as weaveName from modules::MyModule var myVar = "Mapping" output application/json --- appendDash("dataweave") ++ weaveName ++ "_" ++ myVar ``` このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。 次のようにインポートされるモジュールの別名を作成できます。 例: インポートされるモジュールに別名を適用する ```dataweave %dw 2.0 import modules::MyModule as WeaveMod output application/json --- WeaveMod::myFunc("dataweave") ``` ## [](#dwl-ファイルの参照)DWL ファイルの参照 DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。 詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction#dwl_file)​を参照してください。 ## [](#docs-dw-lib)カスタム DataWeave モジュールのドキュメントの記述 DataWeave では、関数、型、アノテーション、およびこれらが含まれるモジュールのドキュメント化に AsciiDoc テキスト形式の使用をサポートしています。 ### [](#dataweave-関数のドキュメント化)DataWeave 関数のドキュメント化 DataWeave では、関数コードをドキュメント化するための複数セクションのテンプレートを定義しています。テンプレートでは、次の目的のセクションが提供されます。 - 関数の説明。 - AsciiDoc テーブル形式でのパラメーターの説明。 - 入力、DataWeave スクリプト、生成される出力のセクションが含まれるコード例。 関数の説明の下でパラメーターと例のセクションを定義するために、テンプレートでは AsciiDoc の見出しの文法を使用しています。 - `=== Parameters` - `=== Example` - `==== Source` - `==== Input` - `==== Output` 次の関数テンプレートは、関数のドキュメント化に関する指針となります。テンプレートで示されているように、一部のセクションは省略可能です。 ```DataWeave /** * %Replace with your function description% * * * %Add additional information to your function description% (optional section) * * === Parameters (optional section) * * [%header, cols="1,1,3"] * |=== * | Name | Type | Description * | %`The parameter name`% | %`The parameter type`% | %The parameter description% (one row per param) * |=== * * === Example (optional section) * * %The example description% (optional) * * ==== Source (optional section) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Input (optional section) * * The input description (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Output (optional section) * * %The output description% (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- */ ``` #### [](#説明セクション)説明セクション このセクションでは、関数の説明を提供します。このセクションはコメントの上部で開始され、最初のセクションの見出しの前の行までになります。セクションヘッダーがない場合、説明は関数のコメントの最後までになります。 説明は次のパートで構成されます。 - 簡単な説明: 最初のパラグラフで、関数の主な説明となります。 - 詳細な説明: 関数に関する追加情報。この省略可能な説明は、簡単な説明の下で 2 つの改行を挟んで開始されます。 パラメーターと例のセクションを含む説明が含まれている​[例](#example-documentation)​を参照してください。 各パートは自動生成ドキュメントで便利です。 #### [](#パラメーターセクション)パラメーターセクション 省略可能な ​`=== Parameters`​ セクションで、関数のパラメーターについて説明します。 テンプレートでは、AsciiDoc テーブル形式を使用してテーブル行で各パラメーターをドキュメント化しています。 \[%header, cols="1,1,3"\] |=== | Name | Type | Description | yourParameter1 | パラメーターの型 | ここに説明を記述します。 | yourParameter2 | パラメーターの型 | ここに説明を記述します。 |=== #### [](#例セクション)例セクション 0 個以上の ​`=== Example`​ セクションを使用して、関数の仕組みを説明するために必要な例を提供できます。 このセクションには、次の省略可能なサブセクションが含まれます。 - DataWeave スクリプトへの入力用の ​`==== Input`​。 - DataWeave スクリプト用の ​`==== Source`​。 - スクリプトによって生成される出力用の ​`==== Output`​。 すべてのサブセクションは、省略可能な説明と省略可能なコードセクションが含まれる同じテンプレートに従います。 セクションの説明 \[source,%The language%,linenums\] ---- YOUR CODE ---- 次の例では、 [log](https://docs.mulesoft.com/dataweave/2.4/dw-core-functions-log)​ 関数のドキュメントを示しています。 /\*\* \* Without changing the value of the input, ​\`log\`​ returns the input as a system \* log.So this makes it very simple to debug your code, because any expression or subexpression can be wrapped \* with ​\*log\*​ and the result will be printed out without modifying the result of the expression. \* The output is going to be printed in application/dw format. \* (1) \* \* The prefix parameter is optional and allows to easily find the log output. \* \* \* この関数を使用して、DataWeave スクリプトのデバッグを容易にします。A Mule app \* outputs the results through the ​\`DefaultLoggingService\`, which you can see \* in the Studio console. \* \* === Parameters \* \* \[%header, cols="1,13"\] \* |=== \* | 名前 | Type | Description \* | ​\`prefix\`​ | ​\`String\`​ | 通常はログを説明する文字列 (省略可能)。 \* | ​\`value\`​ | ​\`T\`​ | ログに記録する値。 \* |=== \* \* === Example \* \* 次の例では、指定されたメッセージをログに記録します。Note that the ​\`DefaultLoggingService\` \* in a Mule app that is running in Studio returns the message \* \`WARNING - "Houston, we have a problem,"\`​ adding the dash ​\`-\`​ between the \* prefix and value.The Logger component's ​\`LoggerMessageProcessor\`​ returns \* the input string ​\`"Houston, we have a problem."\`, without the ​\`WARNING\`​ prefix. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* --- \* log("WARNING", "Houston, we have a problem") \* ---- \* \* ==== Output \* \* \`Console Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "WARNING - Houston, we have a problem" \* ---- \* \* \`Expression Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "Houston, we have a problem" \* ---- \* \* === Example \* \* This example shows how to log the result of expression ​\`myUser.user\`​ without modifying the \* original expression ​\`myUser.user.friend.name\`​. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* \* var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } \* --- \* log("User", myUser.user).friend.name \* ---- \* \* ==== Output \* \* \`Console output\`​ \* \* \[source,console,linenums\] \* ---- \* User - { \* friend: { \* name: "Shoki" \* }, \* id: 1, \* name: "Tomo" \* } \* ---- \* \* \`Expression Output\`​ \* \* \[source,DataWeave,linenums\] \* ---- \* "Shoki" \* ---- \*/ ### [](#dataweave-モジュールのドキュメント化)DataWeave モジュールのドキュメント化 DataWeave モジュールの説明は、構造化されたテンプレートに従いません。 唯一の要件は、ドキュメントを DataWeave バージョンタグの上に配置することです。 次の例では、 [dw::Core](https://docs.mulesoft.com/dataweave/2.4/dw-core)​ モジュールをドキュメント化しています。 ```dataweave /** * This module contains core DataWeave functions for data transformations. * It is automatically imported into any DataWeave script. For documentation * on DataWeave _1.0_ functions, see * https://docs.mulesoft.com/dataweave/1.2/dataweave-operators[DataWeave Operators]. */ %dw 2.0 ``` ### [](#アノテーションと型のドキュメント化)アノテーションと型のドキュメント化 アノテーションと型のドキュメント化は、構造化されたテンプレートに従いません。 唯一の要件は、アノテーションまたは型の定義の上に説明を記述することです。 次の例では、​`@StreamCapable`​ アノテーションをドキュメント化しています。 ```dataweave /** * Annotation that marks a parameter as stream capable, which means that this * field will consume an array of objects in a forward-only manner. */ @AnnotationTarget(targets = ["Parameter", "Variable"]) annotation StreamCapable() ``` 次の例では、 [dw::extension::DataFormat](https://docs.mulesoft.com/dataweave/2.4/dw-dataformat)​ モジュールにある ​`EncodingSettings`​ 型をドキュメント化しています。 ```dataweave /** * Represents encoding settings. */ @Since(version = "2.2.0") type EncodingSettings = { /** * Encoding that the writer uses for output. Defaults to "UTF-8". */ encoding?: String {defaultValue: "UTF-8"} } ``` ## [](#関連情報)関連情報 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-reuse-modules) # カスタムモジュールおよびマッピングの作成 組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.8/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。 - カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。 - カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。 多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。 カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-functions)​を参照してください。 ## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。 ![Studio プロジェクトで DataWeave マッピングファイルが表示されているテキストエディター](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-mapping-file.png) Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル 1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。 - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。 - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。 `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーション内のどの DataWeave スクリプトでもそのモジュールにアクセスして使用できるようになります。 2. 次のように、マッピングファイルで関数を作成します。 例: マッピングファイルのコンテンツ ```dataweave %dw 2.0 import dw::core::Strings fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key" --- payload mapObject ((value, key) -> { (capitalizeKey(key as String)) : value } ) ``` 3. DWL 関数モジュールファイルを保存します。 ### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用 マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。 このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。 `MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。 - ヘッダーで ​`import`​ ディレクティブを指定します。 - `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。 例: DataWeave スクリプトにマッピングをインポートして使用する ```dataweave %dw 2.0 import modules::MyMapping output application/json --- MyMapping::main(payload: { "user" : "bar" }) ``` 次に、結果を示します。 出力 ```json { "UserKey": "bar" } ``` [capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。 ## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用 カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。) ![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-function-custom.png) Figure 2. 例: Studio プロジェクトのカスタムモジュール カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。 例: カスタム DataWeave モジュール ```dataweave %dw 2.0 var name = "MyData" fun myFunc(myInput: String) = myInput ++ "_" type User = { name: String, lastname: String } ns mynamespace http://acme.com/bar ``` カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。 - ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。 - `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。 例: カスタム DataWeave モジュールをインポートして使用する ```dataweave %dw 2.0 import modules::MyModule output application/json --- MyModule::myFunc("dataweave") ++ "name" ``` いくつかの方法でモジュールまたは要素をインポートできます。 - モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。 - モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。 - モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。 出力 ```json "dataweave_name" ``` ## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て 名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。 `MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。 例: カスタムモジュール ```dataweave %dw 2.0 fun myFunc(name:String) = name ++ "_" var myVar = "Test" ``` カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。 例: インポートされる要素に別名を適用する ```dataweave %dw 2.0 import myFunc as appendDash, myVar as weaveName from modules::MyModule var myVar = "Mapping" output application/json --- appendDash("dataweave") ++ weaveName ++ "_" ++ myVar ``` このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。 次のようにインポートされるモジュールの別名を作成できます。 例: インポートされるモジュールに別名を適用する ```dataweave %dw 2.0 import modules::MyModule as WeaveMod output application/json --- WeaveMod::myFunc("dataweave") ``` ## [](#dwl-ファイルの参照)DWL ファイルの参照 DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。 詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction#dwl_file)​を参照してください。 ## [](#docs-dw-lib)カスタム DataWeave モジュールのドキュメントの記述 DataWeave では、関数、型、アノテーション、およびこれらが含まれるモジュールのドキュメント化に AsciiDoc テキスト形式の使用をサポートしています。 ### [](#dataweave-関数のドキュメント化)DataWeave 関数のドキュメント化 DataWeave では、関数コードをドキュメント化するための複数セクションのテンプレートを定義しています。テンプレートでは、次の目的のセクションが提供されます。 - 関数の説明。 - AsciiDoc テーブル形式でのパラメーターの説明。 - 入力、DataWeave スクリプト、生成される出力のセクションが含まれるコード例。 関数の説明の下でパラメーターと例のセクションを定義するために、テンプレートでは AsciiDoc の見出しの文法を使用しています。 - `=== Parameters` - `=== Example` - `==== Source` - `==== Input` - `==== Output` 次の関数テンプレートは、関数のドキュメント化に関する指針となります。テンプレートで示されているように、一部のセクションは省略可能です。 ```DataWeave /** * %Replace with your function description% * * * %Add additional information to your function description% (optional section) * * === Parameters (optional section) * * [%header, cols="1,1,3"] * |=== * | Name | Type | Description * | %`The parameter name`% | %`The parameter type`% | %The parameter description% (one row per param) * |=== * * === Example (optional section) * * %The example description% (optional) * * ==== Source (optional section) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Input (optional section) * * The input description (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- * * ==== Output (optional section) * * %The output description% (optional) * * [source,%The language%,linenums] (optional) * ---- * YOUR CODE * ---- */ ``` #### [](#説明セクション)説明セクション このセクションでは、関数の説明を提供します。このセクションはコメントの上部で開始され、最初のセクションの見出しの前の行までになります。セクションヘッダーがない場合、説明は関数のコメントの最後までになります。 説明は次のパートで構成されます。 - 簡単な説明: 最初のパラグラフで、関数の主な説明となります。 - 詳細な説明: 関数に関する追加情報。この省略可能な説明は、簡単な説明の下で 2 つの改行を挟んで開始されます。 パラメーターと例のセクションを含む説明が含まれている​[例](#example-documentation)​を参照してください。 各パートは自動生成ドキュメントで便利です。 #### [](#パラメーターセクション)パラメーターセクション 省略可能な ​`=== Parameters`​ セクションで、関数のパラメーターについて説明します。 テンプレートでは、AsciiDoc テーブル形式を使用してテーブル行で各パラメーターをドキュメント化しています。 \[%header, cols="1,1,3"\] |=== | 名前 | 型 | 説明 | yourParameter1 | パラメーターの型 | ここに説明を記述します。 | yourParameter2 | パラメーターの型 | ここに説明を記述します。 |=== #### [](#例セクション)例セクション 0 個以上の ​`=== Example`​ セクションを使用して、関数の仕組みを説明するために必要な例を提供できます。 このセクションには、次の省略可能なサブセクションが含まれます。 - DataWeave スクリプトへの入力用の ​`==== Input`​。 - DataWeave スクリプト用の ​`==== Source`​。 - スクリプトによって生成される出力用の ​`==== Output`​。 すべてのサブセクションは、省略可能な説明と省略可能なコードセクションが含まれる同じテンプレートに従います。 セクションの説明 \[source,%The language%,linenums\] ---- YOUR CODE ---- 次の例では、 [log](https://docs.mulesoft.com/dataweave/2.4/dw-core-functions-log)​ 関数のドキュメントを示しています。 /\*\* \* Without changing the value of the input, ​\`log\`​ returns the input as a system \* log.So this makes it very simple to debug your code, because any expression or subexpression can be wrapped \* with ​\*log\*​ and the result will be printed out without modifying the result of the expression. \* The output is going to be printed in application/dw format. \* (1) \* \* The prefix parameter is optional and allows to easily find the log output. \* \* \* この関数を使用して、DataWeave スクリプトのデバッグを容易にします。A Mule app \* outputs the results through the ​\`DefaultLoggingService\`, which you can see \* in the Studio console. \* \* === Parameters \* \* \[%header, cols="1,13"\] \* |=== \* | 名前 | 型 | 説明 \* | ​\`prefix\`​ | ​\`String\`​ | 通常はログを説明する文字列 (省略可能)。 \* | ​\`value\`​ | ​\`T\`​ | ログに記録する値。 \* |=== \* \* === Example \* \* 次の例では、指定されたメッセージをログに記録します。Note that the ​\`DefaultLoggingService\` \* in a Mule app that is running in Studio returns the message \* \`WARNING - "Houston, we have a problem,"\`​ adding the dash ​\`-\`​ between the \* prefix and value.The Logger component's ​\`LoggerMessageProcessor\`​ returns \* the input string ​\`"Houston, we have a problem."\`, without the ​\`WARNING\`​ prefix. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* --- \* log("WARNING", "Houston, we have a problem") \* ---- \* \* ==== Output \* \* \`Console Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "WARNING - Houston, we have a problem" \* ---- \* \* \`Expression Output\`​ \* \* \[source,XML,linenums\] \* ---- \* "Houston, we have a problem" \* ---- \* \* === Example \* \* This example shows how to log the result of expression ​\`myUser.user\`​ without modifying the \* original expression ​\`myUser.user.friend.name\`​. \* \* ==== Source \* \* \[source,DataWeave,linenums\] \* ---- \* %dw 2.0 \* output application/json \* \* var myUser = {user: {friend: {name: "Shoki"}, id: 1, name: "Tomo"}, accountId: "leansh" } \* --- \* log("User", myUser.user).friend.name \* ---- \* \* ==== Output \* \* \`Console output\`​ \* \* \[source,console,linenums\] \* ---- \* User - { \* friend: { \* name: "Shoki" \* }, \* id: 1, \* name: "Tomo" \* } \* ---- \* \* \`Expression Output\`​ \* \* \[source,DataWeave,linenums\] \* ---- \* "Shoki" \* ---- \*/ ### [](#dataweave-モジュールのドキュメント化)DataWeave モジュールのドキュメント化 DataWeave モジュールの説明は、構造化されたテンプレートに従いません。 唯一の要件は、ドキュメントを DataWeave バージョンタグの上に配置することです。 次の例では、 [dw::Core](https://docs.mulesoft.com/dataweave/2.4/dw-core)​ モジュールをドキュメント化しています。 ```dataweave /** * This module contains core DataWeave functions for data transformations. * It is automatically imported into any DataWeave script. For documentation * on DataWeave _1.0_ functions, see * https://docs.mulesoft.com/dataweave/1.2/dataweave-operators[DataWeave Operators]. */ %dw 2.0 ``` ### [](#アノテーションと型のドキュメント化)アノテーションと型のドキュメント化 アノテーションと型のドキュメント化は、構造化されたテンプレートに従いません。 唯一の要件は、アノテーションまたは型の定義の上に説明を記述することです。 次の例では、​`@StreamCapable`​ アノテーションをドキュメント化しています。 ```dataweave /** * Annotation that marks a parameter as stream capable, which means that this * field will consume an array of objects in a forward-only manner. */ @AnnotationTarget(targets = ["Parameter", "Variable"]) annotation StreamCapable() ``` 次の例では、 [dw::extension::DataFormat](https://docs.mulesoft.com/dataweave/2.4/dw-dataformat)​ モジュールにある ​`EncodingSettings`​ 型をドキュメント化しています。 ```dataweave /** * Represents encoding settings. */ @Since(version = "2.2.0") type EncodingSettings = { /** * Encoding that the writer uses for output. Defaults to "UTF-8". */ encoding?: String {defaultValue: "UTF-8"} } ``` ## [](#関連情報)関連情報 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-modules) # カスタム追加関数の定義 この DataWeave の例では、一連の項目の価格と在庫数を取得し、いくつかの関数を使用して小計を計算し、割引を差し引き、税金を加算します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 以下を使用します。 - 入力のすべての項目を調べる ​`map`​ 関数。 - 基本的な算術演算 (​`*`​、​`+`​、​`-`​ など)。 - `++`​ を使用した文字列連結。 - 文字列値を数値に強制変換する ​`as`​。 - 税額と割引額を設定するヘッダーの固定値。 - 1 回定義してコードで複数回使用するヘッダーのカスタム関数。 - さまざまな項目を 1 つの合計に集約する ​`reduce`​ 関数。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var tax = 0.085 var discount = 0.05 fun getSubtotal (items) = items reduce ((item, accumulator = 0) -> accumulator + (item.unit_price * item.quantity * (1 - discount))) --- invoice: { header: payload.invoice.header, items: { (payload.invoice.items map { item : { description: $.description, quantity: $.quantity, unit_price: $.unit_price, discount: (discount * 100) as Number ++ "%", subtotal: $.unit_price * $.quantity * (1 - discount) } }) }, totals: { subtotal: getSubtotal(payload.invoice.items ), tax: (tax * 100) as Number ++ "%", total: getSubtotal(payload.invoice.items ) * (1 + tax) } } ``` 入力 JSON ペイロード: ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": [ { "description": "Product 1", "quantity": "2", "unit_price": "10" }, { "description": "Product 2", "quantity": "1", "unit_price": "30" } ] } } ``` 出力 ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": { "item": { "description": "Product 1", "quantity": "2", "unit_price": "10", "discount": "5%", "subtotal": 19.00 }, "item": { "description": "Product 2", "quantity": "1", "unit_price": "30", "discount": "5%", "subtotal": 28.50 } }, "totals": { "subtotal": 47.50, "tax": "8.500%", "total": 51.53750 } } } ``` ## [](#関連する例)関連する例 - [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-map) - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-conditional-list-reduction-via-function) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-define-function-to-flatten-list) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # カスタム追加関数の定義 この DataWeave の例では、一連の項目の価格と在庫数を取得し、いくつかの関数を使用して小計を計算し、割引を差し引き、税金を加算します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 以下を使用します。 - 入力のすべての項目を調べる ​`map`​ 関数。 - 基本的な算術演算 (​`*`​、​`+`​、​`-`​ など)。 - `++`​ を使用した文字列連結。 - 文字列値を数値に強制変換する ​`as`​。 - 税額と割引額を設定するヘッダーの固定値。 - 1 回定義してコードで複数回使用するヘッダーのカスタム関数。 - さまざまな項目を 1 つの合計に集約する ​`reduce`​ 関数。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var tax = 0.085 var discount = 0.05 fun getSubtotal (items) = items reduce ((item, accumulator = 0) -> accumulator + (item.unit_price * item.quantity * (1 - discount))) --- invoice: { header: payload.invoice.header, items: { (payload.invoice.items map { item : { description: $.description, quantity: $.quantity, unit_price: $.unit_price, discount: (discount * 100) as Number ++ "%", subtotal: $.unit_price * $.quantity * (1 - discount) } }) }, totals: { subtotal: getSubtotal(payload.invoice.items ), tax: (tax * 100) as Number ++ "%", total: getSubtotal(payload.invoice.items ) * (1 + tax) } } ``` 入力 JSON ペイロード: ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": [ { "description": "Product 1", "quantity": "2", "unit_price": "10" }, { "description": "Product 2", "quantity": "1", "unit_price": "30" } ] } } ``` 出力 ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": { "item": { "description": "Product 1", "quantity": "2", "unit_price": "10", "discount": "5%", "subtotal": 19.00 }, "item": { "description": "Product 2", "quantity": "1", "unit_price": "30", "discount": "5%", "subtotal": 28.50 } }, "totals": { "subtotal": 47.50, "tax": "8.500%", "total": 51.53750 } } } ``` ## [](#関連する例)関連する例 - [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map) - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-conditional-list-reduction-via-function) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-define-function-to-flatten-list) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # カスタム追加関数の定義 この DataWeave の例では、一連の項目の価格と在庫数を取得し、いくつかの関数を使用して小計を計算し、割引を差し引き、税金を加算します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 以下を使用します。 - 入力のすべての項目を調べる ​`map`​ 関数。 - 基本的な算術演算 (​`*`​、​`+`​、​`-`​ など)。 - `++`​ を使用した文字列連結。 - 文字列値を数値に強制変換する ​`as`​。 - 税額と割引額を設定するヘッダーの固定値。 - 1 回定義してコードで複数回使用するヘッダーのカスタム関数。 - さまざまな項目を 1 つの合計に集約する ​`reduce`​ 関数。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var tax = 0.085 var discount = 0.05 fun getSubtotal (items) = items reduce ((item, accumulator = 0) -> accumulator + (item.unit_price * item.quantity * (1 - discount))) --- invoice: { header: payload.invoice.header, items: { (payload.invoice.items map { item : { description: $.description, quantity: $.quantity, unit_price: $.unit_price, discount: (discount * 100) as Number ++ "%", subtotal: $.unit_price * $.quantity * (1 - discount) } }) }, totals: { subtotal: getSubtotal(payload.invoice.items ), tax: (tax * 100) as Number ++ "%", total: getSubtotal(payload.invoice.items ) * (1 + tax) } } ``` 入力 JSON ペイロード: ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": [ { "description": "Product 1", "quantity": "2", "unit_price": "10" }, { "description": "Product 2", "quantity": "1", "unit_price": "30" } ] } } ``` 出力 ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": { "item": { "description": "Product 1", "quantity": "2", "unit_price": "10", "discount": "5%", "subtotal": 19.00 }, "item": { "description": "Product 2", "quantity": "1", "unit_price": "30", "discount": "5%", "subtotal": 28.50 } }, "totals": { "subtotal": 47.50, "tax": "8.500%", "total": 51.53750 } } } ``` ## [](#関連する例)関連する例 - [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-map) - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-conditional-list-reduction-via-function) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-define-function-to-flatten-list) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # カスタム追加関数の定義 この DataWeave の例では、一連の項目の価格と在庫数を取得し、いくつかの関数を使用して小計を計算し、割引を差し引き、税金を加算します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 以下を使用します。 - 入力のすべての項目を調べる ​`map`​ 関数。 - 基本的な算術演算 (​`*`​、​`+`​、​`-`​ など)。 - `++`​ を使用した文字列連結。 - 文字列値を数値に強制変換する ​`as`​。 - 税額と割引額を設定するヘッダーの固定値。 - 1 回定義してコードで複数回使用するヘッダーのカスタム関数。 - さまざまな項目を 1 つの合計に集約する ​`reduce`​ 関数。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var tax = 0.085 var discount = 0.05 fun getSubtotal (items) = items reduce ((item, accumulator = 0) -> accumulator + (item.unit_price * item.quantity * (1 - discount))) --- invoice: { header: payload.invoice.header, items: { (payload.invoice.items map { item : { description: $.description, quantity: $.quantity, unit_price: $.unit_price, discount: (discount * 100) as Number ++ "%", subtotal: $.unit_price * $.quantity * (1 - discount) } }) }, totals: { subtotal: getSubtotal(payload.invoice.items ), tax: (tax * 100) as Number ++ "%", total: getSubtotal(payload.invoice.items ) * (1 + tax) } } ``` 入力 JSON ペイロード: ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": [ { "description": "Product 1", "quantity": "2", "unit_price": "10" }, { "description": "Product 2", "quantity": "1", "unit_price": "30" } ] } } ``` 出力 ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": { "item": { "description": "Product 1", "quantity": "2", "unit_price": "10", "discount": "5%", "subtotal": 19.00 }, "item": { "description": "Product 2", "quantity": "1", "unit_price": "30", "discount": "5%", "subtotal": 28.50 } }, "totals": { "subtotal": 47.50, "tax": "8.500%", "total": 51.53750 } } } ``` ## [](#関連する例)関連する例 - [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map) - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-conditional-list-reduction-via-function) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-define-function-to-flatten-list) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # カスタム追加関数の定義 この DataWeave の例では、一連の項目の価格と在庫数を取得し、いくつかの関数を使用して小計を計算し、割引を差し引き、税金を加算します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 以下を使用します。 - 入力のすべての項目を調べる ​`map`​ 関数。 - 基本的な算術演算 (​`*`​、​`+`​、​`-`​ など)。 - `++`​ を使用した文字列連結。 - 文字列値を数値に強制変換する ​`as`​。 - 税額と割引額を設定するヘッダーの固定値。 - 1 回定義してコードで複数回使用するヘッダーのカスタム関数。 - さまざまな項目を 1 つの合計に集約する ​`reduce`​ 関数。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var tax = 0.085 var discount = 0.05 fun getSubtotal (items) = items reduce ((item, accumulator = 0) -> accumulator + (item.unit_price * item.quantity * (1 - discount))) --- invoice: { header: payload.invoice.header, items: { (payload.invoice.items map { item : { description: $.description, quantity: $.quantity, unit_price: $.unit_price, discount: (discount * 100) as Number ++ "%", subtotal: $.unit_price * $.quantity * (1 - discount) } }) }, totals: { subtotal: getSubtotal(payload.invoice.items ), tax: (tax * 100) as Number ++ "%", total: getSubtotal(payload.invoice.items ) * (1 + tax) } } ``` 入力 JSON ペイロード: ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": [ { "description": "Product 1", "quantity": "2", "unit_price": "10" }, { "description": "Product 2", "quantity": "1", "unit_price": "30" } ] } } ``` 出力 ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": { "item": { "description": "Product 1", "quantity": "2", "unit_price": "10", "discount": "5%", "subtotal": 19.00 }, "item": { "description": "Product 2", "quantity": "1", "unit_price": "30", "discount": "5%", "subtotal": 28.50 } }, "totals": { "subtotal": 47.50, "tax": "8.500%", "total": 51.53750 } } } ``` ## [](#関連する例)関連する例 - [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-map) - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-conditional-list-reduction-via-function) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-define-function-to-flatten-list) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # カスタム追加関数の定義 この DataWeave の例では、一連の項目の価格と在庫数を取得し、いくつかの関数を使用して小計を計算し、割引を差し引き、税金を加算します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 以下を使用します。 - 入力のすべての項目を調べる ​`map`​ 関数。 - 基本的な算術演算 (​`*`​、​`+`​、​`-`​ など)。 - `++`​ を使用した文字列連結。 - 文字列値を数値に強制変換する ​`as`​。 - 税額と割引額を設定するヘッダーの固定値。 - 1 回定義してコードで複数回使用するヘッダーのカスタム関数。 - さまざまな項目を 1 つの合計に集約する ​`reduce`​ 関数。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var tax = 0.085 var discount = 0.05 fun getSubtotal (items) = items reduce ((item, accumulator = 0) -> accumulator + (item.unit_price * item.quantity * (1 - discount))) --- invoice: { header: payload.invoice.header, items: { (payload.invoice.items map { item : { description: $.description, quantity: $.quantity, unit_price: $.unit_price, discount: (discount * 100) as Number ++ "%", subtotal: $.unit_price * $.quantity * (1 - discount) } }) }, totals: { subtotal: getSubtotal(payload.invoice.items ), tax: (tax * 100) as Number ++ "%", total: getSubtotal(payload.invoice.items ) * (1 + tax) } } ``` 入力 JSON ペイロード: ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": [ { "description": "Product 1", "quantity": "2", "unit_price": "10" }, { "description": "Product 2", "quantity": "1", "unit_price": "30" } ] } } ``` 出力 ```json { "invoice": { "header": { "customer_name": "ACME, Inc.", "customer_state": "CA" }, "items": { "item": { "description": "Product 1", "quantity": "2", "unit_price": "10", "discount": "5%", "subtotal": 19.00 }, "item": { "description": "Product 2", "quantity": "1", "unit_price": "30", "discount": "5%", "subtotal": 28.50 } }, "totals": { "subtotal": 47.50, "tax": "8.500%", "total": 51.53750 } } } ``` ## [](#関連する例)関連する例 - [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map) - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-conditional-list-reduction-via-function) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-define-function-to-flatten-list) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave Core 関数](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # コアアノテーション (dw::Core)
アノテーション 定義 説明

AnnotationTarget

​@AnnotationTarget(targets: Array<String>)​

アノテーションを使用できる場所を定義します。定義しない場合、任意の可能な対象でアノテーションを使用できます。

次のオプションがあります。

  • パラメーター: 関数のパラメーター。

  • 関数: 関数の定義。

  • 変数: 変数の定義。

  • インポート: インポートの定義。

DesignOnlyType

​@DesignOnlyType()​

パラメーター種別を「設計のみ」としてマークするアノテーション。つまり、この項目の型は設計時にのみ検証されます。実行時には最小限の検証が実行されます。これは、特に複雑な Object (オブジェクト) 型の場合など、パフォーマンス上の理由で役立ちます。

Lazy (遅延)

​@Lazy()​

変数宣言を遅延初期化済みとしてマークするアノテーション。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

RuntimePermissions

​@RuntimePermissions(permissions: Array<String>)​

関数で特定の Runtime 権限を実行する必要があることを指定するアノテーション。

Since (以降)

​@Since(version: String)​

この機能が使用可能になるバージョンを定義するために使用されるアノテーション。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

StreamCapable

​@StreamCapable()​

パラメーターを「ストリーム」対応としてマークするアノテーション。つまり、この項目は前方移動のみの方法でオブジェクトの配列をコンシュームします。

TailRec

​@TailRec()​

関数を「末尾再帰」としてマークするアノテーション。関数が末尾再帰でない場合、関数は開始できません。

# コアアノテーション (dw::Core)
アノテーション 定義 説明

AnnotationTarget

​@AnnotationTarget(targets: Array<"Function" | "Parameter" | "Variable" | "Import">)​

アノテーションのスコープを制限するアノテーション。たとえば、​Lazy​ アノテーションは変数のみに適用され、​StreamCapable​ アノテーションはパラメーターと変数のみに適用されます。​AnnotationTarget​ を指定しなかった場合、アノテーションは任意の有効な対象に適用できます。例として、アノテーション ​annotation TailRec()​ のスコープを制限する ​@AnnotationTarget(targets = ["Function", "Variable"])​ があります。

アノテーションの対象:

  • Parameter​: 関数のパラメーター。

  • Function​: 関数の定義。

  • Variable​: 変数の定義。

  • Import​: インポートの定義。

非推奨

​@Deprecated(since: String, replacement: String)​

関数を非推奨としてマークするアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

DesignOnlyType

​@DesignOnlyType()​

パラメーターの型を​設計のみ​としてマークし、データ型が設計時のみ検証されることを示すアノテーション。実行時には最小限の検証が実行されます。このアノテーションは、特に複雑な Object (オブジェクト) 型でパフォーマンスを高めるのに役立ちます。

Experimental

​@Experimental()​

関数を実験的とマークし、今後変更や削除される可能性があることを示すアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

GlobalDescription

​@GlobalDescription()​

どの関数が関数のドキュメントセクションから関数の説明を示すかを明らかにするためのアノテーション。このアノテーションは、関数がオーバーロード状態のときに適切な関数の説明を選択するのに役立ちます。

DataWeave バージョン 2.4.0 で導入されました。​

Interceptor

​@Interceptor(interceptorFunction: String | (annotationArgs: Object, targetFunctionName: String, args: Array<Any>, callback: (args: Array<Any>) -> Any) -> Any)​

別のアノテーションをインターセプターとしてマークし、マークされたアノテーションによってアノテーションを付加された関数が ​interceptorFunction​ でラップされるようにするアノテーション。 例としては、​@Interceptor(interceptorFunction = "@native system::SecurityManagerCheckFunctionValue")​ によってアノテーションが付加される ​RuntimePrivilege​ アノテーションがあります。 readUrl​ 関数の定義は ​@RuntimePrivilege(requires = "Resource")​ によってアノテーションが付加されます。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

内部

​@Internal(permits: Array<String>)​

関数を​内部​とマークするアノテーションで、使用されないことを示します。

DataWeave 2.4.0 で導入されました。​

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

Labels (ラベル)

​@Labels(labels: Array<String>)​

関数または変数に表示ラベルを付けて、表示ラベルが付けられた対象を見つけやすくするためのアノテーション。例としては、​map​ 関数や ​mapObject​ 関数の定義にアノテーションを付加する ​@Labels(labels = ["foreach", "transform"])​ があります。

DataWeave バージョン 2.4.0 で導入されました。​

Lazy (遅延)

​@Lazy()​

遅延初期化のために変数宣言をマークするアノテーション。

DataWeave バージョン 2.3.0 で導入されました。​

RuntimePrivilege

​@RuntimePrivilege(requires: String)​

関数を実行するには実行時権限が必要であることを示すためのアノテーション。例としては、​readUrl​ 関数の定義にアノテーションを付加する ​@RuntimePrivilege(requires = "Resource")​ があります。

Since (以降)

​@Since(version: String)​

アノテーションが付加された機能が導入された DataWeave バージョンを明らかにするアノテーション。例としては、​@Since(version = "2.4.0")​ があります。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

StreamCapable

​@StreamCapable()​

パラメーターをストリーム対応としてマークするアノテーション。これは、アノテーションが付加された項目が前方移動のみの方法でオブジェクトの配列をコンシュームすることを意味します。 @StreamCapable​ 項目が含まれる関数の例としては、​map​、​mapObject​、​pluck​ があります。

TailRec

​@TailRec()​

関数を末尾再帰としてマークするアノテーション。このアノテーションが付加された関数が末尾再帰でない場合、関数は失敗します。

UntrustedCode

​@UntrustedCode()​

スクリプトを信用できないとマークするアノテーション。これは、スクリプトに権限がないことを意味します。たとえば、スクリプトでは環境変数へのアクセス権を取得したり URL からのリソースを読み取ったりすることができません。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

# コアアノテーション (dw::Core)
アノテーション 定義 説明

AnnotationTarget

@AnnotationTarget(targets: Array<"Function" | "Parameter" | "Variable" | "Import">)

アノテーションの適用を制限するアノテーション。例として、アノテーション ​annotation TailRec()​ のスコープを関数および変数に制限する ​@AnnotationTarget(targets = ["Function", "Variable"])​ があります。​AnnotationTarget​ を指定しなかった場合、アノテーションは任意の有効な対象に適用できます。

アノテーションの対象:

  • Parameter​: 関数のパラメーター。

  • Function​: 関数の定義。

  • Variable​: 変数の定義。

  • Import​: インポートの定義。

非推奨

@Deprecated(since: String, replacement: String)

関数を非推奨としてマークするアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

DesignOnlyType

@DesignOnlyType()

パラメーターの型を​設計のみ​としてマークし、データ型が設計時のみ検証されることを示すアノテーション。実行時には最小限の検証が実行されます。このアノテーションは、特に複雑な Object (オブジェクト) 型でパフォーマンスを高めるのに役立ちます。

Experimental

@Experimental()

機能を実験的として識別し、今後変更や削除される可能性があることを示すアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

GlobalDescription

@GlobalDescription()

関数のドキュメントで使用する関数の説明を識別するために使用されるアノテーション。このアノテーションは、関数がオーバーロード状態のときに適切な関数の説明を選択するのに役立ちます。

DataWeave バージョン 2.4.0 で導入されました。​

Interceptor

@Interceptor(interceptorFunction: String | (annotationArgs: Object, targetFunctionName: String, args: Array<Any>, callback: (args: Array<Any>) -> Any) -> Any)

別のアノテーションをインターセプターとしてマークし、マークされたアノテーションによってアノテーションを付加された関数が ​interceptorFunction​ でラップされるようにするアノテーション。 例としては、​@Interceptor(interceptorFunction = "@native system::SecurityManagerCheckFunctionValue")​ によってアノテーションが付加される ​RuntimePrivilege​ アノテーションがあります。 readUrl​ 関数の定義は ​@RuntimePrivilege(requires = "Resource")​ によってアノテーションが付加されます。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

内部

@Internal(permits: Array<String>)

関数を​内部​とマークするアノテーションで、使用されないことを示します。

​_DataWeave 2.4.0 で導入されました。Mule 4.4.0 以降でサポートされます。_​

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

Labels (ラベル)

@Labels(labels: Array<String>)

関数または変数定義に表示ラベルを付けて、見つけやすくするためのアノテーション。例としては、​@Labels(labels =["append", "concat"])​ があります。

DataWeave バージョン 2.4.0 で導入されました。​

Lazy (遅延)

@Lazy()

遅延初期化のために変数宣言をマークするアノテーション。

DataWeave バージョン 2.3.0 で導入されました。​

RuntimePrivilege

@RuntimePrivilege(requires: String)

関数を実行するには実行時権限が必要であることを示すためのアノテーション。例としては、​readUrl​ 関数の定義にアノテーションを付加する ​@RuntimePrivilege(requires = "Resource")​ があります。

Since (以降)

@Since(version: String)

アノテーションが付加された機能が導入された DataWeave バージョンを明らかにするアノテーション。例としては、​@Since(version = "2.4.0")​ があります。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

StreamCapable

@StreamCapable()

パラメーターをストリーム対応としてマークするアノテーション。これは、この項目が前方移動のみの方法でオブジェクトの配列をコンシュームすることを意味します。​@StreamCapable​ 項目が含まれる関数の例としては、​map​、​mapObject​、​pluck​ があります。

TailRec

@TailRec()

関数を末尾再帰としてマークするアノテーション。このアノテーションが付加された関数が末尾再帰でない場合、関数は失敗します。

UntrustedCode

@UntrustedCode(privileges: Array<String>)

スクリプトを信用できないとマークするアノテーション。これは、スクリプトに権限がないことを意味します。たとえば、そのようなスクリプトでは環境変数へのアクセス権を取得したり URL からのリソースを読み取ったりすることができません。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

# コアアノテーション (dw::Core)
アノテーション 定義 説明

AnnotationTarget

@AnnotationTarget(targets: Array<"Function" | "Parameter" | "Variable" | "Import">)

アノテーションの適用を制限するアノテーション。例として、アノテーション ​annotation TailRec()​ のスコープを関数および変数に制限する ​@AnnotationTarget(targets = ["Function", "Variable"])​ があります。​AnnotationTarget​ を指定しなかった場合、アノテーションは任意の有効な対象に適用できます。

アノテーションの対象:

  • Parameter​: 関数のパラメーター。

  • Function​: 関数の定義。

  • Variable​: 変数の定義。

  • Import​: インポートの定義。

非推奨

@Deprecated(since: String, replacement: String)

関数を非推奨としてマークするアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

DesignOnlyType

@DesignOnlyType()

パラメーターの型を​設計のみ​としてマークし、データ型が設計時のみ検証されることを示すアノテーション。実行時には最小限の検証が実行されます。このアノテーションは、特に複雑な Object (オブジェクト) 型でパフォーマンスを高めるのに役立ちます。

Experimental

@Experimental()

機能を実験的として識別し、今後変更や削除される可能性があることを示すアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

GlobalDescription

@GlobalDescription()

関数のドキュメントで使用する関数の説明を識別するために使用されるアノテーション。このアノテーションは、関数がオーバーロード状態のときに適切な関数の説明を選択するのに役立ちます。

DataWeave バージョン 2.4.0 で導入されました。​

Interceptor

@Interceptor(interceptorFunction: String | (annotationArgs: Object, targetFunctionName: String, args: Array<Any>, callback: (args: Array<Any>) -> Any) -> Any)

別のアノテーションをインターセプターとしてマークし、マークされたアノテーションによってアノテーションを付加された関数が ​interceptorFunction​ でラップされるようにするアノテーション。 例としては、​@Interceptor(interceptorFunction = "@native system::SecurityManagerCheckFunctionValue")​ によってアノテーションが付加される ​RuntimePrivilege​ アノテーションがあります。 readUrl​ 関数の定義は ​@RuntimePrivilege(requires = "Resource")​ によってアノテーションが付加されます。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

内部

@Internal(permits: Array<String>)

関数を​内部​とマークするアノテーションで、使用されないことを示します。

​_DataWeave 2.4.0 で導入されました。Mule 4.4.0 以降でサポートされます。_​

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

Labels (ラベル)

@Labels(labels: Array<String>)

関数または変数定義に表示ラベルを付けて、見つけやすくするためのアノテーション。例としては、​@Labels(labels =["append", "concat"])​ があります。

DataWeave バージョン 2.4.0 で導入されました。​

Lazy (遅延)

@Lazy()

遅延初期化のために変数宣言をマークするアノテーション。

DataWeave バージョン 2.3.0 で導入されました。​

RuntimePrivilege

@RuntimePrivilege(requires: String)

関数を実行するには実行時権限が必要であることを示すためのアノテーション。例としては、​readUrl​ 関数の定義にアノテーションを付加する ​@RuntimePrivilege(requires = "Resource")​ があります。

Since (以降)

@Since(version: String)

アノテーションが付加された機能が導入された DataWeave バージョンを明らかにするアノテーション。例としては、​@Since(version = "2.4.0")​ があります。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

StreamCapable

@StreamCapable()

パラメーターをストリーム対応としてマークするアノテーション。これは、この項目が前方移動のみの方法でオブジェクトの配列をコンシュームすることを意味します。​@StreamCapable​ 項目が含まれる関数の例としては、​map​、​mapObject​、​pluck​ があります。

TailRec

@TailRec()

関数を末尾再帰としてマークするアノテーション。このアノテーションが付加された関数が末尾再帰でない場合、関数は失敗します。

UntrustedCode

@UntrustedCode(privileges: Array<String>)

スクリプトを信用できないとマークするアノテーション。これは、スクリプトに権限がないことを意味します。たとえば、そのようなスクリプトでは環境変数へのアクセス権を取得したり URL からのリソースを読み取ったりすることができません。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

# コアアノテーション (dw::Core)
アノテーション 定義 説明

AnnotationTarget

@AnnotationTarget(targets: Array<"Function" | "Parameter" | "Variable" | "Import">)

アノテーションの適用を制限するアノテーション。例として、アノテーション ​annotation TailRec()​ のスコープを関数および変数に制限する ​@AnnotationTarget(targets = ["Function", "Variable"])​ があります。​AnnotationTarget​ を指定しなかった場合、アノテーションは任意の有効な対象に適用できます。

アノテーションの対象:

  • Parameter​: 関数のパラメーター。

  • Function​: 関数の定義。

  • Variable​: 変数の定義。

  • Import​: インポートの定義。

非推奨

@Deprecated(since: String, replacement: String)

関数を非推奨としてマークするアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

DesignOnlyType

@DesignOnlyType()

パラメーターの型を​設計のみ​としてマークし、データ型が設計時のみ検証されることを示すアノテーション。実行時には最小限の検証が実行されます。このアノテーションは、特に複雑な Object (オブジェクト) 型でパフォーマンスを高めるのに役立ちます。

Experimental

@Experimental()

機能を実験的として識別し、今後変更や削除される可能性があることを示すアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

GlobalDescription

@GlobalDescription()

関数のドキュメントで使用する関数の説明を識別するために使用されるアノテーション。このアノテーションは、関数がオーバーロード状態のときに適切な関数の説明を選択するのに役立ちます。

DataWeave バージョン 2.4.0 で導入されました。​

Interceptor

@Interceptor(interceptorFunction: String | (annotationArgs: Object, targetFunctionName: String, args: Array<Any>, callback: (args: Array<Any>) -> Any) -> Any)

別のアノテーションをインターセプターとしてマークし、マークされたアノテーションによってアノテーションを付加された関数が ​interceptorFunction​ でラップされるようにするアノテーション。 例としては、​@Interceptor(interceptorFunction = "@native system::SecurityManagerCheckFunctionValue")​ によってアノテーションが付加される ​RuntimePrivilege​ アノテーションがあります。 readUrl​ 関数の定義は ​@RuntimePrivilege(requires = "Resource")​ によってアノテーションが付加されます。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

内部

@Internal(permits: Array<String>)

関数を​内部​とマークするアノテーションで、使用されないことを示します。

​_DataWeave 2.4.0 で導入されました。Mule 4.4.0 以降でサポートされます。_​

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

Labels (ラベル)

@Labels(labels: Array<String>)

関数または変数定義に表示ラベルを付けて、見つけやすくするためのアノテーション。例としては、​@Labels(labels =["append", "concat"])​ があります。

DataWeave バージョン 2.4.0 で導入されました。​

Lazy (遅延)

@Lazy()

遅延初期化のために変数宣言をマークするアノテーション。

DataWeave バージョン 2.3.0 で導入されました。​

RuntimePrivilege

@RuntimePrivilege(requires: String)

関数を実行するには実行時権限が必要であることを示すためのアノテーション。例としては、​readUrl​ 関数の定義にアノテーションを付加する ​@RuntimePrivilege(requires = "Resource")​ があります。

Since (以降)

@Since(version: String)

アノテーションが付加された機能が導入された DataWeave バージョンを明らかにするアノテーション。例としては、​@Since(version = "2.4.0")​ があります。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

StreamCapable

@StreamCapable()

パラメーターをストリーム対応としてマークするアノテーション。これは、この項目が前方移動のみの方法でオブジェクトの配列をコンシュームすることを意味します。​@StreamCapable​ 項目が含まれる関数の例としては、​map​、​mapObject​、​pluck​ があります。

TailRec

@TailRec()

関数を末尾再帰としてマークするアノテーション。このアノテーションが付加された関数が末尾再帰でない場合、関数は失敗します。

UntrustedCode

@UntrustedCode(privileges: Array<String>)

スクリプトを信用できないとマークするアノテーション。これは、スクリプトに権限がないことを意味します。たとえば、そのようなスクリプトでは環境変数へのアクセス権を取得したり URL からのリソースを読み取ったりすることができません。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

# コアアノテーション (dw::Core)
アノテーション 定義 説明

AnnotationTarget

@AnnotationTarget(targets: Array<"Function" | "Parameter" | "Variable" | "Import" | "Type" | "Version" | "Namespace" | "KeyType" | "TypeExpression" | "Expression" | "Annotation">)

アノテーションの適用を制限するアノテーション。例として、アノテーション ​annotation TailRec()​ のスコープを関数および変数に制限する ​@AnnotationTarget(targets = ["Function", "Variable"])​ があります。​AnnotationTarget​ を指定しなかった場合、アノテーションは任意の有効な対象に適用できます。

アノテーションの対象:

  • Parameter​: 関数のパラメーター。

  • Function​: 関数の定義。

  • Variable​: 変数の定義。

  • Import​: インポートの定義。

非推奨

@Deprecated(since: String, replacement: String)

関数を非推奨としてマークするアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

DesignOnlyType

@DesignOnlyType()

パラメーターの型を​設計のみ​としてマークし、データ型が設計時のみ検証されることを示すアノテーション。実行時には最小限の検証が実行されます。このアノテーションは、特に複雑な Object (オブジェクト) 型でパフォーマンスを高めるのに役立ちます。

Experimental

@Experimental()

機能を実験的として識別し、今後変更や削除される可能性があることを示すアノテーション。

DataWeave バージョン 2.4.0 で導入されました。​

GlobalDescription

@GlobalDescription()

関数のドキュメントで使用する関数の説明を識別するために使用されるアノテーション。このアノテーションは、関数がオーバーロード状態のときに適切な関数の説明を選択するのに役立ちます。

DataWeave バージョン 2.4.0 で導入されました。​

Interceptor

@Interceptor(interceptorFunction: String | (annotationArgs: Object, targetFunctionName: String, args: Array<Any>, callback: (args: Array<Any>) -> Any) -> Any)

別のアノテーションをインターセプターとしてマークし、マークされたアノテーションによってアノテーションを付加された関数が ​interceptorFunction​ でラップされるようにするアノテーション。 例としては、​@Interceptor(interceptorFunction = "@native system::SecurityManagerCheckFunctionValue")​ によってアノテーションが付加される ​RuntimePrivilege​ アノテーションがあります。 readUrl​ 関数の定義は ​@RuntimePrivilege(requires = "Resource")​ によってアノテーションが付加されます。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

内部

@Internal(permits: Array<String>)

関数を​内部​とマークするアノテーションで、使用されないことを示します。

​_DataWeave 2.4.0 で導入されました。Mule 4.4.0 以降でサポートされます。_​

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

Labels (ラベル)

@Labels(labels: Array<String>)

関数または変数定義に表示ラベルを付けて、見つけやすくするためのアノテーション。例としては、​@Labels(labels =["append", "concat"])​ があります。

DataWeave バージョン 2.4.0 で導入されました。​

Lazy (遅延)

@Lazy()

遅延初期化のために変数宣言をマークするアノテーション。

DataWeave バージョン 2.3.0 で導入されました。​

Metadata (メタデータ)

@Metadata(key: String)

メタデータを表すアノテーションをマークするために使用するアノテーション。

DataWeave バージョン 2.8.0 で導入されました。​

RuntimePrivilege

@RuntimePrivilege(requires: String)

関数を実行するには実行時権限が必要であることを示すためのアノテーション。例としては、​readUrl​ 関数の定義にアノテーションを付加する ​@RuntimePrivilege(requires = "Resource")​ があります。

Since (以降)

@Since(version: String)

アノテーションが付加された機能が導入された DataWeave バージョンを明らかにするアノテーション。例としては、​@Since(version = "2.4.0")​ があります。

DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。​

StreamCapable

@StreamCapable()

パラメーターをストリーム対応としてマークするアノテーション。これは、この項目が前方移動のみの方法でオブジェクトの配列をコンシュームすることを意味します。​@StreamCapable​ 項目が含まれる関数の例としては、​map​、​mapObject​、​pluck​ があります。

TailRec

@TailRec()

関数を末尾再帰としてマークするアノテーション。このアノテーションが付加された関数が末尾再帰でない場合、関数は失敗します。

UntrustedCode

@UntrustedCode(privileges: Array<String>)

スクリプトを信用できないとマークするアノテーション。これは、スクリプトに権限がないことを意味します。たとえば、そのようなスクリプトでは環境変数へのアクセス権を取得したり URL からのリソースを読み取ったりすることができません。

実験的:​ この実験的機能は、DataWeave の将来のバージョンで変更または削除される場合があります。

# コア名前空間 (dw::Core)
名前空間 定義 説明

xsi

​xsi =​ ​http://www.w3.org/2001/XMLSchema-instance

XMLSchema の名前空間宣言。

# コア名前空間 (dw::Core)
Namespace (名前空間) 定義 説明

xsi

​xsi = http://www.w3.org/2001/XMLSchema-instance

XMLSchema の名前空間宣言。

# コア名前空間 (dw::Core)
名前空間 定義 説明

xsi

xsi = http://www.w3.org/2001/XMLSchema-instance

XMLSchema の名前空間宣言。

# コア名前空間 (dw::Core)
名前空間 定義 説明

xsi

xsi = http://www.w3.org/2001/XMLSchema-instance

XMLSchema の名前空間宣言。

# コア名前空間 (dw::Core)
名前空間 定義 説明

xsi

xsi = http://www.w3.org/2001/XMLSchema-instance

XMLSchema の名前空間宣言。

# コア名前空間 (dw::Core)
名前空間 定義 説明

xsi

xsi = http://www.w3.org/2001/XMLSchema-instance

XMLSchema の名前空間宣言。

# コネクタ操作を介したリーダープロパティの使用 入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。 デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。 パイプ区切りの CSV 入力 ```csv id | name | role 1234 | Shokida,Mr. | dev 2345 | Achaval,Mr. | arch 3456 | Felisatti,Ms. | mngr 4567 | Chibana,Mr. | dev ``` 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。 Mule フロー: ```xml ``` 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Read 操作 (​``​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。 Transform Message コンポーネント (​``​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。 `payload`​ に設定された Logger コンポーネント (​``​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。 `outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。 - `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-csv#example2) - `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-json#example3) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # コネクタ操作を介したリーダープロパティの使用 入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。 デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。 パイプ区切りの CSV 入力 ```csv id | name | role 1234 | Shokida,Mr. | dev 2345 | Achaval,Mr. | arch 3456 | Felisatti,Ms. | mngr 4567 | Chibana,Mr. | dev ``` 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。 Mule フロー: ```xml ``` 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Read 操作 (​``​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。 Transform Message コンポーネント (​``​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。 `payload`​ に設定された Logger コンポーネント (​``​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。 `outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。 - `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-csv#example2) - `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-json#example3) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # コネクタ操作を介したリーダープロパティの使用 入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。 デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。 パイプ区切りの CSV 入力 ```csv id | name | role 1234 | Shokida,Mr. | dev 2345 | Achaval,Mr. | arch 3456 | Felisatti,Ms. | mngr 4567 | Chibana,Mr. | dev ``` 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。 Mule フロー: ```xml ``` 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Read 操作 (​``​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。 Transform Message コンポーネント (​``​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。 `payload`​ に設定された Logger コンポーネント (​``​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。 `outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。 - `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-csv#example2) - `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-json#example3) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # コネクタ操作を介したリーダープロパティの使用 入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。 デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。 パイプ区切りの CSV 入力 ```csv id | name | role 1234 | Shokida,Mr. | dev 2345 | Achaval,Mr. | arch 3456 | Felisatti,Ms. | mngr 4567 | Chibana,Mr. | dev ``` 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。 Mule フロー: ```xml ``` 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Read 操作 (​``​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。 Transform Message コンポーネント (​``​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。 `payload`​ に設定された Logger コンポーネント (​``​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。 `outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。 - `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-csv#example2) - `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-json#example3) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # コネクタ操作を介したリーダープロパティの使用 入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。 デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。 パイプ区切りの CSV 入力 ```csv id | name | role 1234 | Shokida,Mr. | dev 2345 | Achaval,Mr. | arch 3456 | Felisatti,Ms. | mngr 4567 | Chibana,Mr. | dev ``` 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。 Mule フロー: ```xml ``` 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Read 操作 (​``​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。 Transform Message コンポーネント (​``​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。 `payload`​ に設定された Logger コンポーネント (​``​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。 `outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。 - `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-csv#example2) - `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-json#example3) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # サポートされるデータ形式 DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ ID サポートされる形式

​application/avro​

​avro​

​Avro 形式

​application/csv​

​csv​

​CSV 形式

​application/dw​

​dw​

DataWeave 式をテストするための ​DataWeave 形式 (dw)

​application/flatfile​

​flatfile​

​フラットファイル形式​、​COBOL コピーブック形式​、​固定幅形式

​application/java​

​java​

​Java 形式​、​Java の Enum 形式

​application/json​

​json​

​JSON 形式

​application/octet-stream​

​binary​

​バイナリ形式

​application/xlsx​

​excel​

​Excel 形式

​application/xml​

​xml​

​XML 形式​、​CData カスタム型

​application/x-ndjson​

​ndjson​

​改行区切りの JSON 形式 (ndjson)

​application/x-www-form-urlencoded​

​urlencoded​

​URL エンコード形式

​application/yaml​

​yaml​

​YAML 形式

​multipart/form-data​

​multipart​

​マルチパート形式

​text/plain​

​text​

​テキスト/プレーン形式

​text/x-java-properties​

​properties​

​テキスト Java プロパティ​

## [](#dw_readers_writers)DataWeave リーダー DataWeave は、入力データ全体をメモリ内でインデックス付きで読み取ることができます。また、データ形式によっては、入力をストリーミングして部分ごとに読み取ることもできます。大きなファイルを読み取る場合、メモリ不足になったり、パフォーマンスが低下したりする可能性があります。ストリーミングはパフォーマンスを向上する可能性がありますが、ファイルへのアクセスに影響します。 - インデックス付きおよびメモリ内: このどちらの戦略でもドキュメント全体が解析されるため、データへのランダムアクセスが可能です。これらの戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。 - インデックス付き: ディスク上でインデックスを使用します。 DataWeave では、インデックス付きモードで次の形式のみを読み取ることができます。 CSV、JSON、XML (Mule 4.3.0 以降) DataWeave では、インデックス付きモードで Excel (XLSX) 入力を読み込むことは​_できません_​。 - メモリ内: メモリ内でドキュメント全体を解析します。 DataWeave では、メモリ内モードを使用して、サポートされるすべての形式を読み取ることができます。 - ストリーミング: ファイルへの順次アクセスが可能です。この戦略では、入力ドキュメントを小さな項目に分割し、そのデータに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にアクセスできます。 DataWeave では、次の形式でのみストリーミングがサポートされます。 CSV、JSON、Excel (XLSX、Mule 4.2.2 以降)、XML (Mule 4.3.0) 詳細は、​[「DataWeave のストリーミング」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-streaming)​を参照してください。 ## [](#reader_writer_properties)リーダーとライターのプロパティの使用 場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、​`separator`​ (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。 Cobol コピーブックでは、​`schemaPath`​ プロパティを使用して、スキーマファイルへのパスを指定する必要があります。 Mule アプリケーション内の特定のコンポーネントの MIME タイプ (​`outputMimeType`​) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの ​`,`​ 区切り文字を識別します。 例: CSV リーダーのプロパティ ```xml ``` 上記の ​`outputMimeType`​ 設定は、ライターではなく CSV ​_リーダー_​が ​`comma_separated.csv`​ 入力ファイルの形式と区切り文字を解釈するのに役立ちます。 出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (​`|`​) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の ​`output`​ ディレクティブに追加します。たとえば、次の Write 操作ではパイプを ​`separator`​ として指定しています。 例: CSV ライターの出力ディレクティブ ```xml ``` 次の例は、​`output`​ ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。 ```json %dw 2.0 output application/csv separator=";", header=false --- payload ``` ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ ​`skipNullOn`​ を使用します。 ```json %dw 2.0 output application/json skipNullOn="everywhere" --- payload ``` 次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は ​`\u001E`​ です。​`\u`​ はエスケープシーケンス表現で、​`001E`​ はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。 ```DataWeave %dw 2.0 output application/csv separator = "\u001E" --- [ { "Name" : "Tom", "UID" : 2569, "ShipOrderID" : "ui-288188" }, { "Name" : "Alan", "UID" : 7756, "ShipOrderID" : "xj-232142" }, { "Name" : "Dan", "UID" : 7821, "ShipOrderID" : "uk-259459" } ] ``` この CSV の例では次の出力が生成されます。 ```csv NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459 ``` `read`​ または ​`readUrl`​ メソッドを使用するスクリプトでは、​`readerProperties`​ パラメーターを介してリーダープロパティを指定することもできます。​[「read」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-read)​の例を参照してください。ただし、​[CSV リーダーの例](#example_csv_reader)​に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。 Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、​[「リーダーとライターの設定プロパティの設定」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-set-reader-writer-props)​を参照してください。 ## [](#set_mime_types)MIME タイプの設定 Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。 DataWeave 変換の場合、出力データで MIME タイプを指定できます。 たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output application/json`​ または ​`output application/csv`​ に設定できます。 この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。 例: CSV ライターの MIME タイプ ```xml ``` Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して ​`output`​ ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output json`​ または ​`output csv`​ に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。 たとえば、DataWeave ディレクティブ ​`output application/problem+json with json`​ を使用して、JSON データを書き込むことはできますが、MIME タイプを ​`application/problem+json`​ にカスタマイズすることはできません。 スクリプトの MIME タイプ出力をカスタマイズする例については、​[「スクリプトの MIME タイプ出力の変更」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-change-script-output-mime)​を参照してください。 `with`​ キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、'output applicatio:page-aliases を指定できます。 入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの​_入力_​用の ​`outputMimeType='application/csv'`​ に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。 例: CSV リーダーの MIME タイプ ```xml ``` 形式間の変換を実行するのにリーダー設定は使用​_されません_​。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。 また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「​[リーダーとライターのプロパティの使用](#reader_writer_properties)​」を参照してください。 ## [](#関連情報)関連情報 [Transform Message コンポーネント](https://docs.mulesoft.com/studio/transform-message-component-concept-studio)​ [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flat-file-schemas) # サポートされるデータ形式 DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ ID サポートされる形式

​application/avro​

​avro​

​Avro 形式

​application/csv​

​csv​

​CSV 形式

​application/dw​

​dw​

DataWeave 式をテストするための ​DataWeave 形式 (dw)

​application/flatfile​

​flatfile​

​フラットファイル形式​、​COBOL コピーブック形式​、​固定幅形式

​application/java​

​java​

​Java 形式​、​Java の Enum 形式

​application/json​

​json​

​JSON 形式

​application/octet-stream​

​binary​

​バイナリ形式

​application/xlsx​

​excel​

​Excel 形式

​application/xml​

​xml​

​XML 形式​、​CData カスタム型

​application/x-ndjson​

​ndjson​

​改行区切りの JSON 形式 (ndjson)

​application/x-www-form-urlencoded​

​urlencoded​

​URL エンコード形式

​application/yaml​

​yaml​

​YAML 形式

​multipart/form-data​

​multipart​

​マルチパート形式

​text/plain​

​text​

​テキスト/プレーン形式

​text/x-java-properties​

​properties​

​テキスト Java プロパティ​

## [](#dw_readers_writers)DataWeave リーダー DataWeave は、メモリに読み込むか、ローカルストレージでインデックス付けすることで入力データ全体を読み取ることができます。データ形式によっては、入力をストリーミングし、データを分割して順次読み取ることもできます。インデックス付き読み取り戦略では、大きなファイルを処理するときのメモリ不足の問題を回避するメカニズムを実装します。ストリーミング戦略ではパフォーマンスを改善できますが、読み取られてメモリに保存されているファイルの部分にしかアクセスできないため、ファイルアクセスは順次アクセスに限られます (ランダムアクセスは許可されません)。
読み取り戦略 説明 サポートされる形式

メモリ内

この戦略ではドキュメント全体を解析してメモリに読み込み、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

この戦略ではサポートされるすべての形式を読み取ることができます。

インデックス付き

この戦略ではドキュメント全体を解析し、ディスクスペースを使用して大きなファイルのメモリ不足の問題を回避して、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

サイズが 1.5 MB を超える ​String​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​JSON​ および ​XML​ 入力データでのみ機能します。

詳細は、​「DataWeave のインデックス付きリーダー」​を参照してください。

  • CSV​

  • JSON​

  • XML​

ストリーミング

この戦略では、入力ドキュメントを小さな項目に分割し、データに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にのみアクセスできます。

詳細は、​「DataWeave のストリーミング」​を参照してください。

  • CSV​

  • JSON​

  • Excel​ (XLSX)

  • XML​

## [](#reader_writer_properties)リーダーとライターのプロパティの使用 場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、​`separator`​ (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。 Cobol コピーブックでは、​`schemaPath`​ プロパティを使用して、スキーマファイルへのパスを指定する必要があります。 Mule アプリケーション内の特定のコンポーネントの MIME タイプ (​`outputMimeType`​) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの ​`,`​ 区切り文字を識別します。 例: CSV リーダーのプロパティ ```xml ``` 上記の ​`outputMimeType`​ 設定は、ライターではなく CSV ​_リーダー_​が ​`comma_separated.csv`​ 入力ファイルの形式と区切り文字を解釈するのに役立ちます。 出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (​`|`​) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の ​`output`​ ディレクティブに追加します。たとえば、次の Write 操作ではパイプを ​`separator`​ として指定しています。 例: CSV ライターの出力ディレクティブ ```xml ``` 次の例は、​`output`​ ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。 ```json %dw 2.0 output application/csv separator=";", header=false --- payload ``` ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ ​`skipNullOn`​ を使用します。 ```json %dw 2.0 output application/json skipNullOn="everywhere" --- payload ``` 次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は ​`\u001E`​ です。​`\u`​ はエスケープシーケンス表現で、​`001E`​ はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。 ```DataWeave %dw 2.0 output application/csv separator = "\u001E" --- [ { "Name" : "Tom", "UID" : 2569, "ShipOrderID" : "ui-288188" }, { "Name" : "Alan", "UID" : 7756, "ShipOrderID" : "xj-232142" }, { "Name" : "Dan", "UID" : 7821, "ShipOrderID" : "uk-259459" } ] ``` この CSV の例では次の出力が生成されます。 ```csv NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459 ``` `read`​ または ​`readUrl`​ メソッドを使用するスクリプトでは、​`readerProperties`​ パラメーターを介してリーダープロパティを指定することもできます。​[「read」](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-read)​の例を参照してください。ただし、​[CSV リーダーの例](#example_csv_reader)​に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。 Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、​[「リーダーとライターの設定プロパティの設定」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-set-reader-writer-props)​を参照してください。 ## [](#set_mime_types)MIME タイプの設定 Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。 DataWeave 変換の場合、出力データで MIME タイプを指定できます。 たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output application/json`​ または ​`output application/csv`​ に設定できます。 この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。 例: CSV ライターの MIME タイプ ```xml ``` Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して ​`output`​ ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output json`​ または ​`output csv`​ に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。 たとえば、DataWeave ディレクティブ ​`output application/problem+json with json`​ を使用して、JSON データを書き込むことはできますが、MIME タイプを ​`application/problem+json`​ にカスタマイズすることはできません。 スクリプトの MIME タイプ出力をカスタマイズする例については、​[「スクリプトの MIME タイプ出力の変更」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-change-script-output-mime)​を参照してください。 `with`​ キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、​`binary`​ ライターを使用する場合、「output application/csv with binary」を指定して、​`application/csv`​ MIME タイプを出力します。この設定は、​[動的ライタープロパティの使用](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-writer-prop-mule) および [「DataWeave 関数でのリーダーとライターのプロパティの使用」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-set-reader-writer-props#use-reader-and-writer-properties-in-dataweave-functions)​で示されている事例で必要です。また、ユースケース ​`output application/my-custom-type with json indent=false`​ などで、ライタープロパティを追加することもできます。 入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの​_入力_​用の ​`outputMimeType='application/csv'`​ に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。 例: CSV リーダーの MIME タイプ ```xml ``` 形式間の変換を実行するのにリーダー設定は使用​_されません_​。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。 また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「​[リーダーとライターのプロパティの使用](#reader_writer_properties)​」を参照してください。 ## [](#関連情報)関連情報 [Transform Message コンポーネント](https://docs.mulesoft.com/studio/transform-message-component-concept-studio)​ [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flat-file-schemas) # サポートされるデータ形式 DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ ID サポートされる形式

application/avro

avro

Avro 形式​

application/csv

csv

CSV 形式​

application/dw

dw

DataWeave 式をテストするための ​DataWeave 形式 (dw)​

application/flatfile

flatfile

フラットファイル形式​、​COBOL コピーブック形式​、​固定幅形式​

application/java

java

Java 形式​、​Java の Enum 形式​

application/json

json

JSON 形式​

application/octet-stream

binary

バイナリ形式​

application/protobuf​、​application/x-protobuf

protobuf

Protobuf 形式​

application/xlsx

excel

Excel 形式​

application/xml

xml

XML 形式​、​CData カスタム型​

application/x-ndjson

ndjson

改行区切りの JSON 形式 (ndjson)​

application/x-www-form-urlencoded

urlencoded

URL エンコード形式​

application/yaml

yaml

YAML 形式​

multipart/form-data

multipart

マルチパート形式​

text/plain

text

テキスト/プレーン形式​

text/x-java-properties

properties

テキスト Java プロパティ

## [](#dw_readers_writers)DataWeave リーダー DataWeave は、メモリに読み込むか、ローカルストレージでインデックス付けすることで入力データ全体を読み取ることができます。データ形式によっては、入力をストリーミングし、データを分割して順次読み取ることもできます。インデックス付き読み取り戦略では、大きなファイルを処理するときのメモリ不足の問題を回避するメカニズムを実装します。ストリーミング戦略ではパフォーマンスを改善できますが、読み取られてメモリに保存されているファイルの部分にしかアクセスできないため、ファイルアクセスは順次アクセスに限られます (ランダムアクセスは許可されません)。
読み取り戦略 説明 サポートされる形式

メモリ内

この戦略ではドキュメント全体を解析してメモリに読み込み、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

この戦略ではサポートされるすべての形式を読み取ることができます。

インデックス付き

この戦略ではドキュメント全体を解析し、ディスクスペースを使用して大きなファイルのメモリ不足の問題を回避して、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

サイズが 1.5 MB を超える ​String​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​JSON​ および ​XML​ 入力データでのみ機能します。

詳細は、​「DataWeave のインデックス付きリーダー」​を参照してください。

  • CSV​

  • JSON​

  • XML​

ストリーミング

この戦略では、入力ドキュメントを小さな項目に分割し、データに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にのみアクセスできます。

詳細は、​「DataWeave のストリーミング」​を参照してください。

  • CSV​

  • JSON​

  • Excel​ (XLSX)

  • XML

## [](#reader_writer_properties)リーダーとライターのプロパティの使用 場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、​`separator`​ (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。 Cobol コピーブックでは、​`schemaPath`​ プロパティを使用して、スキーマファイルへのパスを指定する必要があります。 Mule アプリケーション内の特定のコンポーネントの MIME タイプ (​`outputMimeType`​) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの ​`,`​ 区切り文字を識別します。 例: CSV リーダーのプロパティ ```xml ``` 上記の ​`outputMimeType`​ 設定は、ライターではなく CSV ​_リーダー_​が ​`comma_separated.csv`​ 入力ファイルの形式と区切り文字を解釈するのに役立ちます。 出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (​`|`​) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の ​`output`​ ディレクティブに追加します。たとえば、次の Write 操作ではパイプを ​`separator`​ として指定しています。 例: CSV ライターの出力ディレクティブ ```xml ``` 次の例は、​`output`​ ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。 ```json %dw 2.0 output application/csv separator=";", header=false --- payload ``` ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ ​`skipNullOn`​ を使用します。 ```json %dw 2.0 output application/json skipNullOn="everywhere" --- payload ``` 次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は ​`\u001E`​ です。​`\u`​ はエスケープシーケンス表現で、​`001E`​ はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。 ```DataWeave %dw 2.0 output application/csv separator = "\u001E" --- [ { "Name" : "Tom", "UID" : 2569, "ShipOrderID" : "ui-288188" }, { "Name" : "Alan", "UID" : 7756, "ShipOrderID" : "xj-232142" }, { "Name" : "Dan", "UID" : 7821, "ShipOrderID" : "uk-259459" } ] ``` この CSV の例では次の出力が生成されます。 ```csv NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459 ``` `read`​ または ​`readUrl`​ メソッドを使用するスクリプトでは、​`readerProperties`​ パラメーターを介してリーダープロパティを指定することもできます。​[「read」](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-read)​の例を参照してください。ただし、​[CSV リーダーの例](#example_csv_reader)​に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。 Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、​[「リーダーとライターの設定プロパティの設定」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-set-reader-writer-props)​を参照してください。 ## [](#set_mime_types)MIME タイプの設定 Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。 DataWeave 変換の場合、出力データで MIME タイプを指定できます。 たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output application/json`​ または ​`output application/csv`​ に設定できます。 この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。 例: CSV ライターの MIME タイプ ```xml ``` Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して ​`output`​ ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output json`​ または ​`output csv`​ に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。 たとえば、DataWeave ディレクティブ ​`output application/problem+json with json`​ を使用して、JSON データを書き込むことはできますが、MIME タイプを ​`application/problem+json`​ にカスタマイズすることはできません。 スクリプトの MIME タイプ出力をカスタマイズする例については、​[「スクリプトの MIME タイプ出力の変更」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-change-script-output-mime)​を参照してください。 `with`​ キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、​`binary`​ ライターを使用する場合、「output application/csv with binary」を指定して、​`application/csv`​ MIME タイプを出力します。この設定は、​[動的ライタープロパティの使用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-writer-prop-mule) and [Use Reader and Writer Properties in DataWeave Functions](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-set-reader-writer-props#use-reader-and-writer-properties-in-dataweave-functions)​で示されている事例で必要です。また、ユースケース ​`output application/my-custom-type with json indent=false`​ などで、ライタープロパティを追加することもできます。 入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの​_入力_​用の ​`outputMimeType='application/csv'`​ に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。 例: CSV リーダーの MIME タイプ ```xml ``` 形式間の変換を実行するのにリーダー設定は使用​_されません_​。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。 また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「​[リーダーとライターのプロパティの使用](#reader_writer_properties)​」を参照してください。 ## [](#関連情報)関連情報 [Transform Message コンポーネント](https://docs.mulesoft.com/studio/transform-message-component-concept-studio) [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flat-file-schemas) # サポートされるデータ形式 DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ ID サポートされる形式

application/avro

avro

Avro 形式​

application/csv

csv

CSV 形式​

application/dw

dw

DataWeave 式をテストするための ​DataWeave 形式 (dw)​

application/flatfile

flatfile

フラットファイル形式​、​COBOL コピーブック形式​、​固定幅形式​

application/java

java

Java 形式​、​Java の Enum 形式​

application/json

json

JSON 形式​

application/octet-stream

binary

バイナリ形式​

application/protobuf​、​application/x-protobuf

protobuf

Protobuf 形式​

application/xlsx

excel

Excel 形式​

application/xml

xml

XML 形式​、​CData カスタム型​

application/x-ndjson

ndjson

改行区切りの JSON 形式 (ndjson)​

application/x-www-form-urlencoded

urlencoded

URL エンコード形式​

application/yaml

yaml

YAML 形式​

multipart/form-data

multipart

マルチパート形式​

text/plain

text

テキスト/プレーン形式​

text/x-java-properties

properties

テキスト Java プロパティ

## [](#dw_readers_writers)DataWeave リーダー DataWeave は、メモリに読み込むか、ローカルストレージでインデックス付けすることで入力データ全体を読み取ることができます。データ形式によっては、入力をストリーミングし、データを分割して順次読み取ることもできます。インデックス付き読み取り戦略では、大きなファイルを処理するときのメモリ不足の問題を回避するメカニズムを実装します。ストリーミング戦略ではパフォーマンスを改善できますが、読み取られてメモリに保存されているファイルの部分にしかアクセスできないため、ファイルアクセスは順次アクセスに限られます (ランダムアクセスは許可されません)。
読み取り戦略 説明 サポートされる形式

メモリ内

この戦略ではドキュメント全体を解析してメモリに読み込み、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

この戦略ではサポートされるすべての形式を読み取ることができます。

インデックス付き

この戦略ではドキュメント全体を解析し、ディスクスペースを使用して大きなファイルのメモリ不足の問題を回避して、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

サイズが 1.5 MB を超える ​String​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​JSON​ および ​XML​ 入力データでのみ機能します。

詳細は、​「DataWeave のインデックス付きリーダー」​を参照してください。

  • CSV​

  • JSON​

  • XML​

ストリーミング

この戦略では、入力ドキュメントを小さな項目に分割し、データに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にのみアクセスできます。

詳細は、​「DataWeave のストリーミング」​を参照してください。

  • CSV​

  • JSON​

  • Excel​ (XLSX)

  • XML

## [](#reader_writer_properties)リーダーとライターのプロパティの使用 場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、​`separator`​ (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。 Cobol コピーブックでは、​`schemaPath`​ プロパティを使用して、スキーマファイルへのパスを指定する必要があります。 Mule アプリケーション内の特定のコンポーネントの MIME タイプ (​`outputMimeType`​) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの ​`,`​ 区切り文字を識別します。 例: CSV リーダーのプロパティ ```xml ``` 上記の ​`outputMimeType`​ 設定は、ライターではなく CSV ​_リーダー_​が ​`comma_separated.csv`​ 入力ファイルの形式と区切り文字を解釈するのに役立ちます。 出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (​`|`​) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の ​`output`​ ディレクティブに追加します。たとえば、次の Write 操作ではパイプを ​`separator`​ として指定しています。 例: CSV ライターの出力ディレクティブ ```xml ``` 次の例は、​`output`​ ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。 ```json %dw 2.0 output application/csv separator=";", header=false --- payload ``` ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ ​`skipNullOn`​ を使用します。 ```json %dw 2.0 output application/json skipNullOn="everywhere" --- payload ``` 次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は ​`\u001E`​ です。​`\u`​ はエスケープシーケンス表現で、​`001E`​ はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。 ```DataWeave %dw 2.0 output application/csv separator = "\u001E" --- [ { "Name" : "Tom", "UID" : 2569, "ShipOrderID" : "ui-288188" }, { "Name" : "Alan", "UID" : 7756, "ShipOrderID" : "xj-232142" }, { "Name" : "Dan", "UID" : 7821, "ShipOrderID" : "uk-259459" } ] ``` この CSV の例では次の出力が生成されます。 ```csv NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459 ``` `read`​ または ​`readUrl`​ メソッドを使用するスクリプトでは、​`readerProperties`​ パラメーターを介してリーダープロパティを指定することもできます。​[「read」](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-read)​の例を参照してください。ただし、​[CSV リーダーの例](#example_csv_reader)​に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。 Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、​[「リーダーとライターの設定プロパティの設定」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-set-reader-writer-props)​を参照してください。 ## [](#set_mime_types)MIME タイプの設定 Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。 DataWeave 変換の場合、出力データで MIME タイプを指定できます。 たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output application/json`​ または ​`output application/csv`​ に設定できます。 この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。 例: CSV ライターの MIME タイプ ```xml ``` Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して ​`output`​ ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output json`​ または ​`output csv`​ に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。 たとえば、DataWeave ディレクティブ ​`output application/problem+json with json`​ を使用して、JSON データを書き込むことはできますが、MIME タイプを ​`application/problem+json`​ にカスタマイズすることはできません。 スクリプトの MIME タイプ出力をカスタマイズする例については、​[「スクリプトの MIME タイプ出力の変更」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-change-script-output-mime)​を参照してください。 `with`​ キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、​`binary`​ ライターを使用する場合、「output application/csv with binary」を指定して、​`application/csv`​ MIME タイプを出力します。この設定は、​[動的ライタープロパティの使用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-writer-prop-mule) and [Use Reader and Writer Properties in DataWeave Functions](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-set-reader-writer-props#use-reader-and-writer-properties-in-dataweave-functions)​で示されている事例で必要です。また、ユースケース ​`output application/my-custom-type with json indent=false`​ などで、ライタープロパティを追加することもできます。 入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの​_入力_​用の ​`outputMimeType='application/csv'`​ に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。 例: CSV リーダーの MIME タイプ ```xml ``` 形式間の変換を実行するのにリーダー設定は使用​_されません_​。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。 また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「​[リーダーとライターのプロパティの使用](#reader_writer_properties)​」を参照してください。 ## [](#関連情報)関連情報 [Transform Message コンポーネント](https://docs.mulesoft.com/studio/transform-message-component-concept-studio) [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flat-file-schemas) # サポートされるデータ形式 DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ ID サポートされる形式

application/avro

avro

Avro 形式​

application/csv

csv

CSV 形式​

application/dw

dw

DataWeave 式をテストするための ​DataWeave 形式 (dw)​

application/flatfile

flatfile

フラットファイル形式​、​COBOL コピーブック形式​、​固定幅形式​

application/java

java

Java 形式​、​Java の Enum 形式​

application/json

json

JSON 形式​

application/octet-stream

binary

バイナリ形式​

application/protobuf​、​application/x-protobuf

protobuf

Protobuf 形式​

application/xlsx

excel

Excel 形式​

application/xml

xml

XML 形式​、​CData カスタム型​

application/x-ndjson

ndjson

改行区切りの JSON 形式 (ndjson)​

application/x-www-form-urlencoded

urlencoded

URL エンコード形式​

application/yaml

yaml

YAML 形式​

multipart/form-data

multipart

マルチパート形式​

text/plain

text

テキスト/プレーン形式​

text/x-java-properties

properties

テキスト Java プロパティ

## [](#dw_readers_writers)DataWeave リーダー DataWeave は、メモリに読み込むか、ローカルストレージでインデックス付けすることで入力データ全体を読み取ることができます。データ形式によっては、入力をストリーミングし、データを分割して順次読み取ることもできます。インデックス付き読み取り戦略では、大きなファイルを処理するときのメモリ不足の問題を回避するメカニズムを実装します。ストリーミング戦略ではパフォーマンスを改善できますが、読み取られてメモリに保存されているファイルの部分にしかアクセスできないため、ファイルアクセスは順次アクセスに限られます (ランダムアクセスは許可されません)。
読み取り戦略 説明 サポートされる形式

メモリ内

この戦略ではドキュメント全体を解析してメモリに読み込み、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

この戦略ではサポートされるすべての形式を読み取ることができます。

インデックス付き

この戦略ではドキュメント全体を解析し、ディスクスペースを使用して大きなファイルのメモリ不足の問題を回避して、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

サイズが 1.5 MB を超える ​String​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​JSON​ および ​XML​ 入力データでのみ機能します。

詳細は、​「DataWeave のインデックス付きリーダー」​を参照してください。

  • CSV​

  • JSON​

  • XML​

ストリーミング

この戦略では、入力ドキュメントを小さな項目に分割し、データに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にのみアクセスできます。

詳細は、​「DataWeave のストリーミング」​を参照してください。

  • CSV​

  • JSON​

  • Excel​ (XLSX)

  • XML

## [](#reader_writer_properties)リーダーとライターのプロパティの使用 場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、​`separator`​ (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。 Cobol コピーブックでは、​`schemaPath`​ プロパティを使用して、スキーマファイルへのパスを指定する必要があります。 Mule アプリケーション内の特定のコンポーネントの MIME タイプ (​`outputMimeType`​) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの ​`,`​ 区切り文字を識別します。 例: CSV リーダーのプロパティ ```xml ``` 上記の ​`outputMimeType`​ 設定は、ライターではなく CSV ​_リーダー_​が ​`comma_separated.csv`​ 入力ファイルの形式と区切り文字を解釈するのに役立ちます。 出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (​`|`​) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の ​`output`​ ディレクティブに追加します。たとえば、次の Write 操作ではパイプを ​`separator`​ として指定しています。 例: CSV ライターの出力ディレクティブ ```xml ``` 次の例は、​`output`​ ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。 ```json %dw 2.0 output application/csv separator=";", header=false --- payload ``` ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ ​`skipNullOn`​ を使用します。 ```json %dw 2.0 output application/json skipNullOn="everywhere" --- payload ``` 次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は ​`\u001E`​ です。​`\u`​ はエスケープシーケンス表現で、​`001E`​ はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。 ```DataWeave %dw 2.0 output application/csv separator = "\u001E" --- [ { "Name" : "Tom", "UID" : 2569, "ShipOrderID" : "ui-288188" }, { "Name" : "Alan", "UID" : 7756, "ShipOrderID" : "xj-232142" }, { "Name" : "Dan", "UID" : 7821, "ShipOrderID" : "uk-259459" } ] ``` この CSV の例では次の出力が生成されます。 ```csv NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459 ``` `read`​ または ​`readUrl`​ メソッドを使用するスクリプトでは、​`readerProperties`​ パラメーターを介してリーダープロパティを指定することもできます。​[「read」](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-read)​の例を参照してください。ただし、​[CSV リーダーの例](#example_csv_reader)​に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。 Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、​[「リーダーとライターの設定プロパティの設定」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-set-reader-writer-props)​を参照してください。 ## [](#set_mime_types)MIME タイプの設定 Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。 DataWeave 変換の場合、出力データで MIME タイプを指定できます。 たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output application/json`​ または ​`output application/csv`​ に設定できます。 この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。 例: CSV ライターの MIME タイプ ```xml ``` Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して ​`output`​ ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output json`​ または ​`output csv`​ に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。 たとえば、DataWeave ディレクティブ ​`output application/problem+json with json`​ を使用して、JSON データを書き込むことはできますが、MIME タイプを ​`application/problem+json`​ にカスタマイズすることはできません。 スクリプトの MIME タイプ出力をカスタマイズする例については、​[「スクリプトの MIME タイプ出力の変更」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-change-script-output-mime)​を参照してください。 `with`​ キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、​`binary`​ ライターを使用する場合、「output application/csv with binary」を指定して、​`application/csv`​ MIME タイプを出力します。この設定は、​[動的ライタープロパティの使用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-writer-prop-mule) and [Use Reader and Writer Properties in DataWeave Functions](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-set-reader-writer-props#use-reader-and-writer-properties-in-dataweave-functions)​で示されている事例で必要です。また、ユースケース ​`output application/my-custom-type with json indent=false`​ などで、ライタープロパティを追加することもできます。 入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの​_入力_​用の ​`outputMimeType='application/csv'`​ に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。 例: CSV リーダーの MIME タイプ ```xml ``` 形式間の変換を実行するのにリーダー設定は使用​_されません_​。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。 また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 「​[リーダーとライターのプロパティの使用](#reader_writer_properties)​」を参照してください。 ## [](#関連情報)関連情報 [Transform Message コンポーネント](https://docs.mulesoft.com/studio/transform-message-component-concept-studio) [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas) # サポートされるデータ形式 DataWeave では、JSON、XML など、多くの種別のデータ形式を読み書きできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、次の形式が入力および出力としてサポートされています。
MIME タイプ ID サポートされる形式

application/avro

avro

Avro 形式​

application/csv

csv

CSV 形式​

application/dw

dw

DataWeave 式をテストするための ​DataWeave 形式 (dw)​

application/flatfile

flatfile

フラットファイル形式​、​COBOL コピーブック形式​、​固定幅形式​

application/java

java

Java 形式​、​Java の Enum 形式​

application/json

json

JSON 形式​

application/octet-stream

binary

バイナリ形式​

application/protobuf​、​application/x-protobuf

protobuf

Protobuf 形式​

application/xlsx

excel

Excel 形式​

application/xml

xml

XML 形式​、​CData カスタム型​

application/x-ndjson

ndjson

改行区切りの JSON 形式 (ndjson)​

application/x-www-form-urlencoded

urlencoded

URL エンコード形式​

application/yaml

yaml

YAML 形式​

multipart/form-data

multipart

マルチパート形式​

text/plain

text

テキスト/プレーン形式​

text/x-java-properties

properties

テキスト Java プロパティ

## [](#dw_readers_writers)DataWeave リーダー DataWeave は、メモリに読み込むか、ローカルストレージでインデックス付けすることで入力データ全体を読み取ることができます。データ形式によっては、入力をストリーミングし、データを分割して順次読み取ることもできます。インデックス付き読み取り戦略では、大きなファイルを処理するときのメモリ不足の問題を回避するメカニズムを実装します。ストリーミング戦略ではパフォーマンスを改善できますが、読み取られてメモリに保存されているファイルの部分にしかアクセスできないため、ファイルアクセスは順次アクセスに限られます (ランダムアクセスは許可されません)。
読み取り戦略 説明 サポートされる形式

メモリ内

この戦略ではドキュメント全体を解析してメモリに読み込み、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

この戦略ではサポートされるすべての形式を読み取ることができます。

インデックス付き

この戦略ではドキュメント全体を解析し、ディスクスペースを使用して大きなファイルのメモリ不足の問題を回避して、データへのランダムアクセスを可能にします。この戦略を使用すると、DataWeave スクリプトで結果値の任意の部分にいつでもアクセスできます。

サイズが 1.5 MB を超える ​String​ を処理する場合、DataWeave は自動的に値を複数のチャンクに分割してメモリ不足の問題を回避します。この機能は ​JSON​ および ​XML​ 入力データでのみ機能します。

詳細は、​「DataWeave のインデックス付きリーダー」​を参照してください。

  • CSV​

  • JSON​

  • XML​

ストリーミング

この戦略では、入力ドキュメントを小さな項目に分割し、データに順次アクセスして、現在の項目をメモリ内に保存します。DataWeave セレクターは、読み取られているファイルの部分にのみアクセスできます。

詳細は、​「DataWeave のストリーミング」​を参照してください。

  • CSV​

  • JSON​

  • Excel​ (XLSX)

  • XML

## [](#reader_writer_properties)リーダーとライターのプロパティの使用 場合によって、形式固有のプロパティを使用して、形式の各側面を変更または指定することが必要になることがあります。たとえば、​`separator`​ (または区切り文字) など、CSV ファイルで使用する、CSV の入力および出力プロパティを指定できます。 Cobol コピーブックでは、​`schemaPath`​ プロパティを使用して、スキーマファイルへのパスを指定する必要があります。 Mule アプリケーション内の特定のコンポーネントの MIME タイプ (​`outputMimeType`​) 属性にリーダープロパティを追加できます。Listeners および Read 操作ではこの設定が受け入れられます。たとえば、この新規ファイルリスナーの例では、CSV 入力ファイルの ​`,`​ 区切り文字を識別します。 例: CSV リーダーのプロパティ ```xml ``` 上記の ​`outputMimeType`​ 設定は、ライターではなく CSV ​_リーダー_​が ​`comma_separated.csv`​ 入力ファイルの形式と区切り文字を解釈するのに役立ちます。 出力形式を指定するには、File Write 操作で使用する CSV または JSON ライターなど、ライターの MIME タイプと任意のライタープロパティを提供できます。たとえば、CSV 出力のペイロードで、入力で使用する他の区切り文字ではなくパイプ (​`|`​) 区切り文字を記述しなければならない場合があります。これを行うには、プロパティとその値を DataWeave 式の ​`output`​ ディレクティブに追加します。たとえば、次の Write 操作ではパイプを ​`separator`​ として指定しています。 例: CSV ライターの出力ディレクティブ ```xml ``` 次の例は、​`output`​ ディレクティブで 2 つのライタープロパティを指定する DataWeave スクリプトを示しています。1 つは CSV 項目の区切り文字用で、もう 1 つはヘッダーがないことを示します。 ```json %dw 2.0 output application/csv separator=";", header=false --- payload ``` ライタープロパティは形式によって異なります。次の例では、JSON ライタープロパティ ​`skipNullOn`​ を使用します。 ```json %dw 2.0 output application/json skipNullOn="everywhere" --- payload ``` 次の例では、DataWeave スクリプトが非表示の ASCII 文字を CSV 出力の区切り文字として使用しています。区切り文字のプロパティ値は ​`\u001E`​ です。​`\u`​ はエスケープシーケンス表現で、​`001E`​ はレコード区切り文字 (RS) である ASCII 文字の 16 進表現です。 ```DataWeave %dw 2.0 output application/csv separator = "\u001E" --- [ { "Name" : "Tom", "UID" : 2569, "ShipOrderID" : "ui-288188" }, { "Name" : "Alan", "UID" : 7756, "ShipOrderID" : "xj-232142" }, { "Name" : "Dan", "UID" : 7821, "ShipOrderID" : "uk-259459" } ] ``` この CSV の例では次の出力が生成されます。 ```csv NameUIDShipOrderID Tom2569ui-288188 Alan7756xj-232142 Dan7821uk-259459 ``` `read`​ または ​`readUrl`​ メソッドを使用するスクリプトでは、​`readerProperties`​ パラメーターを介してリーダープロパティを指定することもできます。​[「read」](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-read)​の例を参照してください。ただし、​[CSV リーダーの例](#example_csv_reader)​に示されるように、リーダープロパティは HTTP リスナーなどのメッセージソースでより一般的に使用されます。 Mule 変数を設定プロパティの値として使用することもできます。他の完全な例は、​[「リーダーとライターの設定プロパティの設定」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-set-reader-writer-props)​を参照してください。 ## [](#set_mime_types)MIME タイプの設定 Mule アプリケーションを流れる入力および出力データで MIME タイプを指定できます。 DataWeave 変換の場合、出力データで MIME タイプを指定できます。 たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output application/json`​ または ​`output application/csv`​ に設定できます。 この例では、File Write 操作を使用して MIME タイプを設定し、形式固有のライター (CSV ライター) がペイロードを CSV 形式で出力するようにします。 例: CSV ライターの MIME タイプ ```xml ``` Mule 4.3.0 以降、MIME タイプの代わりに形式 ID のみを使用して ​`output`​ ディレクティブを設定できます。たとえば、Transform Message コンポーネントまたは Write 操作内の式の ​`output`​ ヘッダーディレクティブを ​`output json`​ または ​`output csv`​ に設定できます。また、形式 ID を使用して、出力ヘッダーで出力データの形式と MIME タイプを区別したり、カスタム MIME タイプを使用したりできます。 たとえば、DataWeave ディレクティブ ​`output application/problem+json with json`​ を使用して、JSON データを書き込むことはできますが、MIME タイプを ​`application/problem+json`​ にカスタマイズすることはできません。 スクリプトの MIME タイプ出力をカスタマイズする例については、​[「スクリプトの MIME タイプ出力の変更」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-change-script-output-mime)​を参照してください。 `with`​ キーワードは、出力 MIME タイプをスクリプトの出力の DataWeave ライターから分離します。たとえば、​`binary`​ ライターを使用する場合、「output application/csv with binary」を指定して、​`application/csv`​ MIME タイプを出力します。この設定は、​[動的ライタープロパティの使用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-writer-prop-mule) and [Use Reader and Writer Properties in DataWeave Functions](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-set-reader-writer-props#use-reader-and-writer-properties-in-dataweave-functions)​で示されている事例で必要です。また、ユースケース ​`output application/my-custom-type with json indent=false`​ などで、ライタープロパティを追加することもできます。 入力データの場合、Mule ソースの形式固有のリーダー (新規ファイルリスナーなど)、Mule 操作 (Read、HTTP Request 操作など)、および DataWeave 式では、Mule イベントの入力ペイロード、属性、および変数に関連付けられるメタデータから MIME タイプが推定されます。MIME タイプをメタデータから推定できない場合 (およびそのメタデータが静的でない場合)、Mule ソースおよび操作では、リーダーの MIME タイプを指定することができます。たとえば、新規ファイルリスナーの MIME タイプを CSV ファイルの​_入力_​用の ​`outputMimeType='application/csv'`​ に設定できます。この設定では、ファイル形式に関する情報が CSV リーダーに提供されます。 例: CSV リーダーの MIME タイプ ```xml ``` 形式間の変換を実行するのにリーダー設定は使用​_されません_​。リーダー設定は、リーダーが入力の形式を解釈できるようサポートするのみです。 また、ソース、操作、またはコンポーネントの形式固有のリーダーまたはライターで使用する、リーダーとライターの特別なプロパティを設定することもできます。 [リーダーとライターのプロパティの使用](#reader_writer_properties)​を参照してください。 ## [](#関連情報)関連情報 [Transform Message コンポーネント](https://docs.mulesoft.com/studio/transform-message-component-concept-studio) [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flat-file-schemas) # スクリプトの MIME タイプ出力の変更 この DataWeave の例では、出力 MIME タイプと、出力データを書式設定する MIME タイプを区別する方法を示します。このような区別により、Mule アプリケーションは、クライアントがアプリケーションの出力データの表示方法の決定に使用できる MIME タイプを出力できます。たとえば、HTTP は MIME タイプを使用してその ​`Content-Type`​ ヘッダーを生成します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 最初の例では、API の「問題の詳細」標準を使用します。この標準では、レスポンスヘッダーに ​`application/problem+json`​ コンテンツタイプが必要になり、特定のキーが含まれる JSON 形式のレスポンスボディも必要になります。 この例として、HTTP 要求を処理するが常に失敗する Mule フローが挙げられます。失敗により、エラーハンドラーがトリガーされます。エラーハンドラーは、状況コードを 400 に設定し、DataWeave スクリプトを使用してこの標準に準拠する応答を生成します。 DataWeave 出力ディレクティブ ​`output application/problem+json with json`​ は、​`application/problem+json`​ MIME タイプと JSON 形式の本文が含まれる応答を生成するようにスクリプトに指示します。 400 エラーを受信したクライアントは、応答で ​`Content-Type: application/problem+json`​ を使用して、標準的な方法 (想定される ​`title`​ キーの使用など) で応答データを処理できるかどうかを判断します。一方、​`problem+`​ のない MIME タイプ ​`Content-Type: application/json`​ は、そのような方法でクライアントがエラーを処理できるかどうかを示すことができません。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 400 Bad Request Content-Type: application/problem+json; charset=UTF-8 Content-Length: 173 Date: Thu, 02 Apr 2020 19:48:23 GMT Connection: close [data-source-url=modules/ROOT/pages/_partials/cookbook-dw/change-script-output-mime-ex1-partial-solution] { "type": "https://example.org/out-of-stock", "title": "Out of Stock", "status": 400, "detail": "Item B00027Y5QG is no longer available", "product": "B00027Y5QG" } ``` 次の例では、Mule フローは DataWeave によって生成された ​`text/markdown`​ コンテンツを単純なテキストとして返します。マークダウンがサポートされているブラウザーでは、アスタリスクを使用してプレーンテキストで入力を表示する代わりに、マークダウンのルールに従って箇条書きのコンテンツとして表示できます。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 200 Content-Type: text/markdown; charset=UTF-8 Content-Length: 26 Date: Thu, 02 Apr 2020 21:28:36 GMT * idea 1 * some other idea ``` ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # スクリプトの MIME タイプ出力の変更 この DataWeave の例では、出力 MIME タイプと、出力データを書式設定する MIME タイプを区別する方法を示します。このような区別により、Mule アプリケーションは、クライアントがアプリケーションの出力データの表示方法の決定に使用できる MIME タイプを出力できます。たとえば、HTTP は MIME タイプを使用してその ​`Content-Type`​ ヘッダーを生成します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 最初の例では、API の「問題の詳細」標準を使用します。この標準では、レスポンスヘッダーに ​`application/problem+json`​ コンテンツタイプが必要になり、特定のキーが含まれる JSON 形式のレスポンスボディも必要になります。 この例として、HTTP 要求を処理するが常に失敗する Mule フローが挙げられます。失敗により、エラーハンドラーがトリガーされます。エラーハンドラーは、状況コードを 400 に設定し、DataWeave スクリプトを使用してこの標準に準拠する応答を生成します。 DataWeave 出力ディレクティブ ​`output application/problem+json with json`​ は、​`application/problem+json`​ MIME タイプと JSON 形式の本文が含まれる応答を生成するようにスクリプトに指示します。 400 エラーを受信したクライアントは、応答で ​`Content-Type: application/problem+json`​ を使用して、標準的な方法 (想定される ​`title`​ キーの使用など) で応答データを処理できるかどうかを判断します。一方、​`problem+`​ のない MIME タイプ ​`Content-Type: application/json`​ は、そのような方法でクライアントがエラーを処理できるかどうかを示すことができません。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 400 Bad Request Content-Type: application/problem+json; charset=UTF-8 Content-Length: 173 Date: Thu, 02 Apr 2020 19:48:23 GMT Connection: close [data-source-url=modules/ROOT/pages/_partials/cookbook-dw/change-script-output-mime-ex1-partial-solution] { "type": "https://example.org/out-of-stock", "title": "Out of Stock", "status": 400, "detail": "Item B00027Y5QG is no longer available", "product": "B00027Y5QG" } ``` 次の例では、Mule フローは DataWeave によって生成された ​`text/markdown`​ コンテンツを単純なテキストとして返します。マークダウンがサポートされているブラウザーでは、アスタリスクを使用してプレーンテキストで入力を表示する代わりに、マークダウンのルールに従って箇条書きのコンテンツとして表示できます。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 200 Content-Type: text/markdown; charset=UTF-8 Content-Length: 26 Date: Thu, 02 Apr 2020 21:28:36 GMT * idea 1 * some other idea ``` ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # スクリプトの MIME タイプ出力の変更 この DataWeave の例では、出力 MIME タイプと、出力データを書式設定する MIME タイプを区別する方法を示します。このような区別により、Mule アプリケーションは、クライアントがアプリケーションの出力データの表示方法の決定に使用できる MIME タイプを出力できます。たとえば、HTTP は MIME タイプを使用してその ​`Content-Type`​ ヘッダーを生成します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 最初の例では、API の「問題の詳細」標準を使用します。この標準では、レスポンスヘッダーに ​`application/problem+json`​ コンテンツタイプが必要になり、特定のキーが含まれる JSON 形式のレスポンスボディも必要になります。 この例として、HTTP 要求を処理するが常に失敗する Mule フローが挙げられます。失敗により、エラーハンドラーがトリガーされます。エラーハンドラーは、状況コードを 400 に設定し、DataWeave スクリプトを使用してこの標準に準拠する応答を生成します。 DataWeave 出力ディレクティブ ​`output application/problem+json with json`​ は、​`application/problem+json`​ MIME タイプと JSON 形式の本文が含まれる応答を生成するようにスクリプトに指示します。 400 エラーを受信したクライアントは、応答で ​`Content-Type: application/problem+json`​ を使用して、標準的な方法 (想定される ​`title`​ キーの使用など) で応答データを処理できるかどうかを判断します。一方、​`problem+`​ のない MIME タイプ ​`Content-Type: application/json`​ は、そのような方法でクライアントがエラーを処理できるかどうかを示すことができません。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 400 Bad Request Content-Type: application/problem+json; charset=UTF-8 Content-Length: 173 Date: Thu, 02 Apr 2020 19:48:23 GMT Connection: close [data-source-url=modules/ROOT/pages/_partials/cookbook-dw/change-script-output-mime-ex1-partial-solution] { "type": "https://example.org/out-of-stock", "title": "Out of Stock", "status": 400, "detail": "Item B00027Y5QG is no longer available", "product": "B00027Y5QG" } ``` 次の例では、Mule フローは DataWeave によって生成された ​`text/markdown`​ コンテンツを単純なテキストとして返します。マークダウンがサポートされているブラウザーでは、アスタリスクを使用してプレーンテキストで入力を表示する代わりに、マークダウンのルールに従って箇条書きのコンテンツとして表示できます。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 200 Content-Type: text/markdown; charset=UTF-8 Content-Length: 26 Date: Thu, 02 Apr 2020 21:28:36 GMT * idea 1 * some other idea ``` ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # スクリプトの MIME タイプ出力の変更 この DataWeave の例では、出力 MIME タイプと、出力データを書式設定する MIME タイプを区別する方法を示します。このような区別により、Mule アプリケーションは、クライアントがアプリケーションの出力データの表示方法の決定に使用できる MIME タイプを出力できます。たとえば、HTTP は MIME タイプを使用してその ​`Content-Type`​ ヘッダーを生成します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 最初の例では、API の「問題の詳細」標準を使用します。この標準では、レスポンスヘッダーに ​`application/problem+json`​ コンテンツタイプが必要になり、特定のキーが含まれる JSON 形式のレスポンスボディも必要になります。 この例として、HTTP 要求を処理するが常に失敗する Mule フローが挙げられます。失敗により、エラーハンドラーがトリガーされます。エラーハンドラーは、状況コードを 400 に設定し、DataWeave スクリプトを使用してこの標準に準拠する応答を生成します。 DataWeave 出力ディレクティブ ​`output application/problem+json with json`​ は、​`application/problem+json`​ MIME タイプと JSON 形式の本文が含まれる応答を生成するようにスクリプトに指示します。 400 エラーを受信したクライアントは、応答で ​`Content-Type: application/problem+json`​ を使用して、標準的な方法 (想定される ​`title`​ キーの使用など) で応答データを処理できるかどうかを判断します。一方、​`problem+`​ のない MIME タイプ ​`Content-Type: application/json`​ は、そのような方法でクライアントがエラーを処理できるかどうかを示すことができません。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 400 Bad Request Content-Type: application/problem+json; charset=UTF-8 Content-Length: 173 Date: Thu, 02 Apr 2020 19:48:23 GMT Connection: close [data-source-url=modules/ROOT/pages/_partials/cookbook-dw/change-script-output-mime-ex1-partial-solution] { "type": "https://example.org/out-of-stock", "title": "Out of Stock", "status": 400, "detail": "Item B00027Y5QG is no longer available", "product": "B00027Y5QG" } ``` 次の例では、Mule フローは DataWeave によって生成された ​`text/markdown`​ コンテンツを単純なテキストとして返します。マークダウンがサポートされているブラウザーでは、アスタリスクを使用してプレーンテキストで入力を表示する代わりに、マークダウンのルールに従って箇条書きのコンテンツとして表示できます。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 200 Content-Type: text/markdown; charset=UTF-8 Content-Length: 26 Date: Thu, 02 Apr 2020 21:28:36 GMT * idea 1 * some other idea ``` ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # スクリプトの MIME タイプ出力の変更 この DataWeave の例では、出力 MIME タイプと、出力データを書式設定する MIME タイプを区別する方法を示します。このような区別により、Mule アプリケーションは、クライアントがアプリケーションの出力データの表示方法の決定に使用できる MIME タイプを出力できます。たとえば、HTTP は MIME タイプを使用してその ​`Content-Type`​ ヘッダーを生成します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 最初の例では、API の「問題の詳細」標準を使用します。この標準では、レスポンスヘッダーに ​`application/problem+json`​ コンテンツタイプが必要になり、特定のキーが含まれる JSON 形式のレスポンスボディも必要になります。 この例として、HTTP 要求を処理するが常に失敗する Mule フローが挙げられます。失敗により、エラーハンドラーがトリガーされます。エラーハンドラーは、状況コードを 400 に設定し、DataWeave スクリプトを使用してこの標準に準拠する応答を生成します。 DataWeave 出力ディレクティブ ​`output application/problem+json with json`​ は、​`application/problem+json`​ MIME タイプと JSON 形式の本文が含まれる応答を生成するようにスクリプトに指示します。 400 エラーを受信したクライアントは、応答で ​`Content-Type: application/problem+json`​ を使用して、標準的な方法 (想定される ​`title`​ キーの使用など) で応答データを処理できるかどうかを判断します。一方、​`problem+`​ のない MIME タイプ ​`Content-Type: application/json`​ は、そのような方法でクライアントがエラーを処理できるかどうかを示すことができません。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 400 Bad Request Content-Type: application/problem+json; charset=UTF-8 Content-Length: 173 Date: Thu, 02 Apr 2020 19:48:23 GMT Connection: close [data-source-url=modules/ROOT/pages/_partials/cookbook-dw/change-script-output-mime-ex1-partial-solution] { "type": "https://example.org/out-of-stock", "title": "Out of Stock", "status": 400, "detail": "Item B00027Y5QG is no longer available", "product": "B00027Y5QG" } ``` 次の例では、Mule フローは DataWeave によって生成された ​`text/markdown`​ コンテンツを単純なテキストとして返します。マークダウンがサポートされているブラウザーでは、アスタリスクを使用してプレーンテキストで入力を表示する代わりに、マークダウンのルールに従って箇条書きのコンテンツとして表示できます。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 200 Content-Type: text/markdown; charset=UTF-8 Content-Length: 26 Date: Thu, 02 Apr 2020 21:28:36 GMT * idea 1 * some other idea ``` ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # スクリプトの MIME タイプ出力の変更 この DataWeave の例では、出力 MIME タイプと、出力データを書式設定する MIME タイプを区別する方法を示します。このような区別により、Mule アプリケーションは、クライアントがアプリケーションの出力データの表示方法の決定に使用できる MIME タイプを出力できます。たとえば、HTTP は MIME タイプを使用してその ​`Content-Type`​ ヘッダーを生成します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 最初の例では、API の「問題の詳細」標準を使用します。この標準では、レスポンスヘッダーに ​`application/problem+json`​ コンテンツタイプが必要になり、特定のキーが含まれる JSON 形式のレスポンスボディも必要になります。 この例として、HTTP 要求を処理するが常に失敗する Mule フローが挙げられます。失敗により、エラーハンドラーがトリガーされます。エラーハンドラーは、状況コードを 400 に設定し、DataWeave スクリプトを使用してこの標準に準拠する応答を生成します。 DataWeave 出力ディレクティブ ​`output application/problem+json with json`​ は、​`application/problem+json`​ MIME タイプと JSON 形式の本文が含まれる応答を生成するようにスクリプトに指示します。 400 エラーを受信したクライアントは、応答で ​`Content-Type: application/problem+json`​ を使用して、標準的な方法 (想定される ​`title`​ キーの使用など) で応答データを処理できるかどうかを判断します。一方、​`problem+`​ のない MIME タイプ ​`Content-Type: application/json`​ は、そのような方法でクライアントがエラーを処理できるかどうかを示すことができません。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 400 Bad Request Content-Type: application/problem+json; charset=UTF-8 Content-Length: 173 Date: Thu, 02 Apr 2020 19:48:23 GMT Connection: close [data-source-url=modules/ROOT/pages/_partials/cookbook-dw/change-script-output-mime-ex1-partial-solution] { "type": "https://example.org/out-of-stock", "title": "Out of Stock", "status": 400, "detail": "Item B00027Y5QG is no longer available", "product": "B00027Y5QG" } ``` 次の例では、Mule フローは DataWeave によって生成された ​`text/markdown`​ コンテンツを単純なテキストとして返します。マークダウンがサポートされているブラウザーでは、アスタリスクを使用してプレーンテキストで入力を表示する代わりに、マークダウンのルールに従って箇条書きのコンテンツとして表示できます。 Mule フロー: ```xml ``` 応答: ```text HTTP/1.1 200 Content-Type: text/markdown; charset=UTF-8 Content-Length: 26 Date: Thu, 02 Apr 2020 21:28:36 GMT * idea 1 * some other idea ``` ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # タイムゾーンの変更 次の例では、​`>>`​ 演算子と​[タイムゾーン ID](#timezone-ids)​ を使用してタイムゾーンを変更します。また、書式設定文字 ​`uuuu-MM-dd'T'HH:mm:ss.SSS`​ を使用して形式を変更します。​`uuuu`​ 文字は年を表します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun format(d: DateTime) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"} --- { CreatedDateTime: format(|2019-02-13T13:23:00.120Z| >> "CET"), } ``` 出力 XML: ```xml { "CreatedDateTime": "2019-02-13T14:23:00.120" } ``` ## [](#timezone-ids)タイムゾーン ID DataWeave は、​`-07:00`​ などのタイムゾーン値に加えて、Java 8 の ​`TimeZone`​ ID 値を受け入れます。この値は、​`TimeZone.getAvailableIds()`​ への Java メソッドコールを介して使用できます。 次の表で使用可能なすべての値を表示するには、右にスクロールします。

Africa:

  • Africa/Abidjan

  • Africa/Accra

  • Africa/Addis_Ababa

  • Africa/Algiers

  • Africa/Asmara

  • Africa/Asmera

  • Africa/Bamako

  • Africa/Bangui

  • Africa/Banjul

  • Africa/Bissau

  • Africa/Blantyre

  • Africa/Brazzaville

  • Africa/Bujumbura

  • Africa/Cairo

  • Africa/Casablanca

  • Africa/Ceuta

  • Africa/Conakry

  • Africa/Dakar

  • Africa/Dar_es_Salaam

  • Africa/Djibouti

  • Africa/Douala

  • Africa/El_Aaiun

  • Africa/Freetown

  • Africa/Gaborone

  • Africa/Harare

  • Africa/Johannesburg

  • Africa/Juba

  • Africa/Kampala

  • Africa/Khartoum

  • Africa/Kigali

  • Africa/Kinshasa

  • Africa/Lagos

  • Africa/Libreville

  • Africa/Lome

  • Africa/Luanda

  • Africa/Lubumbashi

  • Africa/Lusaka

  • Africa/Malabo

  • Africa/Maputo

  • Africa/Maseru

  • Africa/Mbabane

  • Africa/Mogadishu

  • Africa/Monrovia

  • Africa/Nairobi

  • Africa/Ndjamena

  • Africa/Niamey

  • Africa/Nouakchott

  • Africa/Ouagadougou

  • Africa/Porto-Novo

  • Africa/Sao_Tome

  • Africa/Timbuktu

  • Africa/Tripoli

  • Africa/Tunis

  • Africa/Windhoek

America:

  • America/Adak

  • America/Anchorage

  • America/Anguilla

  • America/Antigua

  • America/Araguaina

  • America/Argentina/Buenos_Aires

  • America/Argentina/Catamarca

  • America/Argentina/ComodRivadavia

  • America/Argentina/Cordoba

  • America/Argentina/Jujuy

  • America/Argentina/La_Rioja

  • America/Argentina/Mendoza

  • America/Argentina/Rio_Gallegos

  • America/Argentina/Salta

  • America/Argentina/San_Juan

  • America/Argentina/San_Luis

  • America/Argentina/Tucuman

  • America/Argentina/Ushuaia

  • America/Aruba

  • America/Asuncion

  • America/Atikokan

  • America/Atka

  • America/Bahia

  • America/Bahia_Banderas

  • America/Barbados

  • America/Belem

  • America/Belize

  • America/Blanc-Sablon

  • America/Boa_Vista

  • America/Bogota

  • America/Boise

  • America/Buenos_Aires

America (続き):

  • America/Cambridge_Bay

  • America/Campo_Grande

  • America/Cancun

  • America/Caracas

  • America/Catamarca

  • America/Cayenne

  • America/Cayman

  • America/Chicago

  • America/Chihuahua

  • America/Coral_Harbour

  • America/Cordoba

  • America/Costa_Rica

  • America/Creston

  • America/Cuiaba

  • America/Curacao

  • America/Danmarkshavn

  • America/Dawson

  • America/Dawson_Creek

  • America/Denver

  • America/Detroit

  • America/Dominica

  • America/Edmonton

  • America/Eirunepe

  • America/El_Salvador

  • America/Ensenada

  • America/Fort_Nelson

  • America/Fort_Wayne

  • America/Fortaleza

  • America/Glace_Bay

  • America/Godthab

  • America/Goose_Bay

  • America/Grand_Turk

  • America/Grenada

  • America/Guadeloupe

  • America/Guatemala

  • America/Guayaquil

  • America/Guyana

  • America/Halifax

  • America/Havana

  • America/Hermosillo

  • America/Indiana/Indianapolis

  • America/Indiana/Knox

  • America/Indiana/Marengo

  • America/Indiana/Petersburg

  • America/Indiana/Tell_City

  • America/Indiana/Vevay

  • America/Indiana/Vincennes

  • America/Indiana/Winamac

  • America/Indianapolis

  • America/Inuvik

  • America/Iqaluit

  • America/Jamaica

  • America/Jujuy

  • America/Juneau

  • America/Kentucky/Louisville

  • America/Kentucky/Monticello

  • America/Knox_IN

  • America/Kralendijk

  • America/La_Paz

  • America/Lima

  • America/Los_Angeles

  • America/Louisville

  • America/Lower_Princes

  • America/Maceio

  • America/Managua

  • America/Manaus

  • America/Marigot

  • America/Martinique

  • America/Matamoros

  • America/Mazatlan

  • America/Mendoza

  • America/Menominee

  • America/Merida

  • America/Metlakatla

  • America/Mexico_City

  • America/Miquelon

  • America/Moncton

  • America/Monterrey

  • America/Montevideo

  • America/Montreal

  • America/Montserrat

  • America/Nassau

  • America/New_York

  • America/Nipigon

  • America/Nome

  • America/Noronha

America (続き):

  • America/North_Dakota/Beulah

  • America/North_Dakota/Center

  • America/North_Dakota/New_Salem

  • America/Ojinaga

  • America/Panama

  • America/Pangnirtung

  • America/Paramaribo

  • America/Phoenix

  • America/Port-au-Prince

  • America/Port_of_Spain

  • America/Porto_Acre

  • America/Porto_Velho

  • America/Puerto_Rico

  • America/Punta_Arenas

  • America/Rainy_River

  • America/Rankin_Inlet

  • America/Recife

  • America/Regina

  • America/Resolute

  • America/Rio_Branco

  • America/Rosario

  • America/Santa_Isabel

  • America/Santarem

  • America/Santiago

  • America/Santo_Domingo

  • America/Sao_Paulo

  • America/Scoresbysund

  • America/Shiprock

  • America/Sitka

  • America/St_Barthelemy

  • America/St_Johns

  • America/St_Kitts

  • America/St_Lucia

  • America/St_Thomas

  • America/St_Vincent

  • America/Swift_Current

  • America/Tegucigalpa

  • America/Thule

  • America/Thunder_Bay

  • America/Tijuana

  • America/Toronto

  • America/Tortola

  • America/Vancouver

  • America/Virgin

  • America/Whitehorse

  • America/Winnipeg

  • America/Yakutat

  • America/Yellowknife

Antarctica:

  • Antarctica/Casey

  • Antarctica/Davis

  • Antarctica/DumontDUrville

  • Antarctica/Macquarie

  • Antarctica/Mawson

  • Antarctica/McMurdo

  • Antarctica/Palmer

  • Antarctica/Rothera

  • Antarctica/South_Pole

  • Antarctica/Syowa

  • Antarctica/Troll

  • Antarctica/Vostok

  • Arctic/Longyearbyen

Asia:

  • Asia/Aden

  • Asia/Almaty

  • Asia/Amman

  • Asia/Anadyr

  • Asia/Aqtau

  • Asia/Aqtobe

  • Asia/Ashgabat

  • Asia/Ashkhabad

  • Asia/Atyrau

  • Asia/Baghdad

  • Asia/Bahrain

  • Asia/Baku

  • Asia/Bangkok

  • Asia/Barnaul

  • Asia/Beirut

  • Asia/Bishkek

  • Asia/Brunei

  • Asia/Calcutta

  • Asia/Chita

  • Asia/Choibalsan

  • Asia/Chongqing

  • Asia/Chungking

  • Asia/Colombo

Asia (続き):

  • Asia/Dacca

  • Asia/Damascus

  • Asia/Dhaka

  • Asia/Dili

  • Asia/Dubai

  • Asia/Dushanbe

  • Asia/Famagusta

  • Asia/Gaza

  • Asia/Harbin

  • Asia/Hebron

  • Asia/Ho_Chi_Minh

  • Asia/Hong_Kong

  • Asia/Hovd

  • Asia/Irkutsk

  • Asia/Istanbul

  • Asia/Jakarta

  • Asia/Jayapura

  • Asia/Jerusalem

  • Asia/Kabul

  • Asia/Kamchatka

  • Asia/Karachi

  • Asia/Kashgar

  • Asia/Kathmandu

  • Asia/Katmandu

  • Asia/Khandyga

  • Asia/Kolkata

  • Asia/Krasnoyarsk

  • Asia/Kuala_Lumpur

  • Asia/Kuching

  • Asia/Kuwait

  • Asia/Macao

  • Asia/Macau

  • Asia/Magadan

  • Asia/Makassar

  • Asia/Manila

  • Asia/Muscat

  • Asia/Nicosia

  • Asia/Novokuznetsk

  • Asia/Novosibirsk

  • Asia/Omsk

  • Asia/Oral

  • Asia/Phnom_Penh

  • Asia/Pontianak

  • Asia/Pyongyang

  • Asia/Qatar

  • Asia/Qostanay

  • Asia/Qyzylorda

  • Asia/Rangoon

  • Asia/Riyadh

  • Asia/Saigon

  • Asia/Sakhalin

  • Asia/Samarkand

  • Asia/Seoul

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Srednekolymsk

  • Asia/Taipei

  • Asia/Tashkent

  • Asia/Tbilisi

  • Asia/Tehran

  • Asia/Tel_Aviv

  • Asia/Thimbu

  • Asia/Thimphu

  • Asia/Tokyo

  • Asia/Tomsk

  • Asia/Ujung_Pandang

  • Asia/Ulaanbaatar

  • Asia/Ulan_Bator

  • Asia/Urumqi

  • Asia/Ust-Nera

  • Asia/Vientiane

  • Asia/Vladivostok

  • Asia/Yakutsk

  • Asia/Yangon

  • Asia/Yekaterinburg

  • Asia/Yerevan

Atlantic:

  • Atlantic/Azores

  • Atlantic/Bermuda

  • Atlantic/Canary

  • Atlantic/Cape_Verde

  • Atlantic/Faeroe

  • Atlantic/Faroe

  • Atlantic/Jan_Mayen

  • Atlantic/Madeira

  • Atlantic/Reykjavik

  • Atlantic/South_Georgia

  • Atlantic/St_Helena

  • Atlantic/Stanley

Australia:

  • Australia/ACT

  • Australia/Adelaide

  • Australia/Brisbane

  • Australia/Broken_Hill

  • Australia/Canberra

  • Australia/Currie

  • Australia/Darwin

  • Australia/Eucla

  • Australia/Hobart

  • Australia/LHI

  • Australia/Lindeman

  • Australia/Lord_Howe

  • Australia/Melbourne

  • Australia/NSW

  • Australia/North

  • Australia/Perth

  • Australia/Queensland

  • Australia/South

  • Australia/Sydney

  • Australia/Tasmania

  • Australia/Victoria

  • Australia/West

  • Australia/Yancowinna

B:

  • Brazil/Acre

  • Brazil/DeNoronha

  • Brazil/East

  • Brazil/West

C:

  • CET

  • CST6CDT

  • Canada/Atlantic

  • Canada/Central

  • Canada/Eastern

  • Canada/Mountain

  • Canada/Newfoundland

  • Canada/Pacific

  • Canada/Saskatchewan

  • Canada/Yukon

  • Chile/Continental

  • Chile/EasterIsland

  • Cuba

E:

  • EET

  • EST5EDT

  • Egypt

  • Eire

  • Etc/GMT

  • Etc/GMT+0

  • Etc/GMT+1

  • Etc/GMT+10

  • Etc/GMT+11

  • Etc/GMT+12

  • Etc/GMT+2

  • Etc/GMT+3

  • Etc/GMT+4

  • Etc/GMT+5

  • Etc/GMT+6

  • Etc/GMT+7

  • Etc/GMT+8

  • Etc/GMT+9

  • Etc/GMT-0

  • Etc/GMT-1

  • Etc/GMT-10

  • Etc/GMT-11

  • Etc/GMT-12

  • Etc/GMT-13

  • Etc/GMT-14

  • Etc/GMT-2

  • Etc/GMT-3

  • Etc/GMT-4

  • Etc/GMT-5

  • Etc/GMT-6

  • Etc/GMT-7

  • Etc/GMT-8

  • Etc/GMT-9

  • Etc/GMT0

  • Etc/Greenwich

  • Etc/UCT

  • Etc/UTC

  • Etc/Universal

  • Etc/Zulu

E (続き):

  • Europe/Amsterdam

  • Europe/Andorra

  • Europe/Astrakhan

  • Europe/Athens

  • Europe/Belfast

  • Europe/Belgrade

  • Europe/Berlin

  • Europe/Bratislava

  • Europe/Brussels

  • Europe/Bucharest

  • Europe/Budapest

  • Europe/Busingen

  • Europe/Chisinau

  • Europe/Copenhagen

  • Europe/Dublin

  • Europe/Gibraltar

  • Europe/Guernsey

  • Europe/Helsinki

  • Europe/Isle_of_Man

  • Europe/Istanbul

  • Europe/Jersey

  • Europe/Kaliningrad

  • Europe/Kiev

  • Europe/Kirov

  • Europe/Lisbon

  • Europe/Ljubljana

  • Europe/London

  • Europe/Luxembourg

  • Europe/Madrid

  • Europe/Malta

  • Europe/Mariehamn

  • Europe/Minsk

  • Europe/Monaco

  • Europe/Moscow

  • Europe/Nicosia

  • Europe/Oslo

  • Europe/Paris

  • Europe/Podgorica

  • Europe/Prague

  • Europe/Riga

  • Europe/Rome

  • Europe/Samara

  • Europe/San_Marino

  • Europe/Sarajevo

  • Europe/Saratov

  • Europe/Simferopol

  • Europe/Skopje

  • Europe/Sofia

  • Europe/Stockholm

  • Europe/Tallinn

  • Europe/Tirane

  • Europe/Tiraspol

  • Europe/Ulyanovsk

  • Europe/Uzhgorod

  • Europe/Vaduz

  • Europe/Vatican

  • Europe/Vienna

  • Europe/Vilnius

  • Europe/Volgograd

  • Europe/Warsaw

  • Europe/Zagreb

  • Europe/Zaporozhye

  • Europe/Zurich

G:

  • GB

  • GB-Eire

  • GMT

  • GMT0

  • Greenwich

H:

  • Hongkong

I:

  • Iceland

  • Indian/Antananarivo

  • Indian/Chagos

  • Indian/Christmas

  • Indian/Cocos

  • Indian/Comoro

  • Indian/Kerguelen

  • Indian/Mahe

  • Indian/Maldives

  • Indian/Mauritius

  • Indian/Mayotte

  • Indian/Reunion

  • Iran

  • Israel

J:

  • Jamaica

  • Japan

K:

  • Kwajalein

L:

  • Libya

M:

  • MET

  • MST7MDT

  • Mexico/BajaNorte

  • Mexico/BajaSur

  • Mexico/General

N:

  • NZ

  • NZ-CHAT

  • Navajo

P:

  • PRC

  • PST8PDT

  • Pacific/Apia

  • Pacific/Auckland

  • Pacific/Bougainville

  • Pacific/Chatham

  • Pacific/Chuuk

  • Pacific/Easter

  • Pacific/Efate

  • Pacific/Enderbury

  • Pacific/Fakaofo

  • Pacific/Fiji

  • Pacific/Funafuti

  • Pacific/Galapagos

  • Pacific/Gambier

  • Pacific/Guadalcanal

  • Pacific/Guam

  • Pacific/Honolulu

  • Pacific/Johnston

  • Pacific/Kiritimati

  • Pacific/Kosrae

  • Pacific/Kwajalein

  • Pacific/Majuro

  • Pacific/Marquesas

  • Pacific/Midway

  • Pacific/Nauru

  • Pacific/Niue

  • Pacific/Norfolk

  • Pacific/Noumea

  • Pacific/Pago_Pago

  • Pacific/Palau

  • Pacific/Pitcairn

  • Pacific/Pohnpei

  • Pacific/Ponape

  • Pacific/Port_Moresby

  • Pacific/Rarotonga

  • Pacific/Saipan

  • Pacific/Samoa

  • Pacific/Tahiti

  • Pacific/Tarawa

  • Pacific/Tongatapu

  • Pacific/Truk

  • Pacific/Wake

  • Pacific/Wallis

  • Pacific/Yap

  • Poland

  • Portugal

R:

  • ROK

S:

  • Singapore

  • SystemV/AST4

  • SystemV/AST4ADT

  • SystemV/CST6

  • SystemV/CST6CDT

  • SystemV/EST5

  • SystemV/EST5EDT

  • SystemV/HST10

  • SystemV/MST7

  • SystemV/MST7MDT

  • SystemV/PST8

  • SystemV/PST8PDT

  • SystemV/YST9

  • SystemV/YST9YDT

T:

  • Turkey

U:

  • UCT

  • US/Alaska

  • US/Aleutian

  • US/Arizona

  • US/Central

  • US/East-Indiana

  • US/Eastern

  • US/Hawaii

  • US/Indiana-Starke

  • US/Michigan

  • US/Mountain

  • US/Pacific

  • US/Pacific-New

  • US/Samoa

  • UTC

  • Universal

W:

  • W-SU

  • WET

Z:

  • Zulu

## [](#関連する例)関連する例 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-format-dates) - [DataWeave を使用した日付の解析](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-parse-dates) - [時間の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-add-and-subtract-time) ## [](#関連情報)関連情報 - [日時 (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types#dw_type_dates) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # タイムゾーンの変更 次の例では、​`>>`​ 演算子と​[​タイムゾーン ID](#timezone-ids)​ を使用してタイムゾーンを変更します。また、書式設定文字 ​`uuuu-MM-dd'T'HH:mm:ss.SSS`​ を使用して形式を変更します。​`uuuu`​ 文字は年を表します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun format(d: DateTime) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"} --- { CreatedDateTime: format(|2019-02-13T13:23:00.120Z| >> "CET"), } ``` 出力 JSON: ```JSON { "CreatedDateTime": "2019-02-13T14:23:00.120" } ``` ## [](#timezone-ids)タイムゾーン ID DataWeave は、​`-07:00`​ などのタイムゾーン値に加えて、Java 8 の ​`TimeZone`​ ID 値を受け入れます。この値は、​`ZoneId.getAvailableZoneIds()`​ への Java メソッドコールを介して使用できます。 次の表で使用可能なすべての値を表示するには、右にスクロールします。

Africa:

  • Africa/Abidjan

  • Africa/Accra

  • Africa/Addis_Ababa

  • Africa/Algiers

  • Africa/Asmara

  • Africa/Asmera

  • Africa/Bamako

  • Africa/Bangui

  • Africa/Banjul

  • Africa/Bissau

  • Africa/Blantyre

  • Africa/Brazzaville

  • Africa/Bujumbura

  • Africa/Cairo

  • Africa/Casablanca

  • Africa/Ceuta

  • Africa/Conakry

  • Africa/Dakar

  • Africa/Dar_es_Salaam

  • Africa/Djibouti

  • Africa/Douala

  • Africa/El_Aaiun

  • Africa/Freetown

  • Africa/Gaborone

  • Africa/Harare

  • Africa/Johannesburg

  • Africa/Juba

  • Africa/Kampala

  • Africa/Khartoum

  • Africa/Kigali

  • Africa/Kinshasa

  • Africa/Lagos

  • Africa/Libreville

  • Africa/Lome

  • Africa/Luanda

  • Africa/Lubumbashi

  • Africa/Lusaka

  • Africa/Malabo

  • Africa/Maputo

  • Africa/Maseru

  • Africa/Mbabane

  • Africa/Mogadishu

  • Africa/Monrovia

  • Africa/Nairobi

  • Africa/Ndjamena

  • Africa/Niamey

  • Africa/Nouakchott

  • Africa/Ouagadougou

  • Africa/Porto-Novo

  • Africa/Sao_Tome

  • Africa/Timbuktu

  • Africa/Tripoli

  • Africa/Tunis

  • Africa/Windhoek

America:

  • America/Adak

  • America/Anchorage

  • America/Anguilla

  • America/Antigua

  • America/Araguaina

  • America/Argentina/Buenos_Aires

  • America/Argentina/Catamarca

  • America/Argentina/ComodRivadavia

  • America/Argentina/Cordoba

  • America/Argentina/Jujuy

  • America/Argentina/La_Rioja

  • America/Argentina/Mendoza

  • America/Argentina/Rio_Gallegos

  • America/Argentina/Salta

  • America/Argentina/San_Juan

  • America/Argentina/San_Luis

  • America/Argentina/Tucuman

  • America/Argentina/Ushuaia

  • America/Aruba

  • America/Asuncion

  • America/Atikokan

  • America/Atka

  • America/Bahia

  • America/Bahia_Banderas

  • America/Barbados

  • America/Belem

  • America/Belize

  • America/Blanc-Sablon

  • America/Boa_Vista

  • America/Bogota

  • America/Boise

  • America/Buenos_Aires

America (続き):

  • America/Cambridge_Bay

  • America/Campo_Grande

  • America/Cancun

  • America/Caracas

  • America/Catamarca

  • America/Cayenne

  • America/Cayman

  • America/Chicago

  • America/Chihuahua

  • America/Coral_Harbour

  • America/Cordoba

  • America/Costa_Rica

  • America/Creston

  • America/Cuiaba

  • America/Curacao

  • America/Danmarkshavn

  • America/Dawson

  • America/Dawson_Creek

  • America/Denver

  • America/Detroit

  • America/Dominica

  • America/Edmonton

  • America/Eirunepe

  • America/El_Salvador

  • America/Ensenada

  • America/Fort_Nelson

  • America/Fort_Wayne

  • America/Fortaleza

  • America/Glace_Bay

  • America/Godthab

  • America/Goose_Bay

  • America/Grand_Turk

  • America/Grenada

  • America/Guadeloupe

  • America/Guatemala

  • America/Guayaquil

  • America/Guyana

  • America/Halifax

  • America/Havana

  • America/Hermosillo

  • America/Indiana/Indianapolis

  • America/Indiana/Knox

  • America/Indiana/Marengo

  • America/Indiana/Petersburg

  • America/Indiana/Tell_City

  • America/Indiana/Vevay

  • America/Indiana/Vincennes

  • America/Indiana/Winamac

  • America/Indianapolis

  • America/Inuvik

  • America/Iqaluit

  • America/Jamaica

  • America/Jujuy

  • America/Juneau

  • America/Kentucky/Louisville

  • America/Kentucky/Monticello

  • America/Knox_IN

  • America/Kralendijk

  • America/La_Paz

  • America/Lima

  • America/Los_Angeles

  • America/Louisville

  • America/Lower_Princes

  • America/Maceio

  • America/Managua

  • America/Manaus

  • America/Marigot

  • America/Martinique

  • America/Matamoros

  • America/Mazatlan

  • America/Mendoza

  • America/Menominee

  • America/Merida

  • America/Metlakatla

  • America/Mexico_City

  • America/Miquelon

  • America/Moncton

  • America/Monterrey

  • America/Montevideo

  • America/Montreal

  • America/Montserrat

  • America/Nassau

  • America/New_York

  • America/Nipigon

  • America/Nome

  • America/Noronha

America (続き):

  • America/North_Dakota/Beulah

  • America/North_Dakota/Center

  • America/North_Dakota/New_Salem

  • America/Ojinaga

  • America/Panama

  • America/Pangnirtung

  • America/Paramaribo

  • America/Phoenix

  • America/Port-au-Prince

  • America/Port_of_Spain

  • America/Porto_Acre

  • America/Porto_Velho

  • America/Puerto_Rico

  • America/Punta_Arenas

  • America/Rainy_River

  • America/Rankin_Inlet

  • America/Recife

  • America/Regina

  • America/Resolute

  • America/Rio_Branco

  • America/Rosario

  • America/Santa_Isabel

  • America/Santarem

  • America/Santiago

  • America/Santo_Domingo

  • America/Sao_Paulo

  • America/Scoresbysund

  • America/Shiprock

  • America/Sitka

  • America/St_Barthelemy

  • America/St_Johns

  • America/St_Kitts

  • America/St_Lucia

  • America/St_Thomas

  • America/St_Vincent

  • America/Swift_Current

  • America/Tegucigalpa

  • America/Thule

  • America/Thunder_Bay

  • America/Tijuana

  • America/Toronto

  • America/Tortola

  • America/Vancouver

  • America/Virgin

  • America/Whitehorse

  • America/Winnipeg

  • America/Yakutat

  • America/Yellowknife

Antarctica:

  • Antarctica/Casey

  • Antarctica/Davis

  • Antarctica/DumontDUrville

  • Antarctica/Macquarie

  • Antarctica/Mawson

  • Antarctica/McMurdo

  • Antarctica/Palmer

  • Antarctica/Rothera

  • Antarctica/South_Pole

  • Antarctica/Syowa

  • Antarctica/Troll

  • Antarctica/Vostok

  • Arctic/Longyearbyen

Asia:

  • Asia/Aden

  • Asia/Almaty

  • Asia/Amman

  • Asia/Anadyr

  • Asia/Aqtau

  • Asia/Aqtobe

  • Asia/Ashgabat

  • Asia/Ashkhabad

  • Asia/Atyrau

  • Asia/Baghdad

  • Asia/Bahrain

  • Asia/Baku

  • Asia/Bangkok

  • Asia/Barnaul

  • Asia/Beirut

  • Asia/Bishkek

  • Asia/Brunei

  • Asia/Calcutta

  • Asia/Chita

  • Asia/Choibalsan

  • Asia/Chongqing

  • Asia/Chungking

  • Asia/Colombo

Asia (続き):

  • Asia/Dacca

  • Asia/Damascus

  • Asia/Dhaka

  • Asia/Dili

  • Asia/Dubai

  • Asia/Dushanbe

  • Asia/Famagusta

  • Asia/Gaza

  • Asia/Harbin

  • Asia/Hebron

  • Asia/Ho_Chi_Minh

  • Asia/Hong_Kong

  • Asia/Hovd

  • Asia/Irkutsk

  • Asia/Istanbul

  • Asia/Jakarta

  • Asia/Jayapura

  • Asia/Jerusalem

  • Asia/Kabul

  • Asia/Kamchatka

  • Asia/Karachi

  • Asia/Kashgar

  • Asia/Kathmandu

  • Asia/Katmandu

  • Asia/Khandyga

  • Asia/Kolkata

  • Asia/Krasnoyarsk

  • Asia/Kuala_Lumpur

  • Asia/Kuching

  • Asia/Kuwait

  • Asia/Macao

  • Asia/Macau

  • Asia/Magadan

  • Asia/Makassar

  • Asia/Manila

  • Asia/Muscat

  • Asia/Nicosia

  • Asia/Novokuznetsk

  • Asia/Novosibirsk

  • Asia/Omsk

  • Asia/Oral

  • Asia/Phnom_Penh

  • Asia/Pontianak

  • Asia/Pyongyang

  • Asia/Qatar

  • Asia/Qostanay

  • Asia/Qyzylorda

  • Asia/Rangoon

  • Asia/Riyadh

  • Asia/Saigon

  • Asia/Sakhalin

  • Asia/Samarkand

  • Asia/Seoul

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Srednekolymsk

  • Asia/Taipei

  • Asia/Tashkent

  • Asia/Tbilisi

  • Asia/Tehran

  • Asia/Tel_Aviv

  • Asia/Thimbu

  • Asia/Thimphu

  • Asia/Tokyo

  • Asia/Tomsk

  • Asia/Ujung_Pandang

  • Asia/Ulaanbaatar

  • Asia/Ulan_Bator

  • Asia/Urumqi

  • Asia/Ust-Nera

  • Asia/Vientiane

  • Asia/Vladivostok

  • Asia/Yakutsk

  • Asia/Yangon

  • Asia/Yekaterinburg

  • Asia/Yerevan

Atlantic:

  • Atlantic/Azores

  • Atlantic/Bermuda

  • Atlantic/Canary

  • Atlantic/Cape_Verde

  • Atlantic/Faeroe

  • Atlantic/Faroe

  • Atlantic/Jan_Mayen

  • Atlantic/Madeira

  • Atlantic/Reykjavik

  • Atlantic/South_Georgia

  • Atlantic/St_Helena

  • Atlantic/Stanley

Australia:

  • Australia/ACT

  • Australia/Adelaide

  • Australia/Brisbane

  • Australia/Broken_Hill

  • Australia/Canberra

  • Australia/Currie

  • Australia/Darwin

  • Australia/Eucla

  • Australia/Hobart

  • Australia/LHI

  • Australia/Lindeman

  • Australia/Lord_Howe

  • Australia/Melbourne

  • Australia/NSW

  • Australia/North

  • Australia/Perth

  • Australia/Queensland

  • Australia/South

  • Australia/Sydney

  • Australia/Tasmania

  • Australia/Victoria

  • Australia/West

  • Australia/Yancowinna

B:

  • Brazil/Acre

  • Brazil/DeNoronha

  • Brazil/East

  • Brazil/West

C:

  • CET

  • CST6CDT

  • Canada/Atlantic

  • Canada/Central

  • Canada/Eastern

  • Canada/Mountain

  • Canada/Newfoundland

  • Canada/Pacific

  • Canada/Saskatchewan

  • Canada/Yukon

  • Chile/Continental

  • Chile/EasterIsland

  • Cuba

E:

  • EET

  • EST5EDT

  • Egypt

  • Eire

  • Etc/GMT

  • Etc/GMT+0

  • Etc/GMT+1

  • Etc/GMT+10

  • Etc/GMT+11

  • Etc/GMT+12

  • Etc/GMT+2

  • Etc/GMT+3

  • Etc/GMT+4

  • Etc/GMT+5

  • Etc/GMT+6

  • Etc/GMT+7

  • Etc/GMT+8

  • Etc/GMT+9

  • Etc/GMT-0

  • Etc/GMT-1

  • Etc/GMT-10

  • Etc/GMT-11

  • Etc/GMT-12

  • Etc/GMT-13

  • Etc/GMT-14

  • Etc/GMT-2

  • Etc/GMT-3

  • Etc/GMT-4

  • Etc/GMT-5

  • Etc/GMT-6

  • Etc/GMT-7

  • Etc/GMT-8

  • Etc/GMT-9

  • Etc/GMT0

  • Etc/Greenwich

  • Etc/UCT

  • Etc/UTC

  • Etc/Universal

  • Etc/Zulu

E (続き):

  • Europe/Amsterdam

  • Europe/Andorra

  • Europe/Astrakhan

  • Europe/Athens

  • Europe/Belfast

  • Europe/Belgrade

  • Europe/Berlin

  • Europe/Bratislava

  • Europe/Brussels

  • Europe/Bucharest

  • Europe/Budapest

  • Europe/Busingen

  • Europe/Chisinau

  • Europe/Copenhagen

  • Europe/Dublin

  • Europe/Gibraltar

  • Europe/Guernsey

  • Europe/Helsinki

  • Europe/Isle_of_Man

  • Europe/Istanbul

  • Europe/Jersey

  • Europe/Kaliningrad

  • Europe/Kiev

  • Europe/Kirov

  • Europe/Lisbon

  • Europe/Ljubljana

  • Europe/London

  • Europe/Luxembourg

  • Europe/Madrid

  • Europe/Malta

  • Europe/Mariehamn

  • Europe/Minsk

  • Europe/Monaco

  • Europe/Moscow

  • Europe/Nicosia

  • Europe/Oslo

  • Europe/Paris

  • Europe/Podgorica

  • Europe/Prague

  • Europe/Riga

  • Europe/Rome

  • Europe/Samara

  • Europe/San_Marino

  • Europe/Sarajevo

  • Europe/Saratov

  • Europe/Skopje

  • Europe/Sofia

  • Europe/Stockholm

  • Europe/Tallinn

  • Europe/Tirane

  • Europe/Tiraspol

  • Europe/Ulyanovsk

  • Europe/Uzhgorod

  • Europe/Vaduz

  • Europe/Vatican

  • Europe/Vienna

  • Europe/Vilnius

  • Europe/Volgograd

  • Europe/Warsaw

  • Europe/Zagreb

  • Europe/Zaporozhye

  • Europe/Zurich

G:

  • GB

  • GB-Eire

  • GMT

  • GMT0

  • Greenwich

H:

  • Hongkong

I:

  • Iceland

  • Indian/Antananarivo

  • Indian/Chagos

  • Indian/Christmas

  • Indian/Cocos

  • Indian/Comoro

  • Indian/Kerguelen

  • Indian/Mahe

  • Indian/Maldives

  • Indian/Mauritius

  • Indian/Mayotte

  • Indian/Reunion

  • Iran

  • Israel

J:

  • Jamaica

  • Japan

K:

  • Kwajalein

L:

  • Libya

M:

  • MET

  • MST7MDT

  • Mexico/BajaNorte

  • Mexico/BajaSur

  • Mexico/General

N:

  • NZ

  • NZ-CHAT

  • Navajo

P:

  • PRC

  • PST8PDT

  • Pacific/Apia

  • Pacific/Auckland

  • Pacific/Bougainville

  • Pacific/Chatham

  • Pacific/Chuuk

  • Pacific/Easter

  • Pacific/Efate

  • Pacific/Enderbury

  • Pacific/Fakaofo

  • Pacific/Fiji

  • Pacific/Funafuti

  • Pacific/Galapagos

  • Pacific/Gambier

  • Pacific/Guadalcanal

  • Pacific/Guam

  • Pacific/Honolulu

  • Pacific/Johnston

  • Pacific/Kiritimati

  • Pacific/Kosrae

  • Pacific/Kwajalein

  • Pacific/Majuro

  • Pacific/Marquesas

  • Pacific/Midway

  • Pacific/Nauru

  • Pacific/Niue

  • Pacific/Norfolk

  • Pacific/Noumea

  • Pacific/Pago_Pago

  • Pacific/Palau

  • Pacific/Pitcairn

  • Pacific/Pohnpei

  • Pacific/Ponape

  • Pacific/Port_Moresby

  • Pacific/Rarotonga

  • Pacific/Saipan

  • Pacific/Samoa

  • Pacific/Tahiti

  • Pacific/Tarawa

  • Pacific/Tongatapu

  • Pacific/Truk

  • Pacific/Wake

  • Pacific/Wallis

  • Pacific/Yap

  • Poland

  • Portugal

R:

  • ROK

S:

  • Singapore

  • SystemV/AST4

  • SystemV/AST4ADT

  • SystemV/CST6

  • SystemV/CST6CDT

  • SystemV/EST5

  • SystemV/EST5EDT

  • SystemV/HST10

  • SystemV/MST7

  • SystemV/MST7MDT

  • SystemV/PST8

  • SystemV/PST8PDT

  • SystemV/YST9

  • SystemV/YST9YDT

T:

  • Turkey

U:

  • UCT

  • US/Alaska

  • US/Aleutian

  • US/Arizona

  • US/Central

  • US/East-Indiana

  • US/Eastern

  • US/Hawaii

  • US/Indiana-Starke

  • US/Michigan

  • US/Mountain

  • US/Pacific

  • US/Pacific-New

  • US/Samoa

  • UTC

  • Universal

W:

  • W-SU

  • WET

Z:

  • Zulu

## [](#関連する例)関連する例 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-format-dates) - [DataWeave を使用した日付の解析](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-parse-dates) - [時間の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-add-and-subtract-time) ## [](#関連情報)関連情報 - [日時 (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types#dw_type_dates) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # タイムゾーンの変更 次の例では、​`>>`​ 演算子と​[タイムゾーン ID](#timezone-ids)​ を使用してタイムゾーンを変更します。また、書式設定文字 ​`uuuu-MM-dd'T'HH:mm:ss.SSS`​ を使用して形式を変更します。​`uuuu`​ 文字は年を表します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun format(d: DateTime) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"} --- { CreatedDateTime: format(|2019-02-13T13:23:00.120Z| >> "CET"), } ``` 出力 JSON: ```JSON { "CreatedDateTime": "2019-02-13T14:23:00.120" } ``` ## [](#timezone-ids)タイムゾーン ID DataWeave は、​`-07:00`​ などのタイムゾーン値に加えて、Java 8 の ​`TimeZone`​ ID 値を受け入れます。この値は、​`ZoneId.getAvailableZoneIds()`​ への Java メソッドコールを介して使用できます。 次の表で使用可能なすべての値を表示するには、右にスクロールします。

Africa:

  • Africa/Abidjan

  • Africa/Accra

  • Africa/Addis_Ababa

  • Africa/Algiers

  • Africa/Asmara

  • Africa/Asmera

  • Africa/Bamako

  • Africa/Bangui

  • Africa/Banjul

  • Africa/Bissau

  • Africa/Blantyre

  • Africa/Brazzaville

  • Africa/Bujumbura

  • Africa/Cairo

  • Africa/Casablanca

  • Africa/Ceuta

  • Africa/Conakry

  • Africa/Dakar

  • Africa/Dar_es_Salaam

  • Africa/Djibouti

  • Africa/Douala

  • Africa/El_Aaiun

  • Africa/Freetown

  • Africa/Gaborone

  • Africa/Harare

  • Africa/Johannesburg

  • Africa/Juba

  • Africa/Kampala

  • Africa/Khartoum

  • Africa/Kigali

  • Africa/Kinshasa

  • Africa/Lagos

  • Africa/Libreville

  • Africa/Lome

  • Africa/Luanda

  • Africa/Lubumbashi

  • Africa/Lusaka

  • Africa/Malabo

  • Africa/Maputo

  • Africa/Maseru

  • Africa/Mbabane

  • Africa/Mogadishu

  • Africa/Monrovia

  • Africa/Nairobi

  • Africa/Ndjamena

  • Africa/Niamey

  • Africa/Nouakchott

  • Africa/Ouagadougou

  • Africa/Porto-Novo

  • Africa/Sao_Tome

  • Africa/Timbuktu

  • Africa/Tripoli

  • Africa/Tunis

  • Africa/Windhoek

America:

  • America/Adak

  • America/Anchorage

  • America/Anguilla

  • America/Antigua

  • America/Araguaina

  • America/Argentina/Buenos_Aires

  • America/Argentina/Catamarca

  • America/Argentina/ComodRivadavia

  • America/Argentina/Cordoba

  • America/Argentina/Jujuy

  • America/Argentina/La_Rioja

  • America/Argentina/Mendoza

  • America/Argentina/Rio_Gallegos

  • America/Argentina/Salta

  • America/Argentina/San_Juan

  • America/Argentina/San_Luis

  • America/Argentina/Tucuman

  • America/Argentina/Ushuaia

  • America/Aruba

  • America/Asuncion

  • America/Atikokan

  • America/Atka

  • America/Bahia

  • America/Bahia_Banderas

  • America/Barbados

  • America/Belem

  • America/Belize

  • America/Blanc-Sablon

  • America/Boa_Vista

  • America/Bogota

  • America/Boise

  • America/Buenos_Aires

America (続き):

  • America/Cambridge_Bay

  • America/Campo_Grande

  • America/Cancun

  • America/Caracas

  • America/Catamarca

  • America/Cayenne

  • America/Cayman

  • America/Chicago

  • America/Chihuahua

  • America/Coral_Harbour

  • America/Cordoba

  • America/Costa_Rica

  • America/Creston

  • America/Cuiaba

  • America/Curacao

  • America/Danmarkshavn

  • America/Dawson

  • America/Dawson_Creek

  • America/Denver

  • America/Detroit

  • America/Dominica

  • America/Edmonton

  • America/Eirunepe

  • America/El_Salvador

  • America/Ensenada

  • America/Fort_Nelson

  • America/Fort_Wayne

  • America/Fortaleza

  • America/Glace_Bay

  • America/Godthab

  • America/Goose_Bay

  • America/Grand_Turk

  • America/Grenada

  • America/Guadeloupe

  • America/Guatemala

  • America/Guayaquil

  • America/Guyana

  • America/Halifax

  • America/Havana

  • America/Hermosillo

  • America/Indiana/Indianapolis

  • America/Indiana/Knox

  • America/Indiana/Marengo

  • America/Indiana/Petersburg

  • America/Indiana/Tell_City

  • America/Indiana/Vevay

  • America/Indiana/Vincennes

  • America/Indiana/Winamac

  • America/Indianapolis

  • America/Inuvik

  • America/Iqaluit

  • America/Jamaica

  • America/Jujuy

  • America/Juneau

  • America/Kentucky/Louisville

  • America/Kentucky/Monticello

  • America/Knox_IN

  • America/Kralendijk

  • America/La_Paz

  • America/Lima

  • America/Los_Angeles

  • America/Louisville

  • America/Lower_Princes

  • America/Maceio

  • America/Managua

  • America/Manaus

  • America/Marigot

  • America/Martinique

  • America/Matamoros

  • America/Mazatlan

  • America/Mendoza

  • America/Menominee

  • America/Merida

  • America/Metlakatla

  • America/Mexico_City

  • America/Miquelon

  • America/Moncton

  • America/Monterrey

  • America/Montevideo

  • America/Montreal

  • America/Montserrat

  • America/Nassau

  • America/New_York

  • America/Nipigon

  • America/Nome

  • America/Noronha

America (続き):

  • America/North_Dakota/Beulah

  • America/North_Dakota/Center

  • America/North_Dakota/New_Salem

  • America/Ojinaga

  • America/Panama

  • America/Pangnirtung

  • America/Paramaribo

  • America/Phoenix

  • America/Port-au-Prince

  • America/Port_of_Spain

  • America/Porto_Acre

  • America/Porto_Velho

  • America/Puerto_Rico

  • America/Punta_Arenas

  • America/Rainy_River

  • America/Rankin_Inlet

  • America/Recife

  • America/Regina

  • America/Resolute

  • America/Rio_Branco

  • America/Rosario

  • America/Santa_Isabel

  • America/Santarem

  • America/Santiago

  • America/Santo_Domingo

  • America/Sao_Paulo

  • America/Scoresbysund

  • America/Shiprock

  • America/Sitka

  • America/St_Barthelemy

  • America/St_Johns

  • America/St_Kitts

  • America/St_Lucia

  • America/St_Thomas

  • America/St_Vincent

  • America/Swift_Current

  • America/Tegucigalpa

  • America/Thule

  • America/Thunder_Bay

  • America/Tijuana

  • America/Toronto

  • America/Tortola

  • America/Vancouver

  • America/Virgin

  • America/Whitehorse

  • America/Winnipeg

  • America/Yakutat

  • America/Yellowknife

Antarctica:

  • Antarctica/Casey

  • Antarctica/Davis

  • Antarctica/DumontDUrville

  • Antarctica/Macquarie

  • Antarctica/Mawson

  • Antarctica/McMurdo

  • Antarctica/Palmer

  • Antarctica/Rothera

  • Antarctica/South_Pole

  • Antarctica/Syowa

  • Antarctica/Troll

  • Antarctica/Vostok

  • Arctic/Longyearbyen

Asia:

  • Asia/Aden

  • Asia/Almaty

  • Asia/Amman

  • Asia/Anadyr

  • Asia/Aqtau

  • Asia/Aqtobe

  • Asia/Ashgabat

  • Asia/Ashkhabad

  • Asia/Atyrau

  • Asia/Baghdad

  • Asia/Bahrain

  • Asia/Baku

  • Asia/Bangkok

  • Asia/Barnaul

  • Asia/Beirut

  • Asia/Bishkek

  • Asia/Brunei

  • Asia/Calcutta

  • Asia/Chita

  • Asia/Choibalsan

  • Asia/Chongqing

  • Asia/Chungking

  • Asia/Colombo

Asia (続き):

  • Asia/Dacca

  • Asia/Damascus

  • Asia/Dhaka

  • Asia/Dili

  • Asia/Dubai

  • Asia/Dushanbe

  • Asia/Famagusta

  • Asia/Gaza

  • Asia/Harbin

  • Asia/Hebron

  • Asia/Ho_Chi_Minh

  • Asia/Hong_Kong

  • Asia/Hovd

  • Asia/Irkutsk

  • Asia/Istanbul

  • Asia/Jakarta

  • Asia/Jayapura

  • Asia/Jerusalem

  • Asia/Kabul

  • Asia/Kamchatka

  • Asia/Karachi

  • Asia/Kashgar

  • Asia/Kathmandu

  • Asia/Katmandu

  • Asia/Khandyga

  • Asia/Kolkata

  • Asia/Krasnoyarsk

  • Asia/Kuala_Lumpur

  • Asia/Kuching

  • Asia/Kuwait

  • Asia/Macao

  • Asia/Macau

  • Asia/Magadan

  • Asia/Makassar

  • Asia/Manila

  • Asia/Muscat

  • Asia/Nicosia

  • Asia/Novokuznetsk

  • Asia/Novosibirsk

  • Asia/Omsk

  • Asia/Oral

  • Asia/Phnom_Penh

  • Asia/Pontianak

  • Asia/Pyongyang

  • Asia/Qatar

  • Asia/Qostanay

  • Asia/Qyzylorda

  • Asia/Rangoon

  • Asia/Riyadh

  • Asia/Saigon

  • Asia/Sakhalin

  • Asia/Samarkand

  • Asia/Seoul

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Srednekolymsk

  • Asia/Taipei

  • Asia/Tashkent

  • Asia/Tbilisi

  • Asia/Tehran

  • Asia/Tel_Aviv

  • Asia/Thimbu

  • Asia/Thimphu

  • Asia/Tokyo

  • Asia/Tomsk

  • Asia/Ujung_Pandang

  • Asia/Ulaanbaatar

  • Asia/Ulan_Bator

  • Asia/Urumqi

  • Asia/Ust-Nera

  • Asia/Vientiane

  • Asia/Vladivostok

  • Asia/Yakutsk

  • Asia/Yangon

  • Asia/Yekaterinburg

  • Asia/Yerevan

Atlantic:

  • Atlantic/Azores

  • Atlantic/Bermuda

  • Atlantic/Canary

  • Atlantic/Cape_Verde

  • Atlantic/Faeroe

  • Atlantic/Faroe

  • Atlantic/Jan_Mayen

  • Atlantic/Madeira

  • Atlantic/Reykjavik

  • Atlantic/South_Georgia

  • Atlantic/St_Helena

  • Atlantic/Stanley

Australia:

  • Australia/ACT

  • Australia/Adelaide

  • Australia/Brisbane

  • Australia/Broken_Hill

  • Australia/Canberra

  • Australia/Currie

  • Australia/Darwin

  • Australia/Eucla

  • Australia/Hobart

  • Australia/LHI

  • Australia/Lindeman

  • Australia/Lord_Howe

  • Australia/Melbourne

  • Australia/NSW

  • Australia/North

  • Australia/Perth

  • Australia/Queensland

  • Australia/South

  • Australia/Sydney

  • Australia/Tasmania

  • Australia/Victoria

  • Australia/West

  • Australia/Yancowinna

B:

  • Brazil/Acre

  • Brazil/DeNoronha

  • Brazil/East

  • Brazil/West

C:

  • CET

  • CST6CDT

  • Canada/Atlantic

  • Canada/Central

  • Canada/Eastern

  • Canada/Mountain

  • Canada/Newfoundland

  • Canada/Pacific

  • Canada/Saskatchewan

  • Canada/Yukon

  • Chile/Continental

  • Chile/EasterIsland

  • Cuba

E:

  • EET

  • EST5EDT

  • Egypt

  • Eire

  • Etc/GMT

  • Etc/GMT+0

  • Etc/GMT+1

  • Etc/GMT+10

  • Etc/GMT+11

  • Etc/GMT+12

  • Etc/GMT+2

  • Etc/GMT+3

  • Etc/GMT+4

  • Etc/GMT+5

  • Etc/GMT+6

  • Etc/GMT+7

  • Etc/GMT+8

  • Etc/GMT+9

  • Etc/GMT-0

  • Etc/GMT-1

  • Etc/GMT-10

  • Etc/GMT-11

  • Etc/GMT-12

  • Etc/GMT-13

  • Etc/GMT-14

  • Etc/GMT-2

  • Etc/GMT-3

  • Etc/GMT-4

  • Etc/GMT-5

  • Etc/GMT-6

  • Etc/GMT-7

  • Etc/GMT-8

  • Etc/GMT-9

  • Etc/GMT0

  • Etc/Greenwich

  • Etc/UCT

  • Etc/UTC

  • Etc/Universal

  • Etc/Zulu

E (続き):

  • Europe/Amsterdam

  • Europe/Andorra

  • Europe/Astrakhan

  • Europe/Athens

  • Europe/Belfast

  • Europe/Belgrade

  • Europe/Berlin

  • Europe/Bratislava

  • Europe/Brussels

  • Europe/Bucharest

  • Europe/Budapest

  • Europe/Busingen

  • Europe/Chisinau

  • Europe/Copenhagen

  • Europe/Dublin

  • Europe/Gibraltar

  • Europe/Guernsey

  • Europe/Helsinki

  • Europe/Isle_of_Man

  • Europe/Istanbul

  • Europe/Jersey

  • Europe/Kaliningrad

  • Europe/Kiev

  • Europe/Kirov

  • Europe/Lisbon

  • Europe/Ljubljana

  • Europe/London

  • Europe/Luxembourg

  • Europe/Madrid

  • Europe/Malta

  • Europe/Mariehamn

  • Europe/Minsk

  • Europe/Monaco

  • Europe/Moscow

  • Europe/Nicosia

  • Europe/Oslo

  • Europe/Paris

  • Europe/Podgorica

  • Europe/Prague

  • Europe/Riga

  • Europe/Rome

  • Europe/Samara

  • Europe/San_Marino

  • Europe/Sarajevo

  • Europe/Saratov

  • Europe/Skopje

  • Europe/Sofia

  • Europe/Stockholm

  • Europe/Tallinn

  • Europe/Tirane

  • Europe/Tiraspol

  • Europe/Ulyanovsk

  • Europe/Uzhgorod

  • Europe/Vaduz

  • Europe/Vatican

  • Europe/Vienna

  • Europe/Vilnius

  • Europe/Volgograd

  • Europe/Warsaw

  • Europe/Zagreb

  • Europe/Zaporozhye

  • Europe/Zurich

G:

  • GB

  • GB-Eire

  • GMT

  • GMT0

  • Greenwich

H:

  • Hongkong

I:

  • Iceland

  • Indian/Antananarivo

  • Indian/Chagos

  • Indian/Christmas

  • Indian/Cocos

  • Indian/Comoro

  • Indian/Kerguelen

  • Indian/Mahe

  • Indian/Maldives

  • Indian/Mauritius

  • Indian/Mayotte

  • Indian/Reunion

  • Iran

  • Israel

J:

  • Jamaica

  • Japan

K:

  • Kwajalein

L:

  • Libya

M:

  • MET

  • MST7MDT

  • Mexico/BajaNorte

  • Mexico/BajaSur

  • Mexico/General

N:

  • NZ

  • NZ-CHAT

  • Navajo

P:

  • PRC

  • PST8PDT

  • Pacific/Apia

  • Pacific/Auckland

  • Pacific/Bougainville

  • Pacific/Chatham

  • Pacific/Chuuk

  • Pacific/Easter

  • Pacific/Efate

  • Pacific/Enderbury

  • Pacific/Fakaofo

  • Pacific/Fiji

  • Pacific/Funafuti

  • Pacific/Galapagos

  • Pacific/Gambier

  • Pacific/Guadalcanal

  • Pacific/Guam

  • Pacific/Honolulu

  • Pacific/Johnston

  • Pacific/Kiritimati

  • Pacific/Kosrae

  • Pacific/Kwajalein

  • Pacific/Majuro

  • Pacific/Marquesas

  • Pacific/Midway

  • Pacific/Nauru

  • Pacific/Niue

  • Pacific/Norfolk

  • Pacific/Noumea

  • Pacific/Pago_Pago

  • Pacific/Palau

  • Pacific/Pitcairn

  • Pacific/Pohnpei

  • Pacific/Ponape

  • Pacific/Port_Moresby

  • Pacific/Rarotonga

  • Pacific/Saipan

  • Pacific/Samoa

  • Pacific/Tahiti

  • Pacific/Tarawa

  • Pacific/Tongatapu

  • Pacific/Truk

  • Pacific/Wake

  • Pacific/Wallis

  • Pacific/Yap

  • Poland

  • Portugal

R:

  • ROK

S:

  • Singapore

  • SystemV/AST4

  • SystemV/AST4ADT

  • SystemV/CST6

  • SystemV/CST6CDT

  • SystemV/EST5

  • SystemV/EST5EDT

  • SystemV/HST10

  • SystemV/MST7

  • SystemV/MST7MDT

  • SystemV/PST8

  • SystemV/PST8PDT

  • SystemV/YST9

  • SystemV/YST9YDT

T:

  • Turkey

U:

  • UCT

  • US/Alaska

  • US/Aleutian

  • US/Arizona

  • US/Central

  • US/East-Indiana

  • US/Eastern

  • US/Hawaii

  • US/Indiana-Starke

  • US/Michigan

  • US/Mountain

  • US/Pacific

  • US/Pacific-New

  • US/Samoa

  • UTC

  • Universal

W:

  • W-SU

  • WET

Z:

  • Zulu

## [](#関連する例)関連する例 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-format-dates) - [DataWeave を使用した日付の解析](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-parse-dates) - [時間の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-add-and-subtract-time) ## [](#関連情報)関連情報 - [日時 (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types#dw_type_dates) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # タイムゾーンの変更 次の例では、​`>>`​ 演算子と​[タイムゾーン ID](#timezone-ids)​ を使用してタイムゾーンを変更します。また、書式設定文字 ​`uuuu-MM-dd'T'HH:mm:ss.SSS`​ を使用して形式を変更します。​`uuuu`​ 文字は年を表します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun format(d: DateTime) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"} --- { CreatedDateTime: format(|2019-02-13T13:23:00.120Z| >> "CET"), } ``` 出力 JSON: ```JSON { "CreatedDateTime": "2019-02-13T14:23:00.120" } ``` ## [](#timezone-ids)タイムゾーン ID DataWeave は、​`-07:00`​ などのタイムゾーン値に加えて、Java 8 の ​`TimeZone`​ ID 値を受け入れます。この値は、​`ZoneId.getAvailableZoneIds()`​ への Java メソッドコールを介して使用できます。 次の表で使用可能なすべての値を表示するには、右にスクロールします。

Africa:

  • Africa/Abidjan

  • Africa/Accra

  • Africa/Addis_Ababa

  • Africa/Algiers

  • Africa/Asmara

  • Africa/Asmera

  • Africa/Bamako

  • Africa/Bangui

  • Africa/Banjul

  • Africa/Bissau

  • Africa/Blantyre

  • Africa/Brazzaville

  • Africa/Bujumbura

  • Africa/Cairo

  • Africa/Casablanca

  • Africa/Ceuta

  • Africa/Conakry

  • Africa/Dakar

  • Africa/Dar_es_Salaam

  • Africa/Djibouti

  • Africa/Douala

  • Africa/El_Aaiun

  • Africa/Freetown

  • Africa/Gaborone

  • Africa/Harare

  • Africa/Johannesburg

  • Africa/Juba

  • Africa/Kampala

  • Africa/Khartoum

  • Africa/Kigali

  • Africa/Kinshasa

  • Africa/Lagos

  • Africa/Libreville

  • Africa/Lome

  • Africa/Luanda

  • Africa/Lubumbashi

  • Africa/Lusaka

  • Africa/Malabo

  • Africa/Maputo

  • Africa/Maseru

  • Africa/Mbabane

  • Africa/Mogadishu

  • Africa/Monrovia

  • Africa/Nairobi

  • Africa/Ndjamena

  • Africa/Niamey

  • Africa/Nouakchott

  • Africa/Ouagadougou

  • Africa/Porto-Novo

  • Africa/Sao_Tome

  • Africa/Timbuktu

  • Africa/Tripoli

  • Africa/Tunis

  • Africa/Windhoek

America:

  • America/Adak

  • America/Anchorage

  • America/Anguilla

  • America/Antigua

  • America/Araguaina

  • America/Argentina/Buenos_Aires

  • America/Argentina/Catamarca

  • America/Argentina/ComodRivadavia

  • America/Argentina/Cordoba

  • America/Argentina/Jujuy

  • America/Argentina/La_Rioja

  • America/Argentina/Mendoza

  • America/Argentina/Rio_Gallegos

  • America/Argentina/Salta

  • America/Argentina/San_Juan

  • America/Argentina/San_Luis

  • America/Argentina/Tucuman

  • America/Argentina/Ushuaia

  • America/Aruba

  • America/Asuncion

  • America/Atikokan

  • America/Atka

  • America/Bahia

  • America/Bahia_Banderas

  • America/Barbados

  • America/Belem

  • America/Belize

  • America/Blanc-Sablon

  • America/Boa_Vista

  • America/Bogota

  • America/Boise

  • America/Buenos_Aires

America (続き):

  • America/Cambridge_Bay

  • America/Campo_Grande

  • America/Cancun

  • America/Caracas

  • America/Catamarca

  • America/Cayenne

  • America/Cayman

  • America/Chicago

  • America/Chihuahua

  • America/Coral_Harbour

  • America/Cordoba

  • America/Costa_Rica

  • America/Creston

  • America/Cuiaba

  • America/Curacao

  • America/Danmarkshavn

  • America/Dawson

  • America/Dawson_Creek

  • America/Denver

  • America/Detroit

  • America/Dominica

  • America/Edmonton

  • America/Eirunepe

  • America/El_Salvador

  • America/Ensenada

  • America/Fort_Nelson

  • America/Fort_Wayne

  • America/Fortaleza

  • America/Glace_Bay

  • America/Godthab

  • America/Goose_Bay

  • America/Grand_Turk

  • America/Grenada

  • America/Guadeloupe

  • America/Guatemala

  • America/Guayaquil

  • America/Guyana

  • America/Halifax

  • America/Havana

  • America/Hermosillo

  • America/Indiana/Indianapolis

  • America/Indiana/Knox

  • America/Indiana/Marengo

  • America/Indiana/Petersburg

  • America/Indiana/Tell_City

  • America/Indiana/Vevay

  • America/Indiana/Vincennes

  • America/Indiana/Winamac

  • America/Indianapolis

  • America/Inuvik

  • America/Iqaluit

  • America/Jamaica

  • America/Jujuy

  • America/Juneau

  • America/Kentucky/Louisville

  • America/Kentucky/Monticello

  • America/Knox_IN

  • America/Kralendijk

  • America/La_Paz

  • America/Lima

  • America/Los_Angeles

  • America/Louisville

  • America/Lower_Princes

  • America/Maceio

  • America/Managua

  • America/Manaus

  • America/Marigot

  • America/Martinique

  • America/Matamoros

  • America/Mazatlan

  • America/Mendoza

  • America/Menominee

  • America/Merida

  • America/Metlakatla

  • America/Mexico_City

  • America/Miquelon

  • America/Moncton

  • America/Monterrey

  • America/Montevideo

  • America/Montreal

  • America/Montserrat

  • America/Nassau

  • America/New_York

  • America/Nipigon

  • America/Nome

  • America/Noronha

America (続き):

  • America/North_Dakota/Beulah

  • America/North_Dakota/Center

  • America/North_Dakota/New_Salem

  • America/Ojinaga

  • America/Panama

  • America/Pangnirtung

  • America/Paramaribo

  • America/Phoenix

  • America/Port-au-Prince

  • America/Port_of_Spain

  • America/Porto_Acre

  • America/Porto_Velho

  • America/Puerto_Rico

  • America/Punta_Arenas

  • America/Rainy_River

  • America/Rankin_Inlet

  • America/Recife

  • America/Regina

  • America/Resolute

  • America/Rio_Branco

  • America/Rosario

  • America/Santa_Isabel

  • America/Santarem

  • America/Santiago

  • America/Santo_Domingo

  • America/Sao_Paulo

  • America/Scoresbysund

  • America/Shiprock

  • America/Sitka

  • America/St_Barthelemy

  • America/St_Johns

  • America/St_Kitts

  • America/St_Lucia

  • America/St_Thomas

  • America/St_Vincent

  • America/Swift_Current

  • America/Tegucigalpa

  • America/Thule

  • America/Thunder_Bay

  • America/Tijuana

  • America/Toronto

  • America/Tortola

  • America/Vancouver

  • America/Virgin

  • America/Whitehorse

  • America/Winnipeg

  • America/Yakutat

  • America/Yellowknife

Antarctica:

  • Antarctica/Casey

  • Antarctica/Davis

  • Antarctica/DumontDUrville

  • Antarctica/Macquarie

  • Antarctica/Mawson

  • Antarctica/McMurdo

  • Antarctica/Palmer

  • Antarctica/Rothera

  • Antarctica/South_Pole

  • Antarctica/Syowa

  • Antarctica/Troll

  • Antarctica/Vostok

  • Arctic/Longyearbyen

Asia:

  • Asia/Aden

  • Asia/Almaty

  • Asia/Amman

  • Asia/Anadyr

  • Asia/Aqtau

  • Asia/Aqtobe

  • Asia/Ashgabat

  • Asia/Ashkhabad

  • Asia/Atyrau

  • Asia/Baghdad

  • Asia/Bahrain

  • Asia/Baku

  • Asia/Bangkok

  • Asia/Barnaul

  • Asia/Beirut

  • Asia/Bishkek

  • Asia/Brunei

  • Asia/Calcutta

  • Asia/Chita

  • Asia/Choibalsan

  • Asia/Chongqing

  • Asia/Chungking

  • Asia/Colombo

Asia (続き):

  • Asia/Dacca

  • Asia/Damascus

  • Asia/Dhaka

  • Asia/Dili

  • Asia/Dubai

  • Asia/Dushanbe

  • Asia/Famagusta

  • Asia/Gaza

  • Asia/Harbin

  • Asia/Hebron

  • Asia/Ho_Chi_Minh

  • Asia/Hong_Kong

  • Asia/Hovd

  • Asia/Irkutsk

  • Asia/Istanbul

  • Asia/Jakarta

  • Asia/Jayapura

  • Asia/Jerusalem

  • Asia/Kabul

  • Asia/Kamchatka

  • Asia/Karachi

  • Asia/Kashgar

  • Asia/Kathmandu

  • Asia/Katmandu

  • Asia/Khandyga

  • Asia/Kolkata

  • Asia/Krasnoyarsk

  • Asia/Kuala_Lumpur

  • Asia/Kuching

  • Asia/Kuwait

  • Asia/Macao

  • Asia/Macau

  • Asia/Magadan

  • Asia/Makassar

  • Asia/Manila

  • Asia/Muscat

  • Asia/Nicosia

  • Asia/Novokuznetsk

  • Asia/Novosibirsk

  • Asia/Omsk

  • Asia/Oral

  • Asia/Phnom_Penh

  • Asia/Pontianak

  • Asia/Pyongyang

  • Asia/Qatar

  • Asia/Qostanay

  • Asia/Qyzylorda

  • Asia/Rangoon

  • Asia/Riyadh

  • Asia/Saigon

  • Asia/Sakhalin

  • Asia/Samarkand

  • Asia/Seoul

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Srednekolymsk

  • Asia/Taipei

  • Asia/Tashkent

  • Asia/Tbilisi

  • Asia/Tehran

  • Asia/Tel_Aviv

  • Asia/Thimbu

  • Asia/Thimphu

  • Asia/Tokyo

  • Asia/Tomsk

  • Asia/Ujung_Pandang

  • Asia/Ulaanbaatar

  • Asia/Ulan_Bator

  • Asia/Urumqi

  • Asia/Ust-Nera

  • Asia/Vientiane

  • Asia/Vladivostok

  • Asia/Yakutsk

  • Asia/Yangon

  • Asia/Yekaterinburg

  • Asia/Yerevan

Atlantic:

  • Atlantic/Azores

  • Atlantic/Bermuda

  • Atlantic/Canary

  • Atlantic/Cape_Verde

  • Atlantic/Faeroe

  • Atlantic/Faroe

  • Atlantic/Jan_Mayen

  • Atlantic/Madeira

  • Atlantic/Reykjavik

  • Atlantic/South_Georgia

  • Atlantic/St_Helena

  • Atlantic/Stanley

Australia:

  • Australia/ACT

  • Australia/Adelaide

  • Australia/Brisbane

  • Australia/Broken_Hill

  • Australia/Canberra

  • Australia/Currie

  • Australia/Darwin

  • Australia/Eucla

  • Australia/Hobart

  • Australia/LHI

  • Australia/Lindeman

  • Australia/Lord_Howe

  • Australia/Melbourne

  • Australia/NSW

  • Australia/North

  • Australia/Perth

  • Australia/Queensland

  • Australia/South

  • Australia/Sydney

  • Australia/Tasmania

  • Australia/Victoria

  • Australia/West

  • Australia/Yancowinna

B:

  • Brazil/Acre

  • Brazil/DeNoronha

  • Brazil/East

  • Brazil/West

C:

  • CET

  • CST6CDT

  • Canada/Atlantic

  • Canada/Central

  • Canada/Eastern

  • Canada/Mountain

  • Canada/Newfoundland

  • Canada/Pacific

  • Canada/Saskatchewan

  • Canada/Yukon

  • Chile/Continental

  • Chile/EasterIsland

  • Cuba

E:

  • EET

  • EST5EDT

  • Egypt

  • Eire

  • Etc/GMT

  • Etc/GMT+0

  • Etc/GMT+1

  • Etc/GMT+10

  • Etc/GMT+11

  • Etc/GMT+12

  • Etc/GMT+2

  • Etc/GMT+3

  • Etc/GMT+4

  • Etc/GMT+5

  • Etc/GMT+6

  • Etc/GMT+7

  • Etc/GMT+8

  • Etc/GMT+9

  • Etc/GMT-0

  • Etc/GMT-1

  • Etc/GMT-10

  • Etc/GMT-11

  • Etc/GMT-12

  • Etc/GMT-13

  • Etc/GMT-14

  • Etc/GMT-2

  • Etc/GMT-3

  • Etc/GMT-4

  • Etc/GMT-5

  • Etc/GMT-6

  • Etc/GMT-7

  • Etc/GMT-8

  • Etc/GMT-9

  • Etc/GMT0

  • Etc/Greenwich

  • Etc/UCT

  • Etc/UTC

  • Etc/Universal

  • Etc/Zulu

E (続き):

  • Europe/Amsterdam

  • Europe/Andorra

  • Europe/Astrakhan

  • Europe/Athens

  • Europe/Belfast

  • Europe/Belgrade

  • Europe/Berlin

  • Europe/Bratislava

  • Europe/Brussels

  • Europe/Bucharest

  • Europe/Budapest

  • Europe/Busingen

  • Europe/Chisinau

  • Europe/Copenhagen

  • Europe/Dublin

  • Europe/Gibraltar

  • Europe/Guernsey

  • Europe/Helsinki

  • Europe/Isle_of_Man

  • Europe/Istanbul

  • Europe/Jersey

  • Europe/Kaliningrad

  • Europe/Kiev

  • Europe/Kirov

  • Europe/Lisbon

  • Europe/Ljubljana

  • Europe/London

  • Europe/Luxembourg

  • Europe/Madrid

  • Europe/Malta

  • Europe/Mariehamn

  • Europe/Minsk

  • Europe/Monaco

  • Europe/Moscow

  • Europe/Nicosia

  • Europe/Oslo

  • Europe/Paris

  • Europe/Podgorica

  • Europe/Prague

  • Europe/Riga

  • Europe/Rome

  • Europe/Samara

  • Europe/San_Marino

  • Europe/Sarajevo

  • Europe/Saratov

  • Europe/Skopje

  • Europe/Sofia

  • Europe/Stockholm

  • Europe/Tallinn

  • Europe/Tirane

  • Europe/Tiraspol

  • Europe/Ulyanovsk

  • Europe/Uzhgorod

  • Europe/Vaduz

  • Europe/Vatican

  • Europe/Vienna

  • Europe/Vilnius

  • Europe/Volgograd

  • Europe/Warsaw

  • Europe/Zagreb

  • Europe/Zaporozhye

  • Europe/Zurich

G:

  • GB

  • GB-Eire

  • GMT

  • GMT0

  • Greenwich

H:

  • Hongkong

I:

  • Iceland

  • Indian/Antananarivo

  • Indian/Chagos

  • Indian/Christmas

  • Indian/Cocos

  • Indian/Comoro

  • Indian/Kerguelen

  • Indian/Mahe

  • Indian/Maldives

  • Indian/Mauritius

  • Indian/Mayotte

  • Indian/Reunion

  • Iran

  • Israel

J:

  • Jamaica

  • Japan

K:

  • Kwajalein

L:

  • Libya

M:

  • MET

  • MST7MDT

  • Mexico/BajaNorte

  • Mexico/BajaSur

  • Mexico/General

N:

  • NZ

  • NZ-CHAT

  • Navajo

P:

  • PRC

  • PST8PDT

  • Pacific/Apia

  • Pacific/Auckland

  • Pacific/Bougainville

  • Pacific/Chatham

  • Pacific/Chuuk

  • Pacific/Easter

  • Pacific/Efate

  • Pacific/Enderbury

  • Pacific/Fakaofo

  • Pacific/Fiji

  • Pacific/Funafuti

  • Pacific/Galapagos

  • Pacific/Gambier

  • Pacific/Guadalcanal

  • Pacific/Guam

  • Pacific/Honolulu

  • Pacific/Johnston

  • Pacific/Kiritimati

  • Pacific/Kosrae

  • Pacific/Kwajalein

  • Pacific/Majuro

  • Pacific/Marquesas

  • Pacific/Midway

  • Pacific/Nauru

  • Pacific/Niue

  • Pacific/Norfolk

  • Pacific/Noumea

  • Pacific/Pago_Pago

  • Pacific/Palau

  • Pacific/Pitcairn

  • Pacific/Pohnpei

  • Pacific/Ponape

  • Pacific/Port_Moresby

  • Pacific/Rarotonga

  • Pacific/Saipan

  • Pacific/Samoa

  • Pacific/Tahiti

  • Pacific/Tarawa

  • Pacific/Tongatapu

  • Pacific/Truk

  • Pacific/Wake

  • Pacific/Wallis

  • Pacific/Yap

  • Poland

  • Portugal

R:

  • ROK

S:

  • Singapore

  • SystemV/AST4

  • SystemV/AST4ADT

  • SystemV/CST6

  • SystemV/CST6CDT

  • SystemV/EST5

  • SystemV/EST5EDT

  • SystemV/HST10

  • SystemV/MST7

  • SystemV/MST7MDT

  • SystemV/PST8

  • SystemV/PST8PDT

  • SystemV/YST9

  • SystemV/YST9YDT

T:

  • Turkey

U:

  • UCT

  • US/Alaska

  • US/Aleutian

  • US/Arizona

  • US/Central

  • US/East-Indiana

  • US/Eastern

  • US/Hawaii

  • US/Indiana-Starke

  • US/Michigan

  • US/Mountain

  • US/Pacific

  • US/Pacific-New

  • US/Samoa

  • UTC

  • Universal

W:

  • W-SU

  • WET

Z:

  • Zulu

## [](#関連する例)関連する例 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-format-dates) - [DataWeave を使用した日付の解析](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-parse-dates) - [時間の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-add-and-subtract-time) ## [](#関連情報)関連情報 - [日時 (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types#dw_type_dates) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # タイムゾーンの変更 次の例では、​`>>`​ 演算子と​[タイムゾーン ID](#timezone-ids)​ を使用してタイムゾーンを変更します。また、書式設定文字 ​`uuuu-MM-dd'T'HH:mm:ss.SSS`​ を使用して形式を変更します。​`uuuu`​ 文字は年を表します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun format(d: DateTime) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"} --- { CreatedDateTime: format(|2019-02-13T13:23:00.120Z| >> "CET"), } ``` 出力 JSON: ```JSON { "CreatedDateTime": "2019-02-13T14:23:00.120" } ``` ## [](#timezone-ids)タイムゾーン ID DataWeave は、​`-07:00`​ などのタイムゾーン値に加えて、Java 8 の ​`TimeZone`​ ID 値を受け入れます。この値は、​`ZoneId.getAvailableZoneIds()`​ への Java メソッドコールを介して使用できます。 次の表で使用可能なすべての値を表示するには、右にスクロールします。

Africa:

  • Africa/Abidjan

  • Africa/Accra

  • Africa/Addis_Ababa

  • Africa/Algiers

  • Africa/Asmara

  • Africa/Asmera

  • Africa/Bamako

  • Africa/Bangui

  • Africa/Banjul

  • Africa/Bissau

  • Africa/Blantyre

  • Africa/Brazzaville

  • Africa/Bujumbura

  • Africa/Cairo

  • Africa/Casablanca

  • Africa/Ceuta

  • Africa/Conakry

  • Africa/Dakar

  • Africa/Dar_es_Salaam

  • Africa/Djibouti

  • Africa/Douala

  • Africa/El_Aaiun

  • Africa/Freetown

  • Africa/Gaborone

  • Africa/Harare

  • Africa/Johannesburg

  • Africa/Juba

  • Africa/Kampala

  • Africa/Khartoum

  • Africa/Kigali

  • Africa/Kinshasa

  • Africa/Lagos

  • Africa/Libreville

  • Africa/Lome

  • Africa/Luanda

  • Africa/Lubumbashi

  • Africa/Lusaka

  • Africa/Malabo

  • Africa/Maputo

  • Africa/Maseru

  • Africa/Mbabane

  • Africa/Mogadishu

  • Africa/Monrovia

  • Africa/Nairobi

  • Africa/Ndjamena

  • Africa/Niamey

  • Africa/Nouakchott

  • Africa/Ouagadougou

  • Africa/Porto-Novo

  • Africa/Sao_Tome

  • Africa/Timbuktu

  • Africa/Tripoli

  • Africa/Tunis

  • Africa/Windhoek

America:

  • America/Adak

  • America/Anchorage

  • America/Anguilla

  • America/Antigua

  • America/Araguaina

  • America/Argentina/Buenos_Aires

  • America/Argentina/Catamarca

  • America/Argentina/ComodRivadavia

  • America/Argentina/Cordoba

  • America/Argentina/Jujuy

  • America/Argentina/La_Rioja

  • America/Argentina/Mendoza

  • America/Argentina/Rio_Gallegos

  • America/Argentina/Salta

  • America/Argentina/San_Juan

  • America/Argentina/San_Luis

  • America/Argentina/Tucuman

  • America/Argentina/Ushuaia

  • America/Aruba

  • America/Asuncion

  • America/Atikokan

  • America/Atka

  • America/Bahia

  • America/Bahia_Banderas

  • America/Barbados

  • America/Belem

  • America/Belize

  • America/Blanc-Sablon

  • America/Boa_Vista

  • America/Bogota

  • America/Boise

  • America/Buenos_Aires

America (続き):

  • America/Cambridge_Bay

  • America/Campo_Grande

  • America/Cancun

  • America/Caracas

  • America/Catamarca

  • America/Cayenne

  • America/Cayman

  • America/Chicago

  • America/Chihuahua

  • America/Coral_Harbour

  • America/Cordoba

  • America/Costa_Rica

  • America/Creston

  • America/Cuiaba

  • America/Curacao

  • America/Danmarkshavn

  • America/Dawson

  • America/Dawson_Creek

  • America/Denver

  • America/Detroit

  • America/Dominica

  • America/Edmonton

  • America/Eirunepe

  • America/El_Salvador

  • America/Ensenada

  • America/Fort_Nelson

  • America/Fort_Wayne

  • America/Fortaleza

  • America/Glace_Bay

  • America/Godthab

  • America/Goose_Bay

  • America/Grand_Turk

  • America/Grenada

  • America/Guadeloupe

  • America/Guatemala

  • America/Guayaquil

  • America/Guyana

  • America/Halifax

  • America/Havana

  • America/Hermosillo

  • America/Indiana/Indianapolis

  • America/Indiana/Knox

  • America/Indiana/Marengo

  • America/Indiana/Petersburg

  • America/Indiana/Tell_City

  • America/Indiana/Vevay

  • America/Indiana/Vincennes

  • America/Indiana/Winamac

  • America/Indianapolis

  • America/Inuvik

  • America/Iqaluit

  • America/Jamaica

  • America/Jujuy

  • America/Juneau

  • America/Kentucky/Louisville

  • America/Kentucky/Monticello

  • America/Knox_IN

  • America/Kralendijk

  • America/La_Paz

  • America/Lima

  • America/Los_Angeles

  • America/Louisville

  • America/Lower_Princes

  • America/Maceio

  • America/Managua

  • America/Manaus

  • America/Marigot

  • America/Martinique

  • America/Matamoros

  • America/Mazatlan

  • America/Mendoza

  • America/Menominee

  • America/Merida

  • America/Metlakatla

  • America/Mexico_City

  • America/Miquelon

  • America/Moncton

  • America/Monterrey

  • America/Montevideo

  • America/Montreal

  • America/Montserrat

  • America/Nassau

  • America/New_York

  • America/Nipigon

  • America/Nome

  • America/Noronha

America (続き):

  • America/North_Dakota/Beulah

  • America/North_Dakota/Center

  • America/North_Dakota/New_Salem

  • America/Ojinaga

  • America/Panama

  • America/Pangnirtung

  • America/Paramaribo

  • America/Phoenix

  • America/Port-au-Prince

  • America/Port_of_Spain

  • America/Porto_Acre

  • America/Porto_Velho

  • America/Puerto_Rico

  • America/Punta_Arenas

  • America/Rainy_River

  • America/Rankin_Inlet

  • America/Recife

  • America/Regina

  • America/Resolute

  • America/Rio_Branco

  • America/Rosario

  • America/Santa_Isabel

  • America/Santarem

  • America/Santiago

  • America/Santo_Domingo

  • America/Sao_Paulo

  • America/Scoresbysund

  • America/Shiprock

  • America/Sitka

  • America/St_Barthelemy

  • America/St_Johns

  • America/St_Kitts

  • America/St_Lucia

  • America/St_Thomas

  • America/St_Vincent

  • America/Swift_Current

  • America/Tegucigalpa

  • America/Thule

  • America/Thunder_Bay

  • America/Tijuana

  • America/Toronto

  • America/Tortola

  • America/Vancouver

  • America/Virgin

  • America/Whitehorse

  • America/Winnipeg

  • America/Yakutat

  • America/Yellowknife

Antarctica:

  • Antarctica/Casey

  • Antarctica/Davis

  • Antarctica/DumontDUrville

  • Antarctica/Macquarie

  • Antarctica/Mawson

  • Antarctica/McMurdo

  • Antarctica/Palmer

  • Antarctica/Rothera

  • Antarctica/South_Pole

  • Antarctica/Syowa

  • Antarctica/Troll

  • Antarctica/Vostok

  • Arctic/Longyearbyen

Asia:

  • Asia/Aden

  • Asia/Almaty

  • Asia/Amman

  • Asia/Anadyr

  • Asia/Aqtau

  • Asia/Aqtobe

  • Asia/Ashgabat

  • Asia/Ashkhabad

  • Asia/Atyrau

  • Asia/Baghdad

  • Asia/Bahrain

  • Asia/Baku

  • Asia/Bangkok

  • Asia/Barnaul

  • Asia/Beirut

  • Asia/Bishkek

  • Asia/Brunei

  • Asia/Calcutta

  • Asia/Chita

  • Asia/Choibalsan

  • Asia/Chongqing

  • Asia/Chungking

  • Asia/Colombo

Asia (続き):

  • Asia/Dacca

  • Asia/Damascus

  • Asia/Dhaka

  • Asia/Dili

  • Asia/Dubai

  • Asia/Dushanbe

  • Asia/Famagusta

  • Asia/Gaza

  • Asia/Harbin

  • Asia/Hebron

  • Asia/Ho_Chi_Minh

  • Asia/Hong_Kong

  • Asia/Hovd

  • Asia/Irkutsk

  • Asia/Istanbul

  • Asia/Jakarta

  • Asia/Jayapura

  • Asia/Jerusalem

  • Asia/Kabul

  • Asia/Kamchatka

  • Asia/Karachi

  • Asia/Kashgar

  • Asia/Kathmandu

  • Asia/Katmandu

  • Asia/Khandyga

  • Asia/Kolkata

  • Asia/Krasnoyarsk

  • Asia/Kuala_Lumpur

  • Asia/Kuching

  • Asia/Kuwait

  • Asia/Macao

  • Asia/Macau

  • Asia/Magadan

  • Asia/Makassar

  • Asia/Manila

  • Asia/Muscat

  • Asia/Nicosia

  • Asia/Novokuznetsk

  • Asia/Novosibirsk

  • Asia/Omsk

  • Asia/Oral

  • Asia/Phnom_Penh

  • Asia/Pontianak

  • Asia/Pyongyang

  • Asia/Qatar

  • Asia/Qostanay

  • Asia/Qyzylorda

  • Asia/Rangoon

  • Asia/Riyadh

  • Asia/Saigon

  • Asia/Sakhalin

  • Asia/Samarkand

  • Asia/Seoul

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Srednekolymsk

  • Asia/Taipei

  • Asia/Tashkent

  • Asia/Tbilisi

  • Asia/Tehran

  • Asia/Tel_Aviv

  • Asia/Thimbu

  • Asia/Thimphu

  • Asia/Tokyo

  • Asia/Tomsk

  • Asia/Ujung_Pandang

  • Asia/Ulaanbaatar

  • Asia/Ulan_Bator

  • Asia/Urumqi

  • Asia/Ust-Nera

  • Asia/Vientiane

  • Asia/Vladivostok

  • Asia/Yakutsk

  • Asia/Yangon

  • Asia/Yekaterinburg

  • Asia/Yerevan

Atlantic:

  • Atlantic/Azores

  • Atlantic/Bermuda

  • Atlantic/Canary

  • Atlantic/Cape_Verde

  • Atlantic/Faeroe

  • Atlantic/Faroe

  • Atlantic/Jan_Mayen

  • Atlantic/Madeira

  • Atlantic/Reykjavik

  • Atlantic/South_Georgia

  • Atlantic/St_Helena

  • Atlantic/Stanley

Australia:

  • Australia/ACT

  • Australia/Adelaide

  • Australia/Brisbane

  • Australia/Broken_Hill

  • Australia/Canberra

  • Australia/Currie

  • Australia/Darwin

  • Australia/Eucla

  • Australia/Hobart

  • Australia/LHI

  • Australia/Lindeman

  • Australia/Lord_Howe

  • Australia/Melbourne

  • Australia/NSW

  • Australia/North

  • Australia/Perth

  • Australia/Queensland

  • Australia/South

  • Australia/Sydney

  • Australia/Tasmania

  • Australia/Victoria

  • Australia/West

  • Australia/Yancowinna

B:

  • Brazil/Acre

  • Brazil/DeNoronha

  • Brazil/East

  • Brazil/West

C:

  • CET

  • CST6CDT

  • Canada/Atlantic

  • Canada/Central

  • Canada/Eastern

  • Canada/Mountain

  • Canada/Newfoundland

  • Canada/Pacific

  • Canada/Saskatchewan

  • Canada/Yukon

  • Chile/Continental

  • Chile/EasterIsland

  • Cuba

E:

  • EET

  • EST5EDT

  • Egypt

  • Eire

  • Etc/GMT

  • Etc/GMT+0

  • Etc/GMT+1

  • Etc/GMT+10

  • Etc/GMT+11

  • Etc/GMT+12

  • Etc/GMT+2

  • Etc/GMT+3

  • Etc/GMT+4

  • Etc/GMT+5

  • Etc/GMT+6

  • Etc/GMT+7

  • Etc/GMT+8

  • Etc/GMT+9

  • Etc/GMT-0

  • Etc/GMT-1

  • Etc/GMT-10

  • Etc/GMT-11

  • Etc/GMT-12

  • Etc/GMT-13

  • Etc/GMT-14

  • Etc/GMT-2

  • Etc/GMT-3

  • Etc/GMT-4

  • Etc/GMT-5

  • Etc/GMT-6

  • Etc/GMT-7

  • Etc/GMT-8

  • Etc/GMT-9

  • Etc/GMT0

  • Etc/Greenwich

  • Etc/UCT

  • Etc/UTC

  • Etc/Universal

  • Etc/Zulu

E (続き):

  • Europe/Amsterdam

  • Europe/Andorra

  • Europe/Astrakhan

  • Europe/Athens

  • Europe/Belfast

  • Europe/Belgrade

  • Europe/Berlin

  • Europe/Bratislava

  • Europe/Brussels

  • Europe/Bucharest

  • Europe/Budapest

  • Europe/Busingen

  • Europe/Chisinau

  • Europe/Copenhagen

  • Europe/Dublin

  • Europe/Gibraltar

  • Europe/Guernsey

  • Europe/Helsinki

  • Europe/Isle_of_Man

  • Europe/Istanbul

  • Europe/Jersey

  • Europe/Kaliningrad

  • Europe/Kiev

  • Europe/Kirov

  • Europe/Lisbon

  • Europe/Ljubljana

  • Europe/London

  • Europe/Luxembourg

  • Europe/Madrid

  • Europe/Malta

  • Europe/Mariehamn

  • Europe/Minsk

  • Europe/Monaco

  • Europe/Moscow

  • Europe/Nicosia

  • Europe/Oslo

  • Europe/Paris

  • Europe/Podgorica

  • Europe/Prague

  • Europe/Riga

  • Europe/Rome

  • Europe/Samara

  • Europe/San_Marino

  • Europe/Sarajevo

  • Europe/Saratov

  • Europe/Skopje

  • Europe/Sofia

  • Europe/Stockholm

  • Europe/Tallinn

  • Europe/Tirane

  • Europe/Tiraspol

  • Europe/Ulyanovsk

  • Europe/Uzhgorod

  • Europe/Vaduz

  • Europe/Vatican

  • Europe/Vienna

  • Europe/Vilnius

  • Europe/Volgograd

  • Europe/Warsaw

  • Europe/Zagreb

  • Europe/Zaporozhye

  • Europe/Zurich

G:

  • GB

  • GB-Eire

  • GMT

  • GMT0

  • Greenwich

H:

  • Hongkong

I:

  • Iceland

  • Indian/Antananarivo

  • Indian/Chagos

  • Indian/Christmas

  • Indian/Cocos

  • Indian/Comoro

  • Indian/Kerguelen

  • Indian/Mahe

  • Indian/Maldives

  • Indian/Mauritius

  • Indian/Mayotte

  • Indian/Reunion

  • Iran

  • Israel

J:

  • Jamaica

  • Japan

K:

  • Kwajalein

L:

  • Libya

M:

  • MET

  • MST7MDT

  • Mexico/BajaNorte

  • Mexico/BajaSur

  • Mexico/General

N:

  • NZ

  • NZ-CHAT

  • Navajo

P:

  • PRC

  • PST8PDT

  • Pacific/Apia

  • Pacific/Auckland

  • Pacific/Bougainville

  • Pacific/Chatham

  • Pacific/Chuuk

  • Pacific/Easter

  • Pacific/Efate

  • Pacific/Enderbury

  • Pacific/Fakaofo

  • Pacific/Fiji

  • Pacific/Funafuti

  • Pacific/Galapagos

  • Pacific/Gambier

  • Pacific/Guadalcanal

  • Pacific/Guam

  • Pacific/Honolulu

  • Pacific/Johnston

  • Pacific/Kiritimati

  • Pacific/Kosrae

  • Pacific/Kwajalein

  • Pacific/Majuro

  • Pacific/Marquesas

  • Pacific/Midway

  • Pacific/Nauru

  • Pacific/Niue

  • Pacific/Norfolk

  • Pacific/Noumea

  • Pacific/Pago_Pago

  • Pacific/Palau

  • Pacific/Pitcairn

  • Pacific/Pohnpei

  • Pacific/Ponape

  • Pacific/Port_Moresby

  • Pacific/Rarotonga

  • Pacific/Saipan

  • Pacific/Samoa

  • Pacific/Tahiti

  • Pacific/Tarawa

  • Pacific/Tongatapu

  • Pacific/Truk

  • Pacific/Wake

  • Pacific/Wallis

  • Pacific/Yap

  • Poland

  • Portugal

R:

  • ROK

S:

  • Singapore

  • SystemV/AST4

  • SystemV/AST4ADT

  • SystemV/CST6

  • SystemV/CST6CDT

  • SystemV/EST5

  • SystemV/EST5EDT

  • SystemV/HST10

  • SystemV/MST7

  • SystemV/MST7MDT

  • SystemV/PST8

  • SystemV/PST8PDT

  • SystemV/YST9

  • SystemV/YST9YDT

T:

  • Turkey

U:

  • UCT

  • US/Alaska

  • US/Aleutian

  • US/Arizona

  • US/Central

  • US/East-Indiana

  • US/Eastern

  • US/Hawaii

  • US/Indiana-Starke

  • US/Michigan

  • US/Mountain

  • US/Pacific

  • US/Pacific-New

  • US/Samoa

  • UTC

  • Universal

W:

  • W-SU

  • WET

Z:

  • Zulu

## [](#関連する例)関連する例 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-format-dates) - [DataWeave を使用した日付の解析](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-parse-dates) - [時間の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-add-and-subtract-time) ## [](#関連情報)関連情報 - [日時 (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types#dw_type_dates) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # タイムゾーンの変更 次の例では、​`>>`​ 演算子と​[タイムゾーン ID](#timezone-ids)​ を使用してタイムゾーンを変更します。また、書式設定文字 ​`uuuu-MM-dd'T'HH:mm:ss.SSS`​ を使用して形式を変更します。​`uuuu`​ 文字は年を表します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun format(d: DateTime) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"} --- { CreatedDateTime: format(|2019-02-13T13:23:00.120Z| >> "CET"), } ``` 出力 JSON: ```JSON { "CreatedDateTime": "2019-02-13T14:23:00.120" } ``` ## [](#timezone-ids)タイムゾーン ID DataWeave は、​`-07:00`​ などのタイムゾーン値に加えて、Java 8 の ​`TimeZone`​ ID 値を受け入れます。この値は、​`ZoneId.getAvailableZoneIds()`​ への Java メソッドコールを介して使用できます。 次の表で使用可能なすべての値を表示するには、右にスクロールします。

Africa:

  • Africa/Abidjan

  • Africa/Accra

  • Africa/Addis_Ababa

  • Africa/Algiers

  • Africa/Asmara

  • Africa/Asmera

  • Africa/Bamako

  • Africa/Bangui

  • Africa/Banjul

  • Africa/Bissau

  • Africa/Blantyre

  • Africa/Brazzaville

  • Africa/Bujumbura

  • Africa/Cairo

  • Africa/Casablanca

  • Africa/Ceuta

  • Africa/Conakry

  • Africa/Dakar

  • Africa/Dar_es_Salaam

  • Africa/Djibouti

  • Africa/Douala

  • Africa/El_Aaiun

  • Africa/Freetown

  • Africa/Gaborone

  • Africa/Harare

  • Africa/Johannesburg

  • Africa/Juba

  • Africa/Kampala

  • Africa/Khartoum

  • Africa/Kigali

  • Africa/Kinshasa

  • Africa/Lagos

  • Africa/Libreville

  • Africa/Lome

  • Africa/Luanda

  • Africa/Lubumbashi

  • Africa/Lusaka

  • Africa/Malabo

  • Africa/Maputo

  • Africa/Maseru

  • Africa/Mbabane

  • Africa/Mogadishu

  • Africa/Monrovia

  • Africa/Nairobi

  • Africa/Ndjamena

  • Africa/Niamey

  • Africa/Nouakchott

  • Africa/Ouagadougou

  • Africa/Porto-Novo

  • Africa/Sao_Tome

  • Africa/Timbuktu

  • Africa/Tripoli

  • Africa/Tunis

  • Africa/Windhoek

America:

  • America/Adak

  • America/Anchorage

  • America/Anguilla

  • America/Antigua

  • America/Araguaina

  • America/Argentina/Buenos_Aires

  • America/Argentina/Catamarca

  • America/Argentina/ComodRivadavia

  • America/Argentina/Cordoba

  • America/Argentina/Jujuy

  • America/Argentina/La_Rioja

  • America/Argentina/Mendoza

  • America/Argentina/Rio_Gallegos

  • America/Argentina/Salta

  • America/Argentina/San_Juan

  • America/Argentina/San_Luis

  • America/Argentina/Tucuman

  • America/Argentina/Ushuaia

  • America/Aruba

  • America/Asuncion

  • America/Atikokan

  • America/Atka

  • America/Bahia

  • America/Bahia_Banderas

  • America/Barbados

  • America/Belem

  • America/Belize

  • America/Blanc-Sablon

  • America/Boa_Vista

  • America/Bogota

  • America/Boise

  • America/Buenos_Aires

America (続き):

  • America/Cambridge_Bay

  • America/Campo_Grande

  • America/Cancun

  • America/Caracas

  • America/Catamarca

  • America/Cayenne

  • America/Cayman

  • America/Chicago

  • America/Chihuahua

  • America/Coral_Harbour

  • America/Cordoba

  • America/Costa_Rica

  • America/Creston

  • America/Cuiaba

  • America/Curacao

  • America/Danmarkshavn

  • America/Dawson

  • America/Dawson_Creek

  • America/Denver

  • America/Detroit

  • America/Dominica

  • America/Edmonton

  • America/Eirunepe

  • America/El_Salvador

  • America/Ensenada

  • America/Fort_Nelson

  • America/Fort_Wayne

  • America/Fortaleza

  • America/Glace_Bay

  • America/Godthab

  • America/Goose_Bay

  • America/Grand_Turk

  • America/Grenada

  • America/Guadeloupe

  • America/Guatemala

  • America/Guayaquil

  • America/Guyana

  • America/Halifax

  • America/Havana

  • America/Hermosillo

  • America/Indiana/Indianapolis

  • America/Indiana/Knox

  • America/Indiana/Marengo

  • America/Indiana/Petersburg

  • America/Indiana/Tell_City

  • America/Indiana/Vevay

  • America/Indiana/Vincennes

  • America/Indiana/Winamac

  • America/Indianapolis

  • America/Inuvik

  • America/Iqaluit

  • America/Jamaica

  • America/Jujuy

  • America/Juneau

  • America/Kentucky/Louisville

  • America/Kentucky/Monticello

  • America/Knox_IN

  • America/Kralendijk

  • America/La_Paz

  • America/Lima

  • America/Los_Angeles

  • America/Louisville

  • America/Lower_Princes

  • America/Maceio

  • America/Managua

  • America/Manaus

  • America/Marigot

  • America/Martinique

  • America/Matamoros

  • America/Mazatlan

  • America/Mendoza

  • America/Menominee

  • America/Merida

  • America/Metlakatla

  • America/Mexico_City

  • America/Miquelon

  • America/Moncton

  • America/Monterrey

  • America/Montevideo

  • America/Montreal

  • America/Montserrat

  • America/Nassau

  • America/New_York

  • America/Nipigon

  • America/Nome

  • America/Noronha

America (続き):

  • America/North_Dakota/Beulah

  • America/North_Dakota/Center

  • America/North_Dakota/New_Salem

  • America/Ojinaga

  • America/Panama

  • America/Pangnirtung

  • America/Paramaribo

  • America/Phoenix

  • America/Port-au-Prince

  • America/Port_of_Spain

  • America/Porto_Acre

  • America/Porto_Velho

  • America/Puerto_Rico

  • America/Punta_Arenas

  • America/Rainy_River

  • America/Rankin_Inlet

  • America/Recife

  • America/Regina

  • America/Resolute

  • America/Rio_Branco

  • America/Rosario

  • America/Santa_Isabel

  • America/Santarem

  • America/Santiago

  • America/Santo_Domingo

  • America/Sao_Paulo

  • America/Scoresbysund

  • America/Shiprock

  • America/Sitka

  • America/St_Barthelemy

  • America/St_Johns

  • America/St_Kitts

  • America/St_Lucia

  • America/St_Thomas

  • America/St_Vincent

  • America/Swift_Current

  • America/Tegucigalpa

  • America/Thule

  • America/Thunder_Bay

  • America/Tijuana

  • America/Toronto

  • America/Tortola

  • America/Vancouver

  • America/Virgin

  • America/Whitehorse

  • America/Winnipeg

  • America/Yakutat

  • America/Yellowknife

Antarctica:

  • Antarctica/Casey

  • Antarctica/Davis

  • Antarctica/DumontDUrville

  • Antarctica/Macquarie

  • Antarctica/Mawson

  • Antarctica/McMurdo

  • Antarctica/Palmer

  • Antarctica/Rothera

  • Antarctica/South_Pole

  • Antarctica/Syowa

  • Antarctica/Troll

  • Antarctica/Vostok

  • Arctic/Longyearbyen

Asia:

  • Asia/Aden

  • Asia/Almaty

  • Asia/Amman

  • Asia/Anadyr

  • Asia/Aqtau

  • Asia/Aqtobe

  • Asia/Ashgabat

  • Asia/Ashkhabad

  • Asia/Atyrau

  • Asia/Baghdad

  • Asia/Bahrain

  • Asia/Baku

  • Asia/Bangkok

  • Asia/Barnaul

  • Asia/Beirut

  • Asia/Bishkek

  • Asia/Brunei

  • Asia/Calcutta

  • Asia/Chita

  • Asia/Choibalsan

  • Asia/Chongqing

  • Asia/Chungking

  • Asia/Colombo

Asia (続き):

  • Asia/Dacca

  • Asia/Damascus

  • Asia/Dhaka

  • Asia/Dili

  • Asia/Dubai

  • Asia/Dushanbe

  • Asia/Famagusta

  • Asia/Gaza

  • Asia/Harbin

  • Asia/Hebron

  • Asia/Ho_Chi_Minh

  • Asia/Hong_Kong

  • Asia/Hovd

  • Asia/Irkutsk

  • Asia/Istanbul

  • Asia/Jakarta

  • Asia/Jayapura

  • Asia/Jerusalem

  • Asia/Kabul

  • Asia/Kamchatka

  • Asia/Karachi

  • Asia/Kashgar

  • Asia/Kathmandu

  • Asia/Katmandu

  • Asia/Khandyga

  • Asia/Kolkata

  • Asia/Krasnoyarsk

  • Asia/Kuala_Lumpur

  • Asia/Kuching

  • Asia/Kuwait

  • Asia/Macao

  • Asia/Macau

  • Asia/Magadan

  • Asia/Makassar

  • Asia/Manila

  • Asia/Muscat

  • Asia/Nicosia

  • Asia/Novokuznetsk

  • Asia/Novosibirsk

  • Asia/Omsk

  • Asia/Oral

  • Asia/Phnom_Penh

  • Asia/Pontianak

  • Asia/Pyongyang

  • Asia/Qatar

  • Asia/Qostanay

  • Asia/Qyzylorda

  • Asia/Rangoon

  • Asia/Riyadh

  • Asia/Saigon

  • Asia/Sakhalin

  • Asia/Samarkand

  • Asia/Seoul

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Srednekolymsk

  • Asia/Taipei

  • Asia/Tashkent

  • Asia/Tbilisi

  • Asia/Tehran

  • Asia/Tel_Aviv

  • Asia/Thimbu

  • Asia/Thimphu

  • Asia/Tokyo

  • Asia/Tomsk

  • Asia/Ujung_Pandang

  • Asia/Ulaanbaatar

  • Asia/Ulan_Bator

  • Asia/Urumqi

  • Asia/Ust-Nera

  • Asia/Vientiane

  • Asia/Vladivostok

  • Asia/Yakutsk

  • Asia/Yangon

  • Asia/Yekaterinburg

  • Asia/Yerevan

Atlantic:

  • Atlantic/Azores

  • Atlantic/Bermuda

  • Atlantic/Canary

  • Atlantic/Cape_Verde

  • Atlantic/Faeroe

  • Atlantic/Faroe

  • Atlantic/Jan_Mayen

  • Atlantic/Madeira

  • Atlantic/Reykjavik

  • Atlantic/South_Georgia

  • Atlantic/St_Helena

  • Atlantic/Stanley

Australia:

  • Australia/ACT

  • Australia/Adelaide

  • Australia/Brisbane

  • Australia/Broken_Hill

  • Australia/Canberra

  • Australia/Currie

  • Australia/Darwin

  • Australia/Eucla

  • Australia/Hobart

  • Australia/LHI

  • Australia/Lindeman

  • Australia/Lord_Howe

  • Australia/Melbourne

  • Australia/NSW

  • Australia/North

  • Australia/Perth

  • Australia/Queensland

  • Australia/South

  • Australia/Sydney

  • Australia/Tasmania

  • Australia/Victoria

  • Australia/West

  • Australia/Yancowinna

B:

  • Brazil/Acre

  • Brazil/DeNoronha

  • Brazil/East

  • Brazil/West

C:

  • CET

  • CST6CDT

  • Canada/Atlantic

  • Canada/Central

  • Canada/Eastern

  • Canada/Mountain

  • Canada/Newfoundland

  • Canada/Pacific

  • Canada/Saskatchewan

  • Canada/Yukon

  • Chile/Continental

  • Chile/EasterIsland

  • Cuba

E:

  • EET

  • EST5EDT

  • Egypt

  • Eire

  • Etc/GMT

  • Etc/GMT+0

  • Etc/GMT+1

  • Etc/GMT+10

  • Etc/GMT+11

  • Etc/GMT+12

  • Etc/GMT+2

  • Etc/GMT+3

  • Etc/GMT+4

  • Etc/GMT+5

  • Etc/GMT+6

  • Etc/GMT+7

  • Etc/GMT+8

  • Etc/GMT+9

  • Etc/GMT-0

  • Etc/GMT-1

  • Etc/GMT-10

  • Etc/GMT-11

  • Etc/GMT-12

  • Etc/GMT-13

  • Etc/GMT-14

  • Etc/GMT-2

  • Etc/GMT-3

  • Etc/GMT-4

  • Etc/GMT-5

  • Etc/GMT-6

  • Etc/GMT-7

  • Etc/GMT-8

  • Etc/GMT-9

  • Etc/GMT0

  • Etc/Greenwich

  • Etc/UCT

  • Etc/UTC

  • Etc/Universal

  • Etc/Zulu

E (続き):

  • Europe/Amsterdam

  • Europe/Andorra

  • Europe/Astrakhan

  • Europe/Athens

  • Europe/Belfast

  • Europe/Belgrade

  • Europe/Berlin

  • Europe/Bratislava

  • Europe/Brussels

  • Europe/Bucharest

  • Europe/Budapest

  • Europe/Busingen

  • Europe/Chisinau

  • Europe/Copenhagen

  • Europe/Dublin

  • Europe/Gibraltar

  • Europe/Guernsey

  • Europe/Helsinki

  • Europe/Isle_of_Man

  • Europe/Istanbul

  • Europe/Jersey

  • Europe/Kaliningrad

  • Europe/Kiev

  • Europe/Kirov

  • Europe/Lisbon

  • Europe/Ljubljana

  • Europe/London

  • Europe/Luxembourg

  • Europe/Madrid

  • Europe/Malta

  • Europe/Mariehamn

  • Europe/Minsk

  • Europe/Monaco

  • Europe/Moscow

  • Europe/Nicosia

  • Europe/Oslo

  • Europe/Paris

  • Europe/Podgorica

  • Europe/Prague

  • Europe/Riga

  • Europe/Rome

  • Europe/Samara

  • Europe/San_Marino

  • Europe/Sarajevo

  • Europe/Saratov

  • Europe/Skopje

  • Europe/Sofia

  • Europe/Stockholm

  • Europe/Tallinn

  • Europe/Tirane

  • Europe/Tiraspol

  • Europe/Ulyanovsk

  • Europe/Uzhgorod

  • Europe/Vaduz

  • Europe/Vatican

  • Europe/Vienna

  • Europe/Vilnius

  • Europe/Volgograd

  • Europe/Warsaw

  • Europe/Zagreb

  • Europe/Zaporozhye

  • Europe/Zurich

G:

  • GB

  • GB-Eire

  • GMT

  • GMT0

  • Greenwich

H:

  • Hongkong

I:

  • Iceland

  • Indian/Antananarivo

  • Indian/Chagos

  • Indian/Christmas

  • Indian/Cocos

  • Indian/Comoro

  • Indian/Kerguelen

  • Indian/Mahe

  • Indian/Maldives

  • Indian/Mauritius

  • Indian/Mayotte

  • Indian/Reunion

  • Iran

  • Israel

J:

  • Jamaica

  • Japan

K:

  • Kwajalein

L:

  • Libya

M:

  • MET

  • MST7MDT

  • Mexico/BajaNorte

  • Mexico/BajaSur

  • Mexico/General

N:

  • NZ

  • NZ-CHAT

  • Navajo

P:

  • PRC

  • PST8PDT

  • Pacific/Apia

  • Pacific/Auckland

  • Pacific/Bougainville

  • Pacific/Chatham

  • Pacific/Chuuk

  • Pacific/Easter

  • Pacific/Efate

  • Pacific/Enderbury

  • Pacific/Fakaofo

  • Pacific/Fiji

  • Pacific/Funafuti

  • Pacific/Galapagos

  • Pacific/Gambier

  • Pacific/Guadalcanal

  • Pacific/Guam

  • Pacific/Honolulu

  • Pacific/Johnston

  • Pacific/Kiritimati

  • Pacific/Kosrae

  • Pacific/Kwajalein

  • Pacific/Majuro

  • Pacific/Marquesas

  • Pacific/Midway

  • Pacific/Nauru

  • Pacific/Niue

  • Pacific/Norfolk

  • Pacific/Noumea

  • Pacific/Pago_Pago

  • Pacific/Palau

  • Pacific/Pitcairn

  • Pacific/Pohnpei

  • Pacific/Ponape

  • Pacific/Port_Moresby

  • Pacific/Rarotonga

  • Pacific/Saipan

  • Pacific/Samoa

  • Pacific/Tahiti

  • Pacific/Tarawa

  • Pacific/Tongatapu

  • Pacific/Truk

  • Pacific/Wake

  • Pacific/Wallis

  • Pacific/Yap

  • Poland

  • Portugal

R:

  • ROK

S:

  • Singapore

  • SystemV/AST4

  • SystemV/AST4ADT

  • SystemV/CST6

  • SystemV/CST6CDT

  • SystemV/EST5

  • SystemV/EST5EDT

  • SystemV/HST10

  • SystemV/MST7

  • SystemV/MST7MDT

  • SystemV/PST8

  • SystemV/PST8PDT

  • SystemV/YST9

  • SystemV/YST9YDT

T:

  • Turkey

U:

  • UCT

  • US/Alaska

  • US/Aleutian

  • US/Arizona

  • US/Central

  • US/East-Indiana

  • US/Eastern

  • US/Hawaii

  • US/Indiana-Starke

  • US/Michigan

  • US/Mountain

  • US/Pacific

  • US/Pacific-New

  • US/Samoa

  • UTC

  • Universal

W:

  • W-SU

  • WET

Z:

  • Zulu

## [](#関連する例)関連する例 - [日付と時刻の書式設定](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-format-dates) - [DataWeave を使用した日付の解析](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-parse-dates) - [時間の加算と減算](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-add-and-subtract-time) ## [](#関連情報)関連情報 - [日時 (dw::Core 型)](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types#dw_type_dates) - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # データの抽出 DataWeave は、データを DataWeave オブジェクトや配列、そのデータを保存する変数、および DataWeave 関数の出力 (その出力が配列またはオブジェクトの場合) から選択できます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 より正確に言えば、DataWeave セレクターは、データを保存する変数、オブジェクトリテラル、配列リテラル、DataWeave 関数の呼び出しへの参照になるコンテキスト内で動作します。DataWeave 式を使用できる Mule モジュール、コネクタ、コンポーネントのセレクターを使用できます。 DataWeave は、セレクターを処理するときに後続のセレクターの新しいコンテキスト (スコープ) を設定するため、セレクターのチェーンを使用して配列やオブジェクトの複雑な構造を移動できます。選択の深さは、現在のコンテキストの深さに制限されます。 サポートされている変数参照は、​`payload`​ や ​`attributes`​ などの ​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables-context)​と、配列またはオブジェクトを保存する ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables)​です。簡単な例として ​`payload.myKey`​ が挙げられます。payload はオブジェクト ​`{"myKey" : 1234 }`​ であるため、結果は ​`1234`​ になります。 セレクターは、DataWeave ​`read`​ などの関数の呼び出しで動作します。たとえば、​`read('{"A":"B"}','application/json')."A"`​ は ​`"B"`​ を返します。 ## [](#dataweave-配列やオブジェクトでのセレクターの使用)DataWeave 配列やオブジェクトでのセレクターの使用 DataWeave のセレクターは、DataWeave オブジェクト (​`{ myKey : "myValue" }`​ など) または配列 (​`[1,2,3,4]`​ や ​`[ { "myKey" : "1234" }, { "name" : "somebody" } ]`​ など) 内から値を抽出します。 次の DataWeave スクリプトでは、単一値セレクター (​`.`​) を使用して、変数 ​`myObject`​ と ​`myArray`​ で定義されたオブジェクトと配列から値を取得します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { "myKey" : "1234", "name" : "somebody" } var myArray = [ { "myKey" : "1234" }, { "name" : "somebody" } ] output application/json --- { selectingValueUsingKeyInObject : myObject.name, selectingValueUsingKeyOfObjectInArray : myArray.name, } ``` 出力 JSON: ```json { "selectingValueUsingKeyInObject": "somebody", "selectingValueUsingKeyOfObjectInArray": [ "somebody" ] } ``` 出力は次のようになります。 - `myObject.name`​ は、値 ​`"somebody"`​ を返します。 - `myArray.name`​ は、配列 ​`[ "somebody" ]`​ を返します。 ## [](#セレクタークイックリファレンス)セレクタークイックリファレンス 単一値 (​`.`​) 配列やオブジェクトで動作し、一致するキーの値を返します。構文は ​`.myKey`​ です。DataWeave ​_オブジェクト_​の重複キーの値を取得するには、代わりに ​`*`​ を使用します。例については、「​[単一値セレクター (.myKey)](#single_value)​」を参照してください。 複数値 (​`*`​) 配列やオブジェクトで動作し、データ構造の階層の単一レベルで一致するすべてのキーの値を取得します。構文は ​`*myKey`​ です。階層の下位レベルのすべての重複キーの値を取得する場合は、代わりに子孫セレクター (​`..`​) を使用します。例については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 キー - 値ペア (​`&`​) 配列やオブジェクトで動作します。このセレクターは、DataWeave オブジェクトの値を返す代わりに DataWeave オブジェクト全体 (キーと値) を返します。 構文は ​`.&myKey`​ です。例については、「​[キー - 値ペアセレクター (​`.&myKey`​)](#key_value)​」を参照してください。 子孫 (​`..`​) 配列やオブジェクトで動作し、階層の場所に関係なく、特定のキーの下にある配列やオブジェクトから一致するすべてのキーを取得します。 構文は ​`..myKey`​ です。例については、「​[子孫セレクター (​`..myKey`​)](#descendants)​」を参照してください。 インデックス (​`[]`​) 配列の指定したインデックスの値を返します。たとえば、​`["a","b","c"][0]`​ の最後の ​`[0]`​ は ​`"a"`​ を返します。例については、「​[インデックスセレクター (​`[anIndex]`​)](#index)​」を参照してください。 範囲 ​`[index1 to index2]`​ 選択したインデックスの値が含まれる配列を返します。たとえば、​`["a","b","c","d"][2 to 3]`​ の最後の ​`[2 to 3]`​ は ​`["c","d"]`​ を返します。例については、「​[範囲セレクター (​`anIndex to anotherIndex`​)](#range)​」を参照してください。 XML 属性 (​`.@myKey`​) XML 属性の選択したキーの値を返します。例については、「​[XML 属性セレクター (​`.@myKey`​)](#xml_attribute)​」を参照してください。 名前空間セレクター (​`myKey.#`​) 選択したキーも含まれる要素の ​`xmlns`​ 名前空間を返します。例については、「​[名前空間セレクター (​`#`​)](#namespace)​」を参照してください。 セレクター修飾子 (​`?`​ および ​`!`​) `?`​および ​`!`​ は、指定したキーをチェックします。​`?`​ は、​`true`​ または ​`false`​ を返します。 `!`​ は、キーが存在しない場合にエラーを返します。例については、「​[セレクター修飾子 (​`!`​、​`?`​)](#selector_modifiers)​」を参照してください。 絞り込みセレクター (​`myKey[?(booleanExpression)]`​) ブール式で ​`true`​ が返されて、指定した ​`key`​ が存在する場合に、選択した項目を返します。式が false か、キーが存在しない場合、​`null`​ を返します。例については、「​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​」を参照してください。 メタデータセレクター ​`.^someMetadata`​ Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、クラス (​`.^class`​)、コンテンツ長 (​`.^contentLength`​)、エンコード (​`.^encoding`​)、MIME タイプ (​`.^mimeType`​)、メディア種別 (​`.^mediaType`​)、未加工 (​`.^raw`​)、カスタムメタデータ (​`.^myCustomMetadata`​) の値を返すことができます。詳細は、「​[メタデータセレクター (.^someMetadata)](#metadata_selector)​」を参照してください。 ## [](#キーおよびセレクターの構文)キーおよびセレクターの構文 DataWeave では、一部の状況ではオブジェクトのキーの名前を囲む引用符が必須ですが、それ以外は引用符は省略可能です。キーは識別子ではありませんが、キー名が、​[有効な識別子名](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction#valid-identifiers)​の条件を満たす場合、キーを囲む引用符は省略可能です。キーがこの条件を満たさない場合、キーを引用符で囲む​_必要_​があります。たとえば、​`{ some-name : "somebody" }`​ のキー構文を修正するには、​`{ "some-name" : "somebody" }`​ または ​`{ 'some-name' : "somebody" }`​ を使用できます。引用符がない場合、​`{ some-name : "somebody" }`​ のキーでは ​`Invalid input '-', expected Namespace`​ というエラーが発生します。 引用符を必要とするキーでセレクターを使用している場合は、セレクターも引用符で囲む必要があります。たとえば、​`{ "some-name" : "somebody" }."some-name"`​ のセレクター ​`"some-name"`​ は正常に機能しますが、​`{ "some-name" : "somebody" }.some-name`​ のセレクター ​`some-name`​ では、セレクターが引用符で囲まれていないために ​`Unable to resolve reference of: name`​ というエラーが発生します。 引用符を必要としないキーでセレクターを使用している場合、セレクターを囲む引用符は省略可能です。たとえば、次の例はすべて正常に機能します。 - `{"name" : "somebody"}.name`​ - `{"name" : "somebody"}."name"`​ - `{name : "somebody"}.name`​ - `{name : "somebody"}."name"` ## [](#single_value)単一値セレクター (.myKey) `.myKey`​ セレクターは、オブジェクトや配列で動作し、一致するキーの値を返します。 ### [](#オブジェクトに対する単一値セレクター)オブジェクトに対する単一値セレクター オブジェクトの場合、単一値セレクターは一致するキーの値を返します。たとえば、次のスクリプトの ​`myObject.user`​ は ​`"a"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` DataWeave ​_オブジェクト_​ (配列ではない) を操作する場合、​`.`​ セレクターは、オブジェクトに複数の一致するキーがある場合でも、​_最初_​に一致したキーの値のみを返します。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a", "user" : "b" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` このような場合に複数の一致するキーの値を返す方法については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 次の例の ​`payload.people.person.address`​ は ​`address`​ 要素の値を返します。また、​`output`​ ディレクティブを使用して、JSON 入力を XML に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "size" : 1, "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- { myaddresses: myData.people.person.address } ``` 出力 XML: ```xml Italia 2164 San Isidro Martinez ``` ## [](#single_value_array)配列に対する単一値セレクター 配列で動作する場合、一致する値が 1 つのみの場合でも、​`.`​ セレクターは配列を返します。たとえば、​`["a":"b"]."a"`​ は ​`["b"]`​ を返します。 `.`​ セレクターの動作は、オブジェクトと配列で異なります。 `.*`​ と同様に、​`.`​ セレクターは、入力配列の指定したレベルで​_一致するすべてのキー_​の値が含まれる配列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.aString, myObjectExample : myArrayOfObjects.aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` 次の例では、入力変数 ​`myData`​ の値が、2 つのオブジェクトが含まれる配列になっています。セレクターは、両方のオブジェクトを移動し、両方の ​`street`​ キーの値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": [ { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } }, { "person": { "name": "Coty", "address": { "street": { "name": "Monroe", "number": 323 }, "area": { "zone": "BA", "name": "Belgrano" } } } } ] } output application/json --- myData.people.person.address.street ``` 出力 JSON: ```json [ { "name": "Italia", "number": 2164 }, { "name": "Monroe", "number": 323 } ] ``` ## [](#multi_value)複数値セレクター (​`.*`​) `.*`​ は、オブジェクトや配列をトラバースして、一致するすべてのキーの値を選択し、一致する結果を配列で返します。 ### [](#オブジェクトに対する複数値セレクター)オブジェクトに対する複数値セレクター `.*`​ は、キーが式に一致するすべての値が含まれる配列を返します。 次の例では、入力ペイロードのすべての ​`user`​ 要素の値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.users.*user ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro ``` 出力 JSON: ```json [ "Mariano", "Martin", "Leandro" ] ``` ### [](#配列に対する複数値セレクター)配列に対する複数値セレクター 配列では、​`.*`​ は単一値セレクター (​`.`​) と同じように動作します。たとえば、​`payload.people.person.address.*street`​ と ​`payload.people.person.address.street`​ (「​[配列に対する単一値セレクター](#single_value_array)​」の例) は同じ結果を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.*aString, myObjectExample : myArrayOfObjects.*aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` ## [](#descendants)子孫セレクター (​`..myKey`​) `..`​ セレクターは、配列やオブジェクトで動作します。 このセレクターは、​`..myKey`​ という形式を使用してコンテキストに適用され、選択したコンテキストのサブツリーの一致するすべてのキー - 値ペアの値を取得します。項目の階層構造に関係なく、出力は同じレベルで返されます。 この例では、入力データのツリーのカーディナリティに関係なく、キー ​`name`​ に一致するすべての項目が ​`names`​ というリストに配置されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { names: payload.people..name } ``` 入力 JSON ペイロード: ```json { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } ``` 出力 JSON: ```json { "names": [ "Nial", "Italia", "Martinez" ] } ``` ## [](#key_value)キー - 値ペアセレクター (​`.&myKey`​) `&`​ セレクターは、配列やオブジェクトで動作します。​`&`​ は、現在のコンテキスト内で一致するすべてのキーペアのキーと値の両方を取得します。これらは、取得されたキーと値が含まれるオブジェクトとして返されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { users: payload.users.&user } ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro Admin org_owner ``` 出力 XML: ```xml Mariano Martin Leandro ``` 複数値セレクターとは異なり、このセレクターの出力はオブジェクトになっており、各値の元のキーも抽出されています。 ### [](#すべての子孫のキー-値ペアの選択)すべての子孫のキー - 値ペアの選択 この例では、​`myVar.people..&name`​ の ​`..`​ および ​`&`​ セレクターを使用して、キー ​`name`​ が含まれる ​`myData`​ 入力のすべての子孫オブジェクトの配列を選択して返します。また、JSON 入力を XML 出力に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- names: {(myData.people..&name)} ``` 出力 XML: ```xml Nial Italia Martinez ``` ## [](#index)インデックスセレクター (​`[anIndex]`​) このインデックスセレクターは、指定した位置にある要素を返します。これは、配列、オブジェクト、文字列に対して適用できます。 ### [](#配列に対するインデックスセレクター)配列に対するインデックスセレクター このセレクターは、文字列リテラル、配列、オブジェクトに適用できます。オブジェクトの場合、インデックスの位置にあるキー - 値ペアの値が返されます。 配列の場合、要素の値が返されます。インデックスは、ゼロベースです。 1. インデックスが 0 以上の場合、計数は最初から開始されます。 2. インデックスが負の場合、計数は最後から開始されます (-1 は最後の要素)。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.people[1] ``` 入力 JSON ペイロード: ```json { "people": [ { "nameFirst": "Nial", "nameLast": "Martinez" }, { "nameFirst": "Coty", "nameLast": "Belgrano" } ] } ``` 出力 JSON: ```json { "nameFirst": "Coty", "nameLast": "Belgrano" } ``` ### [](#オブジェクトに対するインデックスセレクター)オブジェクトに対するインデックスセレクター セレクターは、指定した位置にあるキー - 値ペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload[1] ``` 入力 JSON ペイロード: ```json { "nameFirst": "Mark", "nameLast": "Nguyen" } ``` 出力 JSON: ```json "Nguyen" ``` ### [](#文字列に対するインデックスセレクター)文字列に対するインデックスセレクター 文字列でインデックスセレクターを使用する場合、文字列は配列に分解され、各文字がインデックスになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "MuleSoft"[0] } ``` 出力 JSON: ```json { "name": "M" } ``` セレクターは、文字列を文字の配列として処理し、特定の位置にある文字を選択します。 1. インデックスが 0 以上の場合、計数は最初から開始されます。 2. インデックスが負の場合、計数は最後から開始されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "Emiliano"[0] } ``` 出力 JSON: ```json { "name": "E" } ``` ## [](#range)範囲セレクター (​`anIndex to anotherIndex`​) `to`​ セレクターは、配列または文字列の一致するインデックスの値を返します。このセレクターを使用して、範囲内のインデックスの順序を反転させることもできます。セレクターは、文字列の文字をインデックスとして処理します。 - 配列のインデックスを選択: - `[1,2,3,4][0]`​ は ​`1`​ を返します。 配列の最初の要素のインデックスは常に ​`0`​ です。 - `[1,2,3,4][3]`​ は ​`4`​ を返します。 ### [](#配列に対する範囲セレクター)配列に対する範囲セレクター 範囲セレクターは、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、配列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: [0,1,2][0 to 1], last: [0,1,2][-1 to 0] } ``` 出力 JSON: ```json { "slice": [ 0, 1 ], "last": [ 2, 1, 0 ] } ``` ### [](#文字列に対する範囲セレクター)文字列に対する範囲セレクター 範囲セレクターは、文字列を文字の配列として処理し、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、文字列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: "DataWeave"[0 to 1], middle : "superfragilisticexpialadocious"[10 to 13], last: "DataWeave"[-1 to 0] } ``` 出力 JSON: ```json { "slice": "Da", "middle": "list", "last": "evaeWataD" } ``` ## [](#xml_attribute)XML 属性セレクター (​`.@myKey`​) `.@myKey`​ セレクターは、XML 要素の属性を選択します。 キー名なしで ​`.@`​ を使用すると、キー - 値ペアとして属性が含まれるオブジェクトが返されます。 この DataWeave の例では、XML サンプルを変数に読み取り、​`@`​ を使用して XML の属性を選択します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read(' SomeBrand ', 'application/xml') output application/json --- { item: [ { "type" : myVar.product.@."type", "name" : myVar.product.brand, "attributes": myVar.product.@ } ] } ``` 出力 JSON: ```json { "item": [ { "type": "electronic", "name": "SomeBrand", "attributes": { "id": "1", "type": "electronic" } } ] } ``` ## [](#namespace)名前空間セレクター (​`#`​) `#`​ は、選択したキーの XML 名前空間をプレーンテキストとして返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output text/plain --- payload.order.# ``` 入力 XML ペイロード: ```xml Mark 42 2017-01-04 ``` 出力テキスト: ```json "http://orders.company.com" ``` ## [](#selector_modifiers)セレクター修飾子 (​`!`​、​`?`​) 特定のキーの存在を確認できます。 - `!`​ は、選択したキーを評価し、キーが存在しない場合に例外メッセージを表示して失敗します。 - `?`​ は、選択したキーが存在する場合に ​`true`​ を返し、存在しない場合に ​`false`​ を返します。​`?`​ は、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​ でも使用されます。 ### [](#assert_present)アサートの存在検証機能 `!`​ は、指定したいずれかのキーがない場合にエラーを返します。 - `{ "name": "Annie" }.lastName!`​ は、​`There is no key named 'lastName'`​ というメッセージと共にエラーを返します。 - `!`​ を使用しない場合、​`{ "name": "Annie" }.lastName`​ は ​`null`​ を返します。 - キーが存在する場合 (​`{ "name": "Annie" }.name!`​)、結果は ​`"Annie"`​ になります。 ### [](#key_present)キーの存在検証機能 指定したキーがオブジェクトに存在する場合や、XML 要素の属性として存在する場合、​`true`​ を返します。 この例では、​`name`​ キーが存在するため ​`true`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- present: payload.name? ``` 入力 JSON ペイロード: ```json { "name": "Annie" } ``` 出力 XML: ```xml true ``` `?`​ は、XML 属性でも動作します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { item: { typePresent : payload.product.@."type"? } } ``` 入力 XML ペイロード: ```xml Samsung ``` 出力 JSON: ```json { "item": { "typePresent": true } } ``` ## [](#filter_selectors)絞り込みセレクター (​`myKey[?($ == "aValue")]`​) `myKey[?($ == "aValue")]`​ は、配列またはオブジェクト内の一致するキーの値のみを返します。 ​`?`​ は、​[キーの存在検証機能](#key_present)​でも使用されます。 一致するキー - 値ペアがない場合、結果は ​`null`​ になります。 次の例では、​`*.name`​ で返される ​`name`​ キーの配列を入力し、値 ​`"Mariano"`​ を使用して ​`name`​ キーをチェックします。また、一致しない値は除外します。​`$`​ は、選択したキーの値を参照します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?($ == "Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。式 ​`( 1 == 1 )`​ が true であるため、入力のすべてのキー-値ペアを返します。 `( 1 == 2 )`​ などの false 式は、​`null`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?( 1 == 1)] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Luis", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。​`mapObject`​ を使用して、入力オブジェクト全体を反復処理し、一致しないキー - 値ペアを除外して、一致するペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload mapObject { ($$) : $[?($=="Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": { "name": "Mariano", "name": "Mariano" } } ``` ## [](#metadata_selector)メタデータセレクター (.^someMetadata) Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、次のメタデータを返すことができます。 - コンテンツ長メタデータ: `.^contentLength`​ は、値が存在する場合に値のコンテンツの長さを返します。例については、「​[コンテンツ長メタデータセレクター (.^contentLength)](#caret_contentlength)​」を参照してください。 - クラスメタデータ: `.^class`​ は、Plain Old Java Object (POJO) のクラスを返します。たとえば、​`{ "string" : payload.string.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "string": "java.lang.String" }`​ を返します。​`{ "date" : payload.date.^class }`​ は ​`{ "date": "java.util.Date" }`​ を返します。例については、「​[クラスメタデータセレクター (.^class)](#caret_class)​」を参照してください。 - エンコードメタデータ: `.^encoding`​ は値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。例については、「​[エンコードメタデータセレクター (.^encoding)](#caret_encoding)​」を参照してください。 - メディア種別セレクター: `.^mediaType`​ はパラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "**/**; charset=UTF-8"`​ を返します。 例については、「​[メディア種別メタデータセレクター (.^mediaType)](#caret_mediatype)​」を参照してください。 - MIME タイプメタデータ: `.^mimeType`​ はパラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "**/**" }`​ を返します。例については、「​[MIME タイプメタデータセレクター (.^mimeType)](#caret_mimetype)​」を参照してください。 - 未加工メタデータ: `.^raw`​ は、Plain Old Java Object (POJO) の基盤となるデータ (通常はバイナリ値) を返します。このセレクターは、中間者攻撃をチェックするときの MD5 ハッシュの計算で使用されることがあります。 例については、「​[未加工メタデータセレクター (.^raw)](#caret_raw)​」を参照してください。 - カスタムメタデータ: `.^myCustomMetadata`​ はカスタムメタデータの値を返します。 例については、「​[カスタムメタデータセレクター (.^myCustomMetadata)](#caret_custom_metadata)​」を参照してください。 ### [](#caret_contentlength)コンテンツ長メタデータセレクター (.^contentLength) 値が存在する場合に値のコンテンツの長さを返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^contentLength`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された文字列 ​`my string`​ の長さを選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、入力文字列 (​`my string`​) の長さが 11 (​`9`​) 文字であることが示されます。この長さには、文字列の空白スペースが含まれています。 Anypoint Studio のコンソール出力 ```txt INFO 2019-05-07 16:59:33,690 [[MuleRuntime].cpuLight.07: [carets].caretsFlow.CPU_LITE @39f1dbde] [event: 28ce97a0-7124-11e9-acfe-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 11 ``` ### [](#caret_class)クラスメタデータセレクター (.^class) Plain Old Java Object (POJO) のクラスを返します。値は Java クラスのメソッドのコールの結果として生成されます。また、DataWeave で Java 値として処理されるデータ型 (​`String`​ や ​`DateTime`​ など) が含まれることもあります。次に例を示します。 - `{ "string" : payload.mystring.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "mystring": "java.lang.String" }`​ を返します。 - `{ "mydate" : payload.mydate.^class }`​ は ​`{ "mydate": "java.util.Date" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^class`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された Java クラス ​`"my string"`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列がクラス ​`java.lang.String`​ に属していることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:10:03,075 [[MuleRuntime].cpuLight.08: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @6447187e] [event: 6da29400-63c1-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: java.lang.String ``` ### [](#caret_encoding)エンコードメタデータセレクター (.^encoding) 値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^encoding`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたエンコード ​`"my string"`​ を選択します。 Scheduler (​`scheduler`​) コンポーネントは、定期的に新しい Mule イベントを生成して、Set Payload で設定されたペイロードを保持するイベントソースです。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列に ​`UTF-8`​ エンコードが含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:14:24,222 [[MuleRuntime].cpuLight.03: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @62bea6a6] [event: 0938bf70-63c2-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: UTF-8 ``` ### [](#caret_mediatype)メディア種別メタデータセレクター (.^mediaType) パラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "**/**; charset=UTF-8"`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたメディア種別 ​`2014-10-12T11:11:19-00:03`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、​`DateTime`​ ペイロードに ​`application/java; charset=UTF-8`​ メディア種別が含まれていることが示されます。 Anypoint Studio のコンソール出力 INFO 2019-04-20 16:41:01,276 \[\[MuleRuntime\].cpuLight.04: \[setpayloadobject\].setpayloadobjectFlow.CPU\_LITE @7e991c71\] \[event: c0e96860-63c5-11e9-bcff-8c8590a99d48\] rg.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列にメディア種別 ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列にメディア種別 ​`application/java; charset=UTF-8`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:52:50,801 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 16:52:51,085 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 ``` ### [](#caret_mimetype)MIME タイプメタデータセレクター (.^mimeType) パラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "**/**" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mimeType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列に MIME タイプ ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列に MIME タイプ ​`application/java`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 17:02:07,762 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 17:02:08,029 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java ``` ### [](#caret_raw)未加工メタデータセレクター (.^raw) POJO の基盤となるバイナリ値を返します。このセレクターは、中間者 (MITM) 攻撃をチェックするための MD5 やその他の暗号化ハッシュ関数の計算で使用されることがあります。 次の例では、Set Payload コンポーネント (​`set-payload`​) を使用してバイナリ値を生成し、Transform Message コンポーネント (​`ee:transform`​) を使用してバイナリ値の MD5 の未加工データ (​`MD5(payload.^raw)`​) を返します。また、Logger コンポーネント (​`logger`​) は、未加工データを Studio コンソールに書き込むように設定されます。比較のために、2 番目のロガーは標準 JSON 形式の一般的な ​`payload`​ を返します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` ロガーメッセージの未加工出力では、標準 JSON 出力が生成されずに、ペイロード全体が二重引用符で囲まれ、新しい行ごとに改行文字 (​`\n`​) が挿入されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-22 14:10:14,537 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "{\n "myRawData": "5403e5a202c594871d59898b13054be5"\n}" INFO 2019-04-22 14:10:14,540 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "myRawData": "5403e5a202c594871d59898b13054be5" } ``` 次の例では、HTTP Listener ソース (​`listener`​) を使用して、POST 要求を介して受け取った XML ペイロードを取得した後、Transform Message コンポーネント (​`ee:transform`​) を使用して、未加工データ (​`(payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)`​) を返すことで XML ペイロードのエンコード値を取得します。Logger コンポーネント (​`logger`​) では、​`payload`​ が JAVA 形式で返されます。 Anypoint Studio の Mule アプリケーション XML ```XML ``` お気に入りの REST クライアントまたは API テストツールを使用して、次の XML 本文を含む POST 要求を送信します。 ```XML ``` ロガーメッセージでは、抽出されたエンコード値 ​`ISO-8859-1`​ が返されます。 Anypoint Studio のコンソール出力 ```txt INFO 2021-05-12 12:25:41,618 [[MuleRuntime].uber.03: [xmlmodule].Flow.CPU_INTENSIVE @de48fc8] [processor: Flow/processors/2; event: 4fe7f6a0-b336-11eb-909c-f01898ad2638] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: ISO-8859-1 ``` ### [](#caret_custom_metadata)カスタムメタデータセレクター (.^myCustomMetadata) カスタムメタデータの値を返します。メタデータは、​`as`​ 演算子を使用して任意の値に関連付けることができます。 次の例では、​`userName.^myCustomMetadata`​ を使用して、スクリプトのヘッダーで変数 ​`userName`​ として定義されているカスタムメタデータの値を DataWeave スクリプトとして返します。比較のために、この例では ​`userName`​ の値も返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var userName = "DataWeave" as String {myCustomMetadata: "customMetadataValue"} --- { "valueOfVariableMetaData" : userName.^myCustomMetadata, "valueOfVariable" : userName, } ``` スクリプトの出力は、​`"customMetadataValue"`​ (カスタムメタデータの値) と ​`"DataWeave"`​ (​`userName`​ 変数の値) です。 出力 JSON: ```json { "valueOfVariableMetaData": "customMetadataValue", "valueOfVariable": "DataWeave" } ``` ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-quickstart) - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # データの抽出 DataWeave は、データを DataWeave オブジェクトや配列、そのデータを保存する変数、および DataWeave 関数の出力 (その出力が配列またはオブジェクトの場合) から選択できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 より正確に言えば、DataWeave セレクターは、データを保存する変数、オブジェクトリテラル、配列リテラル、DataWeave 関数の呼び出しへの参照になるコンテキスト内で動作します。DataWeave 式を使用できる Mule モジュール、コネクタ、コンポーネントのセレクターを使用できます。 DataWeave は、セレクターを処理するときに後続のセレクターの新しいコンテキスト (スコープ) を設定するため、セレクターのチェーンを使用して配列やオブジェクトの複雑な構造を移動できます。選択の深さは、現在のコンテキストの深さに制限されます。 サポートされている変数参照は、​`payload`​ や ​`attributes`​ などの ​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables-context)​と、配列またはオブジェクトを保存する ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables)​です。簡単な例として ​`payload.myKey`​ が挙げられます。payload はオブジェクト ​`{"myKey" : 1234 }`​ であるため、結果は ​`1234`​ になります。 セレクターは、DataWeave ​`read`​ などの関数の呼び出しで動作します。たとえば、​`read('{"A":"B"}','application/json')."A"`​ は ​`"B"`​ を返します。 ## [](#dataweave-配列やオブジェクトでのセレクターの使用)DataWeave 配列やオブジェクトでのセレクターの使用 DataWeave のセレクターは、DataWeave オブジェクト (​`{ myKey : "myValue" }`​ など) または配列 (​`[1,2,3,4]`​ や ​`[ { "myKey" : "1234" }, { "name" : "somebody" } ]`​ など) 内から値を抽出します。 次の DataWeave スクリプトでは、単一値セレクター (​`.`​) を使用して、変数 ​`myObject`​ と ​`myArray`​ で定義されたオブジェクトと配列から値を取得します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { "myKey" : "1234", "name" : "somebody" } var myArray = [ { "myKey" : "1234" }, { "name" : "somebody" } ] output application/json --- { selectingValueUsingKeyInObject : myObject.name, selectingValueUsingKeyOfObjectInArray : myArray.name, } ``` 出力 JSON: ```json { "selectingValueUsingKeyInObject": "somebody", "selectingValueUsingKeyOfObjectInArray": [ "somebody" ] } ``` 出力は次のようになります。 - `myObject.name`​ は、値 ​`"somebody"`​ を返します。 - `myArray.name`​ は、配列 ​`[ "somebody" ]`​ を返します。 ## [](#セレクタークイックリファレンス)セレクタークイックリファレンス 単一値 (​`.`​) 配列やオブジェクトで動作し、一致するキーの値を返します。構文は ​`.myKey`​ です。DataWeave ​_オブジェクト_​の重複キーの値を取得するには、代わりに ​`*`​ を使用します。例については、「​[単一値セレクター (.myKey)](#single_value)​」を参照してください。 複数値 (​`*`​) 配列やオブジェクトで動作し、データ構造の階層の単一レベルで一致するすべてのキーの値を取得します。構文は ​`*myKey`​ です。階層の下位レベルのすべての重複キーの値を取得する場合は、代わりに子孫セレクター (​`..`​) を使用します。例については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 キー - 値ペア (​`&`​) 配列やオブジェクトで動作します。このセレクターは、DataWeave オブジェクトの値を返す代わりに DataWeave オブジェクト全体 (キーと値) を返します。 構文は ​`.&myKey`​ です。例については、「​[キー - 値ペアセレクター (​`.&myKey`​)](#key_value)​」を参照してください。 子孫 (​`..`​) 配列やオブジェクトで動作し、階層の場所に関係なく、特定のキーの下にある配列やオブジェクトから一致するすべてのキーを取得します。 構文は ​`..myKey`​ です。例については、「​[子孫セレクター (​`..myKey`​)](#descendants)​」を参照してください。 インデックス (​`[]`​) 配列の指定したインデックスの値を返します。たとえば、​`["a","b","c"][0]`​ の最後の ​`[0]`​ は ​`"a"`​ を返します。例については、「​[インデックスセレクター (​`[anIndex]`​)](#index)​」を参照してください。 範囲 ​`[index1 to index2]`​ 選択したインデックスの値が含まれる配列を返します。たとえば、​`["a","b","c","d"][2 to 3]`​ の最後の ​`[2 to 3]`​ は ​`["c","d"]`​ を返します。例については、「​[範囲セレクター (​`anIndex to anotherIndex`​)](#range)​」を参照してください。 XML 属性 (​`.@myKey`​) XML 属性の選択したキーの値を返します。例については、「​[XML 属性セレクター (​`.@myKey`​)](#xml_attribute)​」を参照してください。 名前空間セレクター (​`myKey.#`​) 選択したキーも含まれる要素の ​`xmlns`​ 名前空間を返します。例については、「​[名前空間セレクター (​`#`​)](#namespace)​」を参照してください。 セレクター修飾子 (​`?`​ および ​`!`​) `?`​ および ​`!`​ は、指定したキーをチェックします。​`?`​ は、​`true`​ または ​`false`​ を返します。 `!`​ は、キーが存在しない場合にエラーを返します。例については、「​[セレクター修飾子 (​`!`​、​`?`​)](#selector_modifiers)​」を参照してください。 絞り込みセレクター (​`myKey[?(booleanExpression)]`​) ブール式で ​`true`​ が返されて、指定した ​`key`​ が存在する場合に、選択した項目を返します。式が false か、キーが存在しない場合、​`null`​ を返します。例については、「​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​」を参照してください。 メタデータセレクター ​`.^someMetadata`​ Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、クラス (​`.^class`​)、コンテンツ長 (​`.^contentLength`​)、エンコード (​`.^encoding`​)、MIME タイプ (​`.^mimeType`​)、メディア種別 (​`.^mediaType`​)、未加工 (​`.^raw`​)、カスタムメタデータ (​`.^myCustomMetadata`​) の値を返すことができます。詳細は、「​[メタデータセレクター (.^someMetadata)](#metadata_selector)​」を参照してください。 ## [](#キーおよびセレクターの構文)キーおよびセレクターの構文 DataWeave では、一部の状況ではオブジェクトのキーの名前を囲む引用符が必須ですが、それ以外は引用符は省略可能です。キーは識別子ではありませんが、キー名が、​[有効な識別子名](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-language-introduction#valid-identifiers)​の条件を満たす場合、キーを囲む引用符は省略可能です。キーがこの条件を満たさない場合、キーを引用符で囲む​_必要_​があります。たとえば、​`{ some-name : "somebody" }`​ のキー構文を修正するには、​`{ "some-name" : "somebody" }`​ または ​`{ 'some-name' : "somebody" }`​ を使用できます。引用符がない場合、​`{ some-name : "somebody" }`​ のキーでは ​`Invalid input '-', expected Namespace`​ というエラーが発生します。 引用符を必要とするキーでセレクターを使用している場合は、セレクターも引用符で囲む必要があります。たとえば、​`{ "some-name" : "somebody" }."some-name"`​ のセレクター ​`"some-name"`​ は正常に機能しますが、​`{ "some-name" : "somebody" }.some-name`​ のセレクター ​`some-name`​ では、セレクターが引用符で囲まれていないために ​`Unable to resolve reference of: name`​ というエラーが発生します。 引用符を必要としないキーでセレクターを使用している場合、セレクターを囲む引用符は省略可能です。たとえば、次の例はすべて正常に機能します。 - `{"name" : "somebody"}.name`​ - `{"name" : "somebody"}."name"`​ - `{name : "somebody"}.name`​ - `{name : "somebody"}."name"` ## [](#single_value)単一値セレクター (.myKey) `.myKey`​ セレクターは、オブジェクトや配列で動作し、一致するキーの値を返します。 ### [](#オブジェクトに対する単一値セレクター)オブジェクトに対する単一値セレクター オブジェクトの場合、単一値セレクターは一致するキーの値を返します。たとえば、次のスクリプトの ​`myObject.user`​ は ​`"a"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` DataWeave ​_オブジェクト_​ (配列ではない) を操作する場合、​`.`​ セレクターは、オブジェクトに複数の一致するキーがある場合でも、​_最初_​に一致したキーの値のみを返します。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a", "user" : "b" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` このような場合に複数の一致するキーの値を返す方法については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 次の例の ​`payload.people.person.address`​ は ​`address`​ 要素の値を返します。また、​`output`​ ディレクティブを使用して、JSON 入力を XML に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "size" : 1, "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- { myaddresses: myData.people.person.address } ``` 出力 XML: ```xml Italia 2164 San Isidro Martinez ``` ## [](#single_value_array)配列に対する単一値セレクター 配列で動作する場合、一致する値が 1 つのみの場合でも、​`.`​ セレクターは配列を返します。たとえば、​`["a":"b"]."a"`​ は ​`["b"]`​ を返します。 `.`​ セレクターの動作は、オブジェクトと配列で異なります。 `.*`​ と同様に、​`.`​ セレクターは、入力配列の指定したレベルで​_一致するすべてのキー_​の値が含まれる配列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.aString, myObjectExample : myArrayOfObjects.aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` 次の例では、入力変数 ​`myData`​ の値が、2 つのオブジェクトが含まれる配列になっています。セレクターは、両方のオブジェクトを移動し、両方の ​`street`​ キーの値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": [ { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } }, { "person": { "name": "Coty", "address": { "street": { "name": "Monroe", "number": 323 }, "area": { "zone": "BA", "name": "Belgrano" } } } } ] } output application/json --- myData.people.person.address.street ``` 出力 JSON: ```json [ { "name": "Italia", "number": 2164 }, { "name": "Monroe", "number": 323 } ] ``` ## [](#multi_value)複数値セレクター (​`.*`​) `.*`​ は、オブジェクトや配列をトラバースして、一致するすべてのキーの値を選択し、一致する結果を配列で返します。 ### [](#オブジェクトに対する複数値セレクター)オブジェクトに対する複数値セレクター `.*`​ は、キーが式に一致するすべての値が含まれる配列を返します。 次の例では、入力ペイロードのすべての ​`user`​ 要素の値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.users.*user ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro ``` 出力 JSON: ```json [ "Mariano", "Martin", "Leandro" ] ``` ### [](#配列に対する複数値セレクター)配列に対する複数値セレクター 配列では、​`.*`​ は単一値セレクター (​`.`​) と同じように動作します。たとえば、​`payload.people.person.address.*street`​ と ​`payload.people.person.address.street`​ (「​[配列に対する単一値セレクター](#single_value_array)​」の例) は同じ結果を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.*aString, myObjectExample : myArrayOfObjects.*aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` ## [](#descendants)子孫セレクター (​`..myKey`​) `..`​ セレクターは、配列やオブジェクトで動作します。 このセレクターは、​`..myKey`​ という形式を使用してコンテキストに適用され、選択したコンテキストのサブツリーの一致するすべてのキー - 値ペアの値を取得します。項目の階層構造に関係なく、出力は同じレベルで返されます。 この例では、入力データのツリーのカーディナリティに関係なく、キー ​`name`​ に一致するすべての項目が ​`names`​ というリストに配置されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { names: payload.people..name } ``` 入力 JSON ペイロード: ```json { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } ``` 出力 JSON: ```json { "names": [ "Nial", "Italia", "Martinez" ] } ``` ## [](#key_value)キー - 値ペアセレクター (​`.&myKey`​) `&`​ セレクターは、配列やオブジェクトで動作します。​`&`​ は、現在のコンテキスト内で一致するすべてのキーペアのキーと値の両方を取得します。これらは、取得されたキーと値が含まれるオブジェクトとして返されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { users: payload.users.&user } ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro Admin org_owner ``` 出力 XML: ```xml Mariano Martin Leandro ``` 複数値セレクターとは異なり、このセレクターの出力はオブジェクトになっており、各値の元のキーも抽出されています。 ### [](#すべての子孫のキー-値ペアの選択)すべての子孫のキー - 値ペアの選択 この例では、​`myVar.people..&name`​ の ​`..`​ および ​`&`​ セレクターを使用して、キー ​`name`​ が含まれる ​`myData`​ 入力のすべての子孫オブジェクトの配列を選択して返します。また、JSON 入力を XML 出力に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- names: {(myData.people..&name)} ``` 出力 XML: ```xml Nial Italia Martinez ``` ## [](#index)インデックスセレクター (​`[anIndex]`​) このインデックスセレクターは、指定した位置にある要素を返します。これは、配列、オブジェクト、文字列に対して適用できます。 ### [](#配列に対するインデックスセレクター)配列に対するインデックスセレクター このセレクターは、文字列リテラル、配列、オブジェクトに適用できます。オブジェクトの場合、インデックスの位置にあるキー - 値ペアの値が返されます。 配列の場合、要素の値が返されます。インデックスは、ゼロベースです。 1. インデックスが 0 以上の場合、計数は最初から開始されます。 2. インデックスが負の場合、計数は最後から開始されます (-1 は最後の要素)。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.people[1] ``` 入力 JSON ペイロード: ```json { "people": [ { "nameFirst": "Nial", "nameLast": "Martinez" }, { "nameFirst": "Coty", "nameLast": "Belgrano" } ] } ``` 出力 JSON: ```json { "nameFirst": "Coty", "nameLast": "Belgrano" } ``` ### [](#オブジェクトに対するインデックスセレクター)オブジェクトに対するインデックスセレクター セレクターは、指定した位置にあるキー - 値ペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload[1] ``` 入力 JSON ペイロード: ```json { "nameFirst": "Mark", "nameLast": "Nguyen" } ``` 出力 JSON: ```json "Nguyen" ``` ### [](#文字列に対するインデックスセレクター)文字列に対するインデックスセレクター 文字列でインデックスセレクターを使用する場合、文字列は配列に分解され、各文字がインデックスになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "MuleSoft"[0] } ``` 出力 JSON: ```json { "name": "M" } ``` セレクターは、文字列を文字の配列として処理し、特定の位置にある文字を選択します。 1. インデックスが 0 以上の場合、計数は最初から開始されます。 2. インデックスが負の場合、計数は最後から開始されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "Emiliano"[0] } ``` 出力 JSON: ```json { "name": "E" } ``` ## [](#range)範囲セレクター (​`anIndex to anotherIndex`​) `to`​ セレクターは、配列または文字列の一致するインデックスの値を返します。このセレクターを使用して、範囲内のインデックスの順序を反転させることもできます。セレクターは、文字列の文字をインデックスとして処理します。 - 配列のインデックスを選択: - `[1,2,3,4][0]`​ は ​`1`​ を返します。 配列の最初の要素のインデックスは常に ​`0`​ です。 - `[1,2,3,4][3]`​ は ​`4`​ を返します。 ### [](#配列に対する範囲セレクター)配列に対する範囲セレクター 範囲セレクターは、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、配列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: [0,1,2][0 to 1], last: [0,1,2][-1 to 0] } ``` 出力 JSON: ```json { "slice": [ 0, 1 ], "last": [ 2, 1, 0 ] } ``` ### [](#文字列に対する範囲セレクター)文字列に対する範囲セレクター 範囲セレクターは、文字列を文字の配列として処理し、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、文字列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: "DataWeave"[0 to 1], middle : "superfragilisticexpialadocious"[10 to 13], last: "DataWeave"[-1 to 0] } ``` 出力 JSON: ```json { "slice": "Da", "middle": "list", "last": "evaeWataD" } ``` ## [](#xml_attribute)XML 属性セレクター (​`.@myKey`​) `.@myKey`​ セレクターは、XML 要素の属性を選択します。 キー名なしで ​`.@`​ を使用すると、キー - 値ペアとして属性が含まれるオブジェクトが返されます。 この DataWeave の例では、XML サンプルを変数に読み取り、​`@`​ を使用して XML の属性を選択します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read(' SomeBrand ', 'application/xml') output application/json --- { item: [ { "type" : myVar.product.@."type", "name" : myVar.product.brand, "attributes": myVar.product.@ } ] } ``` 出力 JSON: ```json { "item": [ { "type": "electronic", "name": "SomeBrand", "attributes": { "id": "1", "type": "electronic" } } ] } ``` ## [](#namespace)名前空間セレクター (​`#`​) `#`​ は、選択したキーの XML 名前空間をプレーンテキストとして返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output text/plain --- payload.order.# ``` 入力 XML ペイロード: ```xml Mark 42 2017-01-04 ``` 出力テキスト: ```json "http://orders.company.com" ``` ## [](#selector_modifiers)セレクター修飾子 (​`!`​、​`?`​) 特定のキーの存在を確認できます。 - `!`​ は、選択したキーを評価し、キーが存在しない場合に例外メッセージを表示して失敗します。 - `?`​ は、選択したキーが存在する場合に ​`true`​ を返し、存在しない場合に ​`false`​ を返します。​`?`​ は、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​ でも使用されます。 ### [](#assert_present)アサートの存在検証機能 `!`​ は、指定したいずれかのキーがない場合にエラーを返します。 - `{ "name": "Annie" }.lastName!`​ は、​`There is no key named 'lastName'`​ というメッセージと共にエラーを返します。 - `!`​ を使用しない場合、​`{ "name": "Annie" }.lastName`​ は ​`null`​ を返します。 - キーが存在する場合 (​`{ "name": "Annie" }.name!`​)、結果は ​`"Annie"`​ になります。 ### [](#key_present)キーの存在検証機能 指定したキーがオブジェクトに存在する場合や、XML 要素の属性として存在する場合、​`true`​ を返します。 この例では、​`name`​ キーが存在するため ​`true`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- present: payload.name? ``` 入力 JSON ペイロード: ```json { "name": "Annie" } ``` 出力 XML: ```xml true ``` `?`​ は、XML 属性でも動作します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { item: { typePresent : payload.product.@."type"? } } ``` 入力 XML ペイロード: ```xml Samsung ``` 出力 JSON: ```json { "item": { "typePresent": true } } ``` ## [](#filter_selectors)絞り込みセレクター (​`myKey[?($ == "aValue")]`​) `myKey[?($ == "aValue")]`​ は、配列またはオブジェクト内の一致するキーの値のみを返します。 ​`?`​ は、​[キーの存在検証機能](#key_present)​でも使用されます。 一致するキー - 値ペアがない場合、結果は ​`null`​ になります。 次の例では、​`*.name`​ で返される ​`name`​ キーの配列を入力し、値 ​`"Mariano"`​ を使用して ​`name`​ キーをチェックします。また、一致しない値は除外します。​`$`​ は、選択したキーの値を参照します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?($ == "Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。式 ​`( 1 == 1 )`​ が true であるため、入力のすべてのキー-値ペアを返します。 `( 1 == 2 )`​ などの false 式は、​`null`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?( 1 == 1)] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Luis", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。​`mapObject`​ を使用して、入力オブジェクト全体を反復処理し、一致しないキー - 値ペアを除外して、一致するペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload mapObject { ($$) : $[?($=="Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": { "name": "Mariano", "name": "Mariano" } } ``` ## [](#metadata_selector)メタデータセレクター (.^someMetadata) Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、次のメタデータを返すことができます。 - コンテンツ長メタデータ: `.^contentLength`​ は、値が存在する場合に値のコンテンツの長さを返します。例については、「​[コンテンツ長メタデータセレクター (.^contentLength)](#caret_contentlength)​」を参照してください。 - クラスメタデータ: `.^class`​ は、Plain Old Java Object (POJO) のクラスを返します。たとえば、​`{ "string" : payload.string.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "string": "java.lang.String" }`​ を返します。​`{ "date" : payload.date.^class }`​ は ​`{ "date": "java.util.Date" }`​ を返します。例については、「​[クラスメタデータセレクター (.^class)](#caret_class)​」を参照してください。 - エンコードメタデータ: `.^encoding`​ は値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。例については、「​[エンコードメタデータセレクター (.^encoding)](#caret_encoding)​」を参照してください。 - メディア種別セレクター: `.^mediaType`​ はパラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "**/**; charset=UTF-8"`​ を返します。 例については、「​[メディア種別メタデータセレクター (.^mediaType)](#caret_mediatype)​」を参照してください。 - MIME タイプメタデータ: `.^mimeType`​ はパラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "**/**" }`​ を返します。例については、「​[MIME タイプメタデータセレクター (.^mimeType)](#caret_mimetype)​」を参照してください。 - 未加工メタデータ: `.^raw`​ は、Plain Old Java Object (POJO) の基盤となるデータ (通常はバイナリ値) を返します。このセレクターは、中間者攻撃をチェックするときの MD5 ハッシュの計算で使用されることがあります。 例については、「​[未加工メタデータセレクター (.^raw)](#caret_raw)​」を参照してください。 - カスタムメタデータ: `.^myCustomMetadata`​ はカスタムメタデータの値を返します。 例については、「​[カスタムメタデータセレクター (.^myCustomMetadata)](#caret_custom_metadata)​」を参照してください。 ### [](#caret_contentlength)コンテンツ長メタデータセレクター (.^contentLength) 値が存在する場合に値のコンテンツの長さを返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^contentLength`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された文字列 ​`my string`​ の長さを選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、入力文字列 (​`my string`​) の長さが 11 (​`9`​) 文字であることが示されます。この長さには、文字列の空白スペースが含まれています。 Anypoint Studio のコンソール出力 ```txt INFO 2019-05-07 16:59:33,690 [[MuleRuntime].cpuLight.07: [carets].caretsFlow.CPU_LITE @39f1dbde] [event: 28ce97a0-7124-11e9-acfe-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 11 ``` ### [](#caret_class)クラスメタデータセレクター (.^class) Plain Old Java Object (POJO) のクラスを返します。値は Java クラスのメソッドのコールの結果として生成されます。また、DataWeave で Java 値として処理されるデータ型 (​`String`​ や ​`DateTime`​ など) が含まれることもあります。次に例を示します。 - `{ "string" : payload.mystring.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "mystring": "java.lang.String" }`​ を返します。 - `{ "mydate" : payload.mydate.^class }`​ は ​`{ "mydate": "java.util.Date" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^class`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された Java クラス ​`"my string"`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列がクラス ​`java.lang.String`​ に属していることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:10:03,075 [[MuleRuntime].cpuLight.08: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @6447187e] [event: 6da29400-63c1-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: java.lang.String ``` ### [](#caret_encoding)エンコードメタデータセレクター (.^encoding) 値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^encoding`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたエンコード ​`"my string"`​ を選択します。 Scheduler (​`scheduler`​) コンポーネントは、定期的に新しい Mule イベントを生成して、Set Payload で設定されたペイロードを保持するイベントソースです。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列に ​`UTF-8`​ エンコードが含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:14:24,222 [[MuleRuntime].cpuLight.03: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @62bea6a6] [event: 0938bf70-63c2-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: UTF-8 ``` ### [](#caret_mediatype)メディア種別メタデータセレクター (.^mediaType) パラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "**/**; charset=UTF-8"`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたメディア種別 ​`2014-10-12T11:11:19-00:03`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、​`DateTime`​ ペイロードに ​`application/java; charset=UTF-8`​ メディア種別が含まれていることが示されます。 Anypoint Studio のコンソール出力 INFO 2019-04-20 16:41:01,276 \[\[MuleRuntime\].cpuLight.04: \[setpayloadobject\].setpayloadobjectFlow.CPU\_LITE @7e991c71\] \[event: c0e96860-63c5-11e9-bcff-8c8590a99d48\] rg.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列にメディア種別 ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列にメディア種別 ​`application/java; charset=UTF-8`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:52:50,801 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 16:52:51,085 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 ``` ### [](#caret_mimetype)MIME タイプメタデータセレクター (.^mimeType) パラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "**/**" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mimeType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列に MIME タイプ ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列に MIME タイプ ​`application/java`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 17:02:07,762 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 17:02:08,029 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java ``` ### [](#caret_raw)未加工メタデータセレクター (.^raw) POJO の基盤となるバイナリ値を返します。このセレクターは、中間者 (MITM) 攻撃をチェックするための MD5 やその他の暗号化ハッシュ関数の計算で使用されることがあります。 次の例では、Set Payload コンポーネント (​`set-payload`​) を使用してバイナリ値を生成し、Transform Message コンポーネント (​`ee:transform`​) を使用してバイナリ値の MD5 の未加工データ (​`MD5(payload.^raw)`​) を返します。また、Logger コンポーネント (​`logger`​) は、未加工データを Studio コンソールに書き込むように設定されます。比較のために、2 番目のロガーは標準 JSON 形式の一般的な ​`payload`​ を返します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` ロガーメッセージの未加工出力では、標準 JSON 出力が生成されずに、ペイロード全体が二重引用符で囲まれ、新しい行ごとに改行文字 (​`\n`​) が挿入されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-22 14:10:14,537 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "{\n "myRawData": "5403e5a202c594871d59898b13054be5"\n}" INFO 2019-04-22 14:10:14,540 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "myRawData": "5403e5a202c594871d59898b13054be5" } ``` 次の例では、HTTP Listener ソース (​`listener`​) を使用して、POST 要求を介して受け取った XML ペイロードを取得した後、Transform Message コンポーネント (​`ee:transform`​) を使用して、未加工データ (​`(payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)`​) を返すことで XML ペイロードのエンコード値を取得します。Logger コンポーネント (​`logger`​) では、​`payload`​ が JAVA 形式で返されます。 Anypoint Studio の Mule アプリケーション XML ```XML ``` お気に入りの REST クライアントまたは API テストツールを使用して、次の XML 本文を含む POST 要求を送信します。 ```XML ``` ロガーメッセージでは、抽出されたエンコード値 ​`ISO-8859-1`​ が返されます。 Anypoint Studio のコンソール出力 ```txt INFO 2021-05-12 12:25:41,618 [[MuleRuntime].uber.03: [xmlmodule].Flow.CPU_INTENSIVE @de48fc8] [processor: Flow/processors/2; event: 4fe7f6a0-b336-11eb-909c-f01898ad2638] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: ISO-8859-1 ``` ### [](#caret_custom_metadata)カスタムメタデータセレクター (.^myCustomMetadata) カスタムメタデータの値を返します。メタデータは、​`as`​ 演算子を使用して任意の値に関連付けることができます。 次の例では、​`userName.^myCustomMetadata`​ を使用して、スクリプトのヘッダーで変数 ​`userName`​ として定義されているカスタムメタデータの値を DataWeave スクリプトとして返します。比較のために、この例では ​`userName`​ の値も返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var userName = "DataWeave" as String {myCustomMetadata: "customMetadataValue"} --- { "valueOfVariableMetaData" : userName.^myCustomMetadata, "valueOfVariable" : userName, } ``` スクリプトの出力は、​`"customMetadataValue"`​ (カスタムメタデータの値) と ​`"DataWeave"`​ (​`userName`​ 変数の値) です。 出力 JSON: ```json { "valueOfVariableMetaData": "customMetadataValue", "valueOfVariable": "DataWeave" } ``` ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-quickstart) - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # データの抽出 DataWeave は、データを DataWeave オブジェクトや配列、そのデータを保存する変数、および DataWeave 関数の出力 (その出力が配列またはオブジェクトの場合) から選択できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 より正確に言えば、DataWeave セレクターは、データを保存する変数、オブジェクトリテラル、配列リテラル、DataWeave 関数の呼び出しへの参照になるコンテキスト内で動作します。DataWeave 式を使用できる Mule モジュール、コネクタ、コンポーネントのセレクターを使用できます。 DataWeave は、セレクターを処理するときに後続のセレクターの新しいコンテキスト (スコープ) を設定するため、セレクターのチェーンを使用して配列やオブジェクトの複雑な構造を移動できます。選択の深さは、現在のコンテキストの深さに制限されます。 サポートされている変数参照は、​`payload`​ や ​`attributes`​ などの ​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables-context)​と、配列またはオブジェクトを保存する ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-variables)​です。簡単な例として ​`payload.myKey`​ が挙げられます。payload はオブジェクト ​`{"myKey" : 1234 }`​ であるため、結果は ​`1234`​ になります。 セレクターは、DataWeave ​`read`​ などの関数の呼び出しで動作します。たとえば、​`read('{"A":"B"}','application/json')."A"`​ は ​`"B"`​ を返します。 ## [](#dataweave-配列やオブジェクトでのセレクターの使用)DataWeave 配列やオブジェクトでのセレクターの使用 DataWeave のセレクターは、DataWeave オブジェクト (​`{ myKey : "myValue" }`​ など) または配列 (​`[1,2,3,4]`​ や ​`[ { "myKey" : "1234" }, { "name" : "somebody" } ]`​ など) 内から値を抽出します。 次の DataWeave スクリプトでは、単一値セレクター (​`.`​) を使用して、変数 ​`myObject`​ と ​`myArray`​ で定義されたオブジェクトと配列から値を取得します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { "myKey" : "1234", "name" : "somebody" } var myArray = [ { "myKey" : "1234" }, { "name" : "somebody" } ] output application/json --- { selectingValueUsingKeyInObject : myObject.name, selectingValueUsingKeyOfObjectInArray : myArray.name, } ``` 出力 JSON: ```json { "selectingValueUsingKeyInObject": "somebody", "selectingValueUsingKeyOfObjectInArray": [ "somebody" ] } ``` 出力は次のようになります。 - `myObject.name`​ は、値 ​`"somebody"`​ を返します。 - `myArray.name`​ は、配列 ​`[ "somebody" ]`​ を返します。 ## [](#セレクタークイックリファレンス)セレクタークイックリファレンス 単一値 (​`.`​) 配列やオブジェクトで動作し、一致するキーの値を返します。構文は ​`.myKey`​ です。DataWeave ​_オブジェクト_​の重複キーの値を取得するには、代わりに ​`*`​ を使用します。例については、「​[単一値セレクター (.myKey)](#single_value)​」を参照してください。 複数値 (​`*`​) 配列やオブジェクトで動作し、データ構造の階層の単一レベルで一致するすべてのキーの値を取得します。構文は ​`*myKey`​ です。階層の下位レベルのすべての重複キーの値を取得する場合は、代わりに子孫セレクター (​`..`​) を使用します。例については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 キー-値ペア (​`&`​) 配列やオブジェクトで動作します。このセレクターは、DataWeave オブジェクトの値を返す代わりに DataWeave オブジェクト全体 (キーと値) を返します。 構文は ​`.&myKey`​ です。例については、「​[キー - 値ペアセレクター (​`.&myKey`​)](#key_value)​」を参照してください。 子孫 (​`..`​) 配列やオブジェクトで動作し、階層の場所に関係なく、特定のキーの下にある配列やオブジェクトから一致するすべてのキーを取得します。 構文は ​`..myKey`​ です。例については、「​[子孫セレクター (​`..myKey`​)](#descendants)​」を参照してください。 インデックス (​`[]`​) 配列の指定したインデックスの値を返します。たとえば、​`["a","b","c"][0]`​ の最後の ​`[0]`​ は ​`"a"`​ を返します。例については、「​[インデックスセレクター (​`[anIndex]`​)](#index)​」を参照してください。 範囲 ​`[index1 to index2]`​ 選択したインデックスの値が含まれる配列を返します。たとえば、​`["a","b","c","d"][2 to 3]`​ の最後の ​`[2 to 3]`​ は ​`["c","d"]`​ を返します。例については、「​[範囲セレクター (​`anIndex to anotherIndex`​)](#range)​」を参照してください。 XML 属性 (​`.@myKey`​) XML 属性の選択したキーの値を返します。例については、「​[XML 属性セレクター (​`.@myKey`​)](#xml_attribute)​」を参照してください。 名前空間セレクター (​`myKey.#`​) 選択したキーも含まれる要素の ​`xmlns`​ 名前空間を返します。例については、「​[名前空間セレクター (​`#`​)](#namespace)​」を参照してください。 セレクター修飾子 (​`!`​ および ​`?`​) `?`​ および ​`!`​ は、指定したキーをチェックします。 `?`​ は、​`true`​ または ​`false`​ を返します。 `!`​ は、キーが存在しない場合にエラーを返します。例については、「​[セレクター修飾子 (​`!`​、​`?`​)](#selector_modifiers)​」を参照してください。 絞り込みセレクター (​`myKey[?(booleanExpression)]`​) ブール式で ​`true`​ が返されて、指定した ​`key`​ が存在する場合に、選択した項目を返します。式が false か、キーが存在しない場合、​`null`​ を返します。例については、「​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​」を参照してください。 メタデータセレクター ​`.^someMetadata`​ Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、クラス (​`.^class`​)、コンテンツ長 (​`.^contentLength`​)、エンコード (​`.^encoding`​)、MIME タイプ (​`.^mimeType`​)、メディア種別 (​`.^mediaType`​)、未加工 (​`.^raw`​)、カスタムメタデータ (​`.^myCustomMetadata`​) の値を返すことができます。詳細は、「​[メタデータセレクター (.^someMetadata)](#metadata_selector)​」を参照してください。 ## [](#キーおよびセレクターの構文)キーおよびセレクターの構文 DataWeave では、一部の状況ではオブジェクトのキーの名前を囲む引用符が必須ですが、それ以外は引用符は省略可能です。キーは識別子ではありませんが、キー名が、​[有効な識別子名](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-language-introduction#valid-identifiers)​の条件を満たす場合、キーを囲む引用符は省略可能です。キーがこの条件を満たさない場合、キーを引用符で囲む​_必要_​があります。たとえば、​`{ some-name : "somebody" }`​ のキー構文を修正するには、​`{ "some-name" : "somebody" }`​ または ​`{ 'some-name' : "somebody" }`​ を使用できます。引用符がない場合、​`{ some-name : "somebody" }`​ のキーでは ​`Invalid input '-', expected Namespace`​ というエラーが発生します。 引用符を必要とするキーでセレクターを使用している場合は、セレクターも引用符で囲む必要があります。たとえば、​`{ "some-name" : "somebody" }."some-name"`​ のセレクター ​`"some-name"`​ は正常に機能しますが、​`{ "some-name" : "somebody" }.some-name`​ のセレクター ​`some-name`​ では、セレクターが引用符で囲まれていないために ​`Unable to resolve reference of: name`​ というエラーが発生します。 引用符を必要としないキーでセレクターを使用している場合、セレクターを囲む引用符は省略可能です。たとえば、次の例はすべて正常に機能します。 - `{"name" : "somebody"}.name` - `{"name" : "somebody"}."name"` - `{name : "somebody"}.name` - `{name : "somebody"}."name"` ## [](#single_value)単一値セレクター (.myKey) `.myKey`​ セレクターは、オブジェクトや配列で動作し、一致するキーの値を返します。 ### [](#オブジェクトに対する単一値セレクター)オブジェクトに対する単一値セレクター オブジェクトの場合、単一値セレクターは一致するキーの値を返します。たとえば、次のスクリプトの ​`myObject.user`​ は ​`"a"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` DataWeave ​_オブジェクト_​ (配列ではない) を操作する場合、​`.`​ セレクターは、オブジェクトに複数の一致するキーがある場合でも、​_最初_​に一致したキーの値のみを返します。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a", "user" : "b" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` このような場合に複数の一致するキーの値を返す方法については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 次の例の ​`payload.people.person.address`​ は ​`address`​ 要素の値を返します。また、​`output`​ ディレクティブを使用して、JSON 入力を XML に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "size" : 1, "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- { myaddresses: myData.people.person.address } ``` 出力 XML: ```xml Italia 2164 San Isidro Martinez ``` ## [](#single_value_array)配列に対する単一値セレクター 配列で動作する場合、一致する値が 1 つのみの場合でも、​`.`​ セレクターは配列を返します。たとえば、​`["a":"b"]."a"`​ は ​`["b"]`​ を返します。 `.`​ セレクターの動作は、オブジェクトと配列で異なります。 `.*`​ と同様に、​`.`​ セレクターは、入力配列の指定したレベルで​_一致するすべてのキー_​の値が含まれる配列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.aString, myObjectExample : myArrayOfObjects.aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` 次の例では、入力変数 ​`myData`​ の値が、2 つのオブジェクトが含まれる配列になっています。セレクターは、両方のオブジェクトを移動し、両方の ​`street`​ キーの値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": [ { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } }, { "person": { "name": "Coty", "address": { "street": { "name": "Monroe", "number": 323 }, "area": { "zone": "BA", "name": "Belgrano" } } } } ] } output application/json --- myData.people.person.address.street ``` 出力 JSON: ```json [ { "name": "Italia", "number": 2164 }, { "name": "Monroe", "number": 323 } ] ``` ## [](#multi_value)複数値セレクター (​`.*`​) `.*`​ は、オブジェクトや配列をトラバースして、一致するすべてのキーの値を選択し、一致する結果を配列で返します。 ### [](#オブジェクトに対する複数値セレクター)オブジェクトに対する複数値セレクター `.*`​ は、キーが式に一致するすべての値が含まれる配列を返します。 次の例では、入力ペイロードのすべての ​`user`​ 要素の値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.users.*user ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro ``` 出力 JSON: ```json [ "Mariano", "Martin", "Leandro" ] ``` ### [](#配列に対する複数値セレクター)配列に対する複数値セレクター 配列では、​`.*`​ は単一値セレクター (​`.`​) と同じように動作します。たとえば、​`payload.people.person.address.*street`​ と ​`payload.people.person.address.street`​ (「​[配列に対する単一値セレクター](#single_value_array)​」の例) は同じ結果を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.*aString, myObjectExample : myArrayOfObjects.*aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` ## [](#descendants)子孫セレクター (​`..myKey`​) `..`​ セレクターは、配列やオブジェクトで動作します。 このセレクターは、​`..myKey`​ という形式を使用してコンテキストに適用され、選択したコンテキストのサブツリーの一致するすべてのキー - 値ペアの値を取得します。項目の階層構造に関係なく、出力は同じレベルで返されます。 この例では、入力データのツリーのカーディナリティに関係なく、キー ​`name`​ に一致するすべての項目が ​`names`​ というリストに配置されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { names: payload.people..name } ``` 入力 JSON ペイロード: ```json { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } ``` 出力 JSON: ```json { "names": [ "Nial", "Italia", "Martinez" ] } ``` ## [](#key_value)キー - 値ペアセレクター (​`.&myKey`​) `&`​ セレクターは、配列やオブジェクトで動作します。 `&`​ は、現在のコンテキスト内で一致するすべてのキーペアのキーと値の両方を取得します。これらは、取得されたキーと値が含まれるオブジェクトとして返されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { users: payload.users.&user } ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro Admin org_owner ``` 出力 XML: ```xml Mariano Martin Leandro ``` 複数値セレクターとは異なり、このセレクターの出力はオブジェクトになっており、各値の元のキーも抽出されています。 ### [](#すべての子孫のキー-値ペアの選択)すべての子孫のキー - 値ペアの選択 この例では、​`myVar.people..&name`​ の ​`..`​ および ​`&`​ セレクターを使用して、キー ​`name`​ が含まれる ​`myData`​ 入力のすべての子孫オブジェクトの配列を選択して返します。また、JSON 入力を XML 出力に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- names: {(myData.people..&name)} ``` 出力 XML: ```xml Nial Italia Martinez ``` ## [](#index)インデックスセレクター (​`[anIndex]`​) このインデックスセレクターは、指定した位置にある要素を返します。これは、配列、オブジェクト、文字列に対して適用できます。 ### [](#配列に対するインデックスセレクター)配列に対するインデックスセレクター このセレクターは、文字列リテラル、配列、オブジェクトに適用できます。オブジェクトの場合、インデックスの位置にあるキー - 値ペアの値が返されます。 配列の場合、要素の値が返されます。インデックスは、ゼロベースです。 1. インデックスが 0 以上の場合、カウントは最初から開始されます。 2. インデックスが負の場合、カウントは最後から開始されます (-1 は最後の要素)。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.people[1] ``` 入力 JSON ペイロード: ```json { "people": [ { "nameFirst": "Nial", "nameLast": "Martinez" }, { "nameFirst": "Coty", "nameLast": "Belgrano" } ] } ``` 出力 JSON: ```json { "nameFirst": "Coty", "nameLast": "Belgrano" } ``` ### [](#オブジェクトに対するインデックスセレクター)オブジェクトに対するインデックスセレクター セレクターは、指定した位置にあるキー - 値ペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload[1] ``` 入力 JSON ペイロード: ```json { "nameFirst": "Mark", "nameLast": "Nguyen" } ``` 出力 JSON: ```json "Nguyen" ``` ### [](#文字列に対するインデックスセレクター)文字列に対するインデックスセレクター 文字列でインデックスセレクターを使用する場合、文字列は配列に分解され、各文字がインデックスになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "MuleSoft"[0] } ``` 出力 JSON: ```json { "name": "M" } ``` セレクターは、文字列を文字の配列として処理し、特定の位置にある文字を選択します。 1. インデックスが 0 以上の場合、カウントは最初から開始されます。 2. インデックスが負の場合、カウントは最後から開始されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "Emiliano"[0] } ``` 出力 JSON: ```json { "name": "E" } ``` ## [](#range)範囲セレクター (​`anIndex to anotherIndex`​) `to`​ セレクターは、配列または文字列の一致するインデックスの値を返します。このセレクターを使用して、範囲内のインデックスの順序を反転させることもできます。セレクターは、文字列の文字をインデックスとして処理します。 - 配列のインデックスを選択: - `[1,2,3,4][0]`​ は ​`1`​ を返します。 配列の最初の要素のインデックスは常に ​`0`​ です。 - `[1,2,3,4][3]`​ は ​`4`​ を返します。 ### [](#配列に対する範囲セレクター)配列に対する範囲セレクター 範囲セレクターは、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、配列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: [0,1,2][0 to 1], last: [0,1,2][-1 to 0] } ``` 出力 JSON: ```json { "slice": [ 0, 1 ], "last": [ 2, 1, 0 ] } ``` ### [](#文字列に対する範囲セレクター)文字列に対する範囲セレクター 範囲セレクターは、文字列を文字の配列として処理し、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、文字列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: "DataWeave"[0 to 1], middle : "superfragilisticexpialadocious"[10 to 13], last: "DataWeave"[-1 to 0] } ``` 出力 JSON: ```json { "slice": "Da", "middle": "list", "last": "evaeWataD" } ``` ## [](#xml_attribute)XML 属性セレクター (​`.@myKey`​) `.@myKey`​ セレクターは、XML 要素の属性を選択します。 キー名なしで ​`.@`​ を使用すると、キー - 値ペアとして属性が含まれるオブジェクトが返されます。 この DataWeave の例では、XML サンプルを変数に読み取り、​`@`​ を使用して XML の属性を選択します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read(' SomeBrand ', 'application/xml') output application/json --- { item: [ { "type" : myVar.product.@."type", "name" : myVar.product.brand, "attributes": myVar.product.@ } ] } ``` 出力 JSON: ```json { "item": [ { "type": "electronic", "name": "SomeBrand", "attributes": { "id": "1", "type": "electronic" } } ] } ``` ## [](#namespace)名前空間セレクター (​`#`​) `#`​ は、選択したキーの XML 名前空間をプレーンテキストとして返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output text/plain --- payload.order.# ``` 入力 XML ペイロード: ```xml Mark 42 2017-01-04 ``` 出力テキスト: ```json "http://orders.company.com" ``` ## [](#selector_modifiers)セレクター修飾子 (​`!`​、​`?`​) 特定のキーの存在を確認できます。 - `!`​ は、選択したキーを評価し、キーが存在しない場合に例外メッセージを表示して失敗します。 - `?`​ は、選択したキーが存在する場合に ​`true`​ を返し、存在しない場合に ​`false`​ を返します。​`?`​ は、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​ でも使用されます。 ### [](#assert_present)アサートの存在検証機能 `!`​ は、指定したいずれかのキーがない場合にエラーを返します。 - `{ "name": "Annie" }.lastName!`​ は、​`There is no key named 'lastName'`​ というメッセージと共にエラーを返します。 - `!`​ を使用しない場合、​`{ "name": "Annie" }.lastName`​ は ​`null`​ を返します。 - キーが存在する場合 (​`{ "name": "Annie" }.name!`​)、結果は ​`"Annie"`​ になります。 ### [](#key_present)キーの存在検証機能 指定したキーがオブジェクトに存在する場合や、XML 要素の属性として存在する場合、​`true`​ を返します。 この例では、​`name`​ キーが存在するため ​`true`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- present: payload.name? ``` 入力 JSON ペイロード: ```json { "name": "Annie" } ``` 出力 XML: ```xml true ``` `?`​ は、XML 属性でも動作します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { item: { typePresent : payload.product.@."type"? } } ``` 入力 XML ペイロード: ```xml Samsung ``` 出力 JSON: ```json { "item": { "typePresent": true } } ``` ## [](#filter_selectors)絞り込みセレクター (​`myKey[?($ == "aValue")]`​) `myKey[?($ == "aValue")]`​ は、配列またはオブジェクト内の一致するキーの値のみを返します。​`?`​ は、​[キーの存在検証機能](#key_present)​ でも使用されます。 一致するキー - 値ペアがない場合、結果は ​`null`​ になります。 次の例では、​`*.name`​ で返される ​`name`​ キーの配列を入力し、値 ​`"Mariano"`​ を使用して ​`name`​ キーをチェックします。また、一致しない値は除外します。​`$`​ は、選択したキーの値を参照します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?($ == "Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。式 ​`( 1 == 1 )`​ が true であるため、入力のすべてのキー-値ペアを返します。 `( 1 == 2 )`​ などの false 式は、​`null`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?( 1 == 1)] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Luis", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。​`mapObject`​ を使用して、入力オブジェクト全体を反復処理し、一致しないキー - 値ペアを除外して、一致するペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload mapObject { ($$) : $[?($=="Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": { "name": "Mariano", "name": "Mariano" } } ``` ## [](#metadata_selector)メタデータセレクター (.^someMetadata) Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、次のメタデータを返すことができます。 - コンテンツ長メタデータ: `.^contentLength`​ は、値が存在する場合に値のコンテンツの長さを返します。例については、「​[コンテンツ長メタデータセレクター (.^contentLength)](#caret_contentlength)​」を参照してください。 - クラスメタデータ: `.^class`​ は、Plain Old Java Object (POJO) のクラスを返します。たとえば、​`{ "string" : payload.string.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "string": "java.lang.String" }`​ を返します。​`{ "date" : payload.date.^class }`​ は ​`{ "date": "java.util.Date" }`​ を返します。 例については、「​[クラスメタデータセレクター (.^class)](#caret_class)​」を参照してください。 - エンコードメタデータ: `.^encoding`​ は値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。例については、「​[エンコードメタデータセレクター (.^encoding)](#caret_encoding)​」を参照してください。 - メディア種別セレクター: `.^mediaType`​ はパラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。例については、「​[メディア種別メタデータセレクター (.^mediaType)](#caret_mediatype)​」を参照してください。 - MIME タイプメタデータ: `.^mimeType`​ はパラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。例については、「​[MIME タイプメタデータセレクター (.^mimeType)](#caret_mimetype)​」を参照してください。 - 未加工メタデータ: `.^raw`​ は、Plain Old Java Object (POJO) の基盤となるデータ (通常はバイナリ値) を返します。このセレクターは、中間者攻撃をチェックするときの MD5 ハッシュの計算で使用されることがあります。 例については、「​[未加工メタデータセレクター (.^raw)](#caret_raw)​」を参照してください。 - カスタムメタデータ: `.^myCustomMetadata`​ はカスタムメタデータの値を返します。 例については、「​[カスタムメタデータセレクター (.^myCustomMetadata)](#caret_custom_metadata)​」を参照してください。 ### [](#caret_contentlength)コンテンツ長メタデータセレクター (.^contentLength) 値が存在する場合に値のコンテンツの長さを返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^contentLength`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された文字列 ​`my string`​ の長さを選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、入力文字列 (​`my string`​) の長さが 11 (​`9`​) 文字であることが示されます。この長さには、文字列の空白スペースが含まれています。 Anypoint Studio のコンソール出力 ```txt INFO 2019-05-07 16:59:33,690 [[MuleRuntime].cpuLight.07: [carets].caretsFlow.CPU_LITE @39f1dbde] [event: 28ce97a0-7124-11e9-acfe-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 11 ``` ### [](#caret_class)クラスメタデータセレクター (.^class) Plain Old Java Object (POJO) のクラスを返します。値は Java クラスのメソッドのコールの結果として生成されます。また、DataWeave で Java 値として処理されるデータ型 (​`String`​ や ​`DateTime`​ など) が含まれることもあります。次に例を示します。 - `{ "string" : payload.mystring.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "mystring": "java.lang.String" }`​ を返します。 - `{ "mydate" : payload.mydate.^class }`​ は ​`{ "mydate": "java.util.Date" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^class`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された Java クラス ​`"my string"`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列がクラス ​`java.lang.String`​ に属していることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:10:03,075 [[MuleRuntime].cpuLight.08: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @6447187e] [event: 6da29400-63c1-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: java.lang.String ``` ### [](#caret_encoding)エンコードメタデータセレクター (.^encoding) 値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^encoding`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたエンコード ​`"my string"`​ を選択します。 Scheduler (​`scheduler`​) コンポーネントは、定期的に新しい Mule イベントを生成して、Set Payload で設定されたペイロードを保持するイベントソースです。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列に ​`UTF-8`​ エンコードが含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:14:24,222 [[MuleRuntime].cpuLight.03: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @62bea6a6] [event: 0938bf70-63c2-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: UTF-8 ``` ### [](#caret_mediatype)メディア種別メタデータセレクター (.^mediaType) パラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたメディア種別 ​`2014-10-12T11:11:19-00:03`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、​`DateTime`​ ペイロードに ​`application/java; charset=UTF-8`​ メディア種別が含まれていることが示されます。 Anypoint Studio のコンソール出力 INFO 2019-04-20 16:41:01,276 \[\[MuleRuntime\].cpuLight.04: \[setpayloadobject\].setpayloadobjectFlow.CPU\_LITE @7e991c71\] \[event: c0e96860-63c5-11e9-bcff-8c8590a99d48\] rg.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列にメディア種別 ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列にメディア種別 ​`application/java; charset=UTF-8`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:52:50,801 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 16:52:51,085 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 ``` ### [](#caret_mimetype)MIME タイプメタデータセレクター (.^mimeType) パラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mimeType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列に MIME タイプ ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列に MIME タイプ ​`application/java`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 17:02:07,762 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 17:02:08,029 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java ``` ### [](#caret_raw)未加工メタデータセレクター (.^raw) POJO の基盤となるバイナリ値を返します。このセレクターは、中間者 (MITM) 攻撃をチェックするための MD5 やその他の暗号化ハッシュ関数の計算で使用されることがあります。 次の例では、Set Payload コンポーネント (​`set-payload`​) を使用してバイナリ値を生成し、Transform Message コンポーネント (​`ee:transform`​) を使用してバイナリ値の MD5 の未加工データ (​`MD5(payload.^raw)`​) を返します。また、Logger コンポーネント (​`logger`​) は、未加工データを Studio コンソールに書き込むように設定されます。比較のために、2 番目のロガーは標準 JSON 形式の一般的な ​`payload`​ を返します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` ロガーメッセージの未加工出力では、標準 JSON 出力が生成されずに、ペイロード全体が二重引用符で囲まれ、新しい行ごとに改行文字 (​`\n`​) が挿入されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-22 14:10:14,537 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "{\n "myRawData": "5403e5a202c594871d59898b13054be5"\n}" INFO 2019-04-22 14:10:14,540 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "myRawData": "5403e5a202c594871d59898b13054be5" } ``` 次の例では、HTTP Listener ソース (​`listener`​) を使用して、POST 要求を介して受け取った XML ペイロードを取得した後、Transform Message コンポーネント (​`ee:transform`​) を使用して、未加工データ (​`(payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)`​) を返すことで XML ペイロードのエンコード値を取得します。Logger コンポーネント (​`logger`​) では、​`payload`​ が JAVA 形式で返されます。 Anypoint Studio の Mule アプリケーション XML ```XML ``` お気に入りの REST クライアントまたは API テストツールを使用して、次の XML 本文を含む POST 要求を送信します。 ```XML ``` ロガーメッセージでは、抽出されたエンコード値 ​`ISO-8859-1`​ が返されます。 Anypoint Studio のコンソール出力 ```txt INFO 2021-05-12 12:25:41,618 [[MuleRuntime].uber.03: [xmlmodule].Flow.CPU_INTENSIVE @de48fc8] [processor: Flow/processors/2; event: 4fe7f6a0-b336-11eb-909c-f01898ad2638] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: ISO-8859-1 ``` ### [](#caret_custom_metadata)カスタムメタデータセレクター (.^myCustomMetadata) カスタムメタデータの値を返します。メタデータは、​`as`​ 演算子を使用して任意の値に関連付けることができます。 次の例では、​`userName.^myCustomMetadata`​ を使用して、スクリプトのヘッダーで変数 ​`userName`​ として定義されているカスタムメタデータの値を DataWeave スクリプトとして返します。比較のために、この例では ​`userName`​ の値も返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var userName = "DataWeave" as String {myCustomMetadata: "customMetadataValue"} --- { "valueOfVariableMetaData" : userName.^myCustomMetadata, "valueOfVariable" : userName, } ``` スクリプトの出力は、​`"customMetadataValue"`​ (カスタムメタデータの値) と ​`"DataWeave"`​ (​`userName`​ 変数の値) です。 出力 JSON: ```json { "valueOfVariableMetaData": "customMetadataValue", "valueOfVariable": "DataWeave" } ``` ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-quickstart) - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # データの抽出 DataWeave は、データを DataWeave オブジェクトや配列、そのデータを保存する変数、および DataWeave 関数の出力 (その出力が配列またはオブジェクトの場合) から選択できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 より正確に言えば、DataWeave セレクターは、データを保存する変数、オブジェクトリテラル、配列リテラル、DataWeave 関数の呼び出しへの参照になるコンテキスト内で動作します。DataWeave 式を使用できる Mule モジュール、コネクタ、コンポーネントのセレクターを使用できます。 DataWeave は、セレクターを処理するときに後続のセレクターの新しいコンテキスト (スコープ) を設定するため、セレクターのチェーンを使用して配列やオブジェクトの複雑な構造を移動できます。選択の深さは、現在のコンテキストの深さに制限されます。 サポートされている変数参照は、​`payload`​ や ​`attributes`​ などの ​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables-context)​と、配列またはオブジェクトを保存する ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-variables)​です。簡単な例として ​`payload.myKey`​ が挙げられます。payload はオブジェクト ​`{"myKey" : 1234 }`​ であるため、結果は ​`1234`​ になります。 セレクターは、DataWeave ​`read`​ などの関数の呼び出しで動作します。たとえば、​`read('{"A":"B"}','application/json')."A"`​ は ​`"B"`​ を返します。 ## [](#dataweave-配列やオブジェクトでのセレクターの使用)DataWeave 配列やオブジェクトでのセレクターの使用 DataWeave のセレクターは、DataWeave オブジェクト (​`{ myKey : "myValue" }`​ など) または配列 (​`[1,2,3,4]`​ や ​`[ { "myKey" : "1234" }, { "name" : "somebody" } ]`​ など) 内から値を抽出します。 次の DataWeave スクリプトでは、単一値セレクター (​`.`​) を使用して、変数 ​`myObject`​ と ​`myArray`​ で定義されたオブジェクトと配列から値を取得します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { "myKey" : "1234", "name" : "somebody" } var myArray = [ { "myKey" : "1234" }, { "name" : "somebody" } ] output application/json --- { selectingValueUsingKeyInObject : myObject.name, selectingValueUsingKeyOfObjectInArray : myArray.name, } ``` 出力 JSON: ```json { "selectingValueUsingKeyInObject": "somebody", "selectingValueUsingKeyOfObjectInArray": [ "somebody" ] } ``` 出力は次のようになります。 - `myObject.name`​ は、値 ​`"somebody"`​ を返します。 - `myArray.name`​ は、配列 ​`[ "somebody" ]`​ を返します。 ## [](#セレクタークイックリファレンス)セレクタークイックリファレンス 単一値 (​`.`​) 配列やオブジェクトで動作し、一致するキーの値を返します。構文は ​`.myKey`​ です。DataWeave ​_オブジェクト_​の重複キーの値を取得するには、代わりに ​`*`​ を使用します。例については、「​[単一値セレクター (.myKey)](#single_value)​」を参照してください。 複数値 (​`*`​) 配列やオブジェクトで動作し、データ構造の階層の単一レベルで一致するすべてのキーの値を取得します。構文は ​`*myKey`​ です。階層の下位レベルのすべての重複キーの値を取得する場合は、代わりに子孫セレクター (​`..`​) を使用します。例については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 キー-値ペア (​`&`​) 配列やオブジェクトで動作します。このセレクターは、DataWeave オブジェクトの値を返す代わりに DataWeave オブジェクト全体 (キーと値) を返します。 構文は ​`.&myKey`​ です。例については、「​[キー - 値ペアセレクター (​`.&myKey`​)](#key_value)​」を参照してください。 子孫 (​`..`​) 配列やオブジェクトで動作し、階層の場所に関係なく、特定のキーの下にある配列やオブジェクトから一致するすべてのキーを取得します。 構文は ​`..myKey`​ です。例については、「​[子孫セレクター (​`..myKey`​)](#descendants)​」を参照してください。 インデックス (​`[]`​) 配列の指定したインデックスの値を返します。たとえば、​`["a","b","c"][0]`​ の最後の ​`[0]`​ は ​`"a"`​ を返します。例については、「​[インデックスセレクター (​`[anIndex]`​)](#index)​」を参照してください。 範囲 ​`[index1 to index2]`​ 選択したインデックスの値が含まれる配列を返します。たとえば、​`["a","b","c","d"][2 to 3]`​ の最後の ​`[2 to 3]`​ は ​`["c","d"]`​ を返します。例については、「​[範囲セレクター (​`anIndex to anotherIndex`​)](#range)​」を参照してください。 XML 属性 (​`.@myKey`​) XML 属性の選択したキーの値を返します。例については、「​[XML 属性セレクター (​`.@myKey`​)](#xml_attribute)​」を参照してください。 名前空間セレクター (​`myKey.#`​) 選択したキーも含まれる要素の ​`xmlns`​ 名前空間を返します。例については、「​[名前空間セレクター (​`#`​)](#namespace)​」を参照してください。 セレクター修飾子 (​`!`​ および ​`?`​) `?`​ および ​`!`​ は、指定したキーをチェックします。 `?`​ は、​`true`​ または ​`false`​ を返します。 `!`​ は、キーが存在しない場合にエラーを返します。例については、「​[セレクター修飾子 (​`!`​、​`?`​)](#selector_modifiers)​」を参照してください。 絞り込みセレクター (​`myKey[?(booleanExpression)]`​) ブール式で ​`true`​ が返されて、指定した ​`key`​ が存在する場合に、選択した項目を返します。式が false か、キーが存在しない場合、​`null`​ を返します。例については、「​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​」を参照してください。 メタデータセレクター ​`.^someMetadata`​ Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、クラス (​`.^class`​)、コンテンツ長 (​`.^contentLength`​)、エンコード (​`.^encoding`​)、MIME タイプ (​`.^mimeType`​)、メディア種別 (​`.^mediaType`​)、未加工 (​`.^raw`​)、カスタムメタデータ (​`.^myCustomMetadata`​) の値を返すことができます。詳細は、「​[メタデータセレクター (.^someMetadata)](#metadata_selector)​」を参照してください。 ## [](#キーおよびセレクターの構文)キーおよびセレクターの構文 DataWeave では、一部の状況ではオブジェクトのキーの名前を囲む引用符が必須ですが、それ以外は引用符は省略可能です。キーは識別子ではありませんが、キー名が、​[有効な識別子名](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-language-introduction#valid-identifiers)​の条件を満たす場合、キーを囲む引用符は省略可能です。キーがこの条件を満たさない場合、キーを引用符で囲む​_必要_​があります。たとえば、​`{ some-name : "somebody" }`​ のキー構文を修正するには、​`{ "some-name" : "somebody" }`​ または ​`{ 'some-name' : "somebody" }`​ を使用できます。引用符がない場合、​`{ some-name : "somebody" }`​ のキーでは ​`Invalid input '-', expected Namespace`​ というエラーが発生します。 引用符を必要とするキーでセレクターを使用している場合は、セレクターも引用符で囲む必要があります。たとえば、​`{ "some-name" : "somebody" }."some-name"`​ のセレクター ​`"some-name"`​ は正常に機能しますが、​`{ "some-name" : "somebody" }.some-name`​ のセレクター ​`some-name`​ では、セレクターが引用符で囲まれていないために ​`Unable to resolve reference of: name`​ というエラーが発生します。 引用符を必要としないキーでセレクターを使用している場合、セレクターを囲む引用符は省略可能です。たとえば、次の例はすべて正常に機能します。 - `{"name" : "somebody"}.name` - `{"name" : "somebody"}."name"` - `{name : "somebody"}.name` - `{name : "somebody"}."name"` ## [](#single_value)単一値セレクター (.myKey) `.myKey`​ セレクターは、オブジェクトや配列で動作し、一致するキーの値を返します。 ### [](#オブジェクトに対する単一値セレクター)オブジェクトに対する単一値セレクター オブジェクトの場合、単一値セレクターは一致するキーの値を返します。たとえば、次のスクリプトの ​`myObject.user`​ は ​`"a"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` DataWeave ​_オブジェクト_​ (配列ではない) を操作する場合、​`.`​ セレクターは、オブジェクトに複数の一致するキーがある場合でも、​_最初_​に一致したキーの値のみを返します。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a", "user" : "b" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` このような場合に複数の一致するキーの値を返す方法については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 次の例の ​`payload.people.person.address`​ は ​`address`​ 要素の値を返します。また、​`output`​ ディレクティブを使用して、JSON 入力を XML に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "size" : 1, "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- { myaddresses: myData.people.person.address } ``` 出力 XML: ```xml Italia 2164 San Isidro Martinez ``` ## [](#single_value_array)配列に対する単一値セレクター 配列で動作する場合、一致する値が 1 つのみの場合でも、​`.`​ セレクターは配列を返します。たとえば、​`["a":"b"]."a"`​ は ​`["b"]`​ を返します。 `.`​ セレクターの動作は、オブジェクトと配列で異なります。 `.*`​ と同様に、​`.`​ セレクターは、入力配列の指定したレベルで​_一致するすべてのキー_​の値が含まれる配列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.aString, myObjectExample : myArrayOfObjects.aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` 次の例では、入力変数 ​`myData`​ の値が、2 つのオブジェクトが含まれる配列になっています。セレクターは、両方のオブジェクトを移動し、両方の ​`street`​ キーの値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": [ { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } }, { "person": { "name": "Coty", "address": { "street": { "name": "Monroe", "number": 323 }, "area": { "zone": "BA", "name": "Belgrano" } } } } ] } output application/json --- myData.people.person.address.street ``` 出力 JSON: ```json [ { "name": "Italia", "number": 2164 }, { "name": "Monroe", "number": 323 } ] ``` ## [](#multi_value)複数値セレクター (​`.*`​) `.*`​ は、オブジェクトや配列をトラバースして、一致するすべてのキーの値を選択し、一致する結果を配列で返します。 ### [](#オブジェクトに対する複数値セレクター)オブジェクトに対する複数値セレクター `.*`​ は、キーが式に一致するすべての値が含まれる配列を返します。 次の例では、入力ペイロードのすべての ​`user`​ 要素の値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.users.*user ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro ``` 出力 JSON: ```json [ "Mariano", "Martin", "Leandro" ] ``` ### [](#配列に対する複数値セレクター)配列に対する複数値セレクター 配列では、​`.*`​ は単一値セレクター (​`.`​) と同じように動作します。たとえば、​`payload.people.person.address.*street`​ と ​`payload.people.person.address.street`​ (「​[配列に対する単一値セレクター](#single_value_array)​」の例) は同じ結果を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.*aString, myObjectExample : myArrayOfObjects.*aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` ## [](#descendants)子孫セレクター (​`..myKey`​) `..`​ セレクターは、配列やオブジェクトで動作します。 このセレクターは、​`..myKey`​ という形式を使用してコンテキストに適用され、選択したコンテキストのサブツリーの一致するすべてのキー - 値ペアの値を取得します。項目の階層構造に関係なく、出力は同じレベルで返されます。 この例では、入力データのツリーのカーディナリティに関係なく、キー ​`name`​ に一致するすべての項目が ​`names`​ というリストに配置されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { names: payload.people..name } ``` 入力 JSON ペイロード: ```json { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } ``` 出力 JSON: ```json { "names": [ "Nial", "Italia", "Martinez" ] } ``` ## [](#key_value)キー - 値ペアセレクター (​`.&myKey`​) `&`​ セレクターは、配列やオブジェクトで動作します。 `&`​ は、現在のコンテキスト内で一致するすべてのキーペアのキーと値の両方を取得します。これらは、取得されたキーと値が含まれるオブジェクトとして返されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { users: payload.users.&user } ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro Admin org_owner ``` 出力 XML: ```xml Mariano Martin Leandro ``` 複数値セレクターとは異なり、このセレクターの出力はオブジェクトになっており、各値の元のキーも抽出されています。 ### [](#すべての子孫のキー-値ペアの選択)すべての子孫のキー - 値ペアの選択 この例では、​`myVar.people..&name`​ の ​`..`​ および ​`&`​ セレクターを使用して、キー ​`name`​ が含まれる ​`myData`​ 入力のすべての子孫オブジェクトの配列を選択して返します。また、JSON 入力を XML 出力に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- names: {(myData.people..&name)} ``` 出力 XML: ```xml Nial Italia Martinez ``` ## [](#index)インデックスセレクター (​`[anIndex]`​) このインデックスセレクターは、指定した位置にある要素を返します。これは、配列、オブジェクト、文字列に対して適用できます。 ### [](#配列に対するインデックスセレクター)配列に対するインデックスセレクター このセレクターは、文字列リテラル、配列、オブジェクトに適用できます。オブジェクトの場合、インデックスの位置にあるキー - 値ペアの値が返されます。 配列の場合、要素の値が返されます。インデックスは、ゼロベースです。 1. インデックスが 0 以上の場合、カウントは最初から開始されます。 2. インデックスが負の場合、カウントは最後から開始されます (-1 は最後の要素)。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.people[1] ``` 入力 JSON ペイロード: ```json { "people": [ { "nameFirst": "Nial", "nameLast": "Martinez" }, { "nameFirst": "Coty", "nameLast": "Belgrano" } ] } ``` 出力 JSON: ```json { "nameFirst": "Coty", "nameLast": "Belgrano" } ``` ### [](#オブジェクトに対するインデックスセレクター)オブジェクトに対するインデックスセレクター セレクターは、指定した位置にあるキー - 値ペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload[1] ``` 入力 JSON ペイロード: ```json { "nameFirst": "Mark", "nameLast": "Nguyen" } ``` 出力 JSON: ```json "Nguyen" ``` ### [](#文字列に対するインデックスセレクター)文字列に対するインデックスセレクター 文字列でインデックスセレクターを使用する場合、文字列は配列に分解され、各文字がインデックスになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "MuleSoft"[0] } ``` 出力 JSON: ```json { "name": "M" } ``` セレクターは、文字列を文字の配列として処理し、特定の位置にある文字を選択します。 1. インデックスが 0 以上の場合、カウントは最初から開始されます。 2. インデックスが負の場合、カウントは最後から開始されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "Emiliano"[0] } ``` 出力 JSON: ```json { "name": "E" } ``` ## [](#range)範囲セレクター (​`anIndex to anotherIndex`​) `to`​ セレクターは、配列または文字列の一致するインデックスの値を返します。このセレクターを使用して、範囲内のインデックスの順序を反転させることもできます。セレクターは、文字列の文字をインデックスとして処理します。 - 配列のインデックスを選択: - `[1,2,3,4][0]`​ は ​`1`​ を返します。 配列の最初の要素のインデックスは常に ​`0`​ です。 - `[1,2,3,4][3]`​ は ​`4`​ を返します。 ### [](#配列に対する範囲セレクター)配列に対する範囲セレクター 範囲セレクターは、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、配列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: [0,1,2][0 to 1], last: [0,1,2][-1 to 0] } ``` 出力 JSON: ```json { "slice": [ 0, 1 ], "last": [ 2, 1, 0 ] } ``` ### [](#文字列に対する範囲セレクター)文字列に対する範囲セレクター 範囲セレクターは、文字列を文字の配列として処理し、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、文字列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: "DataWeave"[0 to 1], middle : "superfragilisticexpialadocious"[10 to 13], last: "DataWeave"[-1 to 0] } ``` 出力 JSON: ```json { "slice": "Da", "middle": "list", "last": "evaeWataD" } ``` ## [](#xml_attribute)XML 属性セレクター (​`.@myKey`​) `.@myKey`​ セレクターは、XML 要素の属性を選択します。 キー名なしで ​`.@`​ を使用すると、キー - 値ペアとして属性が含まれるオブジェクトが返されます。 この DataWeave の例では、XML サンプルを変数に読み取り、​`@`​ を使用して XML の属性を選択します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read(' SomeBrand ', 'application/xml') output application/json --- { item: [ { "type" : myVar.product.@."type", "name" : myVar.product.brand, "attributes": myVar.product.@ } ] } ``` 出力 JSON: ```json { "item": [ { "type": "electronic", "name": "SomeBrand", "attributes": { "id": "1", "type": "electronic" } } ] } ``` ## [](#namespace)名前空間セレクター (​`#`​) `#`​ は、選択したキーの XML 名前空間をプレーンテキストとして返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output text/plain --- payload.order.# ``` 入力 XML ペイロード: ```xml Mark 42 2017-01-04 ``` 出力テキスト: ```json "http://orders.company.com" ``` ## [](#selector_modifiers)セレクター修飾子 (​`!`​、​`?`​) 特定のキーの存在を確認できます。 - `!`​ は、選択したキーを評価し、キーが存在しない場合に例外メッセージを表示して失敗します。 - `?`​ は、選択したキーが存在する場合に ​`true`​ を返し、存在しない場合に ​`false`​ を返します。​`?`​ は、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​ でも使用されます。 ### [](#assert_present)アサートの存在検証機能 `!`​ は、指定したいずれかのキーがない場合にエラーを返します。 - `{ "name": "Annie" }.lastName!`​ は、​`There is no key named 'lastName'`​ というメッセージと共にエラーを返します。 - `!`​ を使用しない場合、​`{ "name": "Annie" }.lastName`​ は ​`null`​ を返します。 - キーが存在する場合 (​`{ "name": "Annie" }.name!`​)、結果は ​`"Annie"`​ になります。 ### [](#key_present)キーの存在検証機能 指定したキーがオブジェクトに存在する場合や、XML 要素の属性として存在する場合、​`true`​ を返します。 この例では、​`name`​ キーが存在するため ​`true`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- present: payload.name? ``` 入力 JSON ペイロード: ```json { "name": "Annie" } ``` 出力 XML: ```xml true ``` `?`​ は、XML 属性でも動作します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { item: { typePresent : payload.product.@."type"? } } ``` 入力 XML ペイロード: ```xml Samsung ``` 出力 JSON: ```json { "item": { "typePresent": true } } ``` ## [](#filter_selectors)絞り込みセレクター (​`myKey[?($ == "aValue")]`​) `myKey[?($ == "aValue")]`​ は、配列またはオブジェクト内の一致するキーの値のみを返します。​`?`​ は、​[キーの存在検証機能](#key_present)​ でも使用されます。 一致するキー - 値ペアがない場合、結果は ​`null`​ になります。 次の例では、​`*.name`​ で返される ​`name`​ キーの配列を入力し、値 ​`"Mariano"`​ を使用して ​`name`​ キーをチェックします。また、一致しない値は除外します。​`$`​ は、選択したキーの値を参照します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?($ == "Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。式 ​`( 1 == 1 )`​ が true であるため、入力のすべてのキー-値ペアを返します。 `( 1 == 2 )`​ などの false 式は、​`null`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?( 1 == 1)] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Luis", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。​`mapObject`​ を使用して、入力オブジェクト全体を反復処理し、一致しないキー - 値ペアを除外して、一致するペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload mapObject { ($$) : $[?($=="Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": { "name": "Mariano", "name": "Mariano" } } ``` ## [](#metadata_selector)メタデータセレクター (.^someMetadata) Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、次のメタデータを返すことができます。 - コンテンツ長メタデータ: `.^contentLength`​ は、値が存在する場合に値のコンテンツの長さを返します。例については、「​[コンテンツ長メタデータセレクター (.^contentLength)](#caret_contentlength)​」を参照してください。 - クラスメタデータ: `.^class`​ は、Plain Old Java Object (POJO) のクラスを返します。たとえば、​`{ "string" : payload.string.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "string": "java.lang.String" }`​ を返します。​`{ "date" : payload.date.^class }`​ は ​`{ "date": "java.util.Date" }`​ を返します。 例については、「​[クラスメタデータセレクター (.^class)](#caret_class)​」を参照してください。 - エンコードメタデータ: `.^encoding`​ は値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。例については、「​[エンコードメタデータセレクター (.^encoding)](#caret_encoding)​」を参照してください。 - メディア種別セレクター: `.^mediaType`​ はパラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。例については、「​[メディア種別メタデータセレクター (.^mediaType)](#caret_mediatype)​」を参照してください。 - MIME タイプメタデータ: `.^mimeType`​ はパラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。例については、「​[MIME タイプメタデータセレクター (.^mimeType)](#caret_mimetype)​」を参照してください。 - 未加工メタデータ: `.^raw`​ は、Plain Old Java Object (POJO) の基盤となるデータ (通常はバイナリ値) を返します。このセレクターは、中間者攻撃をチェックするときの MD5 ハッシュの計算で使用されることがあります。 例については、「​[未加工メタデータセレクター (.^raw)](#caret_raw)​」を参照してください。 - カスタムメタデータ: `.^myCustomMetadata`​ はカスタムメタデータの値を返します。 例については、「​[カスタムメタデータセレクター (.^myCustomMetadata)](#caret_custom_metadata)​」を参照してください。 ### [](#caret_contentlength)コンテンツ長メタデータセレクター (.^contentLength) 値が存在する場合に値のコンテンツの長さを返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^contentLength`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された文字列 ​`my string`​ の長さを選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、入力文字列 (​`my string`​) の長さが 11 (​`9`​) 文字であることが示されます。この長さには、文字列の空白スペースが含まれています。 Anypoint Studio のコンソール出力 ```txt INFO 2019-05-07 16:59:33,690 [[MuleRuntime].cpuLight.07: [carets].caretsFlow.CPU_LITE @39f1dbde] [event: 28ce97a0-7124-11e9-acfe-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 11 ``` ### [](#caret_class)クラスメタデータセレクター (.^class) Plain Old Java Object (POJO) のクラスを返します。値は Java クラスのメソッドのコールの結果として生成されます。また、DataWeave で Java 値として処理されるデータ型 (​`String`​ や ​`DateTime`​ など) が含まれることもあります。次に例を示します。 - `{ "string" : payload.mystring.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "mystring": "java.lang.String" }`​ を返します。 - `{ "mydate" : payload.mydate.^class }`​ は ​`{ "mydate": "java.util.Date" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^class`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された Java クラス ​`"my string"`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列がクラス ​`java.lang.String`​ に属していることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:10:03,075 [[MuleRuntime].cpuLight.08: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @6447187e] [event: 6da29400-63c1-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: java.lang.String ``` ### [](#caret_encoding)エンコードメタデータセレクター (.^encoding) 値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^encoding`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたエンコード ​`"my string"`​ を選択します。 Scheduler (​`scheduler`​) コンポーネントは、定期的に新しい Mule イベントを生成して、Set Payload で設定されたペイロードを保持するイベントソースです。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列に ​`UTF-8`​ エンコードが含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:14:24,222 [[MuleRuntime].cpuLight.03: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @62bea6a6] [event: 0938bf70-63c2-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: UTF-8 ``` ### [](#caret_mediatype)メディア種別メタデータセレクター (.^mediaType) パラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたメディア種別 ​`2014-10-12T11:11:19-00:03`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、​`DateTime`​ ペイロードに ​`application/java; charset=UTF-8`​ メディア種別が含まれていることが示されます。 Anypoint Studio のコンソール出力 INFO 2019-04-20 16:41:01,276 \[\[MuleRuntime\].cpuLight.04: \[setpayloadobject\].setpayloadobjectFlow.CPU\_LITE @7e991c71\] \[event: c0e96860-63c5-11e9-bcff-8c8590a99d48\] rg.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列にメディア種別 ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列にメディア種別 ​`application/java; charset=UTF-8`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:52:50,801 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 16:52:51,085 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 ``` ### [](#caret_mimetype)MIME タイプメタデータセレクター (.^mimeType) パラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mimeType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列に MIME タイプ ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列に MIME タイプ ​`application/java`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 17:02:07,762 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 17:02:08,029 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java ``` ### [](#caret_raw)未加工メタデータセレクター (.^raw) POJO の基盤となるバイナリ値を返します。このセレクターは、中間者 (MITM) 攻撃をチェックするための MD5 やその他の暗号化ハッシュ関数の計算で使用されることがあります。 次の例では、Set Payload コンポーネント (​`set-payload`​) を使用してバイナリ値を生成し、Transform Message コンポーネント (​`ee:transform`​) を使用してバイナリ値の MD5 の未加工データ (​`MD5(payload.^raw)`​) を返します。また、Logger コンポーネント (​`logger`​) は、未加工データを Studio コンソールに書き込むように設定されます。比較のために、2 番目のロガーは標準 JSON 形式の一般的な ​`payload`​ を返します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` ロガーメッセージの未加工出力では、標準 JSON 出力が生成されずに、ペイロード全体が二重引用符で囲まれ、新しい行ごとに改行文字 (​`\n`​) が挿入されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-22 14:10:14,537 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "{\n "myRawData": "5403e5a202c594871d59898b13054be5"\n}" INFO 2019-04-22 14:10:14,540 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "myRawData": "5403e5a202c594871d59898b13054be5" } ``` 次の例では、HTTP Listener ソース (​`listener`​) を使用して、POST 要求を介して受け取った XML ペイロードを取得した後、Transform Message コンポーネント (​`ee:transform`​) を使用して、未加工データ (​`(payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)`​) を返すことで XML ペイロードのエンコード値を取得します。Logger コンポーネント (​`logger`​) では、​`payload`​ が JAVA 形式で返されます。 Anypoint Studio の Mule アプリケーション XML ```XML ``` お気に入りの REST クライアントまたは API テストツールを使用して、次の XML 本文を含む POST 要求を送信します。 ```XML ``` ロガーメッセージでは、抽出されたエンコード値 ​`ISO-8859-1`​ が返されます。 Anypoint Studio のコンソール出力 ```txt INFO 2021-05-12 12:25:41,618 [[MuleRuntime].uber.03: [xmlmodule].Flow.CPU_INTENSIVE @de48fc8] [processor: Flow/processors/2; event: 4fe7f6a0-b336-11eb-909c-f01898ad2638] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: ISO-8859-1 ``` ### [](#caret_custom_metadata)カスタムメタデータセレクター (.^myCustomMetadata) カスタムメタデータの値を返します。メタデータは、​`as`​ 演算子を使用して任意の値に関連付けることができます。 次の例では、​`userName.^myCustomMetadata`​ を使用して、スクリプトのヘッダーで変数 ​`userName`​ として定義されているカスタムメタデータの値を DataWeave スクリプトとして返します。比較のために、この例では ​`userName`​ の値も返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var userName = "DataWeave" as String {myCustomMetadata: "customMetadataValue"} --- { "valueOfVariableMetaData" : userName.^myCustomMetadata, "valueOfVariable" : userName, } ``` スクリプトの出力は、​`"customMetadataValue"`​ (カスタムメタデータの値) と ​`"DataWeave"`​ (​`userName`​ 変数の値) です。 出力 JSON: ```json { "valueOfVariableMetaData": "customMetadataValue", "valueOfVariable": "DataWeave" } ``` ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-quickstart) - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # データの抽出 DataWeave は、データを DataWeave オブジェクトや配列、そのデータを保存する変数、および DataWeave 関数の出力 (その出力が配列またはオブジェクトの場合) から選択できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 より正確に言えば、DataWeave セレクターは、データを保存する変数、オブジェクトリテラル、配列リテラル、DataWeave 関数の呼び出しへの参照になるコンテキスト内で動作します。DataWeave 式を使用できる Mule モジュール、コネクタ、コンポーネントのセレクターを使用できます。 DataWeave は、セレクターを処理するときに後続のセレクターの新しいコンテキスト (スコープ) を設定するため、セレクターのチェーンを使用して配列やオブジェクトの複雑な構造を移動できます。選択の深さは、現在のコンテキストの深さに制限されます。 サポートされている変数参照は、​`payload`​ や ​`attributes`​ などの ​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables-context)​と、配列またはオブジェクトを保存する ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-variables)​です。簡単な例として ​`payload.myKey`​ が挙げられます。payload はオブジェクト ​`{"myKey" : 1234 }`​ であるため、結果は ​`1234`​ になります。 セレクターは、DataWeave ​`read`​ などの関数の呼び出しで動作します。たとえば、​`read('{"A":"B"}','application/json')."A"`​ は ​`"B"`​ を返します。 ## [](#dataweave-配列やオブジェクトでのセレクターの使用)DataWeave 配列やオブジェクトでのセレクターの使用 DataWeave のセレクターは、DataWeave オブジェクト (​`{ myKey : "myValue" }`​ など) または配列 (​`[1,2,3,4]`​ や ​`[ { "myKey" : "1234" }, { "name" : "somebody" } ]`​ など) 内から値を抽出します。 次の DataWeave スクリプトでは、単一値セレクター (​`.`​) を使用して、変数 ​`myObject`​ と ​`myArray`​ で定義されたオブジェクトと配列から値を取得します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { "myKey" : "1234", "name" : "somebody" } var myArray = [ { "myKey" : "1234" }, { "name" : "somebody" } ] output application/json --- { selectingValueUsingKeyInObject : myObject.name, selectingValueUsingKeyOfObjectInArray : myArray.name, } ``` 出力 JSON: ```json { "selectingValueUsingKeyInObject": "somebody", "selectingValueUsingKeyOfObjectInArray": [ "somebody" ] } ``` 出力は次のようになります。 - `myObject.name`​ は、値 ​`"somebody"`​ を返します。 - `myArray.name`​ は、配列 ​`[ "somebody" ]`​ を返します。 ## [](#セレクタークイックリファレンス)セレクタークイックリファレンス 単一値 (​`.`​) 配列やオブジェクトで動作し、一致するキーの値を返します。構文は ​`.myKey`​ です。DataWeave ​_オブジェクト_​の重複キーの値を取得するには、代わりに ​`*`​ を使用します。例については、「​[単一値セレクター (.myKey)](#single_value)​」を参照してください。 複数値 (​`*`​) 配列やオブジェクトで動作し、データ構造の階層の単一レベルで一致するすべてのキーの値を取得します。構文は ​`*myKey`​ です。階層の下位レベルのすべての重複キーの値を取得する場合は、代わりに子孫セレクター (​`..`​) を使用します。例については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 キー-値ペア (​`&`​) 配列やオブジェクトで動作します。このセレクターは、DataWeave オブジェクトの値を返す代わりに DataWeave オブジェクト全体 (キーと値) を返します。 構文は ​`.&myKey`​ です。例については、「​[キー - 値ペアセレクター (​`.&myKey`​)](#key_value)​」を参照してください。 子孫 (​`..`​) 配列やオブジェクトで動作し、階層の場所に関係なく、特定のキーの下にある配列やオブジェクトから一致するすべてのキーを取得します。 構文は ​`..myKey`​ です。例については、「​[子孫セレクター (​`..myKey`​)](#descendants)​」を参照してください。 インデックス (​`[]`​) 配列の指定したインデックスの値を返します。たとえば、​`["a","b","c"][0]`​ の最後の ​`[0]`​ は ​`"a"`​ を返します。例については、「​[インデックスセレクター (​`[anIndex]`​)](#index)​」を参照してください。 範囲 ​`[index1 to index2]`​ 選択したインデックスの値が含まれる配列を返します。たとえば、​`["a","b","c","d"][2 to 3]`​ の最後の ​`[2 to 3]`​ は ​`["c","d"]`​ を返します。例については、「​[範囲セレクター (​`anIndex to anotherIndex`​)](#range)​」を参照してください。 XML 属性 (​`.@myKey`​) XML 属性の選択したキーの値を返します。例については、「​[XML 属性セレクター (​`.@myKey`​)](#xml_attribute)​」を参照してください。 名前空間セレクター (​`myKey.#`​) 選択したキーも含まれる要素の ​`xmlns`​ 名前空間を返します。例については、「​[名前空間セレクター (​`#`​)](#namespace)​」を参照してください。 セレクター修飾子 (​`!`​ および ​`?`​) `?`​ および ​`!`​ は、指定したキーをチェックします。 `?`​ は、​`true`​ または ​`false`​ を返します。 `!`​ は、キーが存在しない場合にエラーを返します。例については、「​[セレクター修飾子 (​`!`​、​`?`​)](#selector_modifiers)​」を参照してください。 絞り込みセレクター (​`myKey[?(booleanExpression)]`​) ブール式で ​`true`​ が返されて、指定した ​`key`​ が存在する場合に、選択した項目を返します。式が false か、キーが存在しない場合、​`null`​ を返します。例については、「​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​」を参照してください。 メタデータセレクター ​`.^someMetadata`​ Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、クラス (​`.^class`​)、コンテンツ長 (​`.^contentLength`​)、エンコード (​`.^encoding`​)、MIME タイプ (​`.^mimeType`​)、メディア種別 (​`.^mediaType`​)、未加工 (​`.^raw`​)、カスタムメタデータ (​`.^myCustomMetadata`​) の値を返すことができます。詳細は、「​[メタデータセレクター (.^someMetadata)](#metadata_selector)​」を参照してください。 ## [](#キーおよびセレクターの構文)キーおよびセレクターの構文 DataWeave では、一部の状況ではオブジェクトのキーの名前を囲む引用符が必須ですが、それ以外は引用符は省略可能です。キーは識別子ではありませんが、キー名が、​[有効な識別子名](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction#valid-identifiers)​の条件を満たす場合、キーを囲む引用符は省略可能です。キーがこの条件を満たさない場合、キーを引用符で囲む​_必要_​があります。たとえば、​`{ some-name : "somebody" }`​ のキー構文を修正するには、​`{ "some-name" : "somebody" }`​ または ​`{ 'some-name' : "somebody" }`​ を使用できます。引用符がない場合、​`{ some-name : "somebody" }`​ のキーでは ​`Invalid input '-', expected Namespace`​ というエラーが発生します。 引用符を必要とするキーでセレクターを使用している場合は、セレクターも引用符で囲む必要があります。たとえば、​`{ "some-name" : "somebody" }."some-name"`​ のセレクター ​`"some-name"`​ は正常に機能しますが、​`{ "some-name" : "somebody" }.some-name`​ のセレクター ​`some-name`​ では、セレクターが引用符で囲まれていないために ​`Unable to resolve reference of: name`​ というエラーが発生します。 引用符を必要としないキーでセレクターを使用している場合、セレクターを囲む引用符は省略可能です。たとえば、次の例はすべて正常に機能します。 - `{"name" : "somebody"}.name` - `{"name" : "somebody"}."name"` - `{name : "somebody"}.name` - `{name : "somebody"}."name"` ## [](#single_value)単一値セレクター (.myKey) `.myKey`​ セレクターは、オブジェクトや配列で動作し、一致するキーの値を返します。 ### [](#オブジェクトに対する単一値セレクター)オブジェクトに対する単一値セレクター オブジェクトの場合、単一値セレクターは一致するキーの値を返します。たとえば、次のスクリプトの ​`myObject.user`​ は ​`"a"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` DataWeave ​_オブジェクト_​ (配列ではない) を操作する場合、​`.`​ セレクターは、オブジェクトに複数の一致するキーがある場合でも、​_最初_​に一致したキーの値のみを返します。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a", "user" : "b" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` このような場合に複数の一致するキーの値を返す方法については、「​[複数値セレクター (​`.*`​)](#multi_value)​」を参照してください。 次の例の ​`payload.people.person.address`​ は ​`address`​ 要素の値を返します。また、​`output`​ ディレクティブを使用して、JSON 入力を XML に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "size" : 1, "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- { myaddresses: myData.people.person.address } ``` 出力 XML: ```xml Italia 2164 San Isidro Martinez ``` ## [](#single_value_array)配列に対する単一値セレクター 配列で動作する場合、一致する値が 1 つのみの場合でも、​`.`​ セレクターは配列を返します。たとえば、​`["a":"b"]."a"`​ は ​`["b"]`​ を返します。 `.`​ セレクターの動作は、オブジェクトと配列で異なります。 `.*`​ と同様に、​`.`​ セレクターは、入力配列の指定したレベルで​_一致するすべてのキー_​の値が含まれる配列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.aString, myObjectExample : myArrayOfObjects.aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` 次の例では、入力変数 ​`myData`​ の値が、2 つのオブジェクトが含まれる配列になっています。セレクターは、両方のオブジェクトを移動し、両方の ​`street`​ キーの値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": [ { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } }, { "person": { "name": "Coty", "address": { "street": { "name": "Monroe", "number": 323 }, "area": { "zone": "BA", "name": "Belgrano" } } } } ] } output application/json --- myData.people.person.address.street ``` 出力 JSON: ```json [ { "name": "Italia", "number": 2164 }, { "name": "Monroe", "number": 323 } ] ``` ## [](#multi_value)複数値セレクター (​`.*`​) `.*`​ は、オブジェクトや配列をトラバースして、一致するすべてのキーの値を選択し、一致する結果を配列で返します。 ### [](#オブジェクトに対する複数値セレクター)オブジェクトに対する複数値セレクター `.*`​ は、キーが式に一致するすべての値が含まれる配列を返します。 次の例では、入力ペイロードのすべての ​`user`​ 要素の値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.users.*user ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro ``` 出力 JSON: ```json [ "Mariano", "Martin", "Leandro" ] ``` ### [](#配列に対する複数値セレクター)配列に対する複数値セレクター 配列では、​`.*`​ は単一値セレクター (​`.`​) と同じように動作します。たとえば、​`payload.people.person.address.*street`​ と ​`payload.people.person.address.street`​ (「​[配列に対する単一値セレクター](#single_value_array)​」の例) は同じ結果を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.*aString, myObjectExample : myArrayOfObjects.*aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` ## [](#descendants)子孫セレクター (​`..myKey`​) `..`​ セレクターは、配列やオブジェクトで動作します。 このセレクターは、​`..myKey`​ という形式を使用してコンテキストに適用され、選択したコンテキストのサブツリーの一致するすべてのキー - 値ペアの値を取得します。項目の階層構造に関係なく、出力は同じレベルで返されます。 この例では、入力データのツリーのカーディナリティに関係なく、キー ​`name`​ に一致するすべての項目が ​`names`​ というリストに配置されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { names: payload.people..name } ``` 入力 JSON ペイロード: ```json { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } ``` 出力 JSON: ```json { "names": [ "Nial", "Italia", "Martinez" ] } ``` ## [](#key_value)キー - 値ペアセレクター (​`.&myKey`​) `&`​ セレクターは、配列やオブジェクトで動作します。 `&`​ は、現在のコンテキスト内で一致するすべてのキーペアのキーと値の両方を取得します。これらは、取得されたキーと値が含まれるオブジェクトとして返されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { users: payload.users.&user } ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro Admin org_owner ``` 出力 XML: ```xml Mariano Martin Leandro ``` 複数値セレクターとは異なり、このセレクターの出力はオブジェクトになっており、各値の元のキーも抽出されています。 ### [](#すべての子孫のキー-値ペアの選択)すべての子孫のキー - 値ペアの選択 この例では、​`myVar.people..&name`​ の ​`..`​ および ​`&`​ セレクターを使用して、キー ​`name`​ が含まれる ​`myData`​ 入力のすべての子孫オブジェクトの配列を選択して返します。また、JSON 入力を XML 出力に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- names: {(myData.people..&name)} ``` 出力 XML: ```xml Nial Italia Martinez ``` ## [](#index)インデックスセレクター (​`[anIndex]`​) このインデックスセレクターは、指定した位置にある要素を返します。これは、配列、オブジェクト、文字列に対して適用できます。 ### [](#配列に対するインデックスセレクター)配列に対するインデックスセレクター このセレクターは、文字列リテラル、配列、オブジェクトに適用できます。オブジェクトの場合、インデックスの位置にあるキー - 値ペアの値が返されます。 配列の場合、要素の値が返されます。インデックスは、ゼロベースです。 1. インデックスが 0 以上の場合、カウントは最初から開始されます。 2. インデックスが負の場合、カウントは最後から開始されます (-1 は最後の要素)。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.people[1] ``` 入力 JSON ペイロード: ```json { "people": [ { "nameFirst": "Nial", "nameLast": "Martinez" }, { "nameFirst": "Coty", "nameLast": "Belgrano" } ] } ``` 出力 JSON: ```json { "nameFirst": "Coty", "nameLast": "Belgrano" } ``` ### [](#オブジェクトに対するインデックスセレクター)オブジェクトに対するインデックスセレクター セレクターは、指定した位置にあるキー - 値ペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload[1] ``` 入力 JSON ペイロード: ```json { "nameFirst": "Mark", "nameLast": "Nguyen" } ``` 出力 JSON: ```json "Nguyen" ``` ### [](#文字列に対するインデックスセレクター)文字列に対するインデックスセレクター 文字列でインデックスセレクターを使用する場合、文字列は配列に分解され、各文字がインデックスになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "MuleSoft"[0] } ``` 出力 JSON: ```json { "name": "M" } ``` セレクターは、文字列を文字の配列として処理し、特定の位置にある文字を選択します。 1. インデックスが 0 以上の場合、カウントは最初から開始されます。 2. インデックスが負の場合、カウントは最後から開始されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "Emiliano"[0] } ``` 出力 JSON: ```json { "name": "E" } ``` ## [](#range)範囲セレクター (​`anIndex to anotherIndex`​) `to`​ セレクターは、配列または文字列の一致するインデックスの値を返します。このセレクターを使用して、範囲内のインデックスの順序を反転させることもできます。セレクターは、文字列の文字をインデックスとして処理します。 - 配列のインデックスを選択: - `[1,2,3,4][0]`​ は ​`1`​ を返します。 配列の最初の要素のインデックスは常に ​`0`​ です。 - `[1,2,3,4][3]`​ は ​`4`​ を返します。 ### [](#配列に対する範囲セレクター)配列に対する範囲セレクター 範囲セレクターは、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、配列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: [0,1,2][0 to 1], last: [0,1,2][-1 to 0] } ``` 出力 JSON: ```json { "slice": [ 0, 1 ], "last": [ 2, 1, 0 ] } ``` ### [](#文字列に対する範囲セレクター)文字列に対する範囲セレクター 範囲セレクターは、文字列を文字の配列として処理し、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、文字列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: "DataWeave"[0 to 1], middle : "superfragilisticexpialadocious"[10 to 13], last: "DataWeave"[-1 to 0] } ``` 出力 JSON: ```json { "slice": "Da", "middle": "list", "last": "evaeWataD" } ``` ## [](#xml_attribute)XML 属性セレクター (​`.@myKey`​) `.@myKey`​ セレクターは、XML 要素の属性を選択します。 キー名なしで ​`.@`​ を使用すると、キー - 値ペアとして属性が含まれるオブジェクトが返されます。 この DataWeave の例では、XML サンプルを変数に読み取り、​`@`​ を使用して XML の属性を選択します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read(' SomeBrand ', 'application/xml') output application/json --- { item: [ { "type" : myVar.product.@."type", "name" : myVar.product.brand, "attributes": myVar.product.@ } ] } ``` 出力 JSON: ```json { "item": [ { "type": "electronic", "name": "SomeBrand", "attributes": { "id": "1", "type": "electronic" } } ] } ``` ## [](#namespace)名前空間セレクター (​`#`​) `#`​ は、選択したキーの XML 名前空間をプレーンテキストとして返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output text/plain --- payload.order.# ``` 入力 XML ペイロード: ```xml Mark 42 2017-01-04 ``` 出力テキスト: ```json "http://orders.company.com" ``` ## [](#selector_modifiers)セレクター修飾子 (​`!`​、​`?`​) 特定のキーの存在を確認できます。 - `!`​ は、選択したキーを評価し、キーが存在しない場合に例外メッセージを表示して失敗します。 - `?`​ は、選択したキーが存在する場合に ​`true`​ を返し、存在しない場合に ​`false`​ を返します。​`?`​ は、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​ でも使用されます。 ### [](#assert_present)アサートの存在検証機能 `!`​ は、指定したいずれかのキーがない場合にエラーを返します。 - `{ "name": "Annie" }.lastName!`​ は、​`There is no key named 'lastName'`​ というメッセージと共にエラーを返します。 - `!`​ を使用しない場合、​`{ "name": "Annie" }.lastName`​ は ​`null`​ を返します。 - キーが存在する場合 (​`{ "name": "Annie" }.name!`​)、結果は ​`"Annie"`​ になります。 ### [](#key_present)キーの存在検証機能 指定したキーがオブジェクトに存在する場合や、XML 要素の属性として存在する場合、​`true`​ を返します。 この例では、​`name`​ キーが存在するため ​`true`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- present: payload.name? ``` 入力 JSON ペイロード: ```json { "name": "Annie" } ``` 出力 XML: ```xml true ``` `?`​ は、XML 属性でも動作します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { item: { typePresent : payload.product.@."type"? } } ``` 入力 XML ペイロード: ```xml Samsung ``` 出力 JSON: ```json { "item": { "typePresent": true } } ``` ## [](#filter_selectors)絞り込みセレクター (​`myKey[?($ == "aValue")]`​) `myKey[?($ == "aValue")]`​ は、配列またはオブジェクト内の一致するキーの値のみを返します。​`?`​ は、​[キーの存在検証機能](#key_present)​ でも使用されます。 一致するキー - 値ペアがない場合、結果は ​`null`​ になります。 次の例では、​`*.name`​ で返される ​`name`​ キーの配列を入力し、値 ​`"Mariano"`​ を使用して ​`name`​ キーをチェックします。また、一致しない値は除外します。​`$`​ は、選択したキーの値を参照します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?($ == "Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。式 ​`( 1 == 1 )`​ が true であるため、入力のすべてのキー-値ペアを返します。 `( 1 == 2 )`​ などの false 式は、​`null`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?( 1 == 1)] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Luis", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。​`mapObject`​ を使用して、入力オブジェクト全体を反復処理し、一致しないキー - 値ペアを除外して、一致するペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload mapObject { ($$) : $[?($=="Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": { "name": "Mariano", "name": "Mariano" } } ``` ## [](#metadata_selector)メタデータセレクター (.^someMetadata) Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、次のメタデータを返すことができます。 - コンテンツ長メタデータ: `.^contentLength`​ は、値が存在する場合に値のコンテンツの長さを返します。例については、「​[コンテンツ長メタデータセレクター (.^contentLength)](#caret_contentlength)​」を参照してください。 - クラスメタデータ: `.^class`​ は、Plain Old Java Object (POJO) のクラスを返します。たとえば、​`{ "string" : payload.string.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "string": "java.lang.String" }`​ を返します。​`{ "date" : payload.date.^class }`​ は ​`{ "date": "java.util.Date" }`​ を返します。 例については、「​[クラスメタデータセレクター (.^class)](#caret_class)​」を参照してください。 - エンコードメタデータ: `.^encoding`​ は値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。例については、「​[エンコードメタデータセレクター (.^encoding)](#caret_encoding)​」を参照してください。 - メディア種別セレクター: `.^mediaType`​ はパラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。例については、「​[メディア種別メタデータセレクター (.^mediaType)](#caret_mediatype)​」を参照してください。 - MIME タイプメタデータ: `.^mimeType`​ はパラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。例については、「​[MIME タイプメタデータセレクター (.^mimeType)](#caret_mimetype)​」を参照してください。 - 未加工メタデータ: `.^raw`​ は、Plain Old Java Object (POJO) の基盤となるデータ (通常はバイナリ値) を返します。このセレクターは、中間者攻撃をチェックするときの MD5 ハッシュの計算で使用されることがあります。 例については、「​[未加工メタデータセレクター (.^raw)](#caret_raw)​」を参照してください。 - カスタムメタデータ: `.^myCustomMetadata`​ はカスタムメタデータの値を返します。 例については、「​[カスタムメタデータセレクター (.^myCustomMetadata)](#caret_custom_metadata)​」を参照してください。 ### [](#caret_contentlength)コンテンツ長メタデータセレクター (.^contentLength) 値が存在する場合に値のコンテンツの長さを返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^contentLength`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された文字列 ​`my string`​ の長さを選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、入力文字列 (​`my string`​) の長さが 11 (​`9`​) 文字であることが示されます。この長さには、文字列の空白スペースが含まれています。 Anypoint Studio のコンソール出力 ```txt INFO 2019-05-07 16:59:33,690 [[MuleRuntime].cpuLight.07: [carets].caretsFlow.CPU_LITE @39f1dbde] [event: 28ce97a0-7124-11e9-acfe-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 11 ``` ### [](#caret_class)クラスメタデータセレクター (.^class) Plain Old Java Object (POJO) のクラスを返します。値は Java クラスのメソッドのコールの結果として生成されます。また、DataWeave で Java 値として処理されるデータ型 (​`String`​ や ​`DateTime`​ など) が含まれることもあります。次に例を示します。 - `{ "string" : payload.mystring.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "mystring": "java.lang.String" }`​ を返します。 - `{ "mydate" : payload.mydate.^class }`​ は ​`{ "mydate": "java.util.Date" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^class`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された Java クラス ​`"my string"`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列がクラス ​`java.lang.String`​ に属していることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:10:03,075 [[MuleRuntime].cpuLight.08: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @6447187e] [event: 6da29400-63c1-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: java.lang.String ``` ### [](#caret_encoding)エンコードメタデータセレクター (.^encoding) 値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^encoding`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたエンコード ​`"my string"`​ を選択します。 Scheduler (​`scheduler`​) コンポーネントは、定期的に新しい Mule イベントを生成して、Set Payload で設定されたペイロードを保持するイベントソースです。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列に ​`UTF-8`​ エンコードが含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:14:24,222 [[MuleRuntime].cpuLight.03: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @62bea6a6] [event: 0938bf70-63c2-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: UTF-8 ``` ### [](#caret_mediatype)メディア種別メタデータセレクター (.^mediaType) パラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたメディア種別 ​`2014-10-12T11:11:19-00:03`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、​`DateTime`​ ペイロードに ​`application/java; charset=UTF-8`​ メディア種別が含まれていることが示されます。 Anypoint Studio のコンソール出力 INFO 2019-04-20 16:41:01,276 \[\[MuleRuntime\].cpuLight.04: \[setpayloadobject\].setpayloadobjectFlow.CPU\_LITE @7e991c71\] \[event: c0e96860-63c5-11e9-bcff-8c8590a99d48\] rg.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列にメディア種別 ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列にメディア種別 ​`application/java; charset=UTF-8`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:52:50,801 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 16:52:51,085 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 ``` ### [](#caret_mimetype)MIME タイプメタデータセレクター (.^mimeType) パラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mimeType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列に MIME タイプ ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列に MIME タイプ ​`application/java`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 17:02:07,762 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 17:02:08,029 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java ``` ### [](#caret_raw)未加工メタデータセレクター (.^raw) POJO の基盤となるバイナリ値を返します。このセレクターは、中間者 (MITM) 攻撃をチェックするための MD5 やその他の暗号化ハッシュ関数の計算で使用されることがあります。 次の例では、Set Payload コンポーネント (​`set-payload`​) を使用してバイナリ値を生成し、Transform Message コンポーネント (​`ee:transform`​) を使用してバイナリ値の MD5 の未加工データ (​`MD5(payload.^raw)`​) を返します。また、Logger コンポーネント (​`logger`​) は、未加工データを Studio コンソールに書き込むように設定されます。比較のために、2 番目のロガーは標準 JSON 形式の一般的な ​`payload`​ を返します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` ロガーメッセージの未加工出力では、標準 JSON 出力が生成されずに、ペイロード全体が二重引用符で囲まれ、新しい行ごとに改行文字 (​`\n`​) が挿入されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-22 14:10:14,537 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "{\n "myRawData": "5403e5a202c594871d59898b13054be5"\n}" INFO 2019-04-22 14:10:14,540 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "myRawData": "5403e5a202c594871d59898b13054be5" } ``` 次の例では、HTTP Listener ソース (​`listener`​) を使用して、POST 要求を介して受け取った XML ペイロードを取得した後、Transform Message コンポーネント (​`ee:transform`​) を使用して、未加工データ (​`(payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)`​) を返すことで XML ペイロードのエンコード値を取得します。Logger コンポーネント (​`logger`​) では、​`payload`​ が JAVA 形式で返されます。 Anypoint Studio の Mule アプリケーション XML ```XML ``` お気に入りの REST クライアントまたは API テストツールを使用して、次の XML 本文を含む POST 要求を送信します。 ```XML ``` ロガーメッセージでは、抽出されたエンコード値 ​`ISO-8859-1`​ が返されます。 Anypoint Studio のコンソール出力 ```txt INFO 2021-05-12 12:25:41,618 [[MuleRuntime].uber.03: [xmlmodule].Flow.CPU_INTENSIVE @de48fc8] [processor: Flow/processors/2; event: 4fe7f6a0-b336-11eb-909c-f01898ad2638] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: ISO-8859-1 ``` ### [](#caret_custom_metadata)カスタムメタデータセレクター (.^myCustomMetadata) カスタムメタデータの値を返します。メタデータは、​`as`​ 演算子を使用して任意の値に関連付けることができます。 次の例では、​`userName.^myCustomMetadata`​ を使用して、スクリプトのヘッダーで変数 ​`userName`​ として定義されているカスタムメタデータの値を DataWeave スクリプトとして返します。比較のために、この例では ​`userName`​ の値も返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var userName = "DataWeave" as String {myCustomMetadata: "customMetadataValue"} --- { "valueOfVariableMetaData" : userName.^myCustomMetadata, "valueOfVariable" : userName, } ``` スクリプトの出力は、​`"customMetadataValue"`​ (カスタムメタデータの値) と ​`"DataWeave"`​ (​`userName`​ 変数の値) です。 出力 JSON: ```json { "valueOfVariableMetaData": "customMetadataValue", "valueOfVariable": "DataWeave" } ``` ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-quickstart) - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # データの抽出 DataWeave は、データを DataWeave オブジェクトや配列、そのデータを保存する変数、および DataWeave 関数の出力 (その出力が配列またはオブジェクトの場合) から選択できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 より正確に言えば、DataWeave セレクターは、データを保存する変数、オブジェクトリテラル、配列リテラル、DataWeave 関数の呼び出しへの参照になるコンテキスト内で動作します。DataWeave 式を使用できる Mule モジュール、コネクタ、コンポーネントのセレクターを使用できます。 DataWeave は、セレクターを処理するときに後続のセレクターの新しいコンテキスト (スコープ) を設定するため、セレクターのチェーンを使用して配列やオブジェクトの複雑な構造を移動できます。選択の深さは、現在のコンテキストの深さに制限されます。 サポートされている変数参照は、​`payload`​ や ​`attributes`​ などの ​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables-context)​と、配列またはオブジェクトを保存する ​[DataWeave 変数](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-variables)​です。簡単な例として ​`payload.myKey`​ が挙げられます。payload はオブジェクト ​`{"myKey" : 1234 }`​ であるため、結果は ​`1234`​ になります。 セレクターは、DataWeave ​`read`​ などの関数の呼び出しで動作します。たとえば、​`read('{"A":"B"}','application/json')."A"`​ は ​`"B"`​ を返します。 ## [](#dataweave-配列やオブジェクトでのセレクターの使用)DataWeave 配列やオブジェクトでのセレクターの使用 DataWeave のセレクターは、DataWeave オブジェクト (​`{ myKey : "myValue" }`​ など) または配列 (​`[1,2,3,4]`​ や ​`[ { "myKey" : "1234" }, { "name" : "somebody" } ]`​ など) 内から値を抽出します。 次の DataWeave スクリプトでは、単一値セレクター (​`.`​) を使用して、変数 ​`myObject`​ と ​`myArray`​ で定義されたオブジェクトと配列から値を取得します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { "myKey" : "1234", "name" : "somebody" } var myArray = [ { "myKey" : "1234" }, { "name" : "somebody" } ] output application/json --- { selectingValueUsingKeyInObject : myObject.name, selectingValueUsingKeyOfObjectInArray : myArray.name, } ``` 出力 JSON: ```json { "selectingValueUsingKeyInObject": "somebody", "selectingValueUsingKeyOfObjectInArray": [ "somebody" ] } ``` 出力は次のようになります。 - `myObject.name`​ は、値 ​`"somebody"`​ を返します。 - `myArray.name`​ は、配列 ​`[ "somebody" ]`​ を返します。 ## [](#セレクタークイックリファレンス)セレクタークイックリファレンス 単一値 (​`.`​) 配列やオブジェクトで動作し、一致するキーの値を返します。構文は ​`.myKey`​ です。DataWeave ​_オブジェクト_​の重複キーの値を取得するには、代わりに ​`*`​ を使用します。例については、​[単一値セレクター (.myKey)](#single_value)​を参照してください。 複数値 (​`*`​) 配列やオブジェクトで動作し、データ構造の階層の単一レベルで一致するすべてのキーの値を取得します。構文は ​`*myKey`​ です。階層の下位レベルのすべての重複キーの値を取得する場合は、代わりに子孫セレクター (​`..`​) を使用します。例については、​[複数値セレクター (​`.*`​)](#multi_value)​を参照してください。 キー - 値ペア (​`&`​) 配列やオブジェクトで動作します。このセレクターは、DataWeave オブジェクトの値を返す代わりに DataWeave オブジェクト全体 (キーと値) を返します。 構文は ​`.&myKey`​ です。例については、​[キー - 値ペアセレクター (​`.&myKey`​)](#key_value)​を参照してください。 子孫 (​`..`​) 配列やオブジェクトで動作し、階層の場所に関係なく、特定のキーの下にある配列やオブジェクトから一致するすべてのキーを取得します。 構文は、​`..myKey`​ です。例については、​[子孫セレクター (​`..myKey`​)](#descendants)​を参照してください。 インデックス (​`[]`​) 配列の指定したインデックスの値を返します。たとえば、​`["a","b","c"][0]`​ の最後の ​`[0]`​ は ​`"a"`​ を返します。例については、​[インデックスセレクター (​`[anIndex]`​)](#index)​を参照してください。 範囲 ​`[index1 to index2]`​ 選択したインデックスの値が含まれる配列を返します。たとえば、​`["a","b","c","d"][2 to 3]`​ の最後の ​`[2 to 3]`​ は ​`["c","d"]`​ を返します。例については、​[範囲セレクター (​`anIndex to anotherIndex`​)](#range)​を参照してください。 XML 属性 (​`.@myKey`​) XML 属性の選択したキーの値を返します。例については、​[XML 属性セレクター (​`.@myKey`​)](#xml_attribute)​を参照してください。 名前空間セレクター (​`myKey.#`​) 選択したキーも含まれる要素の ​`xmlns`​ 名前空間を返します。例については、​[名前空間セレクター (​`#`​)](#namespace)​を参照してください。 セレクター修飾子 (​`?`​ および ​`!`​) `?`​および ​`!`​ は、指定したキーをチェックします。 `?`​ は、​`true`​ または ​`false`​ を返します。 `!`​ は、キーが存在しない場合にエラーを返します。例については、​[セレクター修飾子 (​`!`​、​`?`​)](#selector_modifiers)​を参照してください。 絞り込みセレクター (​`myKey[?(booleanExpression)]`​) ブール式で ​`true`​ が返されて、指定した ​`key`​ が存在する場合に、選択した項目を返します。式が false か、キーが存在しない場合、​`null`​ を返します。例については、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​を参照してください。 メタデータセレクター ​`.^someMetadata`​ Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、クラス (​`.^class`​)、コンテンツ長 (​`.^contentLength`​)、エンコード (​`.^encoding`​)、MIME タイプ (​`.^mimeType`​)、メディア種別 (​`.^mediaType`​)、未加工 (​`.^raw`​)、カスタムメタデータ (​`.^myCustomMetadata`​) の値を返すことができます。詳細は、​[メタデータセレクター (.^someMetadata)](#metadata_selector)​を参照してください。 ## [](#キーおよびセレクターの構文)キーおよびセレクターの構文 DataWeave では、一部の状況ではオブジェクトのキーの名前を囲む引用符が必須ですが、それ以外は引用符は省略可能です。キーは識別子ではありませんが、キー名が、​[有効な識別子名](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-language-introduction#valid-identifiers)​の条件を満たす場合、キーを囲む引用符は省略可能です。キーがこの条件を満たさない場合、キーを引用符で囲む​_必要_​があります。たとえば、​`{ some-name : "somebody" }`​ のキー構文を修正するには、​`{ "some-name" : "somebody" }`​ または ​`{ 'some-name' : "somebody" }`​ を使用できます。引用符がない場合、​`{ some-name : "somebody" }`​ のキーでは ​`Invalid input '-', expected Namespace`​ というエラーが発生します。 引用符を必要とするキーでセレクターを使用している場合は、セレクターも引用符で囲む必要があります。たとえば、​`{ "some-name" : "somebody" }."some-name"`​ のセレクター ​`"some-name"`​ は正常に機能しますが、​`{ "some-name" : "somebody" }.some-name`​ のセレクター ​`some-name`​ では、セレクターが引用符で囲まれていないために ​`Unable to resolve reference of: name`​ というエラーが発生します。 引用符を必要としないキーでセレクターを使用している場合、セレクターを囲む引用符は省略可能です。たとえば、次の例はすべて正常に機能します。 - `{"name" : "somebody"}.name` - `{"name" : "somebody"}."name"` - `{name : "somebody"}.name` - `{name : "somebody"}."name"` ## [](#single_value)単一値セレクター (.myKey) `.myKey`​ セレクターは、オブジェクトや配列で動作し、一致するキーの値を返します。 ### [](#オブジェクトに対する単一値セレクター)オブジェクトに対する単一値セレクター オブジェクトの場合、単一値セレクターは一致するキーの値を返します。たとえば、次のスクリプトの ​`myObject.user`​ は ​`"a"`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` DataWeave ​_オブジェクト_​ (配列ではない) を操作する場合、​`.`​ セレクターは、オブジェクトに複数の一致するキーがある場合でも、​_最初_​に一致したキーの値のみを返します。次に例を示します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myObject = { user : "a", "user" : "b" } output application/json --- { myObjectExample : myObject.user } ``` 出力 JSON: ```json { "myObjectExample": "a" } ``` このような場合に複数の一致するキーの値を返す方法については、​[複数値セレクター (​`.*`​)](#multi_value)​を参照してください。 次の例の ​`payload.people.person.address`​ は ​`address`​ 要素の値を返します。また、​`output`​ ディレクティブを使用して、JSON 入力を XML に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "size" : 1, "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- { myaddresses: myData.people.person.address } ``` 出力 XML: ```xml Italia 2164 San Isidro Martinez ``` ## [](#single_value_array)配列に対する単一値セレクター 配列で動作する場合、一致する値が 1 つのみの場合でも、​`.`​ セレクターは配列を返します。たとえば、​`["a":"b"]."a"`​ は ​`["b"]`​ を返します。 `.`​ セレクターの動作は、オブジェクトと配列で異なります。 `.*`​ と同様に、​`.`​ セレクターは、入力配列の指定したレベルで​_一致するすべてのキー_​の値が含まれる配列を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.aString, myObjectExample : myArrayOfObjects.aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` 次の例では、入力変数 ​`myData`​ の値が、2 つのオブジェクトが含まれる配列になっています。セレクターは、両方のオブジェクトを移動し、両方の ​`street`​ キーの値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": [ { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } }, { "person": { "name": "Coty", "address": { "street": { "name": "Monroe", "number": 323 }, "area": { "zone": "BA", "name": "Belgrano" } } } } ] } output application/json --- myData.people.person.address.street ``` 出力 JSON: ```json [ { "name": "Italia", "number": 2164 }, { "name": "Monroe", "number": 323 } ] ``` ## [](#multi_value)複数値セレクター (​`.*`​) `.*`​ は、オブジェクトや配列をトラバースして、一致するすべてのキーの値を選択し、一致する結果を配列で返します。 ### [](#オブジェクトに対する複数値セレクター)オブジェクトに対する複数値セレクター `.*`​ は、キーが式に一致するすべての値が含まれる配列を返します。 次の例では、入力ペイロードのすべての ​`user`​ 要素の値を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.users.*user ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro ``` 出力 JSON: ```json [ "Mariano", "Martin", "Leandro" ] ``` ### [](#配列に対する複数値セレクター)配列に対する複数値セレクター 配列では、​`.*`​ は単一値セレクター (​`.`​) と同じように動作します。たとえば、​`payload.people.person.address.*street`​ と ​`payload.people.person.address.street`​ (​[配列に対する単一値セレクター](#single_value_array)​の例) は同じ結果を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myArrayOfKeyValuePairs = [ "aString": "hello", "aNum": 2, "aString" : "world" ] var myArrayOfObjects = [ { "aString": "hello" }, { "aNum": 2 }, { "aString" : "world" } ] output application/json --- { myKeyValueExample : myArrayOfKeyValuePairs.*aString, myObjectExample : myArrayOfObjects.*aString } ``` 出力 JSON: ```json { "myKeyValueExample": [ "hello", "world" ], "myObjectExample": [ "hello", "world" ] } ``` ## [](#descendants)子孫セレクター (​`..myKey`​) `..`​ セレクターは、配列やオブジェクトで動作します。 このセレクターは、​`..myKey`​ という形式を使用してコンテキストに適用され、選択したコンテキストのサブツリーの一致するすべてのキー - 値ペアの値を取得します。項目の階層構造に関係なく、出力は同じレベルで返されます。 この例では、入力データのツリーのカーディナリティに関係なく、キー ​`name`​ に一致するすべての項目が ​`names`​ というリストに配置されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { names: payload.people..name } ``` 入力 JSON ペイロード: ```json { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } ``` 出力 JSON: ```json { "names": [ "Nial", "Italia", "Martinez" ] } ``` ## [](#key_value)キー - 値ペアセレクター (​`.&myKey`​) `&`​ セレクターは、配列やオブジェクトで動作します。 `&`​ は、現在のコンテキスト内で一致するすべてのキーペアのキーと値の両方を取得します。これらは、取得されたキーと値が含まれるオブジェクトとして返されます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- { users: payload.users.&user } ``` 入力 XML ペイロード: ```xml Mariano Martin Leandro Admin org_owner ``` 出力 XML: ```xml Mariano Martin Leandro ``` 複数値セレクターとは異なり、このセレクターの出力はオブジェクトになっており、各値の元のキーも抽出されています。 ### [](#すべての子孫のキー-値ペアの選択)すべての子孫のキー - 値ペアの選択 この例では、​`myVar.people..&name`​ の ​`..`​ および ​`&`​ セレクターを使用して、キー ​`name`​ が含まれる ​`myData`​ 入力のすべての子孫オブジェクトの配列を選択して返します。また、JSON 入力を XML 出力に変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myData = { "people": { "person": { "name": "Nial", "address": { "street": { "name": "Italia", "number": 2164 }, "area": { "zone": "San Isidro", "name": "Martinez" } } } } } output application/xml --- names: {(myData.people..&name)} ``` 出力 XML: ```xml Nial Italia Martinez ``` ## [](#index)インデックスセレクター (​`[anIndex]`​) このインデックスセレクターは、指定した位置にある要素を返します。これは、配列、オブジェクト、文字列に対して適用できます。 ### [](#配列に対するインデックスセレクター)配列に対するインデックスセレクター このセレクターは、文字列リテラル、配列、オブジェクトに適用できます。オブジェクトの場合、インデックスの位置にあるキー - 値ペアの値が返されます。 配列の場合、要素の値が返されます。インデックスは、ゼロベースです。 1. インデックスが 0 以上の場合、最初から数えます。 2. インデックスが負の場合、最後から数えます (-1 は最後の要素)。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload.people[1] ``` 入力 JSON ペイロード: ```json { "people": [ { "nameFirst": "Nial", "nameLast": "Martinez" }, { "nameFirst": "Coty", "nameLast": "Belgrano" } ] } ``` 出力 JSON: ```json { "nameFirst": "Coty", "nameLast": "Belgrano" } ``` ### [](#オブジェクトに対するインデックスセレクター)オブジェクトに対するインデックスセレクター セレクターは、指定した位置にあるキー - 値ペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload[1] ``` 入力 JSON ペイロード: ```json { "nameFirst": "Mark", "nameLast": "Nguyen" } ``` 出力 JSON: ```json "Nguyen" ``` ### [](#文字列に対するインデックスセレクター)文字列に対するインデックスセレクター 文字列でインデックスセレクターを使用する場合、文字列は配列に分解され、各文字がインデックスになります。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "MuleSoft"[0] } ``` 出力 JSON: ```json { "name": "M" } ``` セレクターは、文字列を文字の配列として処理し、特定の位置にある文字を選択します。 1. インデックスが 0 以上の場合、最初から数えます。 2. インデックスが負の場合、最後から数えます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { name: "Emiliano"[0] } ``` 出力 JSON: ```json { "name": "E" } ``` ## [](#range)範囲セレクター (​`anIndex to anotherIndex`​) `to`​ セレクターは、配列または文字列の一致するインデックスの値を返します。このセレクターを使用して、範囲内のインデックスの順序を反転させることもできます。セレクターは、文字列の文字をインデックスとして処理します。 - 配列のインデックスを選択: - `[1,2,3,4][0]`​ は ​`1`​ を返します。 配列の最初の要素のインデックスは常に ​`0`​ です。 - `[1,2,3,4][3]`​ は ​`4`​ を返します。 ### [](#配列に対する範囲セレクター)配列に対する範囲セレクター 範囲セレクターは、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、配列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: [0,1,2][0 to 1], last: [0,1,2][-1 to 0] } ``` 出力 JSON: ```json { "slice": [ 0, 1 ], "last": [ 2, 1, 0 ] } ``` ### [](#文字列に対する範囲セレクター)文字列に対する範囲セレクター 範囲セレクターは、文字列を文字の配列として処理し、範囲で指定した要素のみをその特定の順序で出力します。このセレクターでは、文字列のスライスや反転を行うことができます。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { slice: "DataWeave"[0 to 1], middle : "superfragilisticexpialadocious"[10 to 13], last: "DataWeave"[-1 to 0] } ``` 出力 JSON: ```json { "slice": "Da", "middle": "list", "last": "evaeWataD" } ``` ## [](#xml_attribute)XML 属性セレクター (​`.@myKey`​) `.@myKey`​ セレクターは、XML 要素の属性を選択します。 キー名なしで ​`.@`​ を使用すると、キー - 値ペアとして属性が含まれるオブジェクトが返されます。 この DataWeave の例では、XML サンプルを変数に読み取り、​`@`​ を使用して XML の属性を選択します。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read(' SomeBrand ', 'application/xml') output application/json --- { item: [ { "type" : myVar.product.@."type", "name" : myVar.product.brand, "attributes": myVar.product.@ } ] } ``` 出力 JSON: ```json { "item": [ { "type": "electronic", "name": "SomeBrand", "attributes": { "id": "1", "type": "electronic" } } ] } ``` ## [](#namespace)名前空間セレクター (​`#`​) `#`​ は、選択したキーの XML 名前空間をプレーンテキストとして返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output text/plain --- payload.order.# ``` 入力 XML ペイロード: ```xml Mark 42 2017-01-04 ``` 出力テキスト: ```json "http://orders.company.com" ``` ## [](#selector_modifiers)セレクター修飾子 (​`!`​、​`?`​) 特定のキーの存在を確認できます。 - `!`​ は、選択したキーを評価し、キーが存在しない場合に例外メッセージを表示して失敗します。 - `?`​ は、選択したキーが存在する場合に ​`true`​ を返し、存在しない場合に ​`false`​ を返します。​`?`​ は、​[絞り込みセレクター (​`myKey[?($ == "aValue")]`​)](#filter_selectors)​ でも使用されます。 ### [](#assert_present)アサートの存在検証機能 `!`​ は、指定したいずれかのキーがない場合にエラーを返します。 - `{ "name": "Annie" }.lastName!`​ は、​`There is no key named 'lastName'`​ というメッセージと共にエラーを返します。 - `!`​ を使用しない場合、​`{ "name": "Annie" }.lastName`​ は ​`null`​ を返します。 - キーが存在する場合 (​`{ "name": "Annie" }.name!`​)、結果は ​`"Annie"`​ になります。 ### [](#key_present)キーの存在検証機能 指定したキーがオブジェクトに存在する場合や、XML 要素の属性として存在する場合、​`true`​ を返します。 この例では、​`name`​ キーが存在するため ​`true`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- present: payload.name? ``` 入力 JSON ペイロード: ```json { "name": "Annie" } ``` 出力 XML: ```xml true ``` `?`​ は、XML 属性でも動作します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { item: { typePresent : payload.product.@."type"? } } ``` 入力 XML ペイロード: ```xml Samsung ``` 出力 JSON: ```json { "item": { "typePresent": true } } ``` ## [](#filter_selectors)絞り込みセレクター (​`myKey[?($ == "aValue")]`​) `myKey[?($ == "aValue")]`​ は、配列またはオブジェクト内の一致するキーの値のみを返します。​`?`​ は、​[キーの存在検証機能](#key_present)​ でも使用されます。 一致するキー - 値ペアがない場合、結果は ​`null`​ になります。 次の例では、​`*.name`​ で返される ​`name`​ キーの配列を入力し、値 ​`"Mariano"`​ を使用して ​`name`​ キーをチェックします。また、一致しない値は除外します。​`$`​ は、選択したキーの値を参照します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?($ == "Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。式 ​`( 1 == 1 )`​ が true であるため、入力のすべてのキー-値ペアを返します。 `( 1 == 2 )`​ などの false 式は、​`null`​ を返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { users: payload.users.*name[?( 1 == 1)] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": [ "Mariano", "Luis", "Mariano" ] } ``` 次の例では、同じ​[入力](#input_filter_selectors)​を想定しています。​`mapObject`​ を使用して、入力オブジェクト全体を反復処理し、一致しないキー - 値ペアを除外して、一致するペアを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- payload mapObject { ($$) : $[?($=="Mariano")] } ``` 入力 XML ペイロード: ```xml Mariano Luis Mariano ``` 出力 JSON: ```json { "users": { "name": "Mariano", "name": "Mariano" } } ``` ## [](#metadata_selector)メタデータセレクター (.^someMetadata) Mule ペイロード、変数、属性の指定したメタデータの値を返します。このセレクターは、次のメタデータを返すことができます。 - コンテンツ長メタデータ: `.^contentLength`​ は、値が存在する場合に値のコンテンツの長さを返します。例については、​[コンテンツ長メタデータセレクター (.^contentLength)](#caret_contentlength)​を参照してください。 - クラスメタデータ: `.^class`​ は、Plain Old Java Object (POJO) のクラスを返します。たとえば、​`{ "string" : payload.string.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "string": "java.lang.String" }`​ を返します。​`{ "date" : payload.date.^class }`​ は ​`{ "date": "java.util.Date" }`​ を返します。 例については、​[クラスメタデータセレクター (.^class)](#caret_class)​を参照してください。 - エンコードメタデータ: `.^encoding`​ は値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。例については、​[エンコードメタデータセレクター (.^encoding)](#caret_encoding)​を参照してください。 - メディア種別セレクター: `.^mediaType`​ はパラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。例については、​[メディア種別メタデータセレクター (.^mediaType)](#caret_mediatype)​を参照してください。 - MIME タイプメタデータ: `.^mimeType`​ はパラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。例については、​[MIME タイプメタデータセレクター (.^mimeType)](#caret_mimetype)​を参照してください。 - 未加工メタデータ: `.^raw`​ は、Plain Old Java Object (POJO) の基盤となるデータ (通常はバイナリ値) を返します。このセレクターは、中間者攻撃をチェックするときの MD5 ハッシュの計算で使用されることがあります。 例については、​[未加工メタデータセレクター (.^raw)](#caret_raw)​を参照してください。 - カスタムメタデータ: `.^myCustomMetadata`​ はカスタムメタデータの値を返します。 例については、​[カスタムメタデータセレクター (.^myCustomMetadata)](#caret_custom_metadata)​を参照してください。 ### [](#caret_contentlength)コンテンツ長メタデータセレクター (.^contentLength) 値が存在する場合に値のコンテンツの長さを返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^contentLength`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された文字列 ​`my string`​ の長さを選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、入力文字列 (​`my string`​) の長さが 11 (​`9`​) 文字であることが示されます。この長さには、文字列の空白スペースが含まれています。 Anypoint Studio のコンソール出力 ```txt INFO 2019-05-07 16:59:33,690 [[MuleRuntime].cpuLight.07: [carets].caretsFlow.CPU_LITE @39f1dbde] [event: 28ce97a0-7124-11e9-acfe-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: 11 ``` ### [](#caret_class)クラスメタデータセレクター (.^class) Plain Old Java Object (POJO) のクラスを返します。値は Java クラスのメソッドのコールの結果として生成されます。また、DataWeave で Java 値として処理されるデータ型 (​`String`​ や ​`DateTime`​ など) が含まれることもあります。次に例を示します。 - `{ "string" : payload.mystring.^class }`​ は、入力ペイロードで単純な POJO の Java 文字列 (​`simplePojo.string = "myString"`​ など) が定義されている場合に ​`{ "mystring": "java.lang.String" }`​ を返します。 - `{ "mydate" : payload.mydate.^class }`​ は ​`{ "mydate": "java.util.Date" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^class`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定された Java クラス ​`"my string"`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列がクラス ​`java.lang.String`​ に属していることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:10:03,075 [[MuleRuntime].cpuLight.08: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @6447187e] [event: 6da29400-63c1-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: java.lang.String ``` ### [](#caret_encoding)エンコードメタデータセレクター (.^encoding) 値のエンコードを返します。たとえば、​`{ "myEncoding" : payload.^encoding }`​ は入力 POJO の ​`{"myEncoding": "UTF-8"}`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^encoding`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたエンコード ​`"my string"`​ を選択します。 Scheduler (​`scheduler`​) コンポーネントは、定期的に新しい Mule イベントを生成して、Set Payload で設定されたペイロードを保持するイベントソースです。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、ペイロード文字列に ​`UTF-8`​ エンコードが含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:14:24,222 [[MuleRuntime].cpuLight.03: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @62bea6a6] [event: 0938bf70-63c2-11e9-98e0-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: UTF-8 ``` ### [](#caret_mediatype)メディア種別メタデータセレクター (.^mediaType) パラメーターが含まれる値の MIME タイプ (​`application/json;charset=UTF-16`​ など) を返します。値の式 ​`{ "myMediaType" : payload.^mediaType }`​ は入力 POJO の ​`"myMediaType": "​**/**​; charset=UTF-8"`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して、Set Payload (​`set-payload`​) コンポーネントで設定されたメディア種別 ​`2014-10-12T11:11:19-00:03`​ を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、​`DateTime`​ ペイロードに ​`application/java; charset=UTF-8`​ メディア種別が含まれていることが示されます。 Anypoint Studio のコンソール出力 INFO 2019-04-20 16:41:01,276 \[\[MuleRuntime\].cpuLight.04: \[setpayloadobject\].setpayloadobjectFlow.CPU\_LITE @7e991c71\] \[event: c0e96860-63c5-11e9-bcff-8c8590a99d48\] rg.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mediaType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列にメディア種別 ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列にメディア種別 ​`application/java; charset=UTF-8`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 16:52:50,801 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 16:52:51,085 [[MuleRuntime].cpuLight.01: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @5d914abe] [event: 68121cd0-63c7-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java; charset=UTF-8 ``` ### [](#caret_mimetype)MIME タイプメタデータセレクター (.^mimeType) パラメーターが含まれない値の MIME タイプ (​`application/json`​ など) を返します。​`{ "myMimeType" : payload.^mimeType }`​ は入力 POJO の ​`{ "myMediaType": "​**/**​" }`​ を返します。 次の Mule アプリケーションフローでは、ロガーが ​`payload.^mimeType`​ を使用して文字列 ​`"my string"`​ を選択し、Set Payload (​`set-payload`​) コンポーネントの ​**fx**​ 式内で設定された文字列 (​`#["my string as String type" as String]`​) を選択します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` Studio コンソールの出力には、単純な文字列に MIME タイプ ​`**/**`​ が含まれていて、​**fx**​ 式で設定された文字列に MIME タイプ ​`application/java`​ が含まれていることが示されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-20 17:02:07,762 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: */* INFO 2019-04-20 17:02:08,029 [[MuleRuntime].cpuLight.06: [setpayloadobject].setpayloadobjectFlow.CPU_LITE @2d6f64b9] [event: b4097b00-63c8-11e9-bcff-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: application/java ``` ### [](#caret_raw)未加工メタデータセレクター (.^raw) POJO の基盤となるバイナリ値を返します。このセレクターは、中間者 (MITM) 攻撃をチェックするための MD5 やその他の暗号化ハッシュ関数の計算で使用されることがあります。 次の例では、Set Payload コンポーネント (​`set-payload`​) を使用してバイナリ値を生成し、Transform Message コンポーネント (​`ee:transform`​) を使用してバイナリ値の MD5 の未加工データ (​`MD5(payload.^raw)`​) を返します。また、Logger コンポーネント (​`logger`​) は、未加工データを Studio コンソールに書き込むように設定されます。比較のために、2 番目のロガーは標準 JSON 形式の一般的な ​`payload`​ を返します。 Anypoint Studio の Mule アプリケーション XML ```XML ``` ロガーメッセージの未加工出力では、標準 JSON 出力が生成されずに、ペイロード全体が二重引用符で囲まれ、新しい行ごとに改行文字 (​`\n`​) が挿入されます。 Anypoint Studio のコンソール出力 ```txt INFO 2019-04-22 14:10:14,537 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: "{\n "myRawData": "5403e5a202c594871d59898b13054be5"\n}" INFO 2019-04-22 14:10:14,540 [[MuleRuntime].cpuLight.08: [rawcaret2].rawcaret2Flow.CPU_LITE @764a5a61] [event: 058f6a90-6543-11e9-9d99-8c8590a99d48] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: { "myRawData": "5403e5a202c594871d59898b13054be5" } ``` 次の例では、HTTP Listener ソース (​`listener`​) を使用して、POST 要求を介して受け取った XML ペイロードを取得した後、Transform Message コンポーネント (​`ee:transform`​) を使用して、未加工データ (​`(payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)`​) を返すことで XML ペイロードのエンコード値を取得します。Logger コンポーネント (​`logger`​) では、​`payload`​ が JAVA 形式で返されます。 Anypoint Studio の Mule アプリケーション XML ```XML ``` お気に入りの REST クライアントまたは API テストツールを使用して、次の XML 本文を含む POST 要求を送信します。 ```XML ``` ロガーメッセージでは、抽出されたエンコード値 ​`ISO-8859-1`​ が返されます。 Anypoint Studio のコンソール出力 ```txt INFO 2021-05-12 12:25:41,618 [[MuleRuntime].uber.03: [xmlmodule].Flow.CPU_INTENSIVE @de48fc8] [processor: Flow/processors/2; event: 4fe7f6a0-b336-11eb-909c-f01898ad2638] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: ISO-8859-1 ``` ### [](#caret_custom_metadata)カスタムメタデータセレクター (.^myCustomMetadata) カスタムメタデータの値を返します。メタデータは、​`as`​ 演算子を使用して任意の値に関連付けることができます。 次の例では、​`userName.^myCustomMetadata`​ を使用して、スクリプトのヘッダーで変数 ​`userName`​ として定義されているカスタムメタデータの値を DataWeave スクリプトとして返します。比較のために、この例では ​`userName`​ の値も返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var userName = "DataWeave" as String {myCustomMetadata: "customMetadataValue"} --- { "valueOfVariableMetaData" : userName.^myCustomMetadata, "valueOfVariable" : userName, } ``` スクリプトの出力は、​`"customMetadataValue"`​ (カスタムメタデータの値) と ​`"DataWeave"`​ (​`userName`​ 変数の値) です。 出力 JSON: ```json { "valueOfVariableMetaData": "customMetadataValue", "valueOfVariable": "DataWeave" } ``` ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave クイックスタート](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-quickstart) - [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # テキスト Java プロパティ形式 MIME タイプ: `text/x-java-properties`​ ID: `properties`​ テキスト Java プロパティ形式では、Java プロパティファイルを解析します。この形式は、単純なキー-値ペアを表します。DataWeave では、文字列値が含まれるオブジェクトとしてこれらのペアを表します。 ## [](#examples)例: プロパティファイルを DataWeave 形式 (dw) で表す 次の例は、DataWeave でプロパティファイルを表す方法を示しています。 ### [](#入力)入力 次の ​`text/x-java-properties`​ データは、プロパティファイルから取得します。このファイルには、ホストとポートの値を提供するキー-値ペアが含まれます。このコンテンツは、DataWeave スクリプトへの入力ペイロードとして機能します。 ```properties host=localhost port=1234 ``` ### [](#ソース)ソース この DataWeave スクリプトは、​`text/x-java-properties`​ 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 出力は、DataWeave (dw) 形式のオブジェクトになります。オブジェクトには、​`text/x-java-properties`​ 入力と一致するキー-値ペアのコレクションが含まれます。出力では、値が引用符で囲まれています。 ```dataweave { host: "localhost", port: "1234" } ``` ## [](#properties_java_properties)Configuration のプロパティ DataWeave では、テキスト Java プロパティ形式の次の設定プロパティがサポートされています。 ### [](#reader-のプロパティ)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer-のプロパティ)Writer のプロパティ テキスト Java プロパティ形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​encoding

​String

​null

使用するライターのエンコード。

## [](#mime_type_java_properties)サポートされる MIME タイプ Java プロパティ形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/x-java-properties​

*/properties​

# テキスト Java プロパティ形式 MIME タイプ: `text/x-java-properties`​ ID: `properties`​ テキスト Java プロパティ形式では、Java プロパティファイルを解析します。この形式は、単純なキー-値ペアを表します。DataWeave では、文字列値が含まれるオブジェクトとしてこれらのペアを表します。 ## [](#examples)例: プロパティファイルを DataWeave 形式 (dw) で表す 次の例は、DataWeave でプロパティファイルを表す方法を示しています。 ### [](#入力)入力 次の ​`text/x-java-properties`​ データは、プロパティファイルから取得します。このファイルには、ホストとポートの値を提供するキー-値ペアが含まれます。このコンテンツは、DataWeave スクリプトへの入力ペイロードとして機能します。 ```properties host=localhost port=1234 ``` ### [](#ソース)ソース この DataWeave スクリプトは、​`text/x-java-properties`​ 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 出力は、DataWeave (dw) 形式のオブジェクトになります。オブジェクトには、​`text/x-java-properties`​ 入力と一致するキー-値ペアのコレクションが含まれます。出力では、値が引用符で囲まれています。 ```dataweave { host: "localhost", port: "1234" } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding​

String​

​null​

出力で使用する文字セット (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/x-java-properties​

*/properties​

# テキスト Java プロパティ形式 MIME タイプ: `text/x-java-properties` ID: `properties` テキスト Java プロパティ形式では、Java プロパティファイルを解析します。この形式は、単純なキー-値ペアを表します。DataWeave では、文字列値が含まれるオブジェクトとしてこれらのペアを表します。 ## [](#examples)例: プロパティファイルを DataWeave 形式 (dw) で表す 次の例は、DataWeave でプロパティファイルを表す方法を示しています。 ### [](#入力)入力 次の ​`text/x-java-properties`​ データは、プロパティファイルから取得します。このファイルには、ホストとポートの値を提供するキー-値ペアが含まれます。このコンテンツは、DataWeave スクリプトへの入力ペイロードとして機能します。 ```properties host=localhost port=1234 ``` ### [](#ソース)ソース この DataWeave スクリプトは、​`text/x-java-properties`​ 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 出力は、DataWeave (dw) 形式のオブジェクトになります。オブジェクトには、​`text/x-java-properties`​ 入力と一致するキー-値ペアのコレクションが含まれます。出力では、値が引用符で囲まれています。 ```dataweave { host: "localhost", port: "1234" } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/x-java-properties

*/properties

# テキスト Java プロパティ形式 MIME タイプ: `text/x-java-properties` ID: `properties` テキスト Java プロパティ形式では、Java プロパティファイルを解析します。この形式は、単純なキー-値ペアを表します。DataWeave では、文字列値が含まれるオブジェクトとしてこれらのペアを表します。 ## [](#examples)例: プロパティファイルを DataWeave 形式 (dw) で表す 次の例は、DataWeave でプロパティファイルを表す方法を示しています。 ### [](#入力)入力 次の ​`text/x-java-properties`​ データは、プロパティファイルから取得します。このファイルには、ホストとポートの値を提供するキー-値ペアが含まれます。このコンテンツは、DataWeave スクリプトへの入力ペイロードとして機能します。 ```properties host=localhost port=1234 ``` ### [](#ソース)ソース この DataWeave スクリプトは、​`text/x-java-properties`​ 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 出力は、DataWeave (dw) 形式のオブジェクトになります。オブジェクトには、​`text/x-java-properties`​ 入力と一致するキー-値ペアのコレクションが含まれます。出力では、値が引用符で囲まれています。 ```dataweave { host: "localhost", port: "1234" } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/x-java-properties

*/properties

# テキスト Java プロパティ形式 MIME タイプ: `text/x-java-properties` ID: `properties` テキスト Java プロパティ形式では、Java プロパティファイルを解析します。この形式は、単純なキー-値ペアを表します。DataWeave では、文字列値が含まれるオブジェクトとしてこれらのペアを表します。 ## [](#examples)例: プロパティファイルを DataWeave 形式 (dw) で表す 次の例は、DataWeave でプロパティファイルを表す方法を示しています。 ### [](#入力)入力 次の ​`text/x-java-properties`​ データは、プロパティファイルから取得します。このファイルには、ホストとポートの値を提供するキー-値ペアが含まれます。このコンテンツは、DataWeave スクリプトへの入力ペイロードとして機能します。 ```properties host=localhost port=1234 ``` ### [](#ソース)ソース この DataWeave スクリプトは、​`text/x-java-properties`​ 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 出力は、DataWeave (dw) 形式のオブジェクトになります。オブジェクトには、​`text/x-java-properties`​ 入力と一致するキー-値ペアのコレクションが含まれます。出力では、値が引用符で囲まれています。 ```dataweave { host: "localhost", port: "1234" } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/x-java-properties

*/properties

# テキスト Java プロパティ形式 MIME タイプ: `text/x-java-properties` ID: `properties` テキスト Java プロパティ形式では、Java プロパティファイルを解析します。この形式は、単純なキー-値ペアを表します。DataWeave では、文字列値が含まれるオブジェクトとしてこれらのペアを表します。 ## [](#examples)例: プロパティファイルを DataWeave 形式 (dw) で表す 次の例は、DataWeave でプロパティファイルを表す方法を示しています。 ### [](#入力)入力 次の ​`text/x-java-properties`​ データは、プロパティファイルから取得します。このファイルには、ホストとポートの値を提供するキー-値ペアが含まれます。このコンテンツは、DataWeave スクリプトへの入力ペイロードとして機能します。 ```properties host=localhost port=1234 ``` ### [](#ソース)ソース この DataWeave スクリプトは、​`text/x-java-properties`​ 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave %dw 2.0 output application/dw --- payload ``` ### [](#出力)出力 出力は、DataWeave (dw) 形式のオブジェクトになります。オブジェクトには、​`text/x-java-properties`​ 入力と一致するキー-値ペアのコレクションが含まれます。出力では、値が引用符で囲まれています。 ```dataweave { host: "localhost", port: "1234" } ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/x-java-properties

*/properties

# テキスト/プレーン形式 MIME タイプ: `text/plain`​ ID: `text`​ テキスト/プレーン形式では、テキストを文字列として表します。 DataWeave は、この形式を解析してエンコードし、RAM メモリに保存します。 ## [](#examples)例 次の例は、DataWeave でテキスト/プレーンデータを表す方法を示しています。 ### [](#入力)入力 プレーンテキストデータは、DataWeave ソースへの入力ペイロードとして機能します。 ```txt This is text plain ``` ### [](#ソース)ソース この DataWeave スクリプトは、テキスト/プレーン入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave output application/dw --- payload ``` ### [](#出力)出力 DataWeave (dw) の出力は文字列であるため、引用符で囲まれています。 ```dataweave "This is text plain" ``` ## [](#properties)Configuration のプロパティ DataWeave では、テキスト/プレーン形式の次の設定プロパティがサポートされています。 ### [](#reader-のプロパティ)Reader のプロパティ テキスト/プレーンデータのリーダープロパティはありません。 ### [](#writer-のプロパティ)Writer のプロパティ テキスト/プレーン形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

​encoding

​String

​null

使用するライターのエンコード。

## [](#mime_type)サポートされる MIME タイプ テキスト/プレーン形式では、次の MIME タイプがサポートされています。
MIME タイプ

text/plain​

# テキスト/プレーン形式 MIME タイプ: `text/plain`​ ID: `text`​ テキスト/プレーン形式では、テキストを文字列として表します。 DataWeave は、この形式を解析してエンコードし、RAM メモリに保存します。 ## [](#examples)例 次の例は、DataWeave でテキスト/プレーンデータを表す方法を示しています。 ### [](#入力)入力 プレーンテキストデータは、DataWeave ソースへの入力ペイロードとして機能します。 ```txt This is text plain ``` ### [](#ソース)ソース この DataWeave スクリプトは、テキスト/プレーン入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave output application/dw --- payload ``` ### [](#出力)出力 DataWeave (dw) の出力は文字列であるため、引用符で囲まれています。 ```dataweave "This is text plain" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding​

String​

​null​

出力で使用する文字セット (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

text/plain​

# テキスト/プレーン形式 MIME タイプ: `text/plain` ID: `text` テキスト/プレーン形式では、テキストを文字列として表します。 DataWeave は、この形式を解析してエンコードし、RAM メモリに保存します。 ## [](#examples)例 次の例は、DataWeave でテキスト/プレーンデータを表す方法を示しています。 ### [](#入力)入力 プレーンテキストデータは、DataWeave ソースへの入力ペイロードとして機能します。 ```txt This is text plain ``` ### [](#ソース)ソース この DataWeave スクリプトは、テキスト/プレーン入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave output application/dw --- payload ``` ### [](#出力)出力 DataWeave (dw) の出力は文字列であるため、引用符で囲まれています。 ```dataweave "This is text plain" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

text/plain

# テキスト/プレーン形式 MIME タイプ: `text/plain` ID: `text` テキスト/プレーン形式では、テキストを文字列として表します。 DataWeave は、この形式を解析してエンコードし、RAM メモリに保存します。 ## [](#examples)例 次の例は、DataWeave でテキスト/プレーンデータを表す方法を示しています。 ### [](#入力)入力 プレーンテキストデータは、DataWeave ソースへの入力ペイロードとして機能します。 ```txt This is text plain ``` ### [](#ソース)ソース この DataWeave スクリプトは、テキスト/プレーン入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave output application/dw --- payload ``` ### [](#出力)出力 DataWeave (dw) の出力は文字列であるため、引用符で囲まれています。 ```dataweave "This is text plain" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

text/plain

# テキスト/プレーン形式 MIME タイプ: `text/plain` ID: `text` テキスト/プレーン形式では、テキストを文字列として表します。 DataWeave は、この形式を解析してエンコードし、RAM メモリに保存します。 ## [](#examples)例 次の例は、DataWeave でテキスト/プレーンデータを表す方法を示しています。 ### [](#入力)入力 プレーンテキストデータは、DataWeave ソースへの入力ペイロードとして機能します。 ```txt This is text plain ``` ### [](#ソース)ソース この DataWeave スクリプトは、テキスト/プレーン入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave output application/dw --- payload ``` ### [](#出力)出力 DataWeave (dw) の出力は文字列であるため、引用符で囲まれています。 ```dataweave "This is text plain" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

text/plain

# テキスト/プレーン形式 MIME タイプ: `text/plain` ID: `text` テキスト/プレーン形式では、テキストを文字列として表します。 DataWeave は、この形式を解析してエンコードし、RAM メモリに保存します。 ## [](#examples)例 次の例は、DataWeave でテキスト/プレーンデータを表す方法を示しています。 ### [](#入力)入力 プレーンテキストデータは、DataWeave ソースへの入力ペイロードとして機能します。 ```txt This is text plain ``` ### [](#ソース)ソース この DataWeave スクリプトは、テキスト/プレーン入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。このスクリプトは、文字列を返します。 ```dataweave output application/dw --- payload ``` ### [](#出力)出力 DataWeave (dw) の出力は文字列であるため、引用符で囲まれています。 ```dataweave "This is text plain" ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

text/plain

# バイナリ形式 MIME タイプ: `application/octet-stream`​ ID: `binary`​ バイナリデータ形式では、画像や PDF などのバイナリコンテンツを処理します。そのようなコンテンツは、​`Binary`​ 型として表されます。 バイナリコンテンツは、RAM メモリに保存されます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader-のプロパティ)Reader のプロパティ バイナリデータのリーダープロパティはありません。 ### [](#writer-のプロパティ)Writer のプロパティ バイナリ形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​bufferSize

​Number

​8192

ライターバッファのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ バイナリ形式では、次の MIME タイプがサポートされています。
MIME タイプ

application/octet-stream​

application/x-binary​

# バイナリ形式 MIME タイプ: `application/octet-stream`​ ID: `binary`​ バイナリデータ形式では、画像や PDF などのバイナリコンテンツを処理します。そのようなコンテンツは、​`Binary`​ 型として表されます。 バイナリコンテンツは、RAM メモリに保存されます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize​

Number​

​8192​

バッファライターのサイズ。

deferred​

Boolean​

​false​

​true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/octet-stream​

application/x-binary​

# バイナリ形式 MIME タイプ: `application/octet-stream` ID: `binary` バイナリデータ形式では、画像や PDF などのバイナリコンテンツを処理します。そのようなコンテンツは、​`Binary`​ 型として表されます。 バイナリコンテンツは、RAM メモリに保存されます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/octet-stream

application/x-binary

# バイナリ形式 MIME タイプ: `application/octet-stream` ID: `binary` バイナリデータ形式では、画像や PDF などのバイナリコンテンツを処理します。そのようなコンテンツは、​`Binary`​ 型として表されます。 バイナリコンテンツは、RAM メモリに保存されます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/octet-stream

application/x-binary

# バイナリ形式 MIME タイプ: `application/octet-stream` ID: `binary` バイナリデータ形式では、画像や PDF などのバイナリコンテンツを処理します。そのようなコンテンツは、​`Binary`​ 型として表されます。 バイナリコンテンツは、RAM メモリに保存されます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/octet-stream

application/x-binary

# バイナリ形式 MIME タイプ: `application/octet-stream` ID: `binary` バイナリデータ形式では、画像や PDF などのバイナリコンテンツを処理します。そのようなコンテンツは、​`Binary`​ 型として表されます。 バイナリコンテンツは、RAM メモリに保存されます。 ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式のリーダープロパティはありません。 ### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

application/octet-stream

application/x-binary

# ファイル ## [](#file1)file(​{| name: String, path: String, mime?: String, fileName?: String |}​) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、パラメーター名をキーとして使用するオブジェクトの配列として引数を受け入れます。例: ```txt Multipart::file({ name: "myFile", path: "myClients.json", mime: "application/json", fileName: "partMyClients.json"}) ``` ### [](#パラメーター)パラメーター
名前 説明

​opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var myClients = "myClients.json" var myArgs = { name: "myFile", path: "myClients.json", mime: "application/json", * fileName: "partMyClients.json"} --- Multipart::form([ Multipart::file(myArgs) ]) ``` #### [](#入力)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```json clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` ## [](#file2)file(String, String, String, String) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、次のようにカンマ区切りリストで引数を受け入れます。 ```txt Multipart::field("myFile", myClients, 'application/json', "partMyClients.json") ``` ### [](#パラメーター-2)パラメーター
名前 説明

​opts

以下を指定するオブジェクトの配列。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例-2)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ 型を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart var myClients = "myClients.json" output multipart/form-data --- Multipart::form([ Multipart::file("myFile", myClients, 'application/json', "partMyClients.json") ]) ``` #### [](#入力-2)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```JSON clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力-2)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` # ファイル ## [](#file1)file(opts: {| name: String, path: String, mime?: String, fileName?: String |}​) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数では引数としてキー/値ペアを含むオブジェクトが受け入れられるため、次のようにキー/値ペアを任意の順序で入力できます。 ```txt Multipart::file({ name: "myFile", path: "myClients.json", mime: "application/json", fileName: "partMyClients.json"}) ``` ### [](#パラメーター)パラメーター
名前 説明

​opts

次のキー/値ペアを指定するオブジェクト。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例)例 次の例では、DataWeave 関数でアクセスできるファイルから ​`MultipartPart`​ を作成します。ファイル名は ​`orders.xml`​ で、Mule アプリケーションの ​`/src/main/resources`​ にあります。 `file`​ 関数は外部の ​`orders.xml`​ ファイルを見つけ、キー/値ペアを使用して ​`MultipartPart`​ の作成に必要なさまざまなパラメーターを指示します。 - `name`​ は任意に指定できますが、通常はこの ​`Multipart`​ ペイロードを受け入れる受信側サーバーで必要なパラメーターに合わせます。 - `path`​ は ​`./orders.xml`​ に設定されます。これは ​`MultipartPart`​ に読み込まれる ​`orders.xml`​ ファイルのパスと名前です。 - `mime`​ パラメーターではファイルの適切な MIME タイプを指定します。この場合は ​`application/xml`​ です。 - `filename`​ は任意の値に変更できます。実際の入力ファイルのファイル名と違ってもかまいません。 この例の出力は ​`Multipart`​ 構造の一部でしかないため、​`multipart/form-data`​ 出力種別との互換性がありません。有効な ​`multipart/form-data`​ 出力を作成するには、​`Multipart::form()`​ 関数を 1 つ以上の ​`Multipart`​ ファイルや項目に使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output application/dw var ordersFilePath = "./orders.xml" --- Multipart::file{ name: "file", path: ordersFilePath, mime: "application/xml", fileName: "orders.xml" } ``` #### [](#入力)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`orders.xml`​ という名前のファイル。 ```xml 1001 1 \$100 2001 2 \$50 ``` #### [](#出力)出力 ```json { headers: { "Content-Type": "application/xml", "Content-Disposition": { name: "file", filename: "orders.xml" } }, content: "\n\n \n \n 1001\n 1\n \$100\n \n \n 2001\n 2\n \$50\n \n \n" } ``` ### [](#例-2)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ に挿入して、​`multipart/form-data`​ 出力にします。この例では ​`form`​ 関数を使用して ​`Multipart`​ を作成し、​`file`​ を使用してパートを作成します。 `Multipart::form()`​ 関数は、各パートを ​`Multipart::field()`​ または ​`Multipart::file()`​ 関数を使用して作成可能な ​`Multipart`​ 項目の配列を受け入れます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var ordersFilePath = "./orders.xml" var myArgs = { name: "file", path: ordersFilePath, mime: "application/xml", fileName: "myorders.xml"} --- Multipart::form([ Multipart::file(myArgs) ]) ``` #### [](#出力-2)出力 ```json ------=_Part_5349_1228640551.1560391284935 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_5349_1228640551.1560391284935-- ``` ## [](#file2)file(fieldName: String, path: String, mime: String = 'application/octet-stream', sentFileName: String = 'filename') ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、次のようにカンマ区切りリストで文字列引数を受け入れます。 ```txt Multipart::field("myFile", myClients, 'application/json', "partMyClients.json") ``` ### [](#パラメーター-2)パラメーター
名前 説明

​fieldName

パートの ​Content-Disposition​ ヘッダーの一意の名前 (必須)。

​path

Mule アプリケーションの ​src/main/resources​ プロジェクトパスへの相対パス (必須)。

​mime

パート内のコンテンツに適用する MIME タイプ (文字列の場合は省略可能)。例: application/json​。この設定を使用して入力の MIME タイプを変換することは​できません​。

​sentFileName

パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの省略可能なファイル名の値。指定されていない場合、デフォルトで文字列 ​"filename"​ になります。この値は入力ファイル名に一致する必要はありません。

### [](#例-3)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ 型を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart var myClients = "myClients.json" output multipart/form-data --- Multipart::form([ Multipart::file("myFile", myClients, 'application/json', "partMyClients.json") ]) ``` #### [](#入力-2)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```JSON clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力-3)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` # ファイル ## [](#file1)file(opts: {| name: String, path: String, mime?: String, fileName?: String |}) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数では引数としてキー/値ペアを含むオブジェクトが受け入れられるため、次のようにキー/値ペアを任意の順序で入力できます。 ```txt Multipart::file({ name: "myFile", path: "myClients.json", mime: "application/json", fileName: "partMyClients.json"}) ``` ### [](#パラメーター)パラメーター
名前 説明

opts

次のキー/値ペアを指定するオブジェクト。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例)例 次の例では、DataWeave 関数でアクセスできるファイルから ​`MultipartPart`​ を作成します。ファイル名は ​`orders.xml`​ で、Mule アプリケーションの ​`/src/main/resources`​ にあります。 `file`​ 関数は外部の ​`orders.xml`​ ファイルを見つけ、キー/値ペアを使用して ​`MultipartPart`​ の作成に必要なさまざまなパラメーターを指示します。 - `name`​ は任意に指定できますが、通常はこの ​`Multipart`​ ペイロードを受け入れる受信側サーバーで必要なパラメーターに合わせます。 - `path`​ は ​`./orders.xml`​ に設定されます。これは ​`MultipartPart`​ に読み込まれる ​`orders.xml`​ ファイルのパスと名前です。 - `mime`​ パラメーターではファイルの適切な MIME タイプを指定します。この場合は ​`application/xml`​ です。 - `filename`​ は任意の値に変更できます。実際の入力ファイルのファイル名と違ってもかまいません。 この例の出力は ​`Multipart`​ 構造の一部でしかないため、​`multipart/form-data`​ 出力種別との互換性がありません。有効な ​`multipart/form-data`​ 出力を作成するには、​`Multipart::form()`​ 関数を 1 つ以上の ​`Multipart`​ ファイルや項目に使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output application/dw var ordersFilePath = "./orders.xml" --- Multipart::file{ name: "file", path: ordersFilePath, mime: "application/xml", fileName: "orders.xml" } ``` #### [](#入力)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`orders.xml`​ という名前のファイル。 ```xml 1001 1 \$100 2001 2 \$50 ``` #### [](#出力)出力 ```json { headers: { "Content-Type": "application/xml", "Content-Disposition": { name: "file", filename: "orders.xml" } }, content: "\n\n \n \n 1001\n 1\n \$100\n \n \n 2001\n 2\n \$50\n \n \n" } ``` ### [](#例-2)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ に挿入して、​`multipart/form-data`​ 出力にします。この例では ​`form`​ 関数を使用して ​`Multipart`​ を作成し、​`file`​ を使用してパートを作成します。 `Multipart::form()`​ 関数は、各パートを ​`Multipart::field()`​ または ​`Multipart::file()`​ 関数を使用して作成可能な ​`Multipart`​ 項目の配列を受け入れます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var ordersFilePath = "./orders.xml" var myArgs = { name: "file", path: ordersFilePath, mime: "application/xml", fileName: "myorders.xml"} --- Multipart::form([ Multipart::file(myArgs) ]) ``` #### [](#出力-2)出力 ```json ------=_Part_5349_1228640551.1560391284935 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_5349_1228640551.1560391284935-- ``` ## [](#file2)file(fieldName: String, path: String, mime: String = 'application/octet-stream', sentFileName: String = 'filename') ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、次のようにカンマ区切りリストで文字列引数を受け入れます。 ```txt Multipart::field("myFile", myClients, 'application/json', "partMyClients.json") ``` ### [](#パラメーター-2)パラメーター
名前 説明

fieldName

パートの ​Content-Disposition​ ヘッダーの一意の名前 (必須)。

path

Mule アプリケーションの ​src/main/resources​ プロジェクトパスへの相対パス (必須)。

mime

パート内のコンテンツに適用する MIME タイプ (文字列の場合は省略可能)。例: application/json​。この設定を使用して入力の MIME タイプを変換することは​できません​。

sentFileName

パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの省略可能なファイル名の値。指定されていない場合、デフォルトで文字列 ​"filename"​ になります。この値は入力ファイル名に一致する必要はありません。

### [](#例-3)例 次の例では、ファイルの内容を ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ 型を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart var myClients = "myClients.json" output multipart/form-data --- Multipart::form([ Multipart::file("myFile", myClients, 'application/json', "partMyClients.json") ]) ``` #### [](#入力-2)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```JSON clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力-3)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` # ファイル ## [](#file1)file(opts: {| name: String, path: String, mime?: String, fileName?: String |}) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数では引数としてキー/値ペアを含むオブジェクトが受け入れられるため、次のようにキー/値ペアを任意の順序で入力できます。 ```txt Multipart::file({ name: "myFile", path: "myClients.json", mime: "application/json", fileName: "partMyClients.json"}) ``` ### [](#パラメーター)パラメーター
名前 説明

opts

次のキー/値ペアを指定するオブジェクト。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例)例 次の例では、DataWeave 関数でアクセスできるファイルから ​`MultipartPart`​ を作成します。ファイル名は ​`orders.xml`​ で、Mule アプリケーションの ​`/src/main/resources`​ にあります。 `file`​ 関数は外部の ​`orders.xml`​ ファイルを見つけ、キー/値ペアを使用して ​`MultipartPart`​ の作成に必要なさまざまなパラメーターを指示します。 - `name`​ は任意に指定できますが、通常はこの ​`Multipart`​ ペイロードを受け入れる受信側サーバーで必要なパラメーターに合わせます。 - `path`​ は ​`./orders.xml`​ に設定されます。これは ​`MultipartPart`​ に読み込まれる ​`orders.xml`​ ファイルのパスと名前です。 - `mime`​ パラメーターではファイルの適切な MIME タイプを指定します。この場合は ​`application/xml`​ です。 - `filename`​ は任意の値に変更できます。実際の入力ファイルのファイル名と違ってもかまいません。 この例の出力は ​`Multipart`​ 構造の一部でしかないため、​`multipart/form-data`​ 出力種別との互換性がありません。有効な ​`multipart/form-data`​ 出力を作成するには、​`Multipart::form()`​ 関数を 1 つ以上の ​`Multipart`​ ファイルや項目に使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output application/dw var ordersFilePath = "./orders.xml" --- Multipart::file{ name: "file", path: ordersFilePath, mime: "application/xml", fileName: "orders.xml" } ``` #### [](#入力)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`orders.xml`​ という名前のファイル。 ```xml 1001 1 \$100 2001 2 \$50 ``` #### [](#出力)出力 ```json { headers: { "Content-Type": "application/xml", "Content-Disposition": { name: "file", filename: "orders.xml" } }, content: "\n\n \n \n 1001\n 1\n \$100\n \n \n 2001\n 2\n \$50\n \n \n" } ``` ### [](#例-2)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ に挿入して、​`multipart/form-data`​ 出力にします。この例では ​`form`​ 関数を使用して ​`Multipart`​ を作成し、​`file`​ を使用してパートを作成します。 `Multipart::form()`​ 関数は、各パートを ​`Multipart::field()`​ または ​`Multipart::file()`​ 関数を使用して作成可能な ​`Multipart`​ 項目の配列を受け入れます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var ordersFilePath = "./orders.xml" var myArgs = { name: "file", path: ordersFilePath, mime: "application/xml", fileName: "myorders.xml"} --- Multipart::form([ Multipart::file(myArgs) ]) ``` #### [](#出力-2)出力 ```json ------=_Part_5349_1228640551.1560391284935 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_5349_1228640551.1560391284935-- ``` ## [](#file2)file(fieldName: String, path: String, mime: String = 'application/octet-stream', sentFileName: String = 'filename') ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、次のようにカンマ区切りリストで文字列引数を受け入れます。 ```txt Multipart::field("myFile", myClients, 'application/json', "partMyClients.json") ``` ### [](#パラメーター-2)パラメーター
名前 説明

fieldName

パートの ​Content-Disposition​ ヘッダーの一意の名前 (必須)。

path

Mule アプリケーションの ​src/main/resources​ プロジェクトパスへの相対パス (必須)。

mime

パート内のコンテンツに適用する MIME タイプ (文字列の場合は省略可能)。例: application/json​。この設定を使用して入力の MIME タイプを変換することは​できません​。

sentFileName

パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの省略可能なファイル名の値。指定されていない場合、デフォルトで文字列 ​"filename"​ になります。この値は入力ファイル名に一致する必要はありません。

### [](#例-3)例 次の例では、ファイルの内容を ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ 型を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart var myClients = "myClients.json" output multipart/form-data --- Multipart::form([ Multipart::file("myFile", myClients, 'application/json', "partMyClients.json") ]) ``` #### [](#入力-2)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```JSON clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力-3)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` # ファイル ## [](#file1)file(opts: {| name: String, path: String, mime?: String, fileName?: String |}) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数では引数としてキー/値ペアを含むオブジェクトが受け入れられるため、次のようにキー/値ペアを任意の順序で入力できます。 ```txt Multipart::file({ name: "myFile", path: "myClients.json", mime: "application/json", fileName: "partMyClients.json"}) ``` ### [](#パラメーター)パラメーター
名前 説明

opts

次のキー/値ペアを指定するオブジェクト。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例)例 次の例では、DataWeave 関数でアクセスできるファイルから ​`MultipartPart`​ を作成します。ファイル名は ​`orders.xml`​ で、Mule アプリケーションの ​`/src/main/resources`​ にあります。 `file`​ 関数は外部の ​`orders.xml`​ ファイルを見つけ、キー/値ペアを使用して ​`MultipartPart`​ の作成に必要なさまざまなパラメーターを指示します。 - `name`​ は任意に指定できますが、通常はこの ​`Multipart`​ ペイロードを受け入れる受信側サーバーで必要なパラメーターに合わせます。 - `path`​ は ​`./orders.xml`​ に設定されます。これは ​`MultipartPart`​ に読み込まれる ​`orders.xml`​ ファイルのパスと名前です。 - `mime`​ パラメーターではファイルの適切な MIME タイプを指定します。この場合は ​`application/xml`​ です。 - `filename`​ は任意の値に変更できます。実際の入力ファイルのファイル名と違ってもかまいません。 この例の出力は ​`Multipart`​ 構造の一部でしかないため、​`multipart/form-data`​ 出力種別との互換性がありません。有効な ​`multipart/form-data`​ 出力を作成するには、​`Multipart::form()`​ 関数を 1 つ以上の ​`Multipart`​ ファイルや項目に使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output application/dw var ordersFilePath = "./orders.xml" --- Multipart::file{ name: "file", path: ordersFilePath, mime: "application/xml", fileName: "orders.xml" } ``` #### [](#入力)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`orders.xml`​ という名前のファイル。 ```xml 1001 1 \$100 2001 2 \$50 ``` #### [](#出力)出力 ```json { headers: { "Content-Type": "application/xml", "Content-Disposition": { name: "file", filename: "orders.xml" } }, content: "\n\n \n \n 1001\n 1\n \$100\n \n \n 2001\n 2\n \$50\n \n \n" } ``` ### [](#例-2)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ に挿入して、​`multipart/form-data`​ 出力にします。この例では ​`form`​ 関数を使用して ​`Multipart`​ を作成し、​`file`​ を使用してパートを作成します。 `Multipart::form()`​ 関数は、各パートを ​`Multipart::field()`​ または ​`Multipart::file()`​ 関数を使用して作成可能な ​`Multipart`​ 項目の配列を受け入れます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var ordersFilePath = "./orders.xml" var myArgs = { name: "file", path: ordersFilePath, mime: "application/xml", fileName: "myorders.xml"} --- Multipart::form([ Multipart::file(myArgs) ]) ``` #### [](#出力-2)出力 ```json ------=_Part_5349_1228640551.1560391284935 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_5349_1228640551.1560391284935-- ``` ## [](#file2)file(fieldName: String, path: String, mime: String = 'application/octet-stream', sentFileName: String = 'filename') ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、次のようにカンマ区切りリストで文字列引数を受け入れます。 ```txt Multipart::field("myFile", myClients, 'application/json', "partMyClients.json") ``` ### [](#パラメーター-2)パラメーター
名前 説明

fieldName

パートの ​Content-Disposition​ ヘッダーの一意の名前 (必須)。

path

Mule アプリケーションの ​src/main/resources​ プロジェクトパスへの相対パス (必須)。

mime

パート内のコンテンツに適用する MIME タイプ (文字列の場合は省略可能)。例: application/json​。この設定を使用して入力の MIME タイプを変換することは​できません​。

sentFileName

パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの省略可能なファイル名の値。指定されていない場合、デフォルトで文字列 ​"filename"​ になります。この値は入力ファイル名に一致する必要はありません。

### [](#例-3)例 次の例では、ファイルの内容を ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ 型を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart var myClients = "myClients.json" output multipart/form-data --- Multipart::form([ Multipart::file("myFile", myClients, 'application/json', "partMyClients.json") ]) ``` #### [](#入力-2)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```JSON clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力-3)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` # ファイル ## [](#file1)file(opts: {| name: String, path: String, mime?: String, fileName?: String |}) ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数では引数としてキー/値ペアを含むオブジェクトが受け入れられるため、次のようにキー/値ペアを任意の順序で入力できます。 ```txt Multipart::file({ name: "myFile", path: "myClients.json", mime: "application/json", fileName: "partMyClients.json"}) ``` ### [](#パラメーター)パラメーター
名前 説明

opts

次のキー/値ペアを指定するオブジェクト。

  • name​ (必須): パートの ​Content-Disposition​ ヘッダーの一意の名前。

  • path​ (必須): Mule アプリケーションの ​src/main/resources​ プロジェクトパスを基準とする相対パス。

  • mime​ (文字列の場合は省略可能): パート内のコンテンツに適用する MIME タイプ (例: application/json​)。この設定を使用して入力の MIME タイプを変換することは​できません​。

  • fileName​ (省略可能): パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの値。指定されていない場合、デフォルトの文字列 ​"filename"​ に設定されます。この値は入力ファイル名に一致する必要はありません。

### [](#例)例 次の例では、DataWeave 関数でアクセスできるファイルから ​`MultipartPart`​ を作成します。ファイル名は ​`orders.xml`​ で、Mule アプリケーションの ​`/src/main/resources`​ にあります。 `file`​ 関数は外部の ​`orders.xml`​ ファイルを見つけ、キー/値ペアを使用して ​`MultipartPart`​ の作成に必要なさまざまなパラメーターを指示します。 - `name`​ は任意に指定できますが、通常はこの ​`Multipart`​ ペイロードを受け入れる受信側サーバーで必要なパラメーターに合わせます。 - `path`​ は ​`./orders.xml`​ に設定されます。これは ​`MultipartPart`​ に読み込まれる ​`orders.xml`​ ファイルのパスと名前です。 - `mime`​ パラメーターではファイルの適切な MIME タイプを指定します。この場合は ​`application/xml`​ です。 - `filename`​ は任意の値に変更できます。実際の入力ファイルのファイル名と違ってもかまいません。 この例の出力は ​`Multipart`​ 構造の一部でしかないため、​`multipart/form-data`​ 出力種別との互換性がありません。有効な ​`multipart/form-data`​ 出力を作成するには、​`Multipart::form()`​ 関数を 1 つ以上の ​`Multipart`​ ファイルや項目に使用します。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output application/dw var ordersFilePath = "./orders.xml" --- Multipart::file{ name: "file", path: ordersFilePath, mime: "application/xml", fileName: "orders.xml" } ``` #### [](#入力)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`orders.xml`​ という名前のファイル。 ```xml 1001 1 \$100 2001 2 \$50 ``` #### [](#出力)出力 ```json { headers: { "Content-Type": "application/xml", "Content-Disposition": { name: "file", filename: "orders.xml" } }, content: "\n\n \n \n 1001\n 1\n \$100\n \n \n 2001\n 2\n \$50\n \n \n" } ``` ### [](#例-2)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ に挿入して、​`multipart/form-data`​ 出力にします。この例では ​`form`​ 関数を使用して ​`Multipart`​ を作成し、​`file`​ を使用してパートを作成します。 `Multipart::form()`​ 関数は、各パートを ​`Multipart::field()`​ または ​`Multipart::file()`​ 関数を使用して作成可能な ​`Multipart`​ 項目の配列を受け入れます。 #### [](#ソース-2)ソース ```DataWeave %dw 2.0 import dw::module::Multipart output multipart/form-data var ordersFilePath = "./orders.xml" var myArgs = { name: "file", path: ordersFilePath, mime: "application/xml", fileName: "myorders.xml"} --- Multipart::form([ Multipart::file(myArgs) ]) ``` #### [](#出力-2)出力 ```json ------=_Part_5349_1228640551.1560391284935 Content-Type: application/xml Content-Disposition: form-data; name="file"; filename="myorders.xml" 1001 1 $100 2001 2 $50 ------=_Part_5349_1228640551.1560391284935-- ``` ## [](#file2)file(fieldName: String, path: String, mime: String = 'application/octet-stream', sentFileName: String = 'filename') ソースファイルから ​`MultipartPart`​ データ構造を作成します。 このバージョンの ​`file`​ 関数は、次のようにカンマ区切りリストで文字列引数を受け入れます。 ```txt Multipart::field("myFile", myClients, 'application/json', "partMyClients.json") ``` ### [](#パラメーター-2)パラメーター
名前 説明

fieldName

パートの ​Content-Disposition​ ヘッダーの一意の名前 (必須)。

path

Mule アプリケーションの ​src/main/resources​ プロジェクトパスへの相対パス (必須)。

mime

パート内のコンテンツに適用する MIME タイプ (文字列の場合は省略可能)。例: application/json​。この設定を使用して入力の MIME タイプを変換することは​できません​。

sentFileName

パートの ​Content-Disposition​ ヘッダー内の ​filename​ パラメーターの省略可能なファイル名の値。指定されていない場合、デフォルトで文字列 ​"filename"​ になります。この値は入力ファイル名に一致する必要はありません。

### [](#例-3)例 次の例では、ファイルのコンテンツを ​`MultipartPart`​ から ​`Multipart`​ データ構造に挿入します。​`form`​ 関数を使用して ​`Multipart`​ 型を作成し、​`file`​ を使用して外部ファイル ​`myClients.json`​ の JSON コンテンツを含む ​`myClient`​ という名前のパートを作成します。また、​`filename`​ パラメーターの値として ​`partMyClients.json`​ を指定します。 #### [](#ソース-3)ソース ```DataWeave %dw 2.0 import dw::module::Multipart var myClients = "myClients.json" output multipart/form-data --- Multipart::form([ Multipart::file("myFile", myClients, 'application/json', "partMyClients.json") ]) ``` #### [](#入力-2)入力 次のコンテンツを含む、​`src/main/resources`​ に配置されている ​`myClients.json`​ という名前のファイル。 ```JSON clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } ``` #### [](#出力-3)出力 ```txt ------=_Part_1586_1887987980.1542569342438 Content-Type: application/json Content-Disposition: form-data; name="myFile"; filename="partMyClients.json" { clients: { client: { id: 1, name: "Mariano" }, client: { id: 2, name: "Shoki" } } } ------=_Part_1586_1887987980.1542569342438-- ``` # フラットファイルスキーマ DataWeave ではさまざまな種別のデータを処理できます。このほとんどの種別で、入力構造を記述するスキーマをインポートし、設計時に価値あるメタデータにアクセスできます。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 DataWeave では、フラットファイルスキーマを表す FFD (Flat File Definition) と呼ばれる YAML 形式を使用します。FFD 形式は、広範なユースケースをサポートするのに十分な柔軟姓を備え、要素、複合、セグメント、グループ、および構造の概念に基づきます。 スキーマはフラットファイルスキーマ言語で記述する必要があり、慣例により ​`.ffd`​ 拡張子を使用します。この言語は、Anypoint Studio でも受け入れることができる EDI スキーマ言語 (ESL) によく似ています。 DataWeave では、プロパティを使用して入力または出力をフラットファイルスキーマにバインドできます。 固定幅の簡単な形式を使用する場合、​`Fixed Width`​ 型を使用してデータ型を Transform コンポーネントから直接セットアップできます。Studio でこの型のインスタンスを作成すると、一致するスキーマ定義が自動的に生成されます。 ## [](#スキーマ内のコンポーネントの種別)スキーマ内のコンポーネントの種別 フラットファイルスキーマを構成するさまざまな種別のコンポーネントを、最も基本的なものからより複雑なものまで以下に示します。要素とセグメントは常に必須です。複合、グループ、構造は、​[ドキュメントの最上位構造](#top_level_structure)​に応じて必要になる場合があります。 - 要素 - 要素は基本データ項目です。これには、型と固定幅が関連付けられているほか、データ値の読み書きの方法を示す書式オプションがあります。 - 複合 - (省略可能) 要素のグループ。これには、他の子複合を含めることもできます。 - セグメント - 反復可能な任意の数の要素または複合で構成される一行のデータ (レコード)。 - グループ - (省略可能) まとめられた複数のセグメント。これには、他の子グループを含めることもできます。 - 構造 - セグメントの階層構成。これには、データの一部として一意の識別子コードが含まれている必要があります。 ## [](#top_level_structure)FFD ドキュメントの最上位構造 FFD ドキュメントの最上位定義はスキーマの形式から始まります。この場合は、常に「FLATFILE」、「COPYBOOK」、または「FIXEDWIDTH」である必要があります。これらの形式の違いはわずかで、そのほとんどは、Studio での処理方法に関連します。残りは、ファイルに含まれる定義の形式に依存し、次の選択肢があります。 - 単一セグメント - 最上位に直接配置されたセグメント情報 (セグメントの要素または複合の詳細を提供する ​`values`​ キーを含む)。 - 複数セグメント - 1 つの ​`segments`​ キーと複数の子オブジェクト。各オブジェクトで 1 つのセグメントを定義します。 - 複数構造 - 1 つの ​`structures`​ キーと複数の子オブジェクト。各オブジェクトで 1 つの構造を定義します。 ### [](#単一セグメント)単一セグメント 1 つのタイプのレコードのみを使用する場合、FFD ではそのレコードタイプのセグメント定義のみが必要です。 ![複数の要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-flat-file-schemas-22788.png) これは 1 つのセグメントのみを持つ単純なスキーマです。 ```yaml form: FLATFILE id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 上の例では、単一セグメント内で要素のリストを定義しているのみです。これらの要素をまとめる複合はありません。 別の例を次に示します。 ```yaml form: FIXEDWIDTH name: my-flat-file values: - { name: 'Row-id', type: String, length: 2 } - { name: 'Total', type: Decimal, length: 11 } - { name: 'Module', type: String, length: 8 } - { name: 'Cost', type: Decimal, length: 8, format: { implicit: 2 } } - { name: 'Program-id', type: String, length: 8 } - { name: 'user-id', type: String, length: 8 } - { name: 'return-sign', type: String, length: 1 } ``` 単にわかりやすくすることを目的として形式を簡略化しています。1 つの子セグメント定義のみの場合も ​`segments`​ キーを使用できます。 ### [](#複数セグメント)複数セグメント 同じ変換で複数のタイプのレコードを使用する場合、その異なるレコードの組み合わせ方法を制御する構造定義を使用する必要があります。 ![要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-flat-file-schemas-680c6.png) ほとんどの場合、異なるタイプのレコードの識別方法を定義する必要があります。これを行うには、レコード定義の一部として ​`tagValue`​ 項目を識別します。パーサーは、各レコードの項目のコンテンツを確認し、レコードタイプを識別した後、定義された構造にレコードがどのように収められているかを確認します。 複数のコンポーネントレコードタイプを持つ完全な構造スキーマの例を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ### [](#複数構造)複数構造 FFD に複数の構造またはセグメント定義がある場合、スキーマを Transform コンポーネントのメタデータ記述に適用するときに、どれを使用するかを指定する必要があります。 ![グループ、セグメント、要素が表示されているフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-flat-file-schemas-4e1eb.png) 複数構造を持つスキーマの最上位構造は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } - id: 'BatchRsp' name: Batch Response data: - { idRef: 'RSH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RSF' } segments: - id: 'RQH' ... ``` この例では、2 つの異なる構造 (​`BatchReq`​ 構造と ​`BatchRsp`​ 構造) を定義します。この各構造で特定のセグメント順序およびセグメントグループを使用します。グループ ​`Batch`​ は両方の構造で反復されます。Batch グループは 1 つの BCH 行、複数の TDR 行、および 1 つの BCF 行で構成されます。 この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ## [](#要素定義)要素定義 要素定義は、標準特性の基本的なキー-値ペアで構成される、アプリケーションデータの基本構成要素です。フラットファイルスキーマではインライン要素定義が一般的に使用されます。この定義では、各要素がセグメントまたは複合構造内の各要素の使用場所で定義されますが、要素を個別に定義して必要に応じて参照することもできます。参考用に定義したいくつかの要素定義を次に示します。 ```yaml - { id: 'OrgCode', name: 'Organization Code', type: String, length: 10 } - { id: 'CreatDate', name: 'File Creation Date', type: Date, length: 8 } - { id: 'CreatTime', name: 'File Creation Time', type: Time, length: 4 } - { id: 'BatchTransCount', name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { id: 'BatchTransAmount', name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } ``` 指定された ​`id`​ 値は、セグメントまたは複合の一部としてこれらの定義のいずれかを参照する場合に ​`idRef`​ 値として使用されます。要素をセグメント定義内でインラインで定義する場合 (ドキュメントの最後に要素を定義して参照する方法とは対照的)、​`id`​ 項目は不要です。 要素定義には次の属性が含まれる可能性があります。これらは、インライン定義、参照された定義 (上の例を参照)、または定義への参照に適用されるものとして、「形式」によって分類されます。
Table 1. 属性
名前 説明 形式

count

出現数 (省略可能、デフォルトは ​1​)。

インラインまたは参照

id

要素識別子

参照された定義

idRef

要素識別子

参照

name

要素名 (省略可能)

すべて

type

値の型コード (以下のリストを参照)

インライン、または参照された定義

format

型固有の書式情報

インライン、または参照された定義

length

値の文字位置の数

インライン、または参照された定義

tagValue

セグメントを識別するために使用するこの要素の値 (​「スキーマの完全な例」​を参照)

インライン、または参照された定義

要素の定義で許可される型を次に示します。
Table 2. 型
名前 説明

Binary (バイナリ)

バイナリ値 (COBOL 形式、2、4、8 バイト)

Boolean (ブール)

ブール値

Date (日付)

年、月、および日コンポーネントを持つ非ゾーン日付値 (一部はテキスト形式で表示されない場合があります)

DateTime

年、月、日、時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン日時値 (一部はテキスト形式で表示されない場合があります)

Decimal (10 進数)

10 進数値。テキスト形式に明示的な小数点が含まれる場合と含まれない場合があります

Integer (整数)

整数値

Packed (パック)

10 進数値のパック 10 進数表現 (COBOL 形式)

String (文字列)

文字列値

Time (時刻)

時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン時刻値 (一部はテキスト形式で表示されない場合があります)

Zoned (ゾーン)

ゾーン 10 進数 (COBOL 形式)

値の型では、値のテキスト形式に影響するさまざまな書式オプションがサポートされます。主なオプションと適用先の型を以下に示します。
Table 3. 書式オプション
キー 説明 適用先

digits (桁数)

許可される桁数

Binary (バイナリ)

implicit (暗黙的)

暗黙的な小数点以下桁数 (テキスト形式で小数点のない固定小数点値で使用されます)

Binary (バイナリ)、Decimal (10 進数)、Packed (パック)、Zoned (ゾーン)

justify (行揃え)

項目内の行揃え (LEFT、RIGHT、NONE、または ZEROES。ZEROES は数値のみで使用)

Binary (バイナリ) と Packed (パック) 以外のすべて

pattern (パターン)

数値の場合、解析および書き込み用の ​java.text.DecimalFormat​ パターン。日時値の場合、​java.time.format.DateTimeFormatter​ パターン。

Date (日付)、DateTime、Decimal (10 進数)、Integer (整数)、Time (時刻)

署名

数値の符号の使用方法 (UNSIGNED、​NEGATIVE_ONLY​、OPTIONAL、​ALWAYS_LEFT​、​ALWAYS_RIGHT​)

Decimal (10 進数)、Integer (整数)、Zoned (ゾーン)

signed (符号あり)

符号ありか符号なしかを示すフラグ

Binary (バイナリ)、Packed (パック)

## [](#複合定義)複合定義 複合は、通常一緒に存在する要素のリストを参照するのに役立ちます。たとえば、​`firstName`​ と ​`lastName`​ はグループとして参照される可能性があるため、それらをまとめて 1 つの複合にバンドルすることができます。要素を複合にまとめると、リストを反復することもできます。 複合定義は、セグメント定義によく似ており、標準特性のいくつかのキー-値ペアおよび値のリストで構成されます。複合には、要素または他のネストされた複合とインライン化された定義への両方の参照が含まれる可能性があります。複合定義の例を次に示します。 ```yaml - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 複合定義には、次の属性が含まれる可能性があります。
名前 説明 形式

controlVal

実際の出現数を提供する、包含するレベルからの値 (​count​ != 1 でのみ使用)

インライン定義、または​参照

count

出現数 (または ​controlVal​ が使用されている場合は最大数) (省略可能、デフォルトは ​1​)

インライン定義、または​参照

id

参照の複合識別子

参照された定義

name

複合名 (省略可能)。

インラインまたは​参照された定義

values

複合内の要素と複合のリスト。

インラインまたは​参照された定義

この値リストはセグメント定義の値リストと同じ形式を使用します。 ## [](#segment_definitions)セグメント定義 セグメントはデータ内のレコードのタイプを記述します。セグメントは主に要素と複合の参照または直接定義と、セグメントを記述するいくつかのキー-値ペアで構成されます。少し複雑なスキーマでは、2 つの異なるセグメントを含む構造を使用し、その 1 つのセグメントで部品表の単一ヘッダーに含める項目 (日付、人など) を記述し、もう 1 つのセグメントで部品表内の実際の各項目に含める繰り返し項目を記述することができます。 これは、1 つの簡単な要素と、2 つの要素が入っている複合を含むサンプルのセグメント定義です。 ```yaml - id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` セグメント定義には、次の属性が含まれる可能性があります。
セクション 説明

id

セグメント識別子 (インライン定義では使用せず、​参照された定義​では必須)

name

セグメント名 (省略可能)

values

セグメント内の要素と複合のリスト (インライン化、または​参照​)

## [](#structure_definitions)構造定義 構造定義はセグメントとグループ定義への参照のリスト、および標準特性の一連のキー-値ペアで構成されます。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。 サンプルの構造定義を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例には、最上位の 2 つのセグメント (​`RQH`​ と ​`RQF`​) への参照、および他のセグメント (​`BCH`​、​`TDR`​、および ​`BCF`​) への参照を含むグループ定義 ​`Batch`​ が含まれます。この構造を機能させるには、​[参照された各セグメント](#segment_definitions)​を定義する必要があります。この例でセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 構造定義には、次の属性が含まれる可能性があります。
構造キー/セクション 説明

id

構造識別子

name

構造名 (省略可能)

data

構造内のセグメント (およびグループ) のリスト

セグメントリスト内の各項目はセグメント参照 (またはインライン定義) またはグループ定義 (常にインライン) です。 ### [](#グループ定義)グループ定義 グループ定義には、次の属性が含まれる可能性があります。
値 説明

groupId

グループ識別子

usage

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、未使用 (Unused) を表す ​U​ を使用できます (省略可能、デフォルトは ​M​)

count

最大反復数の値。数値、または任意の反復数を意味する特別な値 ​>1​ を使用できます (省略可能、指定しない場合は count 値 ​1​ を使用)

items

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

## [](#referenced_vs_inlined_defs)参照された定義とインライン化された定義の比較 最上位形式の選択肢以外にも、構造、セグメント、または複合のコンポーネントを表すことに関して選択肢が用意されています。コンポーネントのセグメント、複合、および要素を使用場所でインラインで定義するか、それらをテーブル内で定義して任意の場所から参照できます。インライン定義のほうがより簡単でコンパクトですが、テーブル形式では定義を再利用できます。テーブル形式の例には ​`id`​ 値を含める必要があり、その定義への各参照で ​`idRef`​ を使用します。次の例は、構造を構成するセグメントにこれを適用する方法を示しています。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { idref: createDate } - { idref: createTime } - { idref: fileId } - { idref: currency } - id: 'RQF' name: "Request File Footer Record" values: - { idref: batchCount } - { idref: transactionCount } - { idref: transactionAmount } - { idref: debitCredit } - { idref: fileId } elements: - { id: createDate, type: Date, length: 8 } - { id: createTime, type: Time, length: 4 } - { id: fileId, type: String, length: 10 } - { id: currency, type: String, length: 3 } - { id: batchCount, type: Integer, format: { justify: zeroes }, length: 4 } - { id: transactionCount, type: Integer, format: { justify: zeroes }, length: 6 } - { id: transactionAmount, type: Integer, format: { justify: zeroes }, length: 12 } - { id: debitCredit, type: String, length: 2 } ``` 上の例では、​`BatchReq`​ 構造は ​`data`​ 定義セクションのセグメントを参照しています。次に、スキーマの最上位の ​`segments`​ セクションでセグメントがそれぞれ定義され、後の ​`elements`​ セクションで定義されている要素を参照しています。 同じ構造のインライン化された定義は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` ## [](#full_schema_ex)スキーマの完全な例 ```yaml form: FLATFILE structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQH' } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'BCH' name: "Batch Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'H' } - { name: 'Company Name', type: String, length: 30 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'TDR' name: "Transaction Detail Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'D' } - { name: 'Account Number', type: String, length: 10 } - { name: 'Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - id: 'BCF' name: "Batch Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'T' } - { name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - { name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQF' } - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` この例には、5 個のコンポーネント​[セグメント](#segment_definitions)​を持つ「BatchReq」という名前の 1 つの​[構造](#structure_definitions)​が含まれ、ファイルおよびセグメントのバッチデータの 2 重にネストされた構造を使用しています。各バッチには反復する詳細レコードが含まれています。すべての要素定義がインライン化されています。 `BatchReq`​ 構造定義では、データが次のレコードで構成されている必要があります。 - セグメント ​`RQH`​ に対応する 1 つのレコード - セグメント ​`BCH`​ に対応する 1 つ以上のレコード - `BCH`​ レコードごとに、特定のトランザクションの詳細を提供する 1 つ以上の ​`TDR`​ レコード - `BCH`​ レコードごとに、包含する ​`TDR`​ レコードに続く ​`BCF`​ レコード - 最後に、セグメント ​`RQF`​ に対応する 1 つのレコード この例では、各レコードは、​`tagValue`​ が指定された 3 文字の「Record Type (レコードタイプ)」項目で始まります。バッチレコードの場合、レコードタイプは「Batch Function (バッチ関数)」の ​`tagValue`​ によってさらに指定されます。 スキーマ例に一致するデータのサンプルを次に示します。 ```text RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000002D01234567890000032876CR BAT000003D01234567880000087326CR BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000006D12345678900000003582DB BAT000007D12345678910000000256CR BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ``` 例内のインラインは、次のように定義された構造に一致します。 - 1 ​`RQH`​ (要求ファイルのヘッダーレコード) 最初の 3 文字の「RQH」値によって識別 - 2 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 3-4 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 5 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 6 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 7-8 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 9 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 10 ​`RQF`​ (要求ファイルのフッターレコード) 最初の 3 文字の「RQF」値によって識別 `tagValue`​ 項目は高い柔軟性を提供します。上の例では、一部のレコードタイプで単一の ​`tagValue`​ を使用し、他のレコードタイプで 2 番目の ​`tagValue`​ を追加していますが、さまざまなタイプのレコードをパーサーが識別できるように十分な詳細が提供されている限り、​`tagValue`​ でまったく異なる項目を (または、分離された一連の項目も) 使用することもできます。 古いバージョンのドキュメントでは、構造には ​`tagStart`​ と ​`tagLength`​ 値、セグメントには ​`tag`​ 値を使用して、タグ値に基づく異なる方法でレコードを識別していました。セグメントのこの識別方法は、​`tagValue`​ の方法よりも非常に多くの制限があり、廃止されました。 ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#format_flat_file) # フラットファイルスキーマ DataWeave ではさまざまな種別のデータを処理できます。このほとんどの種別で、入力構造を記述するスキーマをインポートし、設計時に価値あるメタデータにアクセスできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、フラットファイルスキーマを表す FFD (Flat File Definition) と呼ばれる YAML 形式を使用します。FFD 形式は、広範なユースケースをサポートするのに十分な柔軟姓を備え、要素、複合、セグメント、グループ、および構造の概念に基づきます。 スキーマはフラットファイルスキーマ言語で記述する必要があり、慣例により ​`.ffd`​ 拡張子を使用します。この言語は、Anypoint Studio でも受け入れることができる EDI スキーマ言語 (ESL) によく似ています。 DataWeave では、プロパティを使用して入力または出力をフラットファイルスキーマにバインドできます。 固定幅の簡単な形式を使用する場合、​`Fixed Width`​ 型を使用してデータ型を Transform コンポーネントから直接セットアップできます。Studio でこの型のインスタンスを作成すると、一致するスキーマ定義が自動的に生成されます。 ## [](#スキーマ内のコンポーネントの種別)スキーマ内のコンポーネントの種別 フラットファイルスキーマを構成するさまざまな種別のコンポーネントを、最も基本的なものからより複雑なものまで以下に示します。要素とセグメントは常に必須です。複合、グループ、構造は、​[ドキュメントの最上位構造](#top_level_structure)​に応じて必要になる場合があります。 - 要素 - 要素は基本データ項目です。これには、型と固定幅が関連付けられているほか、データ値の読み書きの方法を示す書式オプションがあります。 - 複合 - (省略可能) 要素のグループ。これには、他の子複合を含めることもできます。 - セグメント - 反復可能な任意の数の要素または複合で構成される一行のデータ (レコード)。 - グループ - (省略可能) まとめられた複数のセグメント。これには、他の子グループを含めることもできます。 - 構造 - セグメントの階層構成。これには、データの一部として一意の識別子コードが含まれている必要があります。 ## [](#top_level_structure)FFD ドキュメントの最上位構造 FFD ドキュメントの最上位定義はスキーマの形式から始まります。この場合は、常に「FLATFILE」、「COPYBOOK」、または「FIXEDWIDTH」である必要があります。これらの形式の違いはわずかで、そのほとんどは、Studio での処理方法に関連します。残りは、ファイルに含まれる定義の形式に依存し、次の選択肢があります。 - 単一セグメント - 最上位に直接配置されたセグメント情報 (セグメントの要素または複合の詳細を提供する ​`values`​ キーを含む)。 - 複数セグメント - 1 つの ​`segments`​ キーと複数の子オブジェクト。各オブジェクトで 1 つのセグメントを定義します。 - 複数構造 - 1 つの ​`structures`​ キーと複数の子オブジェクト。各オブジェクトで 1 つの構造を定義します。 ### [](#単一セグメント)単一セグメント 1 つのタイプのレコードのみを使用する場合、FFD ではそのレコードタイプのセグメント定義のみが必要です。 ![複数の要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-flat-file-schemas-22788.png) これは 1 つのセグメントのみを持つ単純なスキーマです。 ```yaml form: FLATFILE id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 上の例では、単一セグメント内で要素のリストを定義しているのみです。これらの要素をまとめる複合はありません。 別の例を次に示します。 ```yaml form: FIXEDWIDTH name: my-flat-file values: - { name: 'Row-id', type: String, length: 2 } - { name: 'Total', type: Decimal, length: 11 } - { name: 'Module', type: String, length: 8 } - { name: 'Cost', type: Decimal, length: 8, format: { implicit: 2 } } - { name: 'Program-id', type: String, length: 8 } - { name: 'user-id', type: String, length: 8 } - { name: 'return-sign', type: String, length: 1 } ``` 単にわかりやすくすることを目的として形式を簡略化しています。1 つの子セグメント定義のみの場合も ​`segments`​ キーを使用できます。 ### [](#複数セグメント)複数セグメント 同じ変換で複数のタイプのレコードを使用する場合、その異なるレコードの組み合わせ方法を制御する構造定義を使用する必要があります。 ![要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-flat-file-schemas-680c6.png) ほとんどの場合、異なるタイプのレコードの識別方法を定義する必要があります。これを行うには、レコード定義の一部として ​`tagValue`​ 項目を識別します。パーサーは、各レコードの項目のコンテンツを確認し、レコードタイプを識別した後、定義された構造にレコードがどのように収められているかを確認します。 複数のコンポーネントレコードタイプを持つ完全な構造スキーマの例を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ### [](#複数構造)複数構造 FFD に複数の構造またはセグメント定義がある場合、スキーマを Transform コンポーネントのメタデータ記述に適用するときに、どれを使用するかを指定する必要があります。 ![グループ、セグメント、要素が表示されているフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.4/_images/dataweave-flat-file-schemas-4e1eb.png) 複数構造を持つスキーマの最上位構造は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } - id: 'BatchRsp' name: Batch Response data: - { idRef: 'RSH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RSF' } segments: - id: 'RQH' ... ``` この例では、2 つの異なる構造 (​`BatchReq`​ 構造と ​`BatchRsp`​ 構造) を定義します。この各構造で特定のセグメント順序およびセグメントグループを使用します。グループ ​`Batch`​ は両方の構造で反復されます。Batch グループは 1 つの BCH 行、複数の TDR 行、および 1 つの BCF 行で構成されます。 この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ## [](#要素定義)要素定義 要素定義は、標準特性の基本的なキー-値ペアで構成される、アプリケーションデータの基本構成要素です。フラットファイルスキーマではインライン要素定義が一般的に使用されます。この定義では、各要素がセグメントまたは複合構造内の各要素の使用場所で定義されますが、要素を個別に定義して必要に応じて参照することもできます。参考用に定義したいくつかの要素定義を次に示します。 ```yaml - { id: 'OrgCode', name: 'Organization Code', type: String, length: 10 } - { id: 'CreateDate', name: 'File Creation Date', type: Date, length: 8 } - { id: 'CreateTime', name: 'File Creation Time', type: Time, length: 4 } - { id: 'BatchTransCount', name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { id: 'BatchTransAmount', name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } ``` 指定された ​`id`​ 値は、セグメントまたは複合の一部としてこれらの定義のいずれかを参照する場合に ​`idRef`​ 値として使用されます。要素をセグメント定義内でインラインで定義する場合 (ドキュメントの最後に要素を定義して参照する方法とは対照的)、​`id`​ 項目は不要です。 要素定義には次の属性が含まれる可能性があります。これらは、インライン定義、参照された定義 (上の例を参照)、または定義への参照に適用されるものとして、「形式」によって分類されます。
Table 1. 属性
名前 説明 形式

count

出現数 (省略可能、デフォルトは ​1​)。

インラインまたは参照

id

要素識別子。

参照された定義

idRef

要素識別子。

参照

name

要素名 (省略可能)

すべて

type

値の型コード (以下のリストを参照)

インライン、または参照された定義

format

型固有の書式情報

インライン、または参照された定義

length

値の文字位置の数

インライン、または参照された定義

tagValue

セグメントを識別するために使用するこの要素の値 (​「スキーマの完全な例」​を参照)

インライン、または参照された定義

要素の定義で許可される型を次に示します。
Table 2. 型
名前 説明

Binary (バイナリ)

バイナリ値 (COBOL 形式、2、4、8 バイト)

Boolean (ブール)

ブール値

Date (日付)

年、月、および日コンポーネントを持つ非ゾーン日付値 (一部はテキスト形式で表示されない場合があります)

DateTime

年、月、日、時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン日時値 (一部はテキスト形式で表示されない場合があります)

Decimal (10 進数)

10 進数値。テキスト形式に明示的な小数点が含まれる場合と含まれない場合があります

Integer (整数)

整数値

Packed (パック)

10 進数値のパック 10 進数表現 (COBOL 形式)

String (文字列)

文字列値

Time (時刻)

時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン時刻値 (一部はテキスト形式で表示されない場合があります)

Zoned (ゾーン)

ゾーン 10 進数 (COBOL 形式)

値の型では、値のテキスト形式に影響するさまざまな書式オプションがサポートされます。主なオプションと適用先の型を以下に示します。
Table 3. 書式オプション
Key (キー) 説明 適用先

digits (桁数)

許可される桁数

Binary (バイナリ)

implicit (暗黙的)

暗黙的な小数点以下桁数 (テキスト形式で小数点のない固定小数点値で使用されます)

Binary (バイナリ)、Decimal (10 進数)、Packed (パック)、Zoned (ゾーン)

justify (行揃え)

項目内の行揃え (LEFT、RIGHT、NONE、または ZEROES。ZEROES は数値のみで使用)

Binary (バイナリ) と Packed (パック) 以外のすべて

pattern (パターン)

数値の場合、解析および書き込み用の ​java.text.DecimalFormat​ パターン。日時値の場合、​java.time.format.DateTimeFormatter​ パターン。

Date (日付)、DateTime、Decimal (10 進数)、Integer (整数)、Time (時刻)

署名

数値の符号の使用方法 (UNSIGNED、​NEGATIVE_ONLY​、OPTIONAL、​ALWAYS_LEFT​、​ALWAYS_RIGHT​)

Decimal (10 進数)、Integer (整数)、Zoned (ゾーン)

signed (符号あり)

符号ありか符号なしかを示すフラグ

Binary (バイナリ)、Packed (パック)

## [](#複合定義)複合定義 複合は、通常一緒に存在する要素のリストを参照するのに役立ちます。たとえば、​`firstName`​ と ​`lastName`​ はグループとして参照される可能性があるため、それらをまとめて 1 つの複合にバンドルすることができます。要素を複合にまとめると、リストを反復することもできます。 複合定義は、セグメント定義によく似ており、標準特性のいくつかのキー-値ペアおよび値のリストで構成されます。複合には、要素または他のネストされた複合とインライン化された定義への両方の参照が含まれる可能性があります。複合定義の例を次に示します。 ```yaml - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 複合定義には、次の属性が含まれる可能性があります。
名前 説明 形式

controlVal

実際の出現数を提供する、包含するレベルからの値 (​count​ != 1 でのみ使用)

インライン定義、または​参照

count

出現数 (または ​controlVal​ が使用されている場合は最大数) (省略可能、デフォルトは ​1​)

インライン定義、または​参照

id

参照の複合識別子

参照された定義

name

複合名 (省略可能)。

インラインまたは​参照された定義

values

複合内の要素と複合のリスト。

インラインまたは​参照された定義

この値リストはセグメント定義の値リストと同じ形式を使用します。 ## [](#segment_definitions)セグメント定義 セグメントはデータ内のレコードのタイプを記述します。セグメントは主に要素と複合の参照または直接定義と、セグメントを記述するいくつかのキー-値ペアで構成されます。少し複雑なスキーマでは、2 つの異なるセグメントを含む構造を使用し、その 1 つのセグメントで部品表の単一ヘッダーに含める項目 (日付、人など) を記述し、もう 1 つのセグメントで部品表内の実際の各項目に含める繰り返し項目を記述することができます。 これは、1 つの簡単な要素と、2 つの要素が入っている複合を含むサンプルのセグメント定義です。 ```yaml - id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` セグメント定義には、次の属性が含まれる可能性があります。
セクション 説明

id

セグメント識別子 (インライン定義では使用せず、​参照された定義​では必須)

name

セグメント名 (省略可能)

values

セグメント内の要素と複合のリスト (インライン化、または​参照​)

## [](#structure_definitions)構造定義 構造定義はセグメントとグループ定義への参照のリスト、および標準特性の一連のキー-値ペアで構成されます。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。 サンプルの構造定義を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例には、最上位の 2 つのセグメント (​`RQH`​ と ​`RQF`​) への参照、および他のセグメント (​`BCH`​、​`TDR`​、および ​`BCF`​) への参照を含むグループ定義 ​`Batch`​ が含まれます。この構造を機能させるには、​[参照された各セグメント](#segment_definitions)​を定義する必要があります。この例でセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 構造定義には、次の属性が含まれる可能性があります。
構造キー/セクション 説明

id

構造識別子。

name

構造名 (省略可能)

data

構造内のセグメント (およびグループ) のリスト

セグメントリスト内の各項目はセグメント参照 (またはインライン定義) またはグループ定義 (常にインライン) です。 ### [](#グループ定義)グループ定義 グループ定義には、次の属性が含まれる可能性があります。
値 説明

groupId

グループ識別子。

usage

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、未使用 (Unused) を表す ​U​ を使用できます (省略可能、デフォルトは ​M​)

count

最大反復数の値。数値、または任意の反復数を意味する特別な値 ​>1​ を使用できます (省略可能、指定しない場合は count 値 ​1​ を使用)

items

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

## [](#referenced_vs_inlined_defs)参照された定義とインライン化された定義の比較 最上位形式の選択肢以外にも、構造、セグメント、または複合のコンポーネントを表すことに関して選択肢が用意されています。コンポーネントのセグメント、複合、および要素を使用場所でインラインで定義するか、それらをテーブル内で定義して任意の場所から参照できます。インライン定義のほうがより簡単でコンパクトですが、テーブル形式では定義を再利用できます。テーブル形式の例には ​`id`​ 値を含める必要があり、その定義への各参照で ​`idRef`​ を使用します。次の例は、構造を構成するセグメントにこれを適用する方法を示しています。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { idref: createDate } - { idref: createTime } - { idref: fileId } - { idref: currency } - id: 'RQF' name: "Request File Footer Record" values: - { idref: batchCount } - { idref: transactionCount } - { idref: transactionAmount } - { idref: debitCredit } - { idref: fileId } elements: - { id: createDate, type: Date, length: 8 } - { id: createTime, type: Time, length: 4 } - { id: fileId, type: String, length: 10 } - { id: currency, type: String, length: 3 } - { id: batchCount, type: Integer, format: { justify: zeroes }, length: 4 } - { id: transactionCount, type: Integer, format: { justify: zeroes }, length: 6 } - { id: transactionAmount, type: Integer, format: { justify: zeroes }, length: 12 } - { id: debitCredit, type: String, length: 2 } ``` 上の例では、​`BatchReq`​ 構造は ​`data`​ 定義セクションのセグメントを参照しています。次に、スキーマの最上位の ​`segments`​ セクションでセグメントがそれぞれ定義され、後の ​`elements`​ セクションで定義されている要素を参照しています。 同じ構造のインライン化された定義は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` ## [](#full_schema_ex)スキーマの完全な例 ```yaml form: FLATFILE structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQH' } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'BCH' name: "Batch Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'H' } - { name: 'Company Name', type: String, length: 30 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'TDR' name: "Transaction Detail Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'D' } - { name: 'Account Number', type: String, length: 10 } - { name: 'Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - id: 'BCF' name: "Batch Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'T' } - { name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - { name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQF' } - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` この例には、5 個のコンポーネント​[セグメント](#segment_definitions)​を持つ「BatchReq」という名前の 1 つの​[構造](#structure_definitions)​が含まれ、ファイルおよびセグメントのバッチデータの 2 重にネストされた構造を使用しています。各バッチには反復する詳細レコードが含まれています。すべての要素定義がインライン化されています。 `BatchReq`​ 構造定義では、データが次のレコードで構成されている必要があります。 - セグメント ​`RQH`​ に対応する 1 つのレコード - セグメント ​`BCH`​ に対応する 1 つ以上のレコード - `BCH`​ レコードごとに、特定のトランザクションの詳細を提供する 1 つ以上の ​`TDR`​ レコード - `BCH`​ レコードごとに、包含する ​`TDR`​ レコードに続く ​`BCF`​ レコード - 最後に、セグメント ​`RQF`​ に対応する 1 つのレコード この例では、各レコードは、​`tagValue`​ が指定された 3 文字の「Record Type (レコードタイプ)」項目で始まります。バッチレコードの場合、レコードタイプは「Batch Function (バッチ関数)」の ​`tagValue`​ によってさらに指定されます。 スキーマ例に一致するデータのサンプルを次に示します。 ```text RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000002D01234567890000032876CR BAT000003D01234567880000087326CR BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000006D12345678900000003582DB BAT000007D12345678910000000256CR BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ``` 例内のインラインは、次のように定義された構造に一致します。 - 1 ​`RQH`​ (要求ファイルのヘッダーレコード) 最初の 3 文字の「RQH」値によって識別 - 2 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 3-4 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 5 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 6 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 7-8 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 9 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 10 ​`RQF`​ (要求ファイルのフッターレコード) 最初の 3 文字の「RQF」値によって識別 `tagValue`​ 項目は高い柔軟性を提供します。上の例では、一部のレコードタイプで単一の ​`tagValue`​ を使用し、他のレコードタイプで 2 番目の ​`tagValue`​ を追加していますが、さまざまなタイプのレコードをパーサーが識別できるように十分な詳細が提供されている限り、​`tagValue`​ でまったく異なる項目を (または、分離された一連の項目も) 使用することもできます。 古いバージョンのドキュメントでは、構造には ​`tagStart`​ と ​`tagLength`​ 値、セグメントには ​`tag`​ 値を使用して、タグ値に基づく異なる方法でレコードを識別していました。セグメントのこの識別方法は、​`tagValue`​ の方法よりも非常に多くの制限があり、廃止されました。 ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#format_flat_file) # フラットファイルスキーマ DataWeave ではさまざまな種別のデータを処理できます。このほとんどの種別で、入力構造を記述するスキーマをインポートし、設計時に価値あるメタデータにアクセスできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、フラットファイルスキーマを表す FFD (Flat File Definition) と呼ばれる YAML 形式を使用します。FFD 形式は、広範なユースケースをサポートするのに十分な柔軟姓を備え、要素、複合、セグメント、グループ、および構造の概念に基づきます。 スキーマはフラットファイルスキーマ言語で記述する必要があり、慣例により ​`.ffd`​ 拡張子を使用します。この言語は、Anypoint Studio でも受け入れることができる EDI スキーマ言語 (ESL) によく似ています。 DataWeave では、プロパティを使用して入力または出力をフラットファイルスキーマにバインドできます。 固定幅の簡単な形式を使用する場合、​`Fixed Width`​ 型を使用してデータ型を Transform コンポーネントから直接セットアップできます。Studio でこの型のインスタンスを作成すると、一致するスキーマ定義が自動的に生成されます。 ## [](#スキーマ内のコンポーネントの種別)スキーマ内のコンポーネントの種別 フラットファイルスキーマを構成するさまざまな種別のコンポーネントを、最も基本的なものからより複雑なものまで以下に示します。要素とセグメントは常に必須です。複合、グループ、構造は、​[ドキュメントの最上位構造](#top_level_structure)​に応じて必要になる場合があります。 - 要素 - 要素は基本データ項目です。これには、型と固定幅が関連付けられているほか、データ値の読み書きの方法を示す書式オプションがあります。 - 複合 - (省略可能) 要素のグループ。これには、他の子複合を含めることもできます。 - セグメント - 反復可能な任意の数の要素または複合で構成される一行のデータ (レコード)。 - グループ - (省略可能) まとめられた複数のセグメント。これには、他の子グループを含めることもできます。 - 構造 - セグメントの階層構成。これには、データの一部として一意の識別子コードが含まれている必要があります。 ## [](#top_level_structure)FFD ドキュメントの最上位構造 FFD ドキュメントの最上位定義はスキーマの形式から始まります。この場合は、常に「FLATFILE」、「COPYBOOK」、または「FIXEDWIDTH」である必要があります。これらの形式の違いはわずかで、そのほとんどは、Studio での処理方法に関連します。残りは、ファイルに含まれる定義のフォームに依存し、次の選択肢があります。 - 単一セグメント - 最上位に直接配置されたセグメント情報 (セグメントの要素または複合の詳細を提供する ​`values`​ キーを含む)。 - 複数セグメント - 1 つの ​`segments`​ キーと複数の子オブジェクト。各オブジェクトで 1 つのセグメントを定義します。 - 複数構造 - 1 つの ​`structures`​ キーと複数の子オブジェクト。各オブジェクトで 1 つの構造を定義します。 ### [](#単一セグメント)単一セグメント 1 つのタイプのレコードのみを使用する場合、FFD ではそのレコードタイプのセグメント定義のみが必要です。 ![複数の要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-flat-file-schemas-22788.png) これは 1 つのセグメントのみを持つ単純なスキーマです。 ```yaml form: FLATFILE id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 上の例では、単一セグメント内で要素のリストを定義しているのみです。これらの要素をまとめる複合はありません。 別の例を次に示します。 ```yaml form: FIXEDWIDTH name: my-flat-file values: - { name: 'Row-id', type: String, length: 2 } - { name: 'Total', type: Decimal, length: 11 } - { name: 'Module', type: String, length: 8 } - { name: 'Cost', type: Decimal, length: 8, format: { implicit: 2 } } - { name: 'Program-id', type: String, length: 8 } - { name: 'user-id', type: String, length: 8 } - { name: 'return-sign', type: String, length: 1 } ``` 単にわかりやすくすることを目的として形式を簡略化しています。1 つの子セグメント定義のみの場合も ​`segments`​ キーを使用できます。 ### [](#複数セグメント)複数セグメント 同じ変換で複数のタイプのレコードを使用する場合、その異なるレコードの組み合わせ方法を制御する構造定義を使用する必要があります。 ![要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-flat-file-schemas-680c6.png) ほとんどの場合、異なるタイプのレコードの識別方法を定義する必要があります。これを行うには、レコード定義の一部として ​`tagValue`​ 項目を識別します。パーサーは、各レコードの項目のコンテンツを確認し、レコードタイプを識別した後、定義された構造にレコードがどのように収められているかを確認します。 複数のコンポーネントレコードタイプを持つ完全な構造スキーマの例を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ### [](#複数構造)複数構造 FFD に複数の構造またはセグメント定義がある場合、スキーマを Transform コンポーネントのメタデータ記述に適用するときに、どれを使用するかを指定する必要があります。 ![グループ、セグメント、要素が表示されているフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.5/_images/dataweave-flat-file-schemas-4e1eb.png) 複数構造を持つスキーマの最上位構造は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } - id: 'BatchRsp' name: Batch Response data: - { idRef: 'RSH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RSF' } segments: - id: 'RQH' ... ``` この例では、2 つの異なる構造 (​`BatchReq`​ 構造と ​`BatchRsp`​ 構造) を定義します。この各構造で特定のセグメント順序およびセグメントグループを使用します。グループ ​`Batch`​ は両方の構造で反復されます。Batch グループは 1 つの BCH 行、複数の TDR 行、および 1 つの BCF 行で構成されます。 この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ## [](#要素定義)要素定義 要素定義は、標準特性の基本的なキー-値ペアで構成される、アプリケーションデータの基本構成要素です。フラットファイルスキーマではインライン要素定義が一般的に使用されます。この定義では、各要素がセグメントまたは複合構造内の各要素の使用場所で定義されますが、要素を個別に定義して必要に応じて参照することもできます。参考用に定義したいくつかの要素定義を次に示します。 ```yaml - { id: 'OrgCode', name: 'Organization Code', type: String, length: 10 } - { id: 'CreateDate', name: 'File Creation Date', type: Date, length: 8 } - { id: 'CreateTime', name: 'File Creation Time', type: Time, length: 4 } - { id: 'BatchTransCount', name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { id: 'BatchTransAmount', name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } ``` 指定された ​`id`​ 値は、セグメントまたは複合の一部としてこれらの定義のいずれかを参照する場合に ​`idRef`​ 値として使用されます。要素をセグメント定義内でインラインで定義する場合 (ドキュメントの最後に要素を定義して参照する方法とは対照的)、​`id`​ 項目は不要です。 要素定義には次の属性が含まれる可能性があります。これらは、インライン定義、参照された定義 (上の例を参照)、または定義への参照に適用されるものとして、「形式」によって分類されます。
Table 1. 属性
名前 説明 形式

count

出現数 (省略可能、デフォルトは ​1​)。

インラインまたは参照

id

要素識別子

参照された定義

idRef

要素識別子

参照

name

要素名 (省略可能)

すべて

type

値の型コード (以下のリストを参照)

インライン、または参照された定義

format

型固有の書式情報

インライン、または参照された定義

length

値の文字位置の数

インライン、または参照された定義

tagValue

セグメントを識別するために使用するこの要素の値 (​「スキーマの完全な例」​を参照)

インライン、または参照された定義

要素の定義で許可される型を次に示します。
Table 2. 型
名前 説明

Binary (バイナリ)

バイナリ値 (COBOL 形式、2、4、8 バイト)

Boolean (ブール)

ブール値

Date (日付)

年、月、および日コンポーネントを持つ非ゾーン日付値 (一部はテキスト形式で表示されない場合があります)

DateTime

年、月、日、時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン日時値 (一部はテキスト形式で表示されない場合があります)

Decimal (10 進数)

10 進数値。テキスト形式に明示的な小数点が含まれる場合と含まれない場合があります

Integer (整数)

整数値

Packed (パック)

10 進数値のパック 10 進数表現 (COBOL 形式)

String (文字列)

文字列値

Time (時刻)

時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン時刻値 (一部はテキスト形式で表示されない場合があります)

Zoned (ゾーン)

ゾーン 10 進数 (COBOL 形式)

値の型では、値のテキスト形式に影響するさまざまな書式オプションがサポートされます。主なオプションと適用先の型を以下に示します。
Table 3. 書式オプション
Key (キー) 説明 適用先

digits (桁数)

許可される桁数

Binary (バイナリ)

implicit (暗黙的)

暗黙的な小数点以下桁数 (テキスト形式で小数点のない固定小数点値で使用されます)

Binary (バイナリ)、Decimal (10 進数)、Packed (パック)、Zoned (ゾーン)

justify (行揃え)

項目内の行揃え (LEFT、RIGHT、NONE、または ZEROES。ZEROES は数値のみで使用)

Binary (バイナリ) と Packed (パック) 以外のすべて

pattern (パターン)

数値の場合、解析および書き込み用の ​java.text.DecimalFormat​ パターン。日時値の場合、​java.time.format.DateTimeFormatter​ パターン。

Date (日付)、DateTime、Decimal (10 進数)、Integer (整数)、Time (時刻)

署名

数値の符号の使用方法 (UNSIGNED、​NEGATIVE_ONLY​、OPTIONAL、​ALWAYS_LEFT​、​ALWAYS_RIGHT​)

Decimal (10 進数)、Integer (整数)、Zoned (ゾーン)

signed (符号あり)

符号ありか符号なしかを示すフラグ

Binary (バイナリ)、Packed (パック)

## [](#複合定義)複合定義 複合は、通常一緒に存在する要素のリストを参照するのに役立ちます。たとえば、​`firstName`​ と ​`lastName`​ はグループとして参照される可能性があるため、それらをまとめて 1 つの複合にバンドルすることができます。要素を複合にまとめると、リストを反復することもできます。 複合定義は、セグメント定義によく似ており、標準特性のいくつかのキー-値ペアおよび値のリストで構成されます。複合には、要素または他のネストされた複合とインライン化された定義への両方の参照が含まれる可能性があります。複合定義の例を次に示します。 ```yaml - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 複合定義には、次の属性が含まれる可能性があります。
名前 説明 形式

controlVal

実際の出現数を提供する、包含するレベルからの値 (​count​ != 1 でのみ使用)

インライン定義、または​参照

count

出現数 (または ​controlVal​ が使用されている場合は最大数) (省略可能、デフォルトは ​1​)

インライン定義、または​参照

id

参照の複合識別子

参照された定義

name

複合名 (省略可能)。

インラインまたは​参照された定義

values

複合内の要素と複合のリスト。

インラインまたは​参照された定義

この値リストはセグメント定義の値リストと同じ形式を使用します。 ## [](#segment_definitions)セグメント定義 セグメントはデータ内のレコードのタイプを記述します。セグメントは主に要素と複合の参照または直接定義と、セグメントを記述するいくつかのキー-値ペアで構成されます。少し複雑なスキーマでは、2 つの異なるセグメントを含む構造を使用し、その 1 つのセグメントで部品表の単一ヘッダーに含める項目 (日付、人など) を記述し、もう 1 つのセグメントで部品表内の実際の各項目に含める繰り返し項目を記述することができます。 これは、1 つの簡単な要素と、2 つの要素が入っている複合を含むサンプルのセグメント定義です。 ```yaml - id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` セグメント定義には、次の属性が含まれる可能性があります。
セクション 説明

id

セグメント識別子 (インライン定義では使用せず、​参照された定義​では必須)

name

セグメント名 (省略可能)

values

セグメント内の要素と複合のリスト (インライン化、または​参照​)

## [](#structure_definitions)構造定義 構造定義はセグメントとグループ定義への参照のリスト、および標準特性の一連のキー-値ペアで構成されます。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。 サンプルの構造定義を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例には、最上位の 2 つのセグメント (​`RQH`​ と ​`RQF`​) への参照、および他のセグメント (​`BCH`​、​`TDR`​、および ​`BCF`​) への参照を含むグループ定義 ​`Batch`​ が含まれます。この構造を機能させるには、​[参照された各セグメント](#segment_definitions)​を定義する必要があります。この例でセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 構造定義には、次の属性が含まれる可能性があります。
構造キー/セクション 説明

id

構造識別子

name

構造名 (省略可能)

data

構造内のセグメント (およびグループ) のリスト

セグメントリスト内の各項目はセグメント参照 (またはインライン定義) またはグループ定義 (常にインライン) です。 ### [](#グループ定義)グループ定義 グループ定義には、次の属性が含まれる可能性があります。
値 説明

groupId

グループ識別子

usage

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、未使用 (Unused) を表す ​U​ を使用できます (省略可能、デフォルトは ​M​)

count

最大反復数の値。数値、または任意の反復数を意味する特別な値 ​>1​ を使用できます (省略可能、指定しない場合は count 値 ​1​ を使用)

items

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

## [](#referenced_vs_inlined_defs)参照された定義とインライン化された定義の比較 最上位形式の選択肢以外にも、構造、セグメント、または複合のコンポーネントを表すことに関して選択肢が用意されています。コンポーネントのセグメント、複合、および要素を使用場所でインラインで定義するか、それらをテーブル内で定義して任意の場所から参照できます。インライン定義のほうがより簡単でコンパクトですが、テーブル形式では定義を再利用できます。テーブル形式の例には ​`id`​ 値を含める必要があり、その定義への各参照で ​`idRef`​ を使用します。次の例は、構造を構成するセグメントにこれを適用する方法を示しています。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { idref: createDate } - { idref: createTime } - { idref: fileId } - { idref: currency } - id: 'RQF' name: "Request File Footer Record" values: - { idref: batchCount } - { idref: transactionCount } - { idref: transactionAmount } - { idref: debitCredit } - { idref: fileId } elements: - { id: createDate, type: Date, length: 8 } - { id: createTime, type: Time, length: 4 } - { id: fileId, type: String, length: 10 } - { id: currency, type: String, length: 3 } - { id: batchCount, type: Integer, format: { justify: zeroes }, length: 4 } - { id: transactionCount, type: Integer, format: { justify: zeroes }, length: 6 } - { id: transactionAmount, type: Integer, format: { justify: zeroes }, length: 12 } - { id: debitCredit, type: String, length: 2 } ``` 上の例では、​`BatchReq`​ 構造は ​`data`​ 定義セクションのセグメントを参照しています。次に、スキーマの最上位の ​`segments`​ セクションでセグメントがそれぞれ定義され、後の ​`elements`​ セクションで定義されている要素を参照しています。 同じ構造のインライン化された定義は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` ## [](#full_schema_ex)スキーマの完全な例 ```yaml form: FLATFILE structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQH' } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'BCH' name: "Batch Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'H' } - { name: 'Company Name', type: String, length: 30 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'TDR' name: "Transaction Detail Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'D' } - { name: 'Account Number', type: String, length: 10 } - { name: 'Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - id: 'BCF' name: "Batch Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'T' } - { name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - { name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQF' } - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` この例には、5 個のコンポーネント​[セグメント](#segment_definitions)​を持つ「BatchReq」という名前の 1 つの​[構造](#structure_definitions)​が含まれ、ファイルおよびセグメントのバッチデータの 2 重にネストされた構造を使用しています。各バッチには反復する詳細レコードが含まれています。すべての要素定義がインライン化されています。 `BatchReq`​ 構造定義では、データが次のレコードで構成されている必要があります。 - セグメント ​`RQH`​ に対応する 1 つのレコード - セグメント ​`BCH`​ に対応する 1 つ以上のレコード - `BCH`​ レコードごとに、特定のトランザクションの詳細を提供する 1 つ以上の ​`TDR`​ レコード - `BCH`​ レコードごとに、包含する ​`TDR`​ レコードに続く ​`BCF`​ レコード - 最後に、セグメント ​`RQF`​ に対応する 1 つのレコード この例では、各レコードは、​`tagValue`​ が指定された 3 文字の「Record Type (レコードタイプ)」項目で始まります。バッチレコードの場合、レコードタイプは「Batch Function (バッチ関数)」の ​`tagValue`​ によってさらに指定されます。 スキーマ例に一致するデータのサンプルを次に示します。 ```text RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000002D01234567890000032876CR BAT000003D01234567880000087326CR BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000006D12345678900000003582DB BAT000007D12345678910000000256CR BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ``` 例内のインラインは、次のように定義された構造に一致します。 - 1 ​`RQH`​ (要求ファイルのヘッダーレコード) 最初の 3 文字の「RQH」値によって識別 - 2 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 3-4 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 5 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 6 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 7-8 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 9 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 10 ​`RQF`​ (要求ファイルのフッターレコード) 最初の 3 文字の「RQF」値によって識別 `tagValue`​ 項目は高い柔軟性を提供します。上の例では、一部のレコードタイプで単一の ​`tagValue`​ を使用し、他のレコードタイプで 2 番目の ​`tagValue`​ を追加していますが、さまざまなタイプのレコードをパーサーが識別できるように十分な詳細が提供されている限り、​`tagValue`​ でまったく異なる項目を (または、分離された一連の項目も) 使用することもできます。 古いバージョンのドキュメントでは、構造には ​`tagStart`​ と ​`tagLength`​ 値、セグメントには ​`tag`​ 値を使用して、タグ値に基づく異なる方法でレコードを識別していました。セグメントのこの識別方法は、​`tagValue`​ の方法よりも非常に多くの制限があり、廃止されました。 ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#format_flat_file) # フラットファイルスキーマ DataWeave ではさまざまな種別のデータを処理できます。このほとんどの種別で、入力構造を記述するスキーマをインポートし、設計時に価値あるメタデータにアクセスできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、フラットファイルスキーマを表す FFD (Flat File Definition) と呼ばれる YAML 形式を使用します。FFD 形式は、広範なユースケースをサポートするのに十分な柔軟姓を備え、要素、複合、セグメント、グループ、および構造の概念に基づきます。 スキーマはフラットファイルスキーマ言語で記述する必要があり、慣例により ​`.ffd`​ 拡張子を使用します。この言語は、Anypoint Studio でも受け入れることができる EDI スキーマ言語 (ESL) によく似ています。 DataWeave では、プロパティを使用して入力または出力をフラットファイルスキーマにバインドできます。 固定幅の簡単な形式を使用する場合、​`Fixed Width`​ 型を使用してデータ型を Transform コンポーネントから直接セットアップできます。Studio でこの型のインスタンスを作成すると、一致するスキーマ定義が自動的に生成されます。 ## [](#スキーマ内のコンポーネントの種別)スキーマ内のコンポーネントの種別 フラットファイルスキーマを構成するさまざまな種別のコンポーネントを、最も基本的なものからより複雑なものまで以下に示します。要素とセグメントは常に必須です。複合、グループ、構造は、​[ドキュメントの最上位構造](#top_level_structure)​に応じて必要になる場合があります。 - 要素 - 要素は基本データ項目です。これには、型と固定幅が関連付けられているほか、データ値の読み書きの方法を示す書式オプションがあります。 - 複合 - (省略可能) 要素のグループ。これには、他の子複合を含めることもできます。 - セグメント - 反復可能な任意の数の要素または複合で構成される一行のデータ (レコード)。 - グループ - (省略可能) まとめられた複数のセグメント。これには、他の子グループを含めることもできます。 - 構造 - セグメントの階層構成。これには、データの一部として一意の識別子コードが含まれている必要があります。 ## [](#top_level_structure)FFD ドキュメントの最上位構造 FFD ドキュメントの最上位定義はスキーマの形式から始まります。この場合は、常に「FLATFILE」、「COPYBOOK」、または「FIXEDWIDTH」である必要があります。これらの形式の違いはわずかで、そのほとんどは、Studio での処理方法に関連します。残りは、ファイルに含まれる定義のフォームに依存し、次の選択肢があります。 - 単一セグメント - 最上位に直接配置されたセグメント情報 (セグメントの要素または複合の詳細を提供する ​`values`​ キーを含む)。 - 複数セグメント - 1 つの ​`segments`​ キーと複数の子オブジェクト。各オブジェクトで 1 つのセグメントを定義します。 - 複数構造 - 1 つの ​`structures`​ キーと複数の子オブジェクト。各オブジェクトで 1 つの構造を定義します。 ### [](#単一セグメント)単一セグメント 1 つのタイプのレコードのみを使用する場合、FFD ではそのレコードタイプのセグメント定義のみが必要です。 ![複数の要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-flat-file-schemas-22788.png) これは 1 つのセグメントのみを持つ単純なスキーマです。 ```yaml form: FLATFILE id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 上の例では、単一セグメント内で要素のリストを定義しているのみです。これらの要素をまとめる複合はありません。 別の例を次に示します。 ```yaml form: FIXEDWIDTH name: my-flat-file values: - { name: 'Row-id', type: String, length: 2 } - { name: 'Total', type: Decimal, length: 11 } - { name: 'Module', type: String, length: 8 } - { name: 'Cost', type: Decimal, length: 8, format: { implicit: 2 } } - { name: 'Program-id', type: String, length: 8 } - { name: 'user-id', type: String, length: 8 } - { name: 'return-sign', type: String, length: 1 } ``` 単にわかりやすくすることを目的として形式を簡略化しています。1 つの子セグメント定義のみの場合も ​`segments`​ キーを使用できます。 ### [](#複数セグメント)複数セグメント 同じ変換で複数のタイプのレコードを使用する場合、その異なるレコードの組み合わせ方法を制御する構造定義を使用する必要があります。 ![要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-flat-file-schemas-680c6.png) ほとんどの場合、異なるタイプのレコードの識別方法を定義する必要があります。これを行うには、レコード定義の一部として ​`tagValue`​ 項目を識別します。パーサーは、各レコードの項目のコンテンツを確認し、レコードタイプを識別した後、定義された構造にレコードがどのように収められているかを確認します。 複数のコンポーネントレコードタイプを持つ完全な構造スキーマの例を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ### [](#複数構造)複数構造 FFD に複数の構造またはセグメント定義がある場合、スキーマを Transform コンポーネントのメタデータ記述に適用するときに、どれを使用するかを指定する必要があります。 ![グループ、セグメント、要素が表示されているフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.6/_images/dataweave-flat-file-schemas-4e1eb.png) 複数構造を持つスキーマの最上位構造は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } - id: 'BatchRsp' name: Batch Response data: - { idRef: 'RSH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RSF' } segments: - id: 'RQH' ... ``` この例では、2 つの異なる構造 (​`BatchReq`​ 構造と ​`BatchRsp`​ 構造) を定義します。この各構造で特定のセグメント順序およびセグメントグループを使用します。グループ ​`Batch`​ は両方の構造で反復されます。Batch グループは 1 つの BCH 行、複数の TDR 行、および 1 つの BCF 行で構成されます。 この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ## [](#要素定義)要素定義 要素定義は、標準特性の基本的なキー-値ペアで構成される、アプリケーションデータの基本構成要素です。フラットファイルスキーマではインライン要素定義が一般的に使用されます。この定義では、各要素がセグメントまたは複合構造内の各要素の使用場所で定義されますが、要素を個別に定義して必要に応じて参照することもできます。参考用に定義したいくつかの要素定義を次に示します。 ```yaml - { id: 'OrgCode', name: 'Organization Code', type: String, length: 10 } - { id: 'CreateDate', name: 'File Creation Date', type: Date, length: 8 } - { id: 'CreateTime', name: 'File Creation Time', type: Time, length: 4 } - { id: 'BatchTransCount', name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { id: 'BatchTransAmount', name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } ``` 指定された ​`id`​ 値は、セグメントまたは複合の一部としてこれらの定義のいずれかを参照する場合に ​`idRef`​ 値として使用されます。要素をセグメント定義内でインラインで定義する場合 (ドキュメントの最後に要素を定義して参照する方法とは対照的)、​`id`​ 項目は不要です。 要素定義には次の属性が含まれる可能性があります。これらは、インライン定義、参照された定義 (上の例を参照)、または定義への参照に適用されるものとして、「形式」によって分類されます。
Table 1. 属性
名前 説明 形式

count

出現数 (省略可能、デフォルトは ​1​)。

インラインまたは参照

id

要素識別子

参照された定義

idRef

要素識別子

参照

name

要素名 (省略可能)

すべて

type

値の型コード (以下のリストを参照)

インライン、または参照された定義

format

型固有の書式情報

インライン、または参照された定義

length

値の文字位置の数

インライン、または参照された定義

tagValue

セグメントを識別するために使用するこの要素の値 (​「スキーマの完全な例」​を参照)

インライン、または参照された定義

要素の定義で許可される型を次に示します。
Table 2. 型
名前 説明

Binary (バイナリ)

バイナリ値 (COBOL 形式、2、4、8 バイト)

Boolean (ブール)

ブール値

Date (日付)

年、月、および日コンポーネントを持つ非ゾーン日付値 (一部はテキスト形式で表示されない場合があります)

DateTime

年、月、日、時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン日時値 (一部はテキスト形式で表示されない場合があります)

Decimal (10 進数)

10 進数値。テキスト形式に明示的な小数点が含まれる場合と含まれない場合があります

Integer (整数)

整数値

Packed (パック)

10 進数値のパック 10 進数表現 (COBOL 形式)

String (文字列)

文字列値

Time (時刻)

時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン時刻値 (一部はテキスト形式で表示されない場合があります)

Zoned (ゾーン)

ゾーン 10 進数 (COBOL 形式)

値の型では、値のテキスト形式に影響するさまざまな書式オプションがサポートされます。主なオプションと適用先の型を以下に示します。
Table 3. 書式オプション
Key (キー) 説明 適用先

digits (桁数)

許可される桁数

Binary (バイナリ)

implicit (暗黙的)

暗黙的な小数点以下桁数 (テキスト形式で小数点のない固定小数点値で使用されます)

Binary (バイナリ)、Decimal (10 進数)、Packed (パック)、Zoned (ゾーン)

justify (行揃え)

項目内の行揃え (LEFT、RIGHT、NONE、または ZEROES。ZEROES は数値のみで使用)

Binary (バイナリ) と Packed (パック) 以外のすべて

pattern (パターン)

数値の場合、解析および書き込み用の ​java.text.DecimalFormat​ パターン。日時値の場合、​java.time.format.DateTimeFormatter​ パターン。

Date (日付)、DateTime、Decimal (10 進数)、Integer (整数)、Time (時刻)

署名

数値の符号の使用方法 (UNSIGNED、​NEGATIVE_ONLY​、OPTIONAL、​ALWAYS_LEFT​、​ALWAYS_RIGHT​)

Decimal (10 進数)、Integer (整数)、Zoned (ゾーン)

signed (符号あり)

符号ありか符号なしかを示すフラグ

Binary (バイナリ)、Packed (パック)

## [](#複合定義)複合定義 複合は、通常一緒に存在する要素のリストを参照するのに役立ちます。たとえば、​`firstName`​ と ​`lastName`​ はグループとして参照される可能性があるため、それらをまとめて 1 つの複合にバンドルすることができます。要素を複合にまとめると、リストを反復することもできます。 複合定義は、セグメント定義によく似ており、標準特性のいくつかのキー-値ペアおよび値のリストで構成されます。複合には、要素または他のネストされた複合とインライン化された定義への両方の参照が含まれる可能性があります。複合定義の例を次に示します。 ```yaml - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 複合定義には、次の属性が含まれる可能性があります。
名前 説明 形式

controlVal

実際の出現数を提供する、包含するレベルからの値 (​count​ != 1 でのみ使用)

インライン定義、または​参照

count

出現数 (または ​controlVal​ が使用されている場合は最大数) (省略可能、デフォルトは ​1​)

インライン定義、または​参照

id

参照の複合識別子

参照された定義

name

複合名 (省略可能)。

インラインまたは​参照された定義

values

複合内の要素と複合のリスト。

インラインまたは​参照された定義

この値リストはセグメント定義の値リストと同じ形式を使用します。 ## [](#segment_definitions)セグメント定義 セグメントはデータ内のレコードのタイプを記述します。セグメントは主に要素と複合の参照または直接定義と、セグメントを記述するいくつかのキー-値ペアで構成されます。少し複雑なスキーマでは、2 つの異なるセグメントを含む構造を使用し、その 1 つのセグメントで部品表の単一ヘッダーに含める項目 (日付、人など) を記述し、もう 1 つのセグメントで部品表内の実際の各項目に含める繰り返し項目を記述することができます。 これは、1 つの簡単な要素と、2 つの要素が入っている複合を含むサンプルのセグメント定義です。 ```yaml - id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` セグメント定義には、次の属性が含まれる可能性があります。
セクション 説明

id

セグメント識別子 (インライン定義では使用せず、​参照された定義​では必須)

name

セグメント名 (省略可能)

values

セグメント内の要素と複合のリスト (インライン化、または​参照​)

## [](#structure_definitions)構造定義 構造定義はセグメントとグループ定義への参照のリスト、および標準特性の一連のキー-値ペアで構成されます。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。 サンプルの構造定義を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例には、最上位の 2 つのセグメント (​`RQH`​ と ​`RQF`​) への参照、および他のセグメント (​`BCH`​、​`TDR`​、および ​`BCF`​) への参照を含むグループ定義 ​`Batch`​ が含まれます。この構造を機能させるには、​[参照された各セグメント](#segment_definitions)​を定義する必要があります。この例でセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 構造定義には、次の属性が含まれる可能性があります。
構造キー/セクション 説明

id

構造識別子

name

構造名 (省略可能)

data

構造内のセグメント (およびグループ) のリスト

セグメントリスト内の各項目はセグメント参照 (またはインライン定義) またはグループ定義 (常にインライン) です。 ### [](#グループ定義)グループ定義 グループ定義には、次の属性が含まれる可能性があります。
値 説明

groupId

グループ識別子

usage

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、未使用 (Unused) を表す ​U​ を使用できます (省略可能、デフォルトは ​M​)

count

最大反復数の値。数値、または任意の反復数を意味する特別な値 ​>1​ を使用できます (省略可能、指定しない場合は count 値 ​1​ を使用)

items

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

## [](#referenced_vs_inlined_defs)参照された定義とインライン化された定義の比較 最上位形式の選択肢以外にも、構造、セグメント、または複合のコンポーネントを表すことに関して選択肢が用意されています。コンポーネントのセグメント、複合、および要素を使用場所でインラインで定義するか、それらをテーブル内で定義して任意の場所から参照できます。インライン定義のほうがより簡単でコンパクトですが、テーブル形式では定義を再利用できます。テーブル形式の例には ​`id`​ 値を含める必要があり、その定義への各参照で ​`idRef`​ を使用します。次の例は、構造を構成するセグメントにこれを適用する方法を示しています。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { idref: createDate } - { idref: createTime } - { idref: fileId } - { idref: currency } - id: 'RQF' name: "Request File Footer Record" values: - { idref: batchCount } - { idref: transactionCount } - { idref: transactionAmount } - { idref: debitCredit } - { idref: fileId } elements: - { id: createDate, type: Date, length: 8 } - { id: createTime, type: Time, length: 4 } - { id: fileId, type: String, length: 10 } - { id: currency, type: String, length: 3 } - { id: batchCount, type: Integer, format: { justify: zeroes }, length: 4 } - { id: transactionCount, type: Integer, format: { justify: zeroes }, length: 6 } - { id: transactionAmount, type: Integer, format: { justify: zeroes }, length: 12 } - { id: debitCredit, type: String, length: 2 } ``` 上の例では、​`BatchReq`​ 構造は ​`data`​ 定義セクションのセグメントを参照しています。次に、スキーマの最上位の ​`segments`​ セクションでセグメントがそれぞれ定義され、後の ​`elements`​ セクションで定義されている要素を参照しています。 同じ構造のインライン化された定義は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` ## [](#full_schema_ex)スキーマの完全な例 ```yaml form: FLATFILE structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQH' } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'BCH' name: "Batch Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'H' } - { name: 'Company Name', type: String, length: 30 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'TDR' name: "Transaction Detail Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'D' } - { name: 'Account Number', type: String, length: 10 } - { name: 'Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - id: 'BCF' name: "Batch Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'T' } - { name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - { name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQF' } - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` この例には、5 個のコンポーネント​[セグメント](#segment_definitions)​を持つ「BatchReq」という名前の 1 つの​[構造](#structure_definitions)​が含まれ、ファイルおよびセグメントのバッチデータの 2 重にネストされた構造を使用しています。各バッチには反復する詳細レコードが含まれています。すべての要素定義がインライン化されています。 `BatchReq`​ 構造定義では、データが次のレコードで構成されている必要があります。 - セグメント ​`RQH`​ に対応する 1 つのレコード - セグメント ​`BCH`​ に対応する 1 つ以上のレコード - `BCH`​ レコードごとに、特定のトランザクションの詳細を提供する 1 つ以上の ​`TDR`​ レコード - `BCH`​ レコードごとに、包含する ​`TDR`​ レコードに続く ​`BCF`​ レコード - 最後に、セグメント ​`RQF`​ に対応する 1 つのレコード この例では、各レコードは、​`tagValue`​ が指定された 3 文字の「Record Type (レコードタイプ)」項目で始まります。バッチレコードの場合、レコードタイプは「Batch Function (バッチ関数)」の ​`tagValue`​ によってさらに指定されます。 スキーマ例に一致するデータのサンプルを次に示します。 ```text RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000002D01234567890000032876CR BAT000003D01234567880000087326CR BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000006D12345678900000003582DB BAT000007D12345678910000000256CR BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ``` 例内のインラインは、次のように定義された構造に一致します。 - 1 ​`RQH`​ (要求ファイルのヘッダーレコード) 最初の 3 文字の「RQH」値によって識別 - 2 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 3-4 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 5 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 6 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 7-8 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 9 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 10 ​`RQF`​ (要求ファイルのフッターレコード) 最初の 3 文字の「RQF」値によって識別 `tagValue`​ 項目は高い柔軟性を提供します。上の例では、一部のレコードタイプで単一の ​`tagValue`​ を使用し、他のレコードタイプで 2 番目の ​`tagValue`​ を追加していますが、さまざまなタイプのレコードをパーサーが識別できるように十分な詳細が提供されている限り、​`tagValue`​ でまったく異なる項目を (または、分離された一連の項目も) 使用することもできます。 古いバージョンのドキュメントでは、構造には ​`tagStart`​ と ​`tagLength`​ 値、セグメントには ​`tag`​ 値を使用して、タグ値に基づく異なる方法でレコードを識別していました。セグメントのこの識別方法は、​`tagValue`​ の方法よりも非常に多くの制限があり、廃止されました。 ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#format_flat_file) # フラットファイルスキーマ DataWeave ではさまざまな種別のデータを処理できます。このほとんどの種別で、入力構造を記述するスキーマをインポートし、設計時に価値あるメタデータにアクセスできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、フラットファイルスキーマを表す FFD (Flat File Definition) と呼ばれる YAML 形式を使用します。FFD 形式は、広範なユースケースをサポートするのに十分な柔軟姓を備え、要素、複合、セグメント、グループ、および構造の概念に基づきます。 スキーマはフラットファイルスキーマ言語で記述する必要があり、慣例により ​`.ffd`​ 拡張子を使用します。この言語は、Anypoint Studio でも受け入れることができる EDI スキーマ言語 (ESL) によく似ています。 DataWeave では、プロパティを使用して入力または出力をフラットファイルスキーマにバインドできます。 固定幅の簡単な形式を使用する場合、​`Fixed Width`​ 型を使用してデータ型を Transform コンポーネントから直接セットアップできます。Studio でこの型のインスタンスを作成すると、一致するスキーマ定義が自動的に生成されます。 ## [](#スキーマ内のコンポーネントの種別)スキーマ内のコンポーネントの種別 フラットファイルスキーマを構成するさまざまな種別のコンポーネントを、最も基本的なものからより複雑なものまで以下に示します。要素とセグメントは常に必須です。複合、グループ、構造は、​[ドキュメントの最上位構造](#top_level_structure)​に応じて必要になる場合があります。 - 要素 - 要素は基本データ項目です。これには、型と固定幅が関連付けられているほか、データ値の読み書きの方法を示す書式オプションがあります。 - 複合 - (省略可能) 要素のグループ。これには、他の子複合を含めることもできます。 - セグメント - 反復可能な任意の数の要素または複合で構成される一行のデータ (レコード)。 - グループ - (省略可能) まとめられた複数のセグメント。これには、他の子グループを含めることもできます。 - 構造 - セグメントの階層構成。これには、データの一部として一意の識別子コードが含まれている必要があります。 ## [](#top_level_structure)FFD ドキュメントの最上位構造 FFD ドキュメントの最上位定義はスキーマの形式から始まります。この場合は、常に「FLATFILE」、「COPYBOOK」、または「FIXEDWIDTH」である必要があります。これらの形式の違いはわずかで、そのほとんどは、Studio での処理方法に関連します。残りは、ファイルに含まれる定義のフォームに依存し、次の選択肢があります。 - 単一セグメント - 最上位に直接配置されたセグメント情報 (セグメントの要素または複合の詳細を提供する ​`values`​ キーを含む)。 - 複数セグメント - 1 つの ​`segments`​ キーと複数の子オブジェクト。各オブジェクトで 1 つのセグメントを定義します。 - 複数構造 - 1 つの ​`structures`​ キーと複数の子オブジェクト。各オブジェクトで 1 つの構造を定義します。 ### [](#単一セグメント)単一セグメント 1 つのタイプのレコードのみを使用する場合、FFD ではそのレコードタイプのセグメント定義のみが必要です。 ![複数の要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-flat-file-schemas-22788.png) これは 1 つのセグメントのみを持つ単純なスキーマです。 ```yaml form: FLATFILE id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 上の例では、単一セグメント内で要素のリストを定義しているのみです。これらの要素をまとめる複合はありません。 別の例を次に示します。 ```yaml form: FIXEDWIDTH name: my-flat-file values: - { name: 'Row-id', type: String, length: 2 } - { name: 'Total', type: Decimal, length: 11 } - { name: 'Module', type: String, length: 8 } - { name: 'Cost', type: Decimal, length: 8, format: { implicit: 2 } } - { name: 'Program-id', type: String, length: 8 } - { name: 'user-id', type: String, length: 8 } - { name: 'return-sign', type: String, length: 1 } ``` 単にわかりやすくすることを目的として形式を簡略化しています。1 つの子セグメント定義のみの場合も ​`segments`​ キーを使用できます。 ### [](#複数セグメント)複数セグメント 同じ変換で複数のタイプのレコードを使用する場合、その異なるレコードの組み合わせ方法を制御する構造定義を使用する必要があります。 ![要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-flat-file-schemas-680c6.png) ほとんどの場合、異なるタイプのレコードの識別方法を定義する必要があります。これを行うには、レコード定義の一部として ​`tagValue`​ 項目を識別します。パーサーは、各レコードの項目のコンテンツを確認し、レコードタイプを識別した後、定義された構造にレコードがどのように収められているかを確認します。 複数のコンポーネントレコードタイプを持つ完全な構造スキーマの例を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ### [](#複数構造)複数構造 FFD に複数の構造またはセグメント定義がある場合、スキーマを Transform コンポーネントのメタデータ記述に適用するときに、どれを使用するかを指定する必要があります。 ![グループ、セグメント、要素が表示されているフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.7/_images/dataweave-flat-file-schemas-4e1eb.png) 複数構造を持つスキーマの最上位構造は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } - id: 'BatchRsp' name: Batch Response data: - { idRef: 'RSH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RSF' } segments: - id: 'RQH' ... ``` この例では、2 つの異なる構造 (​`BatchReq`​ 構造と ​`BatchRsp`​ 構造) を定義します。この各構造で特定のセグメント順序およびセグメントグループを使用します。グループ ​`Batch`​ は両方の構造で反復されます。Batch グループは 1 つの BCH 行、複数の TDR 行、および 1 つの BCF 行で構成されます。 この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ## [](#要素定義)要素定義 要素定義は、標準特性の基本的なキー-値ペアで構成される、アプリケーションデータの基本構成要素です。フラットファイルスキーマではインライン要素定義が一般的に使用されます。この定義では、各要素がセグメントまたは複合構造内の各要素の使用場所で定義されますが、要素を個別に定義して必要に応じて参照することもできます。参考用に定義したいくつかの要素定義を次に示します。 ```yaml - { id: 'OrgCode', name: 'Organization Code', type: String, length: 10 } - { id: 'CreateDate', name: 'File Creation Date', type: Date, length: 8 } - { id: 'CreateTime', name: 'File Creation Time', type: Time, length: 4 } - { id: 'BatchTransCount', name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { id: 'BatchTransAmount', name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } ``` 指定された ​`id`​ 値は、セグメントまたは複合の一部としてこれらの定義のいずれかを参照する場合に ​`idRef`​ 値として使用されます。要素をセグメント定義内でインラインで定義する場合 (ドキュメントの最後に要素を定義して参照する方法とは対照的)、​`id`​ 項目は不要です。 要素定義には次の属性が含まれる可能性があります。これらは、インライン定義、参照された定義 (上の例を参照)、または定義への参照に適用されるものとして、「形式」によって分類されます。
Table 1. 属性
名前 説明 形式

count

出現数 (省略可能、デフォルトは ​1​)。

インラインまたは参照

id

要素識別子

参照された定義

idRef

要素識別子

参照

name

要素名 (省略可能)

すべて

type

値の型コード (以下のリストを参照)

インライン、または参照された定義

format

型固有の書式情報

インライン、または参照された定義

length

値の文字位置の数

インライン、または参照された定義

tagValue

セグメントを識別するために使用するこの要素の値 (​「スキーマの完全な例」​を参照)

インライン、または参照された定義

要素の定義で許可される型を次に示します。
Table 2. 型
名前 説明

Binary (バイナリ)

バイナリ値 (COBOL 形式、2、4、8 バイト)

Boolean (ブール)

ブール値

Date (日付)

年、月、および日コンポーネントを持つ非ゾーン日付値 (一部はテキスト形式で表示されない場合があります)

DateTime

年、月、日、時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン日時値 (一部はテキスト形式で表示されない場合があります)

Decimal (10 進数)

10 進数値。テキスト形式に明示的な小数点が含まれる場合と含まれない場合があります

Integer (整数)

整数値

Packed (パック)

10 進数値のパック 10 進数表現 (COBOL 形式)

String (文字列)

文字列値

Time (時刻)

時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン時刻値 (一部はテキスト形式で表示されない場合があります)

Zoned (ゾーン)

ゾーン 10 進数 (COBOL 形式)

値の型では、値のテキスト形式に影響するさまざまな書式オプションがサポートされます。主なオプションと適用先の型を以下に示します。
Table 3. 書式オプション
Key (キー) 説明 適用先

digits (桁数)

許可される桁数

Binary (バイナリ)

implicit (暗黙的)

暗黙的な小数点以下桁数 (テキスト形式で小数点のない固定小数点値で使用されます)

Binary (バイナリ)、Decimal (10 進数)、Packed (パック)、Zoned (ゾーン)

justify (行揃え)

項目内の行揃え (LEFT、RIGHT、NONE、または ZEROES。ZEROES は数値のみで使用)

Binary (バイナリ) と Packed (パック) 以外のすべて

pattern (パターン)

数値の場合、解析および書き込み用の ​java.text.DecimalFormat​ パターン。日時値の場合、​java.time.format.DateTimeFormatter​ パターン。

Date (日付)、DateTime、Decimal (10 進数)、Integer (整数)、Time (時刻)

署名

数値の符号の使用方法 (UNSIGNED、​NEGATIVE_ONLY​、OPTIONAL、​ALWAYS_LEFT​、​ALWAYS_RIGHT​)

Decimal (10 進数)、Integer (整数)、Zoned (ゾーン)

signed (符号あり)

符号ありか符号なしかを示すフラグ

Binary (バイナリ)、Packed (パック)

## [](#複合定義)複合定義 複合は、通常一緒に存在する要素のリストを参照するのに役立ちます。たとえば、​`firstName`​ と ​`lastName`​ はグループとして参照される可能性があるため、それらをまとめて 1 つの複合にバンドルすることができます。要素を複合にまとめると、リストを反復することもできます。 複合定義は、セグメント定義によく似ており、標準特性のいくつかのキー-値ペアおよび値のリストで構成されます。複合には、要素または他のネストされた複合とインライン化された定義への両方の参照が含まれる可能性があります。複合定義の例を次に示します。 ```yaml - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 複合定義には、次の属性が含まれる可能性があります。
名前 説明 形式

controlVal

実際の出現数を提供する、包含するレベルからの値 (​count​ != 1 でのみ使用)

インライン定義、または​参照

count

出現数 (または ​controlVal​ が使用されている場合は最大数) (省略可能、デフォルトは ​1​)

インライン定義、または​参照

id

参照の複合識別子

参照された定義

name

複合名 (省略可能)。

インラインまたは​参照された定義

values

複合内の要素と複合のリスト。

インラインまたは​参照された定義

この値リストはセグメント定義の値リストと同じ形式を使用します。 ## [](#segment_definitions)セグメント定義 セグメントはデータ内のレコードのタイプを記述します。セグメントは主に要素と複合の参照または直接定義と、セグメントを記述するいくつかのキー-値ペアで構成されます。少し複雑なスキーマでは、2 つの異なるセグメントを含む構造を使用し、その 1 つのセグメントで部品表の単一ヘッダーに含める項目 (日付、人など) を記述し、もう 1 つのセグメントで部品表内の実際の各項目に含める繰り返し項目を記述することができます。 これは、1 つの簡単な要素と、2 つの要素が入っている複合を含むサンプルのセグメント定義です。 ```yaml - id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` セグメント定義には、次の属性が含まれる可能性があります。
セクション 説明

id

セグメント識別子 (インライン定義では使用せず、​参照された定義​では必須)

name

セグメント名 (省略可能)

values

セグメント内の要素と複合のリスト (インライン化、または​参照​)

## [](#structure_definitions)構造定義 構造定義はセグメントとグループ定義への参照のリスト、および標準特性の一連のキー-値ペアで構成されます。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。 サンプルの構造定義を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例には、最上位の 2 つのセグメント (​`RQH`​ と ​`RQF`​) への参照、および他のセグメント (​`BCH`​、​`TDR`​、および ​`BCF`​) への参照を含むグループ定義 ​`Batch`​ が含まれます。この構造を機能させるには、​[参照された各セグメント](#segment_definitions)​を定義する必要があります。この例でセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 構造定義には、次の属性が含まれる可能性があります。
構造キー/セクション 説明

id

構造識別子

name

構造名 (省略可能)

data

構造内のセグメント (およびグループ) のリスト

セグメントリスト内の各項目はセグメント参照 (またはインライン定義) またはグループ定義 (常にインライン) です。 ### [](#グループ定義)グループ定義 グループ定義には、次の属性が含まれる可能性があります。
値 説明

groupId

グループ識別子

usage

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、未使用 (Unused) を表す ​U​ を使用できます (省略可能、デフォルトは ​M​)

count

最大反復数の値。数値、または任意の反復数を意味する特別な値 ​>1​ を使用できます (省略可能、指定しない場合は count 値 ​1​ を使用)

items

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

## [](#referenced_vs_inlined_defs)参照された定義とインライン化された定義の比較 最上位形式の選択肢以外にも、構造、セグメント、または複合のコンポーネントを表すことに関して選択肢が用意されています。コンポーネントのセグメント、複合、および要素を使用場所でインラインで定義するか、それらをテーブル内で定義して任意の場所から参照できます。インライン定義のほうがより簡単でコンパクトですが、テーブル形式では定義を再利用できます。テーブル形式の例には ​`id`​ 値を含める必要があり、その定義への各参照で ​`idRef`​ を使用します。次の例は、構造を構成するセグメントにこれを適用する方法を示しています。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { idref: createDate } - { idref: createTime } - { idref: fileId } - { idref: currency } - id: 'RQF' name: "Request File Footer Record" values: - { idref: batchCount } - { idref: transactionCount } - { idref: transactionAmount } - { idref: debitCredit } - { idref: fileId } elements: - { id: createDate, type: Date, length: 8 } - { id: createTime, type: Time, length: 4 } - { id: fileId, type: String, length: 10 } - { id: currency, type: String, length: 3 } - { id: batchCount, type: Integer, format: { justify: zeroes }, length: 4 } - { id: transactionCount, type: Integer, format: { justify: zeroes }, length: 6 } - { id: transactionAmount, type: Integer, format: { justify: zeroes }, length: 12 } - { id: debitCredit, type: String, length: 2 } ``` 上の例では、​`BatchReq`​ 構造は ​`data`​ 定義セクションのセグメントを参照しています。次に、スキーマの最上位の ​`segments`​ セクションでセグメントがそれぞれ定義され、後の ​`elements`​ セクションで定義されている要素を参照しています。 同じ構造のインライン化された定義は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` ## [](#full_schema_ex)スキーマの完全な例 ```yaml form: FLATFILE structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQH' } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'BCH' name: "Batch Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'H' } - { name: 'Company Name', type: String, length: 30 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'TDR' name: "Transaction Detail Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'D' } - { name: 'Account Number', type: String, length: 10 } - { name: 'Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - id: 'BCF' name: "Batch Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'T' } - { name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - { name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQF' } - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` この例には、5 個のコンポーネント​[セグメント](#segment_definitions)​を持つ「BatchReq」という名前の 1 つの​[構造](#structure_definitions)​が含まれ、ファイルおよびセグメントのバッチデータの 2 重にネストされた構造を使用しています。各バッチには反復する詳細レコードが含まれています。すべての要素定義がインライン化されています。 `BatchReq`​ 構造定義では、データが次のレコードで構成されている必要があります。 - セグメント ​`RQH`​ に対応する 1 つのレコード - セグメント ​`BCH`​ に対応する 1 つ以上のレコード - `BCH`​ レコードごとに、特定のトランザクションの詳細を提供する 1 つ以上の ​`TDR`​ レコード - `BCH`​ レコードごとに、包含する ​`TDR`​ レコードに続く ​`BCF`​ レコード - 最後に、セグメント ​`RQF`​ に対応する 1 つのレコード この例では、各レコードは、​`tagValue`​ が指定された 3 文字の「Record Type (レコードタイプ)」項目で始まります。バッチレコードの場合、レコードタイプは「Batch Function (バッチ関数)」の ​`tagValue`​ によってさらに指定されます。 スキーマ例に一致するデータのサンプルを次に示します。 ```text RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000002D01234567890000032876CR BAT000003D01234567880000087326CR BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000006D12345678900000003582DB BAT000007D12345678910000000256CR BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ``` 例内のインラインは、次のように定義された構造に一致します。 - 1 ​`RQH`​ (要求ファイルのヘッダーレコード) 最初の 3 文字の「RQH」値によって識別 - 2 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 3-4 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 5 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 6 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 7-8 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 9 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 10 ​`RQF`​ (要求ファイルのフッターレコード) 最初の 3 文字の「RQF」値によって識別 `tagValue`​ 項目は高い柔軟性を提供します。上の例では、一部のレコードタイプで単一の ​`tagValue`​ を使用し、他のレコードタイプで 2 番目の ​`tagValue`​ を追加していますが、さまざまなタイプのレコードをパーサーが識別できるように十分な詳細が提供されている限り、​`tagValue`​ でまったく異なる項目を (または、分離された一連の項目も) 使用することもできます。 古いバージョンのドキュメントでは、構造には ​`tagStart`​ と ​`tagLength`​ 値、セグメントには ​`tag`​ 値を使用して、タグ値に基づく異なる方法でレコードを識別していました。セグメントのこの識別方法は、​`tagValue`​ の方法よりも非常に多くの制限があり、廃止されました。 ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#format_flat_file) # フラットファイルスキーマ DataWeave ではさまざまな種別のデータを処理できます。このほとんどの種別で、入力構造を記述するスキーマをインポートし、設計時に価値あるメタデータにアクセスできます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave では、フラットファイルスキーマを表す FFD (Flat File Definition) と呼ばれる YAML 形式を使用します。FFD 形式は、広範なユースケースをサポートするのに十分な柔軟姓を備え、要素、複合、セグメント、グループ、および構造の概念に基づきます。 スキーマはフラットファイルスキーマ言語で記述する必要があり、慣例により ​`.ffd`​ 拡張子を使用します。この言語は、Anypoint Studio でも受け入れることができる EDI スキーマ言語 (ESL) によく似ています。 DataWeave では、プロパティを使用して入力または出力をフラットファイルスキーマにバインドできます。 固定幅の簡単な形式を使用する場合、​`Fixed Width`​ 型を使用してデータ型を Transform コンポーネントから直接セットアップできます。Studio でこの型のインスタンスを作成すると、一致するスキーマ定義が自動的に生成されます。 ## [](#スキーマ内のコンポーネントの種別)スキーマ内のコンポーネントの種別 フラットファイルスキーマを構成するさまざまな種別のコンポーネントを、最も基本的なものからより複雑なものまで以下に示します。要素とセグメントは常に必須です。複合、グループ、構造は、​[ドキュメントの最上位構造](#top_level_structure)​に応じて必要になる場合があります。 - 要素 - 要素は基本データ項目です。これには、型と固定幅が関連付けられているほか、データ値の読み書きの方法を示す書式オプションがあります。 - 複合 - (省略可能) 要素のグループ。これには、他の子複合を含めることもできます。 - セグメント - 反復可能な任意の数の要素または複合で構成される一行のデータ (レコード)。 - グループ - (省略可能) まとめられた複数のセグメント。これには、他の子グループを含めることもできます。 - 構造 - セグメントの階層構成。これには、データの一部として一意の識別子コードが含まれている必要があります。 ## [](#top_level_structure)FFD ドキュメントの最上位構造 FFD ドキュメントの最上位定義はスキーマの形式から始まります。この場合は、常に「FLATFILE」、「COPYBOOK」、または「FIXEDWIDTH」である必要があります。これらの形式の違いはわずかで、そのほとんどは、Studio での処理方法に関連します。残りは、ファイルに含まれる定義の形式に依存し、次の選択肢があります。 - 単一セグメント - 最上位に直接配置されたセグメント情報 (セグメントの要素または複合の詳細を提供する ​`values`​ キーを含む)。 - 複数セグメント - 1 つの ​`segments`​ キーと複数の子オブジェクト。各オブジェクトで 1 つのセグメントを定義します。 - 複数構造 - 1 つの ​`structures`​ キーと複数の子オブジェクト。各オブジェクトで 1 つの構造を定義します。 ### [](#単一セグメント)単一セグメント 1 つのタイプのレコードのみを使用する場合、FFD ではそのレコードタイプのセグメント定義のみが必要です。 ![複数の要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-flat-file-schemas-22788.png) これは 1 つのセグメントのみを持つ単純なスキーマです。 ```yaml form: FLATFILE id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 上の例では、単一セグメント内で要素のリストを定義しているのみです。これらの要素をまとめる複合はありません。 別の例を次に示します。 ```yaml form: FIXEDWIDTH name: my-flat-file values: - { name: 'Row-id', type: String, length: 2 } - { name: 'Total', type: Decimal, length: 11 } - { name: 'Module', type: String, length: 8 } - { name: 'Cost', type: Decimal, length: 8, format: { implicit: 2 } } - { name: 'Program-id', type: String, length: 8 } - { name: 'user-id', type: String, length: 8 } - { name: 'return-sign', type: String, length: 1 } ``` 単にわかりやすくすることを目的として形式を簡略化しています。1 つの子セグメント定義のみの場合も ​`segments`​ キーを使用できます。 ### [](#複数セグメント)複数セグメント 同じ変換で複数のタイプのレコードを使用する場合、その異なるレコードの組み合わせ方法を制御する構造定義を使用する必要があります。 ![要素とセグメントを含むフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-flat-file-schemas-680c6.png) ほとんどの場合、異なるタイプのレコードの識別方法を定義する必要があります。これを行うには、レコード定義の一部として ​`tagValue`​ 項目を識別します。パーサーは、各レコードの項目のコンテンツを確認し、レコードタイプを識別した後、定義された構造にレコードがどのように収められているかを確認します。 複数のコンポーネントレコードタイプを持つ完全な構造スキーマの例を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ### [](#複数構造)複数構造 FFD に複数の構造またはセグメント定義がある場合、スキーマを Transform コンポーネントのメタデータ記述に適用するときに、どれを使用するかを指定する必要があります。 ![グループ、セグメント、要素が表示されているフラットファイルスキーマ](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-flat-file-schemas-4e1eb.png) 複数構造を持つスキーマの最上位構造は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } - id: 'BatchRsp' name: Batch Response data: - { idRef: 'RSH' } - groupId: 'Batch' usage: O count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RSF' } segments: - id: 'RQH' ... ``` この例では、2 つの異なる構造 (​`BatchReq`​ 構造と ​`BatchRsp`​ 構造) を定義します。この各構造で特定のセグメント順序およびセグメントグループを使用します。グループ ​`Batch`​ は両方の構造で反復されます。Batch グループは 1 つの BCH 行、複数の TDR 行、および 1 つの BCF 行で構成されます。 この例は完全ではありません。参照する各セグメントを最後に定義する必要があります。この例でこれらのセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 ## [](#要素定義)要素定義 要素定義は、標準特性の基本的なキー-値ペアで構成される、アプリケーションデータの基本構成要素です。フラットファイルスキーマではインライン要素定義が一般的に使用されます。この定義では、各要素がセグメントまたは複合構造内の各要素の使用場所で定義されますが、要素を個別に定義して必要に応じて参照することもできます。参考用に定義したいくつかの要素定義を次に示します。 ```yaml - { id: 'OrgCode', name: 'Organization Code', type: String, length: 10 } - { id: 'CreateDate', name: 'File Creation Date', type: Date, length: 8 } - { id: 'CreateTime', name: 'File Creation Time', type: Time, length: 4 } - { id: 'BatchTransCount', name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { id: 'BatchTransAmount', name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } ``` 指定された ​`id`​ 値は、セグメントまたは複合の一部としてこれらの定義のいずれかを参照する場合に ​`idRef`​ 値として使用されます。要素をセグメント定義内でインラインで定義する場合 (ドキュメントの最後に要素を定義して参照する方法とは対照的)、​`id`​ 項目は不要です。 要素定義には次の属性が含まれる可能性があります。これらは、インライン定義、参照された定義 (上の例を参照)、または定義への参照に適用されるものとして、「形式」によって分類されます。
Table 1. 属性
名前 説明 形式

count

出現数 (省略可能、デフォルトは ​1​)。

インラインまたは参照

id

要素識別子

参照された定義

idRef

要素識別子

参照

name

要素名 (省略可能)

すべて

type

値の型コード (以下のリストを参照)

インライン、または参照された定義

format

型固有の書式情報

インライン、または参照された定義

length

値の文字位置の数

インライン、または参照された定義

tagValue

セグメントを識別するために使用するこの要素の値 (​「スキーマの完全な例」​を参照)

インライン、または参照された定義

要素の定義で許可される型を次に示します。
Table 2. 型
名前 説明

Binary (バイナリ)

バイナリ値 (COBOL 形式、2、4、8 バイト)

Boolean (ブール)

ブール値

Date (日付)

年、月、および日コンポーネントを持つ非ゾーン日付値 (一部はテキスト形式で表示されない場合があります)

DateTime (日時)

年、月、日、時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン日時値 (一部はテキスト形式で表示されない場合があります)

Decimal (10 進数)

10 進数値。テキスト形式に明示的な小数点が含まれる場合と含まれない場合があります

Integer (整数)

整数値

Packed (パック)

10 進数値のパック 10 進数表現 (COBOL 形式)

String (文字列)

文字列値

Time (時刻)

時、分、秒、およびミリ秒コンポーネントを持つ非ゾーン時刻値 (一部はテキスト形式で表示されない場合があります)

Zoned (ゾーン)

ゾーン 10 進数 (COBOL 形式)

値の型では、値のテキスト形式に影響するさまざまな書式オプションがサポートされます。主なオプションと適用先の型を以下に示します。
Table 3. 書式オプション
Key (キー) 説明 適用先

digits (桁数)

許可される桁数

Binary (バイナリ)

implicit (暗黙的)

暗黙的な小数点以下桁数 (テキスト形式で小数点のない固定小数点値で使用されます)

Binary、Decimal、Packed、Zoned

justify (行揃え)

項目内の行揃え (LEFT、RIGHT、NONE、または ZEROES。ZEROES は数値のみで使用)

Binary (バイナリ) と Packed (パック) 以外のすべて

pattern (パターン)

数値の場合、解析および書き込み用の ​java.text.DecimalFormat​ パターン。日時値の場合、​java.time.format.DateTimeFormatter​ パターン。

Date、DateTime、Decimal、Integer、Time

署名

数値の符号の使用方法 (UNSIGNED、​NEGATIVE_ONLY​、OPTIONAL、​ALWAYS_LEFT​、​ALWAYS_RIGHT​)

Decimal、Integer、Zoned

signed (符号あり)

符号ありか符号なしかを示すフラグ

Binary (バイナリ)、Packed (パック)

## [](#複合定義)複合定義 複合は、通常一緒に存在する要素のリストを参照するのに役立ちます。たとえば、​`firstName`​ と ​`lastName`​ はグループとして参照される可能性があるため、それらをまとめて 1 つの複合にバンドルすることができます。要素を複合にまとめると、リストを反復することもできます。 複合定義は、セグメント定義によく似ており、標準特性のいくつかのキー-値ペアおよび値のリストで構成されます。複合には、要素または他のネストされた複合とインライン化された定義への両方の参照が含まれる可能性があります。複合定義の例を次に示します。 ```yaml - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` 複合定義には、次の属性が含まれる可能性があります。
名前 説明 形式

controlVal

実際の出現数を提供する、包含するレベルからの値 (​count​ != 1 でのみ使用)

インライン定義、または​参照

count

出現数 (または ​controlVal​ が使用されている場合は最大数) (省略可能、デフォルトは ​1​)

インライン定義、または​参照

id

参照の複合識別子

参照された定義

name

複合名 (省略可能)。

インラインまたは​参照された定義

values

複合内の要素と複合のリスト。

インラインまたは​参照された定義

この値リストはセグメント定義の値リストと同じ形式を使用します。 ## [](#segment_definitions)セグメント定義 セグメントはデータ内のレコードのタイプを記述します。セグメントは主に要素と複合の参照または直接定義と、セグメントを記述するいくつかのキー-値ペアで構成されます。少し複雑なスキーマでは、2 つの異なるセグメントを含む構造を使用し、その 1 つのセグメントで部品表の単一ヘッダーに含める項目 (日付、人など) を記述し、もう 1 つのセグメントで部品表内の実際の各項目に含める繰り返し項目を記述することができます。 これは、1 つの簡単な要素と、2 つの要素が入っている複合を含むサンプルのセグメント定義です。 ```yaml - id: 'RQH' name: Request Header Record values: - { name: 'Organization Code', type: String, length: 10 } - id: 'DateTime' name: 'Date/Time pair' values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } ``` セグメント定義には、次の属性が含まれる可能性があります。
セクション 説明

id

セグメント識別子 (インライン定義では使用せず、​参照された定義​では必須)

name

セグメント名 (省略可能)

values

セグメント内の要素と複合のリスト (インライン化、または​参照​)

## [](#structure_definitions)構造定義 構造定義はセグメントとグループ定義への参照のリスト、および標準特性の一連のキー-値ペアで構成されます。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。 サンプルの構造定義を次に示します。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' ... ``` この例には、最上位の 2 つのセグメント (​`RQH`​ と ​`RQF`​) への参照、および他のセグメント (​`BCH`​、​`TDR`​、および ​`BCF`​) への参照を含むグループ定義 ​`Batch`​ が含まれます。この構造を機能させるには、​[参照された各セグメント](#segment_definitions)​を定義する必要があります。この例でセグメントを参照する方法については、​[「参照された定義とインライン化された定義の比較」](#referenced_vs_inlined_defs)​を参照してください。 構造定義には、次の属性が含まれる可能性があります。
構造キー/セクション 説明

id

構造識別子

name

構造名 (省略可能)

data

構造内のセグメント (およびグループ) のリスト

セグメントリスト内の各項目はセグメント参照 (またはインライン定義) またはグループ定義 (常にインライン) です。 ### [](#グループ定義)グループ定義 グループ定義には、次の属性が含まれる可能性があります。
Value (値) 説明

groupId

グループ識別子

usage

使用方法コード。必須 (Mandatory) を表す ​M​、省略可能 (Optional) を表す ​O​、未使用 (Unused) を表す ​U​ を使用できます (省略可能、デフォルトは ​M​)

count

最大反復数の値。数値、または任意の反復数を意味する特別な値 ​>1​ を使用できます (省略可能、指定しない場合は count 値 ​1​ を使用)

items

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

## [](#referenced_vs_inlined_defs)参照された定義とインライン化された定義の比較 最上位形式の選択肢以外にも、構造、セグメント、または複合のコンポーネントを表すことに関して選択肢が用意されています。コンポーネントのセグメント、複合、および要素を使用場所でインラインで定義するか、それらをテーブル内で定義して任意の場所から参照できます。インライン定義のほうがより簡単でコンパクトですが、テーブル形式では定義を再利用できます。テーブル形式の例には ​`id`​ 値を含める必要があり、その定義への各参照で ​`idRef`​ を使用します。次の例は、構造を構成するセグメントにこれを適用する方法を示しています。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { idref: createDate } - { idref: createTime } - { idref: fileId } - { idref: currency } - id: 'RQF' name: "Request File Footer Record" values: - { idref: batchCount } - { idref: transactionCount } - { idref: transactionAmount } - { idref: debitCredit } - { idref: fileId } elements: - { id: createDate, type: Date, length: 8 } - { id: createTime, type: Time, length: 4 } - { id: fileId, type: String, length: 10 } - { id: currency, type: String, length: 3 } - { id: batchCount, type: Integer, format: { justify: zeroes }, length: 4 } - { id: transactionCount, type: Integer, format: { justify: zeroes }, length: 6 } - { id: transactionAmount, type: Integer, format: { justify: zeroes }, length: 12 } - { id: debitCredit, type: String, length: 2 } ``` 上の例では、​`BatchReq`​ 構造は ​`data`​ 定義セクションのセグメントを参照しています。次に、スキーマの最上位の ​`segments`​ セクションでセグメントがそれぞれ定義され、後の ​`elements`​ セクションで定義されている要素を参照しています。 同じ構造のインライン化された定義は次のようになります。 ```yaml form: FIXEDWIDTH structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` ## [](#full_schema_ex)スキーマの完全な例 ```yaml form: FLATFILE structures: - id: 'BatchReq' name: Batch Request data: - { idRef: 'RQH' } - groupId: 'Batch' count: '>1' items: - { idRef: 'BCH' } - { idRef: 'TDR', count: '>1' } - { idRef: 'BCF' } - { idRef: 'RQF' } segments: - id: 'RQH' name: "Request File Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQH' } - { name: 'File Creation Date', type: Date, length: 8 } - { name: 'File Creation Time', type: Time, length: 4 } - { name: 'Unique File Identifier', type: String, length: 10 } - { name: 'Currency', type: String, length: 3 } - id: 'BCH' name: "Batch Header Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'H' } - { name: 'Company Name', type: String, length: 30 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'TDR' name: "Transaction Detail Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'D' } - { name: 'Account Number', type: String, length: 10 } - { name: 'Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - id: 'BCF' name: "Batch Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'BAT' } - { name: 'Sequence Number', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Batch Function', type: String, length: 1, tagValue: 'T' } - { name: 'Batch Transaction Amount', type: Integer, format: { justify: zeroes }, length: 10 } - { name: 'Type', type: String, length: 2 } - { name: 'Batch Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'Unique Batch Identifier', type: String, length: 10 } - id: 'RQF' name: "Request File Footer Record" values: - { name: 'Record Type', type: String, length: 3, tagValue: 'RQF' } - { name: 'File Batch Count', type: Integer, format: { justify: zeroes }, length: 4 } - { name: 'File Transaction Count', type: Integer, format: { justify: zeroes }, length: 6 } - { name: 'File Transaction Amount', type: Integer, format: { justify: zeroes }, length: 12 } - { name: 'Type', type: String, length: 2 } - { name: 'Unique File Identifier', type: String, length: 10 } ``` この例には、5 個のコンポーネント​[セグメント](#segment_definitions)​を持つ「BatchReq」という名前の 1 つの​[構造](#structure_definitions)​が含まれ、ファイルおよびセグメントのバッチデータの 2 重にネストされた構造を使用しています。各バッチには反復する詳細レコードが含まれています。すべての要素定義がインライン化されています。 `BatchReq`​ 構造定義では、データが次のレコードで構成されている必要があります。 - セグメント ​`RQH`​ に対応する 1 つのレコード - セグメント ​`BCH`​ に対応する 1 つ以上のレコード - `BCH`​ レコードごとに、特定のトランザクションの詳細を提供する 1 つ以上の ​`TDR`​ レコード - `BCH`​ レコードごとに、包含する ​`TDR`​ レコードに続く ​`BCF`​ レコード - 最後に、セグメント ​`RQF`​ に対応する 1 つのレコード この例では、各レコードは、​`tagValue`​ が指定された 3 文字の「Record Type (レコードタイプ)」項目で始まります。バッチレコードの場合、レコードタイプは「Batch Function (バッチ関数)」の ​`tagValue`​ によってさらに指定されます。 スキーマ例に一致するデータのサンプルを次に示します。 ```text RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000002D01234567890000032876CR BAT000003D01234567880000087326CR BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000006D12345678900000003582DB BAT000007D12345678910000000256CR BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ``` 例内のインラインは、次のように定義された構造に一致します。 - 1 ​`RQH`​ (要求ファイルのヘッダーレコード) 最初の 3 文字の「RQH」値によって識別 - 2 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 3-4 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 5 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 6 ​`BCH`​ (バッチのヘッダーレコード) 最初の 3 文字の「BAT」値と位置 10 の「H」文字を組み合わせて識別 - 7-8 ​`TDR`​ (トランザクションの詳細レコード) 最初の 3 文字の「BAT」値と位置 10 の「D」文字を組み合わせて識別 - 9 ​`BCF`​ (バッチのフッターレコード) 最初の 3 文字の「BAT」値と位置 10 の「T」文字を組み合わせて識別 - 10 ​`RQF`​ (要求ファイルのフッターレコード) 最初の 3 文字の「RQF」値によって識別 `tagValue`​ 項目は高い柔軟性を提供します。上の例では、一部のレコードタイプで単一の ​`tagValue`​ を使用し、他のレコードタイプで 2 番目の ​`tagValue`​ を追加していますが、さまざまなタイプのレコードをパーサーが識別できるように十分な詳細が提供されている限り、​`tagValue`​ でまったく異なる項目を (または、分離された一連の項目も) 使用することもできます。 古いバージョンのドキュメントでは、構造には ​`tagStart`​ と ​`tagLength`​ 値、セグメントには ​`tag`​ 値を使用して、タグ値に基づく異なる方法でレコードを識別していました。セグメントのこの識別方法は、​`tagValue`​ の方法よりも非常に多くの制限があり、廃止されました。 ## [](#関連情報)関連情報 [サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#format_flat_file) # フラットファイルの読み取りと書き込み 次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。 フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。 これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。 ## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 指定されたパスからフラットファイルを読み取る File Read 操作 3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント ![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.3/_images/mruntime-read-flat-file.png) アプリケーション XML ファイル ```xml (1) ```
1 File Read 操作では次の属性が設定されます。
  • path​: 読み取るフラットファイルのパス

  • outputMimeType​: コンテンツの出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するリーダープロパティ

このアプリケーション例の実行後に、次の出力が生成されます。 ```json { "Batch": [ { "TDR": [ { "Record Type": "BAT", "Sequence Number": 2, "Amount": 32876, "Account Number": "0123456789", "Batch Function": "D", "Type": "CR" }, { "Record Type": "BAT", "Sequence Number": 3, "Amount": 87326, "Account Number": "0123456788", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 4, "Batch Transaction Count": 2, "Batch Transaction Amount": 120202, "Unique Batch Identifier": "A000000001", "Batch Function": "T", "Type": "CR" }, "BCH": { "Record Type": "BAT", "Company Name": "ACME RESEARCH", "Sequence Number": 1, "Unique Batch Identifier": "A000000001", "Batch Function": "H" } }, { "TDR": [ { "Record Type": "BAT", "Sequence Number": 6, "Amount": 3582, "Account Number": "1234567890", "Batch Function": "D", "Type": "DB" }, { "Record Type": "BAT", "Sequence Number": 7, "Amount": 256, "Account Number": "1234567891", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 8, "Batch Transaction Count": 2, "Batch Transaction Amount": 3326, "Unique Batch Identifier": "A000000002", "Batch Function": "T", "Type": "DB" }, "BCH": { "Record Type": "BAT", "Company Name": "AJAX EXPLOSIVES", "Sequence Number": 5, "Unique Batch Identifier": "A000000002", "Batch Function": "H" } } ], "RQF": { "Record Type": "RQF", "File Batch Count": 2, "File Transaction Count": 8, "File Transaction Amount": 116876, "Unique File Identifier": "A000000001", "Type": "CR" }, "RQH": { "Record Type": "RQH", "File Creation Time": "10:10:00", "File Creation Date": "2018-09-01", "Currency": "USD", "Unique File Identifier": "A000000001" } } ``` ## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作 3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント 5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作 ![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.3/_images/mruntime-write-flat-file.png) アプリケーション XML ファイル ```xml (1) { BCH: { "Record Type": batch.BCH."Record Type", "Sequence Number": batch.BCH."Sequence Number", "Batch Function": batch.BCH."Batch Function", "Company Name": batch.BCH."Company Name", "Unique Batch Identifier": batch.BCH."Unique Batch Identifier"}, TDR: batch.TDR map (tdr, indexOfTdr) -> { "Record Type": tdr.TDR."Record Type", "Sequence Number": tdr.TDR."Sequence Number", "Batch Function": tdr.TDR."Batch Function", "Account Number": tdr.TDR."Account Number", "Amount": tdr.TDR.Amount, "Type": tdr.TDR.'Type' }, BCF: { "Record Type": batch.BCF."Record Type", "Sequence Number": batch.BCF."Sequence Number", "Batch Function": batch.BCF."Batch Function", "Batch Transaction Amount": batch.BCF."Batch Transaction Amount", "Type": batch.BCF.'Type', "Batch Transaction Count": batch.BCF."Batch Transaction Count", "Unique Batch Identifier": batch.BCF."Unique Batch Identifier"} }, RQF: { "Record Type": payload.RQF."Record Type", "File Batch Count": payload.RQF."File Batch Count", "File Transaction Count": payload.RQF."File Transaction Count", "File Transaction Amount": payload.RQF."File Transaction Amount", Type: payload.RQF.Type, "Unique File Identifier": payload.RQF."Unique File Identifier" } } ]]> (2) ```
1 Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
  • output​: 変換の出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するライタープロパティ

2 File Write 操作では ​path​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。
このアプリケーション例の実行後に、次の出力が生成されます。 RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ## [](#例をローカルでテストする)例をローカルでテストする 例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。 1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。 2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。 3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。 4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。 fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\] 5. ``sr:page-aliases 内に ​`flatfile``​ という名前のファイルを作成します。 6. ``sr:page-aliases 内に ​`flatfileschema.ffd``​ という名前のファイルを作成します。 7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。 ## [](#関連情報)関連情報 - [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-flatfile) - [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-flat-file-schemas) - [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-set-reader-writer-props) - [プロパティの設定](https://docs.mulesoft.com/jp/mule-runtime/4.3/configuring-properties) # フラットファイルの読み取りと書き込み 次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。 フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。 これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。 ## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 指定されたパスからフラットファイルを読み取る File Read 操作 3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント ![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.4/_images/mruntime-read-flat-file.png) アプリケーション XML ファイル ```xml (1) ```
1 File Read 操作では次の属性が設定されます。
  • path​: 読み取るフラットファイルのパス

  • outputMimeType​: コンテンツの出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するリーダープロパティ

このアプリケーション例の実行後に、次の出力が生成されます。 ```json { "Batch": [ { "TDR": [ { "Record Type": "BAT", "Sequence Number": 2, "Amount": 32876, "Account Number": "0123456789", "Batch Function": "D", "Type": "CR" }, { "Record Type": "BAT", "Sequence Number": 3, "Amount": 87326, "Account Number": "0123456788", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 4, "Batch Transaction Count": 2, "Batch Transaction Amount": 120202, "Unique Batch Identifier": "A000000001", "Batch Function": "T", "Type": "CR" }, "BCH": { "Record Type": "BAT", "Company Name": "ACME RESEARCH", "Sequence Number": 1, "Unique Batch Identifier": "A000000001", "Batch Function": "H" } }, { "TDR": [ { "Record Type": "BAT", "Sequence Number": 6, "Amount": 3582, "Account Number": "1234567890", "Batch Function": "D", "Type": "DB" }, { "Record Type": "BAT", "Sequence Number": 7, "Amount": 256, "Account Number": "1234567891", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 8, "Batch Transaction Count": 2, "Batch Transaction Amount": 3326, "Unique Batch Identifier": "A000000002", "Batch Function": "T", "Type": "DB" }, "BCH": { "Record Type": "BAT", "Company Name": "AJAX EXPLOSIVES", "Sequence Number": 5, "Unique Batch Identifier": "A000000002", "Batch Function": "H" } } ], "RQF": { "Record Type": "RQF", "File Batch Count": 2, "File Transaction Count": 8, "File Transaction Amount": 116876, "Unique File Identifier": "A000000001", "Type": "CR" }, "RQH": { "Record Type": "RQH", "File Creation Time": "10:10:00", "File Creation Date": "2018-09-01", "Currency": "USD", "Unique File Identifier": "A000000001" } } ``` ## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作 3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント 5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作 ![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.4/_images/mruntime-write-flat-file.png) アプリケーション XML ファイル ```xml (1) { BCH: { "Record Type": batch.BCH."Record Type", "Sequence Number": batch.BCH."Sequence Number", "Batch Function": batch.BCH."Batch Function", "Company Name": batch.BCH."Company Name", "Unique Batch Identifier": batch.BCH."Unique Batch Identifier"}, TDR: batch.TDR map (tdr, indexOfTdr) -> { "Record Type": tdr.TDR."Record Type", "Sequence Number": tdr.TDR."Sequence Number", "Batch Function": tdr.TDR."Batch Function", "Account Number": tdr.TDR."Account Number", "Amount": tdr.TDR.Amount, "Type": tdr.TDR.'Type' }, BCF: { "Record Type": batch.BCF."Record Type", "Sequence Number": batch.BCF."Sequence Number", "Batch Function": batch.BCF."Batch Function", "Batch Transaction Amount": batch.BCF."Batch Transaction Amount", "Type": batch.BCF.'Type', "Batch Transaction Count": batch.BCF."Batch Transaction Count", "Unique Batch Identifier": batch.BCF."Unique Batch Identifier"} }, RQF: { "Record Type": payload.RQF."Record Type", "File Batch Count": payload.RQF."File Batch Count", "File Transaction Count": payload.RQF."File Transaction Count", "File Transaction Amount": payload.RQF."File Transaction Amount", Type: payload.RQF.Type, "Unique File Identifier": payload.RQF."Unique File Identifier" } } ]]> (2) ```
1 Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
  • output​: 変換の出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するライタープロパティ

2 File Write 操作では ​path​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。
このアプリケーション例の実行後に、次の出力が生成されます。 RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ## [](#例をローカルでテストする)例をローカルでテストする 例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。 1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。 2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。 3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。 4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。 fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\] 5. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfile`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの[フラットファイルサンプルデータ](https://docs.mulesoft.com/jp/dataweave/2.4/%3Cdataweave-flat-file-schemas#flat-file-sample-data >)を使用してその内容を設定します。 6. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileschema.ffd`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの​[完全なスキーマ例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flat-file-schemas#full_schema_ex)​を使用してその内容を設定します。 7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。 ## [](#関連情報)関連情報 - [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-flatfile) - [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-flat-file-schemas) - [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-set-reader-writer-props) - [プロパティの設定](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) # フラットファイルの読み取りと書き込み 次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。 フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。 これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。 ## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 指定されたパスからフラットファイルを読み取る File Read 操作 3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント ![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.5/_images/mruntime-read-flat-file.png) アプリケーション XML ファイル ```xml (1) ```
1 File Read 操作では次の属性が設定されます。
  • path​: 読み取るフラットファイルのパス

  • outputMimeType​: コンテンツの出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するリーダープロパティ

このアプリケーション例の実行後に、次の出力が生成されます。 ```json { "Batch": [ { "TDR": [ { "Record Type": "BAT", "Sequence Number": 2, "Amount": 32876, "Account Number": "0123456789", "Batch Function": "D", "Type": "CR" }, { "Record Type": "BAT", "Sequence Number": 3, "Amount": 87326, "Account Number": "0123456788", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 4, "Batch Transaction Count": 2, "Batch Transaction Amount": 120202, "Unique Batch Identifier": "A000000001", "Batch Function": "T", "Type": "CR" }, "BCH": { "Record Type": "BAT", "Company Name": "ACME RESEARCH", "Sequence Number": 1, "Unique Batch Identifier": "A000000001", "Batch Function": "H" } }, { "TDR": [ { "Record Type": "BAT", "Sequence Number": 6, "Amount": 3582, "Account Number": "1234567890", "Batch Function": "D", "Type": "DB" }, { "Record Type": "BAT", "Sequence Number": 7, "Amount": 256, "Account Number": "1234567891", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 8, "Batch Transaction Count": 2, "Batch Transaction Amount": 3326, "Unique Batch Identifier": "A000000002", "Batch Function": "T", "Type": "DB" }, "BCH": { "Record Type": "BAT", "Company Name": "AJAX EXPLOSIVES", "Sequence Number": 5, "Unique Batch Identifier": "A000000002", "Batch Function": "H" } } ], "RQF": { "Record Type": "RQF", "File Batch Count": 2, "File Transaction Count": 8, "File Transaction Amount": 116876, "Unique File Identifier": "A000000001", "Type": "CR" }, "RQH": { "Record Type": "RQH", "File Creation Time": "10:10:00", "File Creation Date": "2018-09-01", "Currency": "USD", "Unique File Identifier": "A000000001" } } ``` ## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作 3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント 5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作 ![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.5/_images/mruntime-write-flat-file.png) アプリケーション XML ファイル ```xml (1) { BCH: { "Record Type": batch.BCH."Record Type", "Sequence Number": batch.BCH."Sequence Number", "Batch Function": batch.BCH."Batch Function", "Company Name": batch.BCH."Company Name", "Unique Batch Identifier": batch.BCH."Unique Batch Identifier"}, TDR: batch.TDR map (tdr, indexOfTdr) -> { "Record Type": tdr.TDR."Record Type", "Sequence Number": tdr.TDR."Sequence Number", "Batch Function": tdr.TDR."Batch Function", "Account Number": tdr.TDR."Account Number", "Amount": tdr.TDR.Amount, "Type": tdr.TDR.'Type' }, BCF: { "Record Type": batch.BCF."Record Type", "Sequence Number": batch.BCF."Sequence Number", "Batch Function": batch.BCF."Batch Function", "Batch Transaction Amount": batch.BCF."Batch Transaction Amount", "Type": batch.BCF.'Type', "Batch Transaction Count": batch.BCF."Batch Transaction Count", "Unique Batch Identifier": batch.BCF."Unique Batch Identifier"} }, RQF: { "Record Type": payload.RQF."Record Type", "File Batch Count": payload.RQF."File Batch Count", "File Transaction Count": payload.RQF."File Transaction Count", "File Transaction Amount": payload.RQF."File Transaction Amount", Type: payload.RQF.Type, "Unique File Identifier": payload.RQF."Unique File Identifier" } } ]]> (2) ```
1 Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
  • output​: 変換の出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するライタープロパティ

2 File Write 操作では ​path​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。
このアプリケーション例の実行後に、次の出力が生成されます。 RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ## [](#例をローカルでテストする)例をローカルでテストする 例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。 1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。 2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。 3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。 4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。 fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\] 5. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfile`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの[フラットファイルサンプルデータ](https://docs.mulesoft.com/jp/dataweave/2.5/%3Cdataweave-flat-file-schemas#flat-file-sample-data >)を使用してその内容を設定します。 6. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileschema.ffd`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの​[完全なスキーマ例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flat-file-schemas#full_schema_ex)​を使用してその内容を設定します。 7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。 ## [](#関連情報)関連情報 - [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-flatfile) - [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-flat-file-schemas) - [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-set-reader-writer-props) - [プロパティの設定](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) # フラットファイルの読み取りと書き込み 次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。 フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。 これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。 ## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 指定されたパスからフラットファイルを読み取る File Read 操作 3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント ![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.6/_images/mruntime-read-flat-file.png) アプリケーション XML ファイル ```xml (1) ```
1 File Read 操作では次の属性が設定されます。
  • path​: 読み取るフラットファイルのパス

  • outputMimeType​: コンテンツの出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するリーダープロパティ

このアプリケーション例の実行後に、次の出力が生成されます。 ```json { "Batch": [ { "TDR": [ { "Record Type": "BAT", "Sequence Number": 2, "Amount": 32876, "Account Number": "0123456789", "Batch Function": "D", "Type": "CR" }, { "Record Type": "BAT", "Sequence Number": 3, "Amount": 87326, "Account Number": "0123456788", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 4, "Batch Transaction Count": 2, "Batch Transaction Amount": 120202, "Unique Batch Identifier": "A000000001", "Batch Function": "T", "Type": "CR" }, "BCH": { "Record Type": "BAT", "Company Name": "ACME RESEARCH", "Sequence Number": 1, "Unique Batch Identifier": "A000000001", "Batch Function": "H" } }, { "TDR": [ { "Record Type": "BAT", "Sequence Number": 6, "Amount": 3582, "Account Number": "1234567890", "Batch Function": "D", "Type": "DB" }, { "Record Type": "BAT", "Sequence Number": 7, "Amount": 256, "Account Number": "1234567891", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 8, "Batch Transaction Count": 2, "Batch Transaction Amount": 3326, "Unique Batch Identifier": "A000000002", "Batch Function": "T", "Type": "DB" }, "BCH": { "Record Type": "BAT", "Company Name": "AJAX EXPLOSIVES", "Sequence Number": 5, "Unique Batch Identifier": "A000000002", "Batch Function": "H" } } ], "RQF": { "Record Type": "RQF", "File Batch Count": 2, "File Transaction Count": 8, "File Transaction Amount": 116876, "Unique File Identifier": "A000000001", "Type": "CR" }, "RQH": { "Record Type": "RQH", "File Creation Time": "10:10:00", "File Creation Date": "2018-09-01", "Currency": "USD", "Unique File Identifier": "A000000001" } } ``` ## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作 3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント 5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作 ![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.6/_images/mruntime-write-flat-file.png) アプリケーション XML ファイル ```xml (1) { BCH: { "Record Type": batch.BCH."Record Type", "Sequence Number": batch.BCH."Sequence Number", "Batch Function": batch.BCH."Batch Function", "Company Name": batch.BCH."Company Name", "Unique Batch Identifier": batch.BCH."Unique Batch Identifier"}, TDR: batch.TDR map (tdr, indexOfTdr) -> { "Record Type": tdr.TDR."Record Type", "Sequence Number": tdr.TDR."Sequence Number", "Batch Function": tdr.TDR."Batch Function", "Account Number": tdr.TDR."Account Number", "Amount": tdr.TDR.Amount, "Type": tdr.TDR.'Type' }, BCF: { "Record Type": batch.BCF."Record Type", "Sequence Number": batch.BCF."Sequence Number", "Batch Function": batch.BCF."Batch Function", "Batch Transaction Amount": batch.BCF."Batch Transaction Amount", "Type": batch.BCF.'Type', "Batch Transaction Count": batch.BCF."Batch Transaction Count", "Unique Batch Identifier": batch.BCF."Unique Batch Identifier"} }, RQF: { "Record Type": payload.RQF."Record Type", "File Batch Count": payload.RQF."File Batch Count", "File Transaction Count": payload.RQF."File Transaction Count", "File Transaction Amount": payload.RQF."File Transaction Amount", Type: payload.RQF.Type, "Unique File Identifier": payload.RQF."Unique File Identifier" } } ]]> (2) ```
1 Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
  • output​: 変換の出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するライタープロパティ

2 File Write 操作では ​path​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。
このアプリケーション例の実行後に、次の出力が生成されます。 RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ## [](#例をローカルでテストする)例をローカルでテストする 例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。 1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。 2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。 3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。 4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。 fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\] 5. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfile`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの[フラットファイルサンプルデータ](https://docs.mulesoft.com/jp/dataweave/2.6/%3Cdataweave-flat-file-schemas#flat-file-sample-data >)を使用してその内容を設定します。 6. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileschema.ffd`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの​[完全なスキーマ例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flat-file-schemas#full_schema_ex)​を使用してその内容を設定します。 7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。 ## [](#関連情報)関連情報 - [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-flatfile) - [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-flat-file-schemas) - [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-set-reader-writer-props) - [プロパティの設定](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) # フラットファイルの読み取りと書き込み 次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。 フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。 これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。 ## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 指定されたパスからフラットファイルを読み取る File Read 操作 3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント ![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.7/_images/mruntime-read-flat-file.png) アプリケーション XML ファイル ```xml (1) ```
1 File Read 操作では次の属性が設定されます。
  • path​: 読み取るフラットファイルのパス

  • outputMimeType​: コンテンツの出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するリーダープロパティ

このアプリケーション例の実行後に、次の出力が生成されます。 ```json { "Batch": [ { "TDR": [ { "Record Type": "BAT", "Sequence Number": 2, "Amount": 32876, "Account Number": "0123456789", "Batch Function": "D", "Type": "CR" }, { "Record Type": "BAT", "Sequence Number": 3, "Amount": 87326, "Account Number": "0123456788", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 4, "Batch Transaction Count": 2, "Batch Transaction Amount": 120202, "Unique Batch Identifier": "A000000001", "Batch Function": "T", "Type": "CR" }, "BCH": { "Record Type": "BAT", "Company Name": "ACME RESEARCH", "Sequence Number": 1, "Unique Batch Identifier": "A000000001", "Batch Function": "H" } }, { "TDR": [ { "Record Type": "BAT", "Sequence Number": 6, "Amount": 3582, "Account Number": "1234567890", "Batch Function": "D", "Type": "DB" }, { "Record Type": "BAT", "Sequence Number": 7, "Amount": 256, "Account Number": "1234567891", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 8, "Batch Transaction Count": 2, "Batch Transaction Amount": 3326, "Unique Batch Identifier": "A000000002", "Batch Function": "T", "Type": "DB" }, "BCH": { "Record Type": "BAT", "Company Name": "AJAX EXPLOSIVES", "Sequence Number": 5, "Unique Batch Identifier": "A000000002", "Batch Function": "H" } } ], "RQF": { "Record Type": "RQF", "File Batch Count": 2, "File Transaction Count": 8, "File Transaction Amount": 116876, "Unique File Identifier": "A000000001", "Type": "CR" }, "RQH": { "Record Type": "RQH", "File Creation Time": "10:10:00", "File Creation Date": "2018-09-01", "Currency": "USD", "Unique File Identifier": "A000000001" } } ``` ## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作 3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント 5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作 ![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.7/_images/mruntime-write-flat-file.png) アプリケーション XML ファイル ```xml (1) { BCH: { "Record Type": batch.BCH."Record Type", "Sequence Number": batch.BCH."Sequence Number", "Batch Function": batch.BCH."Batch Function", "Company Name": batch.BCH."Company Name", "Unique Batch Identifier": batch.BCH."Unique Batch Identifier"}, TDR: batch.TDR map (tdr, indexOfTdr) -> { "Record Type": tdr.TDR."Record Type", "Sequence Number": tdr.TDR."Sequence Number", "Batch Function": tdr.TDR."Batch Function", "Account Number": tdr.TDR."Account Number", "Amount": tdr.TDR.Amount, "Type": tdr.TDR.'Type' }, BCF: { "Record Type": batch.BCF."Record Type", "Sequence Number": batch.BCF."Sequence Number", "Batch Function": batch.BCF."Batch Function", "Batch Transaction Amount": batch.BCF."Batch Transaction Amount", "Type": batch.BCF.'Type', "Batch Transaction Count": batch.BCF."Batch Transaction Count", "Unique Batch Identifier": batch.BCF."Unique Batch Identifier"} }, RQF: { "Record Type": payload.RQF."Record Type", "File Batch Count": payload.RQF."File Batch Count", "File Transaction Count": payload.RQF."File Transaction Count", "File Transaction Amount": payload.RQF."File Transaction Amount", Type: payload.RQF.Type, "Unique File Identifier": payload.RQF."Unique File Identifier" } } ]]> (2) ```
1 Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
  • output​: 変換の出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するライタープロパティ

2 File Write 操作では ​path​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。
このアプリケーション例の実行後に、次の出力が生成されます。 RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ## [](#例をローカルでテストする)例をローカルでテストする 例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。 1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。 2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。 3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。 4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。 fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\] 5. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfile`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの[フラットファイルサンプルデータ](https://docs.mulesoft.com/jp/dataweave/2.7/%3Cdataweave-flat-file-schemas#flat-file-sample-data >)を使用してその内容を設定します。 6. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileschema.ffd`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの​[完全なスキーマ例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas#full_schema_ex)​を使用してその内容を設定します。 7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。 ## [](#関連情報)関連情報 - [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-flatfile) - [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas) - [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-set-reader-writer-props) - [プロパティの設定](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) # フラットファイルの読み取りと書き込み 次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。 フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。 これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。 ## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 指定されたパスからフラットファイルを読み取る File Read 操作 3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント ![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.8/_images/mruntime-read-flat-file.png) アプリケーション XML ファイル ```xml (1) ```
1 File Read 操作では次の属性が設定されます。
  • path​: 読み取るフラットファイルのパス

  • outputMimeType​: コンテンツの出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するリーダープロパティ

このアプリケーション例の実行後に、次の出力が生成されます。 ```json { "Batch": [ { "TDR": [ { "Record Type": "BAT", "Sequence Number": 2, "Amount": 32876, "Account Number": "0123456789", "Batch Function": "D", "Type": "CR" }, { "Record Type": "BAT", "Sequence Number": 3, "Amount": 87326, "Account Number": "0123456788", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 4, "Batch Transaction Count": 2, "Batch Transaction Amount": 120202, "Unique Batch Identifier": "A000000001", "Batch Function": "T", "Type": "CR" }, "BCH": { "Record Type": "BAT", "Company Name": "ACME RESEARCH", "Sequence Number": 1, "Unique Batch Identifier": "A000000001", "Batch Function": "H" } }, { "TDR": [ { "Record Type": "BAT", "Sequence Number": 6, "Amount": 3582, "Account Number": "1234567890", "Batch Function": "D", "Type": "DB" }, { "Record Type": "BAT", "Sequence Number": 7, "Amount": 256, "Account Number": "1234567891", "Batch Function": "D", "Type": "CR" } ], "BCF": { "Record Type": "BAT", "Sequence Number": 8, "Batch Transaction Count": 2, "Batch Transaction Amount": 3326, "Unique Batch Identifier": "A000000002", "Batch Function": "T", "Type": "DB" }, "BCH": { "Record Type": "BAT", "Company Name": "AJAX EXPLOSIVES", "Sequence Number": 5, "Unique Batch Identifier": "A000000002", "Batch Function": "H" } } ], "RQF": { "Record Type": "RQF", "File Batch Count": 2, "File Transaction Count": 8, "File Transaction Amount": 116876, "Unique File Identifier": "A000000001", "Type": "CR" }, "RQH": { "Record Type": "RQH", "File Creation Time": "10:10:00", "File Creation Date": "2018-09-01", "Currency": "USD", "Unique File Identifier": "A000000001" } } ``` ## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例 次の例のアプリケーションは、以下で構成されています。 1. フローをトリガーする Scheduler コンポーネント 2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作 3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント 4. 現在のペイロードを出力する Logger コンポーネント 5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作 ![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.8/_images/mruntime-write-flat-file.png) アプリケーション XML ファイル ```xml (1) { BCH: { "Record Type": batch.BCH."Record Type", "Sequence Number": batch.BCH."Sequence Number", "Batch Function": batch.BCH."Batch Function", "Company Name": batch.BCH."Company Name", "Unique Batch Identifier": batch.BCH."Unique Batch Identifier"}, TDR: batch.TDR map (tdr, indexOfTdr) -> { "Record Type": tdr.TDR."Record Type", "Sequence Number": tdr.TDR."Sequence Number", "Batch Function": tdr.TDR."Batch Function", "Account Number": tdr.TDR."Account Number", "Amount": tdr.TDR.Amount, "Type": tdr.TDR.'Type' }, BCF: { "Record Type": batch.BCF."Record Type", "Sequence Number": batch.BCF."Sequence Number", "Batch Function": batch.BCF."Batch Function", "Batch Transaction Amount": batch.BCF."Batch Transaction Amount", "Type": batch.BCF.'Type', "Batch Transaction Count": batch.BCF."Batch Transaction Count", "Unique Batch Identifier": batch.BCF."Unique Batch Identifier"} }, RQF: { "Record Type": payload.RQF."Record Type", "File Batch Count": payload.RQF."File Batch Count", "File Transaction Count": payload.RQF."File Transaction Count", "File Transaction Amount": payload.RQF."File Transaction Amount", Type: payload.RQF.Type, "Unique File Identifier": payload.RQF."Unique File Identifier" } } ]]> (2) ```
1 Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
  • output​: 変換の出力 MIME タイプで、この場合は ​application/flatfile

  • schemapath​: フラットファイルスキーマ (​.ffd​ ファイル) へのパスを指定するライタープロパティ

2 File Write 操作では ​path​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。
このアプリケーション例の実行後に、次の出力が生成されます。 RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001 ## [](#例をローカルでテストする)例をローカルでテストする 例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。 1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。 2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。 3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。 4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。 fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\] 5. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfile`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの[フラットファイルサンプルデータ](https://docs.mulesoft.com/jp/dataweave/2.8/%3Cdataweave-flat-file-schemas#flat-file-sample-data >)を使用してその内容を設定します。 6. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileschema.ffd`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの​[完全なスキーマ例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flat-file-schemas#full_schema_ex)​を使用してその内容を設定します。 7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。 ## [](#関連情報)関連情報 - [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-flatfile) - [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-flat-file-schemas) - [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-set-reader-writer-props) - [プロパティの設定](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) # フラットファイル形式 MIME タイプ: `application/flatfile`​ ID: `flatfile`​ フラットファイル形式では、1 つのメッセージ内で複数のタイプの固定幅レコードを使用できます。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#examples)例: フラットファイルスキーマを指定する 次の例は、フラットファイル形式でデータを出力する DataWeave スクリプトを示しています。 `schemaPath`​ および ​`structureIndent`​ ライタープロパティが使用されています。 ```dataweave %dw 2.0 output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse" --- payload ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ DataWeave は、この形式で入力データを読み取る指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​nulls​、それ以外の場合は ​spaces

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​: すべてのデータを実際の値として処理する

  • spaces​: スペースのみで構成される項目を欠落値として解釈する

  • zeroes​: 「0」文字のみで構成される数値項目とスペースのみで構成される文字項目を欠落値として解釈する

  • nulls​: 0 バイトのみで構成される項目を欠落値として解釈する

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。

recordParsing

String

strict

予想される、行/レコード間の分離:

  • strict​: 各レコードの末尾で改行が予想される。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

schemaPath​ (必須)

String

null

スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

​useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、リーダーは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。​有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。 有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ DataWeave は、この形式で出力データを書き込む指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

encoding

String

null

このライターで使用されるエンコード (​UTF-8​ など)。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​NULLS​、それ以外の場合は ​SPACES

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ を使用し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • SPACES​: 項目をスペースで埋める。

  • ZEROES​: 数値項目を ​0​ 文字で、文字項目をスペース文字で埋める。

  • NULLS​: 項目を 0 バイトで埋める。

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。

recordTerminator

String

システムプロパティ ​line.separator

レコード区切り文字 (改行)。有効値:

  • lf​

  • cr​

  • crlf​

  • none​

Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

retainEmptyStringFieldsOnParsing

false

true​ に設定すると、このプロパティによりリーダーは値がない項目を保持し、その値を空の文字列に設定します。 2023 年 1 月バージョンの Mule バージョン 4.3.0-20221212 の DataWeave 2.3 で導入されました。

schemaPath​ (必須)

String

null

スキーマ定義。使用するスキーマファイルが配置されているパス。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

trimValues

Boolean

false

末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効な値は、​true​ または ​false​ です。

trimValues

Boolean

false

切り捨て値が項目幅より長いかどうかを示します。有効なオプションは、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

​useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、ライターは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

zonedDecimalStrict

## [](#mime_type)サポートされる MIME タイプ フラットファイル形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile​

# フラットファイル形式 MIME タイプ: `application/flatfile`​ ID: `flatfile`​ フラットファイル形式では、1 つのメッセージ内で複数のタイプの固定幅レコードを使用できます。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#examples)例: フラットファイルスキーマを指定する 次の例は、フラットファイル形式でデータを出力する DataWeave スクリプトを示しています。 `schemaPath`​ および ​`structureIndent`​ ライタープロパティが使用されています。 ```dataweave %dw 2.0 output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse" --- payload ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ DataWeave は、この形式で入力データを読み取る指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​nulls​、それ以外の場合は ​spaces

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​: すべてのデータを実際の値として処理する

  • spaces​: スペースのみで構成される項目を欠落値として解釈する

  • zeroes​: 「0」文字のみで構成される数値項目とスペースのみで構成される文字項目を欠落値として解釈する

  • nulls​: 0 バイトのみで構成される項目を欠落値として解釈する

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。​

recordParsing

String

strict

予想される、行/レコード間の分離:

  • strict​: 各レコードの末尾で改行が予想される。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

schemaPath​ (必須)

String

null

スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、リーダーは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。​有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。 有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ DataWeave は、この形式で出力データを書き込む指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

encoding

String

null

このライターで使用されるエンコード (​UTF-8​ など)。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​NULLS​、それ以外の場合は ​SPACES

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ を使用し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • SPACES​: 項目をスペースで埋める。

  • ZEROES​: 数値項目を ​0​ 文字で、文字項目をスペース文字で埋める。

  • NULLS​: 項目を 0 バイトで埋める。

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。​

recordTerminator

String

システムプロパティ ​line.separator

レコード区切り文字 (改行)。有効値:

  • lf​

  • cr​

  • crlf​

  • none​

Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

retainEmptyStringFieldsOnParsing

Boolean

false

true​ に設定すると、このプロパティによりリーダーは値がない項目を保持し、その値を空の文字列に設定します。リーダーのデフォルトの動作では、これらの項目を削除します。 2023 年 1 月バージョンの Mule バージョン 4.4.0-20230102 の DataWeave 2.4 で導入されました。

schemaPath​ (必須)

String

null

スキーマ定義。使用するスキーマファイルが配置されているパス。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

trimValues

Boolean

false

末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効な値は、​true​ または ​false​ です。

trimValues

Boolean

false

切り捨て値が項目幅より長いかどうかを示します。有効なオプションは、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、ライターは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/flatfile​

# フラットファイル形式 MIME タイプ: `application/flatfile` ID: `flatfile` フラットファイル形式では、1 つのメッセージ内で複数のタイプの固定幅レコードを使用できます。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#examples)例: フラットファイルスキーマを指定する 次の例は、フラットファイル形式でデータを出力する DataWeave スクリプトを示しています。 `schemaPath`​ および ​`structureIndent`​ ライタープロパティが使用されています。 ```dataweave %dw 2.0 output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse" --- payload ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。

  • noTerminator​: レコードが分離されずに互いに続く。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

有効な値は ​strict​、​lenient​、​noTerminator​、​singleRecord​ です。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。DataWeave では、複数のレコードがある場合にのみ区切り文字としてこのプロパティを使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/flatfile

# フラットファイル形式 MIME タイプ: `application/flatfile` ID: `flatfile` フラットファイル形式では、1 つのメッセージ内で複数のタイプの固定幅レコードを使用できます。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#examples)例: フラットファイルスキーマを指定する 次の例は、フラットファイル形式でデータを出力する DataWeave スクリプトを示しています。 `schemaPath`​ および ​`structureIndent`​ ライタープロパティが使用されています。 ```dataweave %dw 2.0 output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse" --- payload ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。

  • noTerminator​: レコードが分離されずに互いに続く。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

有効な値は ​strict​、​lenient​、​noTerminator​、​singleRecord​ です。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。DataWeave では、複数のレコードがある場合にのみ区切り文字としてこのプロパティを使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/flatfile

# フラットファイル形式 MIME タイプ: `application/flatfile` ID: `flatfile` フラットファイル形式では、1 つのメッセージ内で複数のタイプの固定幅レコードを使用できます。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#examples)例: フラットファイルスキーマを指定する 次の例は、フラットファイル形式でデータを出力する DataWeave スクリプトを示しています。 `schemaPath`​ および ​`structureIndent`​ ライタープロパティが使用されています。 ```dataweave %dw 2.0 output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse" --- payload ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。

  • noTerminator​: レコードが分離されずに互いに続く。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

有効な値は ​strict​、​lenient​、​noTerminator​、​singleRecord​ です。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。DataWeave では、複数のレコードがある場合にのみ区切り文字としてこのプロパティを使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/flatfile

# フラットファイル形式 MIME タイプ: `application/flatfile` ID: `flatfile` フラットファイル形式では、1 つのメッセージ内で複数のタイプの固定幅レコードを使用できます。スキーマ構造を使用すると、異なるレコードタイプを区別する方法と、レコードを論理的にグループ化する方法を定義できます。
DataWeave のフラットファイルは最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きいフラットファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#examples)例: フラットファイルスキーマを指定する 次の例は、フラットファイル形式でデータを出力する DataWeave スクリプトを示しています。 `schemaPath`​ および ​`structureIndent`​ ライタープロパティが使用されています。 ```dataweave %dw 2.0 output application/flatfile schemaPath="src/main/resources/test-data/QBReqRsp.esl", structureIdent="QBResponse" --- payload ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定をアクティブ化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

有効な値は ​strict​、​lenient​、​noTerminator​、​singleRecord​ です。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

substituteCharacterAsMissingValue

Boolean (ブール)

false

これを ​true​、​missingValues​ プロパティを ​none​、​useMissCharAsDefaultForFill​ を ​true​ に設定した場合、フラットファイルパーサーでは ​0x1A​ (SUB) 文字は欠落値として処理されます。
それ以外の場合、フラットファイルパーサーでは ​0x1A​ 文字は欠落値として処理されません。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

fillRedefinesByMaxLength

Boolean (ブール)

false

true​ に設定した場合、フラットファイルモジュールは、値が欠落しているとみなされる ​Redefines​ コンポーネントに、​maxLength​ パラメーターに設定された最大文字数まで入力します。
false​ に設定した場合、モジュールはすべての定義済みの表示オプションを使用して、​Redefines​ コンポーネントへの入力方法を決定します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定をアクティブ化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

有効な値は ​none​、​spaces​、​zeroes​、​nulls​ です。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。DataWeave では、複数のレコードがある場合にのみ区切り文字としてこのプロパティを使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

有効な値は ​lf​、​cr​、​crlf​、​none​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

*/flatfile

# フラット化された配列要素 DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 ## [](#キー値ペアを持つサブ配列のオブジェクト配列へのフラット化)キー/値ペアを持つサブ配列のオブジェクト配列へのフラット化 次の例では、​`flatten`​ を使用して、変数 ​`arrayOne`​ で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var arrayOne = [ [ "keyOne" : 1, "keyTwo" : 2 ], [ "keyThree" : 3, "keyFour" : 4, "keyFive" : 5 ], "keySix" : 6 ] output application/json --- flatten(arrayOne) ``` 出力 JSON: ```json [ { "keyOne": 1 }, { "keyTwo": 2 }, { "keyThree": 3 }, { "keyFour": 4 }, { "keyFive": 5 }, { "keySix": 6 } ] ``` ## [](#組み合わせた配列のフラット化)組み合わせた配列のフラット化 上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター ​`fruit`​ を使用してキー ​`fruit`​ の値のみを選択し、配列内の他の値は除外します。 この例では、以下を使用します。 - `++`​ は、2 つの配列 (​`arrayOne`​ と ​`arrayTwo`​) のオブジェクトを 1 つの配列に組み合わせます。 - `flatten`​ は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ { "fruit": "orange" }, { "fruit": "apple" }, { "fruit": "grape" }, { "notfruit": "something else" }, { "fruit": "kiwi" }, { "fruit": "strawberry" }, { "fruit": "plum" }, { "fruit": "banana" }, { "notfruit": "something else" } ] ``` [上の例](#ex02)​と次の例の唯一の違いは、​`.fruit`​ セレクターを本文の式に追加して、​`fruit`​ 値をすべて選択し、​`notfruit`​ キーの値を出力配列から除外しているという点です。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana" ] ``` 次の例では、本文の式で ​`.fruit`​ ではなく ​`..*fruit`​ をセレクターとして使用し、ネストされているすべての ​`fruit`​ 値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana", "watermelon", "cantaloupe", "honeydew", "cherry" ] ``` ## [](#親配列へのサブ配列のフラット化)親配列へのサブ配列のフラット化 次の例では、​`flatten`​ 関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、​`null`​ 値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列をフラット化して親配列に含めます。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ 1, 2, 3, { "a": "b" }, "my string", [ 4, 5 ], { "c": "d" }, 6, null, { "e": "f" } ] ``` ## [](#関連情報)関連情報 - [flatten](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-flatten) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-define-function-to-flatten-list) - [セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) # フラット化された配列要素 DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キー値ペアを持つサブ配列のオブジェクト配列へのフラット化)キー/値ペアを持つサブ配列のオブジェクト配列へのフラット化 次の例では、​`flatten`​ を使用して、変数 ​`arrayOne`​ で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var arrayOne = [ [ "keyOne" : 1, "keyTwo" : 2 ], [ "keyThree" : 3, "keyFour" : 4, "keyFive" : 5 ], "keySix" : 6 ] output application/json --- flatten(arrayOne) ``` 出力 JSON: ```json [ { "keyOne": 1 }, { "keyTwo": 2 }, { "keyThree": 3 }, { "keyFour": 4 }, { "keyFive": 5 }, { "keySix": 6 } ] ``` ## [](#組み合わせた配列のフラット化)組み合わせた配列のフラット化 上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター ​`fruit`​ を使用してキー ​`fruit`​ の値のみを選択し、配列内の他の値は除外します。 この例では、以下を使用します。 - `++`​ は、2 つの配列 (​`arrayOne`​ と ​`arrayTwo`​) のオブジェクトを 1 つの配列に組み合わせます。 - `flatten`​ は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ { "fruit": "orange" }, { "fruit": "apple" }, { "fruit": "grape" }, { "notfruit": "something else" }, { "fruit": "kiwi" }, { "fruit": "strawberry" }, { "fruit": "plum" }, { "fruit": "banana" }, { "notfruit": "something else" } ] ``` [上の例](#ex02)​と次の例の唯一の違いは、​`.fruit`​ セレクターを本文の式に追加して、​`fruit`​ 値をすべて選択し、​`notfruit`​ キーの値を出力配列から除外しているという点です。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana" ] ``` 次の例では、本文の式で ​`.fruit`​ ではなく ​`..*fruit`​ をセレクターとして使用し、ネストされているすべての ​`fruit`​ 値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana", "watermelon", "cantaloupe", "honeydew", "cherry" ] ``` ## [](#親配列へのサブ配列のフラット化)親配列へのサブ配列のフラット化 次の例では、​`flatten`​ 関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、​`null`​ 値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列をフラット化して親配列に含めます。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ 1, 2, 3, { "a": "b" }, "my string", [ 4, 5 ], { "c": "d" }, 6, null, { "e": "f" } ] ``` ## [](#関連情報)関連情報 - [flatten](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-flatten) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-define-function-to-flatten-list) - [セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) # フラット化された配列要素 DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キー値ペアを持つサブ配列のオブジェクト配列へのフラット化)キー/値ペアを持つサブ配列のオブジェクト配列へのフラット化 次の例では、​`flatten`​ を使用して、変数 ​`arrayOne`​ で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var arrayOne = [ [ "keyOne" : 1, "keyTwo" : 2 ], [ "keyThree" : 3, "keyFour" : 4, "keyFive" : 5 ], "keySix" : 6 ] output application/json --- flatten(arrayOne) ``` 出力 JSON: ```json [ { "keyOne": 1 }, { "keyTwo": 2 }, { "keyThree": 3 }, { "keyFour": 4 }, { "keyFive": 5 }, { "keySix": 6 } ] ``` ## [](#組み合わせた配列のフラット化)組み合わせた配列のフラット化 上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター ​`fruit`​ を使用してキー ​`fruit`​ の値のみを選択し、配列内の他の値は除外します。 この例では、以下を使用します。 - `++`​ は、2 つの配列 (​`arrayOne`​ と ​`arrayTwo`​) のオブジェクトを 1 つの配列に組み合わせます。 - `flatten`​ は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ { "fruit": "orange" }, { "fruit": "apple" }, { "fruit": "grape" }, { "notfruit": "something else" }, { "fruit": "kiwi" }, { "fruit": "strawberry" }, { "fruit": "plum" }, { "fruit": "banana" }, { "notfruit": "something else" } ] ``` [上の例](#ex02)​と次の例の唯一の違いは、​`.fruit`​ セレクターを本文の式に追加して、​`fruit`​ 値をすべて選択し、​`notfruit`​ キーの値を出力配列から除外しているという点です。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana" ] ``` 次の例では、本文の式で ​`.fruit`​ ではなく ​`..*fruit`​ をセレクターとして使用し、ネストされているすべての ​`fruit`​ 値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana", "watermelon", "cantaloupe", "honeydew", "cherry" ] ``` ## [](#親配列へのサブ配列のフラット化)親配列へのサブ配列のフラット化 次の例では、​`flatten`​ 関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、​`null`​ 値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列をフラット化して親配列に含めます。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ 1, 2, 3, { "a": "b" }, "my string", [ 4, 5 ], { "c": "d" }, 6, null, { "e": "f" } ] ``` ## [](#関連情報)関連情報 - [flatten](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-flatten) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-define-function-to-flatten-list) - [セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) # フラット化された配列要素 DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キー値ペアを持つサブ配列のオブジェクト配列へのフラット化)キー/値ペアを持つサブ配列のオブジェクト配列へのフラット化 次の例では、​`flatten`​ を使用して、変数 ​`arrayOne`​ で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var arrayOne = [ [ "keyOne" : 1, "keyTwo" : 2 ], [ "keyThree" : 3, "keyFour" : 4, "keyFive" : 5 ], "keySix" : 6 ] output application/json --- flatten(arrayOne) ``` 出力 JSON: ```json [ { "keyOne": 1 }, { "keyTwo": 2 }, { "keyThree": 3 }, { "keyFour": 4 }, { "keyFive": 5 }, { "keySix": 6 } ] ``` ## [](#組み合わせた配列のフラット化)組み合わせた配列のフラット化 上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター ​`fruit`​ を使用してキー ​`fruit`​ の値のみを選択し、配列内の他の値は除外します。 この例では、以下を使用します。 - `++`​ は、2 つの配列 (​`arrayOne`​ と ​`arrayTwo`​) のオブジェクトを 1 つの配列に組み合わせます。 - `flatten`​ は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ { "fruit": "orange" }, { "fruit": "apple" }, { "fruit": "grape" }, { "notfruit": "something else" }, { "fruit": "kiwi" }, { "fruit": "strawberry" }, { "fruit": "plum" }, { "fruit": "banana" }, { "notfruit": "something else" } ] ``` [上の例](#ex02)​と次の例の唯一の違いは、​`.fruit`​ セレクターを本文の式に追加して、​`fruit`​ 値をすべて選択し、​`notfruit`​ キーの値を出力配列から除外しているという点です。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana" ] ``` 次の例では、本文の式で ​`.fruit`​ ではなく ​`..*fruit`​ をセレクターとして使用し、ネストされているすべての ​`fruit`​ 値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana", "watermelon", "cantaloupe", "honeydew", "cherry" ] ``` ## [](#親配列へのサブ配列のフラット化)親配列へのサブ配列のフラット化 次の例では、​`flatten`​ 関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、​`null`​ 値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列をフラット化して親配列に含めます。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ 1, 2, 3, { "a": "b" }, "my string", [ 4, 5 ], { "c": "d" }, 6, null, { "e": "f" } ] ``` ## [](#関連情報)関連情報 - [flatten](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-flatten) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-define-function-to-flatten-list) - [セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) # フラット化された配列要素 DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キー値ペアを持つサブ配列のオブジェクト配列へのフラット化)キー/値ペアを持つサブ配列のオブジェクト配列へのフラット化 次の例では、​`flatten`​ を使用して、変数 ​`arrayOne`​ で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var arrayOne = [ [ "keyOne" : 1, "keyTwo" : 2 ], [ "keyThree" : 3, "keyFour" : 4, "keyFive" : 5 ], "keySix" : 6 ] output application/json --- flatten(arrayOne) ``` 出力 JSON: ```json [ { "keyOne": 1 }, { "keyTwo": 2 }, { "keyThree": 3 }, { "keyFour": 4 }, { "keyFive": 5 }, { "keySix": 6 } ] ``` ## [](#組み合わせた配列のフラット化)組み合わせた配列のフラット化 上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター ​`fruit`​ を使用してキー ​`fruit`​ の値のみを選択し、配列内の他の値は除外します。 この例では、以下を使用します。 - `++`​ は、2 つの配列 (​`arrayOne`​ と ​`arrayTwo`​) のオブジェクトを 1 つの配列に組み合わせます。 - `flatten`​ は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ { "fruit": "orange" }, { "fruit": "apple" }, { "fruit": "grape" }, { "notfruit": "something else" }, { "fruit": "kiwi" }, { "fruit": "strawberry" }, { "fruit": "plum" }, { "fruit": "banana" }, { "notfruit": "something else" } ] ``` [上の例](#ex02)​と次の例の唯一の違いは、​`.fruit`​ セレクターを本文の式に追加して、​`fruit`​ 値をすべて選択し、​`notfruit`​ キーの値を出力配列から除外しているという点です。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana" ] ``` 次の例では、本文の式で ​`.fruit`​ ではなく ​`..*fruit`​ をセレクターとして使用し、ネストされているすべての ​`fruit`​ 値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana", "watermelon", "cantaloupe", "honeydew", "cherry" ] ``` ## [](#親配列へのサブ配列のフラット化)親配列へのサブ配列のフラット化 次の例では、​`flatten`​ 関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、​`null`​ 値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列をフラット化して親配列に含めます。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ 1, 2, 3, { "a": "b" }, "my string", [ 4, 5 ], { "c": "d" }, 6, null, { "e": "f" } ] ``` ## [](#関連情報)関連情報 - [flatten](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-flatten) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-define-function-to-flatten-list) - [セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) # フラット化された配列要素 DataWeave では、DataWeave オブジェクト、配列、またはサブ配列において、配列のサブ配列やキー/値ペアのコレクションをフラット化できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#キー値ペアを持つサブ配列のオブジェクト配列へのフラット化)キー/値ペアを持つサブ配列のオブジェクト配列へのフラット化 次の例では、​`flatten`​ を使用して、変数 ​`arrayOne`​ で定義される入力配列のキー-値ペアをフラット化しています。配列内のすべてのキー/値ペアは個別の DataWeave オブジェクトになります。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列の要素を親配列に移動して、サブ配列を除去し、すべてのキー/値ペアを親配列内のオブジェクトのリストに変換します。 DataWeave スクリプト: ```dataweave %dw 2.0 var arrayOne = [ [ "keyOne" : 1, "keyTwo" : 2 ], [ "keyThree" : 3, "keyFour" : 4, "keyFive" : 5 ], "keySix" : 6 ] output application/json --- flatten(arrayOne) ``` 出力 JSON: ```json [ { "keyOne": 1 }, { "keyTwo": 2 }, { "keyThree": 3 }, { "keyFour": 4 }, { "keyFive": 5 }, { "keySix": 6 } ] ``` ## [](#組み合わせた配列のフラット化)組み合わせた配列のフラット化 上の DataWeave の例と同じように、次の例は、2 つの配列の要素を組み合わせてフラット化します。この 2 番目の例では、セレクター ​`fruit`​ を使用してキー ​`fruit`​ の値のみを選択し、配列内の他の値は除外します。 この例では、以下を使用します。 - `++`​ は、2 つの配列 (​`arrayOne`​ と ​`arrayTwo`​) のオブジェクトを 1 つの配列に組み合わせます。 - `flatten`​ は、組み合わせた配列を、キー/値ペアのリストとしてフラット化します。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ { "fruit": "orange" }, { "fruit": "apple" }, { "fruit": "grape" }, { "notfruit": "something else" }, { "fruit": "kiwi" }, { "fruit": "strawberry" }, { "fruit": "plum" }, { "fruit": "banana" }, { "notfruit": "something else" } ] ``` [上の例](#ex02)​と次の例の唯一の違いは、​`.fruit`​ セレクターを本文の式に追加して、​`fruit`​ 値をすべて選択し、​`notfruit`​ キーの値を出力配列から除外しているという点です。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana" ] ``` 次の例では、本文の式で ​`.fruit`​ ではなく ​`..*fruit`​ をセレクターとして使用し、ネストされているすべての ​`fruit`​ 値を、フラット化した配列に返しています。また、2 つではなく 3 つの配列を組み合わせてフラット化しています。 DataWeave スクリプト: ```dataweave %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 ``` 出力 JSON: ```json [ "orange", "apple", "grape", "kiwi", "strawberry", "plum", "banana", "watermelon", "cantaloupe", "honeydew", "cherry" ] ``` ## [](#親配列へのサブ配列のフラット化)親配列へのサブ配列のフラット化 次の例では、​`flatten`​ 関数をさまざまなデータ型 (数値、DataWeave オブジェクト、サブ配列、文字列、​`null`​ 値、キー/値ペア) に対して使用しています。サブ配列の要素は親配列の要素になり、サブ配列は除去されます。 この例では、次の関数を使用します。 - `flatten`​ は、サブ配列をフラット化して親配列に含めます。 DataWeave スクリプト: ```dataweave %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) ``` 出力 JSON: ```json [ 1, 2, 3, { "a": "b" }, "my string", [ 4, 5 ], { "c": "d" }, 6, null, { "e": "f" } ] ``` ## [](#関連情報)関連情報 - [flatten](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-flatten) - [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-define-function-to-flatten-list) - [セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) # マルチパート (フォームデータ) 形式 MIME タイプ: `multipart/form-data` ID: `multipart` DataWeave ではマルチパートサブタイプ (特に ​`form-data`​) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。 DataWeave では、特定の ​`Object`​ 構造を使用して、マルチパートドキュメントを表します。 ```weave type Multipart = { preamble?: String, parts: { _?: MultipartPart } } type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any } ``` ## [](#examples)例 次の例は、マルチパート形式の使用方法を示しています。 - [例: マルチパート](#example1) - [例: パートのデータにアクセスして変換する](#example2) - [例: マルチパートコンテンツを生成する](#example3) - [例: マルチパートペイロードを反復処理する](#example4) - [例: ^mediaType および ^mimeType メタデータセレクターの使用](#example5) ### [](#example1)例: マルチパート 次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。 #### [](#入力)入力 マルチパート入力は、DataWeave ソースへのペイロードとして機能します。 ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース)ソース この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。 ```weave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。​`raw`​ および ​`content`​ 値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。 ```weave { parts: { text: { headers: { "Content-Disposition": { name: "text", subtype: "form-data" }, "Content-Type": "text/plain" }, content: "Book" as String { raw: "Qm9vaw==" as Binary { base: "64" }, encoding: null, mediaType: "text/plain", mimeType: "text/plain" } }, file1: { headers: { "Content-Disposition": { name: "file1", filename: "a.json", subtype: "form-data" }, "Content-Type": "application/json" }, content: { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } as Object { raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary { base: "64" }, encoding: null, mediaType: "application/json", mimeType: "application/json" } }, file2: { headers: { "Content-Disposition": { name: "file2", filename: "a.html", subtype: "form-data" }, "Content-Type": "text/html" }, content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary { base: "64" } } } } ``` ### [](#example2)例: パートのデータにアクセスして変換する DataWeave スクリプト内で、​`parts`​ 要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには ​`content`​ キーワードを介してアクセスでき、ヘッダーには ​`headers`​ キーワードを介してアクセスできます。 #### [](#入力-2)入力 次の例は、個別の DataWeave スクリプトへの入力として機能します。 3 つのパートで構成される ​`34b21`​ 境界を含む未加工の ​`multipart/form-data`​ ペイロードを以下に示します。 - `text`​ という名前の ​`text/plain` - `file1`​ という名前の ​`application/json`​ ファイル (​`a.json`​) - `file2`​ という名前の ​`text/html`​ ファイル (​`a.html`​) 未加工のマルチパートデータ: ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、入力として未加工の ​`multipart/form-data`​ ペイロードを使用し、​`Book:a.json`​ を生成します。 マルチパートコンテンツの読み取り: ```dataweave %dw 2.0 output text/plain --- payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename ``` ### [](#example3)例: マルチパートコンテンツを生成する DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。 マルチパートコンテンツの書き込み: ```dataweave %dw 2.0 output multipart/form-data boundary='34b21' --- { parts : { text : { headers : { "Content-Type": "text/plain" }, content : "Book" }, file1 : { headers : { "Content-Disposition" : { "name": "file1", "filename": "a.json" }, "Content-Type" : "application/json" }, content : { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } }, file2 : { headers : { "Content-Disposition" : { "filename": "a.html" }, "Content-Type" : payload.^mimeType }, content : payload } } } ``` パートの名前が ​`Content-Disposition`​ ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。 次の例は、現在のペイロードをマルチパートフォームデータのファイルパートとして送信する方法を示しています。次のような DataWeave スクリプトを使用する必要があります。 ```dataweave %dw 2.0 input payload application/xml output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "", "filename": "." }, "Content-Type": "" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` - `boundary`​ は境界値を設定します (例: `"----myboundary----"`​)。 - ``​ はファイルのタグ名です (例: `"sampleFile"`​)。 - `.`​ はペイロードのコンテンツを入力するためのファイル名です (例: `"sampleFile.xml"`​)。 - ``​ は送信するファイルのコンテンツと一致させます (例: `"application/xml"`​)。 - ファイルのコンテンツは現在のペイロードです。 この例には、マルチパートに 2 つのパート (ファイルと ​`otherJsonPart`​) が含まれています。さらにパートを追加する場合は、​`parts:{}`​ セクションの下に次の形式で追加します。 ```dataweave : { content: } ``` - ``​ は引用符なしのパート名です (例: `json`​)。 - ``​ はそのパートのコンテンツです (例: `'{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }'`​)。 次の XML 入力を前提とします。 ```xml 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
``` DataWeave スクリプトは次のようになります。 ```dataweave %dw 2.0 output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "test", "filename": "sampleFile.xml" }, "Content-Type": "application/xml" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` 出力マルチパートは次のようになります。 ```multipart ------myboundary---- Content-Type: application/xml Content-Disposition: form-data; name="test"; filename="sampleFile.xml" 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
------myboundary---- Content-Disposition: form-data; name="otherJsonPart" {"name": "sampleFile.xml", "sampleFile": {"type": "sample"} } ------myboundary------ ``` ### [](#example4)例: マルチパートペイロードを反復処理する 次の例は、DataWeave がペイロードのすべてのパートを反復処理して各パートを個別に処理する方法を示しています。 ### [](#ソース-3)ソース ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title":"Java 8 in Action", "author":"Mario Fusco", "year":2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` ### [](#出力-2)出力 ```json { "0": "text", "1": "file1", "2": "file2" } ``` ### [](#example5)例: ^mediaType および ^mimeType メタデータセレクターの使用 `^mimeType`​ セレクターは、パラメーターなしの値の MIME タイプ (​`application/json`​ など) を返します。​`^mediaType`​ セレクターは、対照的に MIME タイプとそれに関連する他のパラメーター (​`application/json;charset=UTF-16`​ など) を返します。 次の例では、マルチパート入力を異なる形式のマルチパート出力に変換する方法を示しています。この DataWeave スクリプトでは、​`^mimeType`​ セレクターと ​`^mediaType`​ セレクターの両方を使用して新しいマルチパートコンテンツを生成します。 ### [](#入力-3)入力 マルチパート入力には複数のコンテンツタイプがあります。この場合は、非標準の区切り文字が含まれる ​`application/json`​ と ​`application/csv`​ です。 ```text ----------------------------049709565842371278701691 Content-Type: application/json Content-Disposition: form-data; name="order" { "name": "order1", "id": 123, "content": "orderContent" } ----------------------------049709565842371278701691 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 ----------------------------049709565842371278701691-- ``` ### [](#ソース-4)ソース この DataWeave スクリプトでは、​`output multipart/form-data`​ MIME タイプを定義してマルチパート入力をマルチパート出力に変換します。マルチパート出力データには 2 つのパートが含まれます。 - `orderAck` 注文の受信の肯定応答を伴うテキストが含まれます。コンテンツタイプは ​`text/plain`​ です。 ^mimeType\` セレクターは、メッセージのパートとしてコンテンツタイプを記録する場合に役に立ちます。 - `partner` 元のパートナー自体が含まれます。今回はコンテンツタイプが ​`payload.parts..^mediaType`​ である点に注意してください。^mediaType セレクターには、​`application/csv`​ コンテンツを解析する区切り文字も含まれます。 ```dataweave %dw 2.0 input payload multipart boundary='boundary1' output multipart boundary='test2' --- { parts : { orderAck : { headers : { "Content-Type": "text/plain" }, content : "Order payload of type " ++ payload.parts.order.content.^mimeType ++ " and id " ++ (payload.parts.order.content.id as String) ++ " received. Receipt available." }, partner: { headers : { "Content-Type": payload.parts.partner.content.^mediaType }, content : payload.parts.partner.content } } } ``` ### [](#出力-3)出力 ```text --test2 Content-Type: text/plain Content-Disposition: form-data; name="orderAck" Order payload of type application/json and id 123 received. Receipt available. --test2 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 --test2-- ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列。

defaultContentType

String

このプロパティにデフォルト値はありません。

multipart/*​ 形式のパートで使用するデフォルトのコンテンツタイプを設定します。設定すると、このプロパティは ​com.mulesoft.dw.multipart.defaultContentType​ の システムプロパティ設定​よりも優先されます。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

multipart/*

# マルチパート (フォームデータ) 形式 MIME タイプ: `multipart/form-data` ID: `multipart` DataWeave ではマルチパートサブタイプ (特に ​`form-data`​) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。 DataWeave では、特定の ​`Object`​ 構造を使用して、マルチパートドキュメントを表します。 ```weave type Multipart = { preamble?: String, parts: { _?: MultipartPart } } type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any } ``` ## [](#examples)例 次の例は、マルチパート形式の使用方法を示しています。 - [例: マルチパート](#example1) - [例: パートのデータにアクセスして変換する](#example2) - [例: マルチパートコンテンツを生成する](#example3) - [例: マルチパートペイロードを反復処理する](#example4) - [例: ^mediaType および ^mimeType メタデータセレクターの使用](#example5) ### [](#example1)例: マルチパート 次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。 #### [](#入力)入力 マルチパート入力は、DataWeave ソースへのペイロードとして機能します。 ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース)ソース この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。 ```weave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。​`raw`​ および ​`content`​ 値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。 ```weave { parts: { text: { headers: { "Content-Disposition": { name: "text", subtype: "form-data" }, "Content-Type": "text/plain" }, content: "Book" as String { raw: "Qm9vaw==" as Binary { base: "64" }, encoding: null, mediaType: "text/plain", mimeType: "text/plain" } }, file1: { headers: { "Content-Disposition": { name: "file1", filename: "a.json", subtype: "form-data" }, "Content-Type": "application/json" }, content: { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } as Object { raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary { base: "64" }, encoding: null, mediaType: "application/json", mimeType: "application/json" } }, file2: { headers: { "Content-Disposition": { name: "file2", filename: "a.html", subtype: "form-data" }, "Content-Type": "text/html" }, content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary { base: "64" } } } } ``` ### [](#example2)例: パートのデータにアクセスして変換する DataWeave スクリプト内で、​`parts`​ 要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには ​`content`​ キーワードを介してアクセスでき、ヘッダーには ​`headers`​ キーワードを介してアクセスできます。 #### [](#入力-2)入力 次の例は、個別の DataWeave スクリプトへの入力として機能します。3 つのパートで構成される ​`34b21`​ 境界を含む未加工の ​`multipart/form-data`​ ペイロードを以下に示します。 - `text`​ という名前の ​`text/plain` - `file1`​ という名前の ​`application/json`​ ファイル (​`a.json`​) - `file2`​ という名前の ​`text/html`​ ファイル (​`a.html`​) 未加工のマルチパートデータ: ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、入力として未加工の ​`multipart/form-data`​ ペイロードを使用し、​`Book:a.json`​ を生成します。 マルチパートコンテンツの読み取り: ```dataweave %dw 2.0 output text/plain --- payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename ``` ### [](#example3)例: マルチパートコンテンツを生成する DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。
DataWeave ドキュメントの出力の一貫性を確保するために、この例では ​boundary​ プロパティをハードコード化します。 ただし、多くの場合、DataWeave によってランダムな境界が生成されて出力 MIME タイプに追加されるため、このプロパティをハードコード化する必要はありません。
マルチパートコンテンツの書き込み: ```dataweave %dw 2.0 output multipart/form-data boundary='34b21' --- { parts : { text : { headers : { "Content-Type": "text/plain" }, content : "Book" }, file1 : { headers : { "Content-Disposition" : { "name": "file1", "filename": "a.json" }, "Content-Type" : "application/json" }, content : { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } }, file2 : { headers : { "Content-Disposition" : { "filename": "a.html" }, "Content-Type" : payload.^mimeType }, content : payload } } } ``` パートの名前が ​`Content-Disposition`​ ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。 次の例は、現在のペイロードをマルチパートフォームデータのファイルパートとして送信する方法を示しています。次のような DataWeave スクリプトを使用する必要があります。 ```dataweave %dw 2.0 input payload application/xml output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "", "filename": "." }, "Content-Type": "" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` - `boundary`​ は境界値を設定します (例: `"----myboundary----"`​)。 - ``​ はファイルのタグ名です (例: `"sampleFile"`​)。 - `.`​ はペイロードのコンテンツを入力するためのファイル名です (例: `"sampleFile.xml"`​)。 - ``​ は送信するファイルのコンテンツと一致させます (例: `"application/xml"`​)。 - ファイルのコンテンツは現在のペイロードです。 この例には、マルチパートに 2 つのパート (ファイルと ​`otherJsonPart`​) が含まれています。さらにパートを追加する場合は、​`parts:{}`​ セクションの下に次の形式で追加します。 ```dataweave : { content: } ``` - ``​ は引用符なしのパート名です (例: `json`​)。 - ``​ はそのパートのコンテンツです (例: `'{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }'`​)。 次の XML 入力を前提とします。 ```xml 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
``` DataWeave スクリプトは次のようになります。 ```dataweave %dw 2.0 output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "test", "filename": "sampleFile.xml" }, "Content-Type": "application/xml" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` 出力マルチパートは次のようになります。 ```multipart ------myboundary---- Content-Type: application/xml Content-Disposition: form-data; name="test"; filename="sampleFile.xml" 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
------myboundary---- Content-Disposition: form-data; name="otherJsonPart" {"name": "sampleFile.xml", "sampleFile": {"type": "sample"} } ------myboundary------ ``` ### [](#example4)例: マルチパートペイロードを反復処理する 次の例は、DataWeave がペイロードのすべてのパートを反復処理して各パートを個別に処理する方法を示しています。 ### [](#ソース-3)ソース ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title":"Java 8 in Action", "author":"Mario Fusco", "year":2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` ### [](#出力-2)出力 ```json { "0": "text", "1": "file1", "2": "file2" } ``` ### [](#example5)例: ^mediaType および ^mimeType メタデータセレクターの使用 `^mimeType`​ セレクターは、パラメーターなしの値の MIME タイプ (​`application/json`​ など) を返します。​`^mediaType`​ セレクターは、対照的に MIME タイプとそれに関連する他のパラメーター (​`application/json;charset=UTF-16`​ など) を返します。 次の例では、マルチパート入力を異なる形式のマルチパート出力に変換する方法を示しています。この DataWeave スクリプトでは、​`^mimeType`​ セレクターと ​`^mediaType`​ セレクターの両方を使用して新しいマルチパートコンテンツを生成します。 ### [](#入力-3)入力 マルチパート入力には複数のコンテンツタイプがあります。この場合は、非標準の区切り文字が含まれる ​`application/json`​ と ​`application/csv`​ です。 ```text ----------------------------049709565842371278701691 Content-Type: application/json Content-Disposition: form-data; name="order" { "name": "order1", "id": 123, "content": "orderContent" } ----------------------------049709565842371278701691 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 ----------------------------049709565842371278701691-- ``` ### [](#ソース-4)ソース この DataWeave スクリプトでは、​`output multipart/form-data`​ MIME タイプを定義してマルチパート入力をマルチパート出力に変換します。マルチパート出力データには 2 つのパートが含まれます。 - `orderAck` 注文の受信の肯定応答を伴うテキストが含まれます。コンテンツタイプは ​`text/plain`​ です。 ^mimeType\` セレクターは、メッセージのパートとしてコンテンツタイプを記録する場合に役に立ちます。 - `partner` 元のパートナー自体が含まれます。今回はコンテンツタイプが ​`payload.parts..^mediaType`​ である点に注意してください。^mediaType セレクターには、​`application/csv`​ コンテンツを解析する区切り文字も含まれます。 ```dataweave %dw 2.0 input payload multipart boundary='boundary1' output multipart boundary='test2' --- { parts : { orderAck : { headers : { "Content-Type": "text/plain" }, content : "Order payload of type " ++ payload.parts.order.content.^mimeType ++ " and id " ++ (payload.parts.order.content.id as String) ++ " received. Receipt available." }, partner: { headers : { "Content-Type": payload.parts.partner.content.^mediaType }, content : payload.parts.partner.content } } } ``` ### [](#出力-3)出力 ```text --test2 Content-Type: text/plain Content-Disposition: form-data; name="orderAck" Order payload of type application/json and id 123 received. Receipt available. --test2 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 --test2-- ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

defaultContentType

String

'application/octet-stream'

multipart/*​ 形式のパートで使用するデフォルトのコンテンツタイプを設定します。設定すると、このプロパティは​システムプロパティ​ ​com.mulesoft.dw.multipart.defaultContentType​ の設定よりも優先されます。

2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

multipart/*

# マルチパート (フォームデータ) 形式 MIME タイプ: `multipart/form-data` ID: `multipart` DataWeave ではマルチパートサブタイプ (特に ​`form-data`​) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。 DataWeave では、特定の ​`Object`​ 構造を使用して、マルチパートドキュメントを表します。 ```weave type Multipart = { preamble?: String, parts: { _?: MultipartPart } } type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any } ``` ## [](#examples)例 次の例は、マルチパート形式の使用方法を示しています。 - [例: マルチパート](#example1) - [例: パートのデータにアクセスして変換する](#example2) - [例: マルチパートコンテンツを生成する](#example3) - [例: マルチパートペイロードを反復処理する](#example4) - [例: ^mediaType および ^mimeType メタデータセレクターの使用](#example5) ### [](#example1)例: マルチパート 次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。 #### [](#入力)入力 マルチパート入力は、DataWeave ソースへのペイロードとして機能します。 ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース)ソース この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。 ```weave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。​`raw`​ および ​`content`​ 値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。 ```weave { parts: { text: { headers: { "Content-Disposition": { name: "text", subtype: "form-data" }, "Content-Type": "text/plain" }, content: "Book" as String { raw: "Qm9vaw==" as Binary { base: "64" }, encoding: null, mediaType: "text/plain", mimeType: "text/plain" } }, file1: { headers: { "Content-Disposition": { name: "file1", filename: "a.json", subtype: "form-data" }, "Content-Type": "application/json" }, content: { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } as Object { raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary { base: "64" }, encoding: null, mediaType: "application/json", mimeType: "application/json" } }, file2: { headers: { "Content-Disposition": { name: "file2", filename: "a.html", subtype: "form-data" }, "Content-Type": "text/html" }, content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary { base: "64" } } } } ``` ### [](#example2)例: パートのデータにアクセスして変換する DataWeave スクリプト内で、​`parts`​ 要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには ​`content`​ キーワードを介してアクセスでき、ヘッダーには ​`headers`​ キーワードを介してアクセスできます。 #### [](#入力-2)入力 次の例は、個別の DataWeave スクリプトへの入力として機能します。3 つのパートで構成される ​`34b21`​ 境界を含む未加工の ​`multipart/form-data`​ ペイロードを以下に示します。 - `text`​ という名前の ​`text/plain` - `file1`​ という名前の ​`application/json`​ ファイル (​`a.json`​) - `file2`​ という名前の ​`text/html`​ ファイル (​`a.html`​) 未加工のマルチパートデータ: ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、入力として未加工の ​`multipart/form-data`​ ペイロードを使用し、​`Book:a.json`​ を生成します。 マルチパートコンテンツの読み取り: ```dataweave %dw 2.0 output text/plain --- payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename ``` ### [](#example3)例: マルチパートコンテンツを生成する DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。
DataWeave ドキュメントの出力の一貫性を確保するために、この例では ​boundary​ プロパティをハードコード化します。 ただし、多くの場合、DataWeave によってランダムな境界が生成されて出力 MIME タイプに追加されるため、このプロパティをハードコード化する必要はありません。
マルチパートコンテンツの書き込み: ```dataweave %dw 2.0 output multipart/form-data boundary='34b21' --- { parts : { text : { headers : { "Content-Type": "text/plain" }, content : "Book" }, file1 : { headers : { "Content-Disposition" : { "name": "file1", "filename": "a.json" }, "Content-Type" : "application/json" }, content : { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } }, file2 : { headers : { "Content-Disposition" : { "filename": "a.html" }, "Content-Type" : payload.^mimeType }, content : payload } } } ``` パートの名前が ​`Content-Disposition`​ ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。 次の例は、現在のペイロードをマルチパートフォームデータのファイルパートとして送信する方法を示しています。次のような DataWeave スクリプトを使用する必要があります。 ```dataweave %dw 2.0 input payload application/xml output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "", "filename": "." }, "Content-Type": "" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` - `boundary`​ は境界値を設定します (例: `"----myboundary----"`​)。 - ``​ はファイルのタグ名です (例: `"sampleFile"`​)。 - `.`​ はペイロードのコンテンツを入力するためのファイル名です (例: `"sampleFile.xml"`​)。 - ``​ は送信するファイルのコンテンツと一致させます (例: `"application/xml"`​)。 - ファイルのコンテンツは現在のペイロードです。 この例には、マルチパートに 2 つのパート (ファイルと ​`otherJsonPart`​) が含まれています。さらにパートを追加する場合は、​`parts:{}`​ セクションの下に次の形式で追加します。 ```dataweave : { content: } ``` - ``​ は引用符なしのパート名です (例: `json`​)。 - ``​ はそのパートのコンテンツです (例: `'{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }'`​)。 次の XML 入力を前提とします。 ```xml 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
``` DataWeave スクリプトは次のようになります。 ```dataweave %dw 2.0 output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "test", "filename": "sampleFile.xml" }, "Content-Type": "application/xml" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` 出力マルチパートは次のようになります。 ```multipart ------myboundary---- Content-Type: application/xml Content-Disposition: form-data; name="test"; filename="sampleFile.xml" 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
------myboundary---- Content-Disposition: form-data; name="otherJsonPart" {"name": "sampleFile.xml", "sampleFile": {"type": "sample"} } ------myboundary------ ``` ### [](#example4)例: マルチパートペイロードを反復処理する 次の例は、DataWeave がペイロードのすべてのパートを反復処理して各パートを個別に処理する方法を示しています。 ### [](#ソース-3)ソース ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title":"Java 8 in Action", "author":"Mario Fusco", "year":2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` ### [](#出力-2)出力 ```json { "0": "text", "1": "file1", "2": "file2" } ``` ### [](#example5)例: ^mediaType および ^mimeType メタデータセレクターの使用 `^mimeType`​ セレクターは、パラメーターなしの値の MIME タイプ (​`application/json`​ など) を返します。​`^mediaType`​ セレクターは、対照的に MIME タイプとそれに関連する他のパラメーター (​`application/json;charset=UTF-16`​ など) を返します。 次の例では、マルチパート入力を異なる形式のマルチパート出力に変換する方法を示しています。この DataWeave スクリプトでは、​`^mimeType`​ セレクターと ​`^mediaType`​ セレクターの両方を使用して新しいマルチパートコンテンツを生成します。 ### [](#入力-3)入力 マルチパート入力には複数のコンテンツタイプがあります。この場合は、非標準の区切り文字が含まれる ​`application/json`​ と ​`application/csv`​ です。 ```text ----------------------------049709565842371278701691 Content-Type: application/json Content-Disposition: form-data; name="order" { "name": "order1", "id": 123, "content": "orderContent" } ----------------------------049709565842371278701691 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 ----------------------------049709565842371278701691-- ``` ### [](#ソース-4)ソース この DataWeave スクリプトでは、​`output multipart/form-data`​ MIME タイプを定義してマルチパート入力をマルチパート出力に変換します。マルチパート出力データには 2 つのパートが含まれます。 - `orderAck` 注文の受信の肯定応答を伴うテキストが含まれます。コンテンツタイプは ​`text/plain`​ です。 ^mimeType\` セレクターは、メッセージのパートとしてコンテンツタイプを記録する場合に役に立ちます。 - `partner` 元のパートナー自体が含まれます。今回はコンテンツタイプが ​`payload.parts..^mediaType`​ である点に注意してください。^mediaType セレクターには、​`application/csv`​ コンテンツを解析する区切り文字も含まれます。 ```dataweave %dw 2.0 input payload multipart boundary='boundary1' output multipart boundary='test2' --- { parts : { orderAck : { headers : { "Content-Type": "text/plain" }, content : "Order payload of type " ++ payload.parts.order.content.^mimeType ++ " and id " ++ (payload.parts.order.content.id as String) ++ " received. Receipt available." }, partner: { headers : { "Content-Type": payload.parts.partner.content.^mediaType }, content : payload.parts.partner.content } } } ``` ### [](#出力-3)出力 ```text --test2 Content-Type: text/plain Content-Disposition: form-data; name="orderAck" Order payload of type application/json and id 123 received. Receipt available. --test2 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 --test2-- ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

defaultContentType

String

'application/octet-stream'

multipart/*​ 形式のパートで使用するデフォルトのコンテンツタイプを設定します。設定すると、このプロパティは​システムプロパティ​ ​com.mulesoft.dw.multipart.defaultContentType​ の設定よりも優先されます。

2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

multipart/*

# マルチパート (フォームデータ) 形式 MIME タイプ: `multipart/form-data` ID: `multipart` DataWeave ではマルチパートサブタイプ (特に ​`form-data`​) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。 DataWeave では、特定の ​`Object`​ 構造を使用して、マルチパートドキュメントを表します。 ```weave type Multipart = { preamble?: String, parts: { _?: MultipartPart } } type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any } ``` ## [](#examples)例 次の例は、マルチパート形式の使用方法を示しています。 - [例: マルチパート](#example1) - [例: パートのデータにアクセスして変換する](#example2) - [例: マルチパートコンテンツを生成する](#example3) - [例: マルチパートペイロードを反復処理する](#example4) - [例: ^mediaType および ^mimeType メタデータセレクターの使用](#example5) ### [](#example1)例: マルチパート 次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。 #### [](#入力)入力 マルチパート入力は、DataWeave ソースへのペイロードとして機能します。 ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース)ソース この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。 ```weave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。​`raw`​ および ​`content`​ 値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。 ```weave { parts: { text: { headers: { "Content-Disposition": { name: "text", subtype: "form-data" }, "Content-Type": "text/plain" }, content: "Book" as String { raw: "Qm9vaw==" as Binary { base: "64" }, encoding: null, mediaType: "text/plain", mimeType: "text/plain" } }, file1: { headers: { "Content-Disposition": { name: "file1", filename: "a.json", subtype: "form-data" }, "Content-Type": "application/json" }, content: { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } as Object { raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary { base: "64" }, encoding: null, mediaType: "application/json", mimeType: "application/json" } }, file2: { headers: { "Content-Disposition": { name: "file2", filename: "a.html", subtype: "form-data" }, "Content-Type": "text/html" }, content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary { base: "64" } } } } ``` ### [](#example2)例: パートのデータにアクセスして変換する DataWeave スクリプト内で、​`parts`​ 要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには ​`content`​ キーワードを介してアクセスでき、ヘッダーには ​`headers`​ キーワードを介してアクセスできます。 #### [](#入力-2)入力 次の例は、個別の DataWeave スクリプトへの入力として機能します。3 つのパートで構成される ​`34b21`​ 境界を含む未加工の ​`multipart/form-data`​ ペイロードを以下に示します。 - `text`​ という名前の ​`text/plain` - `file1`​ という名前の ​`application/json`​ ファイル (​`a.json`​) - `file2`​ という名前の ​`text/html`​ ファイル (​`a.html`​) 未加工のマルチパートデータ: ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、入力として未加工の ​`multipart/form-data`​ ペイロードを使用し、​`Book:a.json`​ を生成します。 マルチパートコンテンツの読み取り: ```dataweave %dw 2.0 output text/plain --- payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename ``` ### [](#example3)例: マルチパートコンテンツを生成する DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。
DataWeave ドキュメントの出力の一貫性を確保するために、この例では ​boundary​ プロパティをハードコード化します。 ただし、多くの場合、DataWeave によってランダムな境界が生成されて出力 MIME タイプに追加されるため、このプロパティをハードコード化する必要はありません。
マルチパートコンテンツの書き込み: ```dataweave %dw 2.0 output multipart/form-data boundary='34b21' --- { parts : { text : { headers : { "Content-Type": "text/plain" }, content : "Book" }, file1 : { headers : { "Content-Disposition" : { "name": "file1", "filename": "a.json" }, "Content-Type" : "application/json" }, content : { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } }, file2 : { headers : { "Content-Disposition" : { "filename": "a.html" }, "Content-Type" : payload.^mimeType }, content : payload } } } ``` パートの名前が ​`Content-Disposition`​ ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。 次の例は、現在のペイロードをマルチパートフォームデータのファイルパートとして送信する方法を示しています。次のような DataWeave スクリプトを使用する必要があります。 ```dataweave %dw 2.0 input payload application/xml output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "", "filename": "." }, "Content-Type": "" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` - `boundary`​ は境界値を設定します (例: `"----myboundary----"`​)。 - ``​ はファイルのタグ名です (例: `"sampleFile"`​)。 - `.`​ はペイロードのコンテンツを入力するためのファイル名です (例: `"sampleFile.xml"`​)。 - ``​ は送信するファイルのコンテンツと一致させます (例: `"application/xml"`​)。 - ファイルのコンテンツは現在のペイロードです。 この例には、マルチパートに 2 つのパート (ファイルと ​`otherJsonPart`​) が含まれています。さらにパートを追加する場合は、​`parts:{}`​ セクションの下に次の形式で追加します。 ```dataweave : { content: } ``` - ``​ は引用符なしのパート名です (例: `json`​)。 - ``​ はそのパートのコンテンツです (例: `'{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }'`​)。 次の XML 入力を前提とします。 ```xml 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
``` DataWeave スクリプトは次のようになります。 ```dataweave %dw 2.0 output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "test", "filename": "sampleFile.xml" }, "Content-Type": "application/xml" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` 出力マルチパートは次のようになります。 ```multipart ------myboundary---- Content-Type: application/xml Content-Disposition: form-data; name="test"; filename="sampleFile.xml" 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
------myboundary---- Content-Disposition: form-data; name="otherJsonPart" {"name": "sampleFile.xml", "sampleFile": {"type": "sample"} } ------myboundary------ ``` ### [](#example4)例: マルチパートペイロードを反復処理する 次の例は、DataWeave がペイロードのすべてのパートを反復処理して各パートを個別に処理する方法を示しています。 ### [](#ソース-3)ソース ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title":"Java 8 in Action", "author":"Mario Fusco", "year":2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` ### [](#出力-2)出力 ```json { "0": "text", "1": "file1", "2": "file2" } ``` ### [](#example5)例: ^mediaType および ^mimeType メタデータセレクターの使用 `^mimeType`​ セレクターは、パラメーターなしの値の MIME タイプ (​`application/json`​ など) を返します。​`^mediaType`​ セレクターは、対照的に MIME タイプとそれに関連する他のパラメーター (​`application/json;charset=UTF-16`​ など) を返します。 次の例では、マルチパート入力を異なる形式のマルチパート出力に変換する方法を示しています。この DataWeave スクリプトでは、​`^mimeType`​ セレクターと ​`^mediaType`​ セレクターの両方を使用して新しいマルチパートコンテンツを生成します。 ### [](#入力-3)入力 マルチパート入力には複数のコンテンツタイプがあります。この場合は、非標準の区切り文字が含まれる ​`application/json`​ と ​`application/csv`​ です。 ```text ----------------------------049709565842371278701691 Content-Type: application/json Content-Disposition: form-data; name="order" { "name": "order1", "id": 123, "content": "orderContent" } ----------------------------049709565842371278701691 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 ----------------------------049709565842371278701691-- ``` ### [](#ソース-4)ソース この DataWeave スクリプトでは、​`output multipart/form-data`​ MIME タイプを定義してマルチパート入力をマルチパート出力に変換します。マルチパート出力データには 2 つのパートが含まれます。 - `orderAck` 注文の受信の肯定応答を伴うテキストが含まれます。コンテンツタイプは ​`text/plain`​ です。 ^mimeType\` セレクターは、メッセージのパートとしてコンテンツタイプを記録する場合に役に立ちます。 - `partner` 元のパートナー自体が含まれます。今回はコンテンツタイプが ​`payload.parts..^mediaType`​ である点に注意してください。^mediaType セレクターには、​`application/csv`​ コンテンツを解析する区切り文字も含まれます。 ```dataweave %dw 2.0 input payload multipart boundary='boundary1' output multipart boundary='test2' --- { parts : { orderAck : { headers : { "Content-Type": "text/plain" }, content : "Order payload of type " ++ payload.parts.order.content.^mimeType ++ " and id " ++ (payload.parts.order.content.id as String) ++ " received. Receipt available." }, partner: { headers : { "Content-Type": payload.parts.partner.content.^mediaType }, content : payload.parts.partner.content } } } ``` ### [](#出力-3)出力 ```text --test2 Content-Type: text/plain Content-Disposition: form-data; name="orderAck" Order payload of type application/json and id 123 received. Receipt available. --test2 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 --test2-- ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

defaultContentType

String

'application/octet-stream'

multipart/*​ 形式のパートで使用するデフォルトのコンテンツタイプを設定します。設定すると、このプロパティは​システムプロパティ​ ​com.mulesoft.dw.multipart.defaultContentType​ の設定よりも優先されます。

2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

multipart/*

# マルチパート (フォームデータ) 形式 MIME タイプ: `multipart/form-data` ID: `multipart` DataWeave ではマルチパートサブタイプ (特に ​`form-data`​) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。 DataWeave では、特定の ​`Object`​ 構造を使用して、マルチパートドキュメントを表します。 ```weave type Multipart = { preamble?: String, parts: { _?: MultipartPart } } type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any } ``` ## [](#examples)例 次の例は、マルチパート形式の使用方法を示しています。 - [例: マルチパート](#example1) - [例: パートのデータにアクセスして変換する](#example2) - [例: マルチパートコンテンツを生成する](#example3) - [例: マルチパートペイロードを反復処理する](#example4) - [例: ^mediaType および ^mimeType メタデータセレクターの使用](#example5) ### [](#example1)例: マルチパート 次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。 #### [](#入力)入力 マルチパート入力は、DataWeave ソースへのペイロードとして機能します。 ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース)ソース この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。 ```weave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。​`raw`​ および ​`content`​ 値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。 ```weave { parts: { text: { headers: { "Content-Disposition": { name: "text", subtype: "form-data" }, "Content-Type": "text/plain" }, content: "Book" as String { raw: "Qm9vaw==" as Binary { base: "64" }, encoding: null, mediaType: "text/plain", mimeType: "text/plain" } }, file1: { headers: { "Content-Disposition": { name: "file1", filename: "a.json", subtype: "form-data" }, "Content-Type": "application/json" }, content: { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } as Object { raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary { base: "64" }, encoding: null, mediaType: "application/json", mimeType: "application/json" } }, file2: { headers: { "Content-Disposition": { name: "file2", filename: "a.html", subtype: "form-data" }, "Content-Type": "text/html" }, content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary { base: "64" } } } } ``` ### [](#example2)例: パートのデータにアクセスして変換する DataWeave スクリプト内で、​`parts`​ 要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには ​`content`​ キーワードを介してアクセスでき、ヘッダーには ​`headers`​ キーワードを介してアクセスできます。 #### [](#入力-2)入力 次の例は、個別の DataWeave スクリプトへの入力として機能します。3 つのパートで構成される ​`34b21`​ 境界を含む未加工の ​`multipart/form-data`​ ペイロードを以下に示します。 - `text`​ という名前の ​`text/plain` - `file1`​ という名前の ​`application/json`​ ファイル (​`a.json`​) - `file2`​ という名前の ​`text/html`​ ファイル (​`a.html`​) 未加工のマルチパートデータ: ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、入力として未加工の ​`multipart/form-data`​ ペイロードを使用し、​`Book:a.json`​ を生成します。 マルチパートコンテンツの読み取り: ```dataweave %dw 2.0 output text/plain --- payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename ``` ### [](#example3)例: マルチパートコンテンツを生成する DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。
DataWeave ドキュメントの出力の一貫性を確保するために、この例では ​boundary​ プロパティをハードコード化します。 ただし、多くの場合、DataWeave によってランダムな境界が生成されて出力 MIME タイプに追加されるため、このプロパティをハードコード化する必要はありません。
マルチパートコンテンツの書き込み: ```dataweave %dw 2.0 output multipart/form-data boundary='34b21' --- { parts : { text : { headers : { "Content-Type": "text/plain" }, content : "Book" }, file1 : { headers : { "Content-Disposition" : { "name": "file1", "filename": "a.json" }, "Content-Type" : "application/json" }, content : { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } }, file2 : { headers : { "Content-Disposition" : { "filename": "a.html" }, "Content-Type" : payload.^mimeType }, content : payload } } } ``` パートの名前が ​`Content-Disposition`​ ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。 次の例は、現在のペイロードをマルチパートフォームデータのファイルパートとして送信する方法を示しています。次のような DataWeave スクリプトを使用する必要があります。 ```dataweave %dw 2.0 input payload application/xml output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "", "filename": "." }, "Content-Type": "" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` - `boundary`​ は境界値を設定します (例: `"----myboundary----"`​)。 - ``​ はファイルのタグ名です (例: `"sampleFile"`​)。 - `.`​ はペイロードのコンテンツを入力するためのファイル名です (例: `"sampleFile.xml"`​)。 - ``​ は送信するファイルのコンテンツと一致させます (例: `"application/xml"`​)。 - ファイルのコンテンツは現在のペイロードです。 この例には、マルチパートに 2 つのパート (ファイルと ​`otherJsonPart`​) が含まれています。さらにパートを追加する場合は、​`parts:{}`​ セクションの下に次の形式で追加します。 ```dataweave : { content: } ``` - ``​ は引用符なしのパート名です (例: `json`​)。 - ``​ はそのパートのコンテンツです (例: `'{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }'`​)。 次の XML 入力を前提とします。 ```xml 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
``` DataWeave スクリプトは次のようになります。 ```dataweave %dw 2.0 output multipart/form-data boundary="----myboundary----" --- { parts: { filePart: { headers: { "Content-Disposition": { "name": "test", "filename": "sampleFile.xml" }, "Content-Type": "application/xml" }, content: payload }, otherJsonPart: { content: '{"name": "sampleFile.xml", "sampleFile": {"type": "sample"} }' } } } ``` 出力マルチパートは次のようになります。 ```multipart ------myboundary---- Content-Type: application/xml Content-Disposition: form-data; name="test"; filename="sampleFile.xml" 1 Fred Landis
Oakstreet Boston 23320 MA
2 Michelle Butler
First Avenue San-Francisco 44324 CA
3 Ted Little
Long Way Los-Angeles 34424 CA
------myboundary---- Content-Disposition: form-data; name="otherJsonPart" {"name": "sampleFile.xml", "sampleFile": {"type": "sample"} } ------myboundary------ ``` ### [](#example4)例: マルチパートペイロードを反復処理する 次の例は、DataWeave がペイロードのすべてのパートを反復処理して各パートを個別に処理する方法を示しています。 ### [](#ソース-3)ソース ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title":"Java 8 in Action", "author":"Mario Fusco", "year":2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` ### [](#出力-2)出力 ```json { "0": "text", "1": "file1", "2": "file2" } ``` ### [](#example5)例: ^mediaType および ^mimeType メタデータセレクターの使用 `^mimeType`​ セレクターは、パラメーターなしの値の MIME タイプ (​`application/json`​ など) を返します。​`^mediaType`​ セレクターは、対照的に MIME タイプとそれに関連する他のパラメーター (​`application/json;charset=UTF-16`​ など) を返します。 次の例では、マルチパート入力を異なる形式のマルチパート出力に変換する方法を示しています。この DataWeave スクリプトでは、​`^mimeType`​ セレクターと ​`^mediaType`​ セレクターの両方を使用して新しいマルチパートコンテンツを生成します。 ### [](#入力-3)入力 マルチパート入力には複数のコンテンツタイプがあります。この場合は、非標準の区切り文字が含まれる ​`application/json`​ と ​`application/csv`​ です。 ```text ----------------------------049709565842371278701691 Content-Type: application/json Content-Disposition: form-data; name="order" { "name": "order1", "id": 123, "content": "orderContent" } ----------------------------049709565842371278701691 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 ----------------------------049709565842371278701691-- ``` ### [](#ソース-4)ソース この DataWeave スクリプトでは、​`output multipart/form-data`​ MIME タイプを定義してマルチパート入力をマルチパート出力に変換します。マルチパート出力データには 2 つのパートが含まれます。 - `orderAck` 注文の受信の肯定応答を伴うテキストが含まれます。コンテンツタイプは ​`text/plain`​ です。 ^mimeType\` セレクターは、メッセージのパートとしてコンテンツタイプを記録する場合に役に立ちます。 - `partner` 元のパートナー自体が含まれます。今回はコンテンツタイプが ​`payload.parts..^mediaType`​ である点に注意してください。^mediaType セレクターには、​`application/csv`​ コンテンツを解析する区切り文字も含まれます。 ```dataweave %dw 2.0 input payload multipart boundary='boundary1' output multipart boundary='test2' --- { parts : { orderAck : { headers : { "Content-Type": "text/plain" }, content : "Order payload of type " ++ payload.parts.order.content.^mimeType ++ " and id " ++ (payload.parts.order.content.id as String) ++ " received. Receipt available." }, partner: { headers : { "Content-Type": payload.parts.partner.content.^mediaType }, content : payload.parts.partner.content } } } ``` ### [](#出力-3)出力 ```text --test2 Content-Type: text/plain Content-Disposition: form-data; name="orderAck" Order payload of type application/json and id 123 received. Receipt available. --test2 Content-Type: application/csv;separator=. Content-Disposition: form-data; name="partner" partnerName.id mulesoft.1 --test2-- ``` ## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

defaultContentType

String

'application/octet-stream'

multipart/*​ 形式のパートで使用するデフォルトのコンテンツタイプを設定します。設定すると、このプロパティは​システムプロパティ​ ​com.mulesoft.dw.multipart.defaultContentType​ の設定よりも優先されます。

2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

boundary

String

null

マルチパートの ​boundary​ 値。パートを区切る文字列です。

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

## [](#mime_types)サポートされる MIME タイプ この形式では、次の MIME タイプがサポートされます。
MIME タイプ

multipart/*

# マルチパートデータの操作 次の例では、マルチパートペイロードを反復処理し、各パートからデータを抽出します。 この例では、以下の関数を使用します。 - `read`​ (スクリプトのヘッダー) は、境界を ​`34b21`​ に設定する ​`multi`​ 変数からマルチパートコンテンツを読み取ります。 - `mapObject`​ は ​`read`​ によって返されたマルチパートデータのパートを反復処理し、JSON オブジェクト内の各パートのインデックスと ​`name`​ キーを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` 出力: ```xml { "0": "text", "1": "file1", "2": "file2" } ``` 他の例については、​[Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.3/dw-multipart)​ で参照されている​[「マルチパート形式 (フォームデータ)」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-multipart#examples)​の例と関数を参照してください。 ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # マルチパートデータの操作 次の例では、マルチパートペイロードを反復処理し、各パートからデータを抽出します。 この例では、以下の関数を使用します。 - `read`​ (スクリプトのヘッダー) は、境界を ​`34b21`​ に設定する ​`multi`​ 変数からマルチパートコンテンツを読み取ります。 - `mapObject`​ は ​`read`​ によって返されたマルチパートデータのパートを反復処理し、JSON オブジェクト内の各パートのインデックスと ​`name`​ キーを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` 出力: ```json { "0": "text", "1": "file1", "2": "file2" } ``` 他の例については、​[Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.4/dw-multipart)​ で参照されている​[「マルチパート形式 (フォームデータ)」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-multipart#examples)​の例と関数を参照してください。 ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # マルチパートデータの操作 次の例では、マルチパートペイロードを反復処理し、各パートからデータを抽出します。 この例では、以下の関数を使用します。 - `read`​ (スクリプトのヘッダー) は、境界を ​`34b21`​ に設定する ​`multi`​ 変数からマルチパートコンテンツを読み取ります。 - `mapObject`​ は ​`read`​ によって返されたマルチパートデータのパートを反復処理し、JSON オブジェクト内の各パートのインデックスと ​`name`​ キーを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` 出力: ```json { "0": "text", "1": "file1", "2": "file2" } ``` 他の例については、​[Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.5/dw-multipart)​ で参照されている​[「マルチパート形式 (フォームデータ)」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-multipart#examples)​の例と関数を参照してください。 ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # マルチパートデータの操作 次の例では、マルチパートペイロードを反復処理し、各パートからデータを抽出します。 この例では、以下の関数を使用します。 - `read`​ (スクリプトのヘッダー) は、境界を ​`34b21`​ に設定する ​`multi`​ 変数からマルチパートコンテンツを読み取ります。 - `mapObject`​ は ​`read`​ によって返されたマルチパートデータのパートを反復処理し、JSON オブジェクト内の各パートのインデックスと ​`name`​ キーを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` 出力: ```json { "0": "text", "1": "file1", "2": "file2" } ``` 他の例については、​[Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.6/dw-multipart)​ で参照されている​[「マルチパート形式 (フォームデータ)」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-multipart#examples)​の例と関数を参照してください。 ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # マルチパートデータの操作 次の例では、マルチパートペイロードを反復処理し、各パートからデータを抽出します。 この例では、以下の関数を使用します。 - `read`​ (スクリプトのヘッダー) は、境界を ​`34b21`​ に設定する ​`multi`​ 変数からマルチパートコンテンツを読み取ります。 - `mapObject`​ は ​`read`​ によって返されたマルチパートデータのパートを反復処理し、JSON オブジェクト内の各パートのインデックスと ​`name`​ キーを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` 出力: ```json { "0": "text", "1": "file1", "2": "file2" } ``` 他の例については、​[Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.7/dw-multipart)​ で参照されている​[「マルチパート形式 (フォームデータ)」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-multipart#examples)​の例と関数を参照してください。 ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # マルチパートデータの操作 次の例では、マルチパートペイロードを反復処理し、各パートからデータを抽出します。 この例では、以下の関数を使用します。 - `read`​ (スクリプトのヘッダー) は、境界を ​`34b21`​ に設定する ​`multi`​ 変数からマルチパートコンテンツを読み取ります。 - `mapObject`​ は ​`read`​ によって返されたマルチパートデータのパートを反復処理し、JSON オブジェクト内の各パートのインデックスと ​`name`​ キーを返します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json var multi = '--34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21--' var parsed = read(multi, "multipart/form-data", {boundary:'34b21'}) --- parsed.parts mapObject ((value, key, index) -> {(index): key}) ``` 出力: ```json { "0": "text", "1": "file1", "2": "file2" } ``` 他の例については、​[Multipart (dw::module::Multipart)](https://docs.mulesoft.com/jp/dataweave/2.8/dw-multipart)​ で参照されている​[「マルチパート形式 (フォームデータ)」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-multipart#examples)​の例と関数を参照してください。 ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # マルチパート形式 (フォームデータ) MIME タイプ: `multipart/form-data`​ ID: `multipart`​ DataWeave ではマルチパートサブタイプ (特に ​`form-data`​) がサポートされます。この形式では、各パートの形式に関係なく、1 つのペイロード内で複数の異なるデータパートを処理できます。パートの開始と終了を区別するには、境界を使用します。各パートのメタデータはヘッダーを介して追加できます。 DataWeave では、特定の ​`Object`​ 構造を使用して、マルチパートドキュメントを表します。 ```weave type Multipart = { preamble?: String, parts: { _?: MultipartPart } } type MultipartPart = { headers?: { "Content-Disposition"?: { name: String, filename?: String }, "Content-Type"?: String }, content: Any } ``` ## [](#examples)例 次の例は、マルチパート形式の使用方法を示しています。 - [例: マルチパート](#example1)​ - [例: パートのデータにアクセスして変換する](#example2)​ - [例: マルチパートコンテンツを生成する](#example3) ### [](#example1)例: マルチパート 次の例は、DataWeave で単純なマルチパートコンテンツを読み取る方法を示しています。 #### [](#入力)入力 マルチパート入力は、DataWeave ソースへのペイロードとして機能します。 ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース)ソース この DataWeave スクリプトは、マルチパート入力ペイロードを DataWeave (dw) 形式に変換します。 ```weave %dw 2.0 output application/dw --- payload ``` #### [](#出力)出力 この出力は、DataWeave (dw) 形式でマルチパート入力がどのように表されるのかを示しています。​`raw`​ および ​`content`​ 値は、簡潔にするために短縮されています。完全な値はこれよりも長くなります。 ```weave { parts: { text: { headers: { "Content-Disposition": { name: "text", subtype: "form-data" }, "Content-Type": "text/plain" }, content: "Book" as String { raw: "Qm9vaw==" as Binary { base: "64" }, encoding: null, mediaType: "text/plain", mimeType: "text/plain" } }, file1: { headers: { "Content-Disposition": { name: "file1", filename: "a.json", subtype: "form-data" }, "Content-Type": "application/json" }, content: { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } as Object { raw: "ewogICJ0aXRsZSI6ICJKYXZhI...==" as Binary { base: "64" }, encoding: null, mediaType: "application/json", mimeType: "application/json" } }, file2: { headers: { "Content-Disposition": { name: "file2", filename: "a.html", subtype: "form-data" }, "Content-Type": "text/html" }, content: "PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT4KI...==" as Binary { base: "64" } } } } ``` ### [](#example2)例: パートのデータにアクセスして変換する DataWeave スクリプト内で、​`parts`​ 要素を選択し、任意のパートのデータにアクセスし、変換できます。操作は配列に基づくことができます。また、パートを参照するための名前がパートに設定されている場合は、キーに基づくことができます。パートのデータには ​`content`​ キーワードを介してアクセスでき、ヘッダーには ​`headers`​ キーワードを介してアクセスできます。 #### [](#入力-2)入力 次の例は、個別の DataWeave スクリプトへの入力として機能します。 3 つのパートで構成される ​`34b21`​ 境界を含む未加工の ​`multipart/form-data`​ ペイロードを以下に示します。 - `text`​ という名前の ​`text/plain`​ - `file1`​ という名前の ​`application/json`​ ファイル (​`a.json`​) - `file2`​ という名前の ​`text/html`​ ファイル (​`a.html`​) 未加工のマルチパートデータ: ```text --34b21 Content-Disposition: form-data; name="text" Content-Type: text/plain Book --34b21 Content-Disposition: form-data; name="file1"; filename="a.json" Content-Type: application/json { "title": "Java 8 in Action", "author": "Mario Fusco", "year": 2014 } --34b21 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html Available for download! --34b21-- ``` #### [](#ソース-2)ソース 次の DataWeave スクリプトは、入力として未加工の ​`multipart/form-data`​ ペイロードを使用し、​`Book:a.json`​ を生成します。 マルチパートコンテンツの読み取り: ```dataweave %dw 2.0 output text/plain --- payload.parts.text.content ++ ':' ++ payload.parts[1].headers.'Content-Disposition'.filename ``` ### [](#example3)例: マルチパートコンテンツを生成する DataWeave がパートのリスト (各パートにヘッダーとコンテンツが含まれる) を含むオブジェクトを構築するマルチパートコンテンツを生成できます。次の DataWeave スクリプトでは、ペイロード内で HTML データを使用できる場合に、(以前に分析した) 未加工のマルチパートデータを生成します。 マルチパートコンテンツの書き込み: ```dataweave %dw 2.0 output multipart/form-data boundary='34b21' --- { parts : { text : { headers : { "Content-Type": "text/plain" }, content : "Book" }, file1 : { headers : { "Content-Disposition" : { "name": "file1", "filename": "a.json" }, "Content-Type" : "application/json" }, content : { title: "Java 8 in Action", author: "Mario Fusco", year: 2014 } }, file2 : { headers : { "Content-Disposition" : { "filename": "a.html" }, "Content-Type" : payload.^mimeType }, content : payload } } } ``` パートの名前が ​`Content-Disposition`​ ヘッダーに明示的に提供されていない場合は、キーによりパートの名前が決まります。また、DataWeave は、サポートされる形式からのコンテンツを処理できるだけでなく、HTML など、サポートされない形式への参照からコンテンツを処理できます。 ## [](#properties)Configuration のプロパティ DataWeave では、マルチパート形式の次の設定プロパティがサポートされています。 ### [](#reader-のプロパティ)Reader のプロパティ マルチパート形式では、入力データの読み込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​boundary

​String

​null

マルチパートの ​boundary​ 値。パートを区切る文字列。

defaultContentType​

String

このプロパティにデフォルト値はありません。

​multipart/*​ 形式のパートで使用するデフォルトのコンテンツタイプを設定します。設定すると、このプロパティは ​com.mulesoft.dw.multipart.defaultContentType​ の システムプロパティ設定​よりも優先されます。​2021 年 8 月リリースの Mule 4.3.0-20210719 の DataWeave 2.3 (2.3.0-20210720) で導入されました。​

### [](#writer-のプロパティ)Writer のプロパティ マルチパート形式では、出力データの書き込みの指示を提供するプロパティを使用できます。
パラメーター 型 デフォルト 説明

​boundary

​String

​null

マルチパートの境界値。パートを区切る文字列。

​bufferSize

​Number

​8192

バッファライターのサイズ。

​deferred

​Boolean

​false

​true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

## [](#mime_type)サポートされる MIME タイプ (マルチパート) マルチパート形式では、次の MIME タイプがサポートされています。
MIME タイプ

multipart/*​

# リーダーとライターの設定プロパティの設定 DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 ## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用 次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json indent = false --- { hello : "world", bello : "world", mello : "world" } ``` 出力 JSON: ```json {"hello": "world","bello": "world","mello": "world"} ``` 次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。 - `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-avro#examples)​ - `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-excel#example2) - `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-flatfile#examples)​の例 - `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-remove-certain-xml-attributes)​ の例 ## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用 DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。 次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​``​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。 スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`null`​) を含むオブジェクトをスキップし、属性と ​`hello`​ の値を書き込みます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read("hellohello", "application/xml", {nullValueOn: "empty"}) output application/json with binary --- write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true}) ``` 出力 JSON: ```json { "ex2": "hello", "ex3": { "@a": "greeting", "__text": "hello" } } ``` リーダープロパティを ​`readUrl`​ に渡す例を次に示します。 - [XML の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-xml#example1) - [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-ndjson#example2) ## [](#ex03)コネクタ操作を介したリーダープロパティの使用 入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。 デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。 パイプ区切りの CSV 入力 ```csv id | name | role 1234 | Shokida,Mr. | dev 2345 | Achaval,Mr. | arch 3456 | Felisatti,Ms. | mngr 4567 | Chibana,Mr. | dev ``` 次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。 Mule フロー: ```xml ``` 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Read 操作 (​``​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。 Transform Message コンポーネント (​``​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。 `payload`​ に設定された Logger コンポーネント (​``​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。 `outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。 - `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-csv#example2) - `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-json#example3) ## [](#ex04)設定値としての Mule 変数の使用 次の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-variables)​からパイプ値を選択しています。 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Set Variable コンポーネント (​``​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。 Transform Message コンポーネント (​``​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。 `payload`​ に設定された Logger コンポーネント (​``​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。 Mule フロー: ```xml ``` 例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します: `var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})`​ パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します: `write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})`​ スクリプトでは DataWeave ​`output`​ ディレクティブ \`output applicatio:page-aliases をスクリプトのヘッダーで使用しています。 Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。 1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。 2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。 3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。 4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。 サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/jp/mule-runtime/4.3/transform-preview-transformation-output-studio-task)​を参照してください。 ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # リーダーとライターの設定プロパティの設定 DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。 さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats)​を参照してください。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用 次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json indent = false --- { hello : "world", bello : "world", mello : "world" } ``` 出力 JSON: ```json {"hello": "world","bello": "world","mello": "world"} ``` 次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。 - `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-avro#examples)​ - `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-excel#example2) - `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-flatfile#examples)​の例 - `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-remove-certain-xml-attributes)​ の例 ## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用 DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。 次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​``​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。 スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`null`​) を含むオブジェクトをスキップし、属性と ​`hello`​ の値を書き込みます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read("hellohello", "application/xml", {nullValueOn: "empty"}) output application/json with binary --- write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true}) ``` 出力 JSON: ```json { "ex2": "hello", "ex3": { "@a": "greeting", "__text": "hello" } } ``` リーダープロパティを ​`readUrl`​ に渡す例を次に示します。 - [XML の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-xml#example1) - [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats-ndjson#example2) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # リーダーとライターの設定プロパティの設定 DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。 さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats)​を参照してください。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用 次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json indent = false --- { hello : "world", bello : "world", mello : "world" } ``` 出力 JSON: ```json {"hello": "world","bello": "world","mello": "world"} ``` 次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。 - `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-avro#examples) - `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-excel#example2) - `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-flatfile#examples)​の例 - `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-remove-certain-xml-attributes)​ の例 ## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用 DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。 次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​``​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。 スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`null`​) を含むオブジェクトをスキップし、属性と ​`hello`​ の値を書き込みます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read("hellohello", "application/xml", {nullValueOn: "empty"}) output application/json with binary --- write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true}) ``` 出力 JSON: ```json { "ex2": "hello", "ex3": { "@a": "greeting", "__text": "hello" } } ``` リーダープロパティを ​`readUrl`​ に渡す例を次に示します。 - [XML の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-xml#example1) - [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats-ndjson#example2) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # リーダーとライターの設定プロパティの設定 DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。 さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats)​を参照してください。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用 次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json indent = false --- { hello : "world", bello : "world", mello : "world" } ``` 出力 JSON: ```json {"hello": "world","bello": "world","mello": "world"} ``` 次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。 - `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-avro#examples) - `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-excel#example2) - `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-flatfile#examples)​の例 - `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-remove-certain-xml-attributes)​ の例 ## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用 DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。 次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​``​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。 スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`null`​) を含むオブジェクトをスキップし、属性と ​`hello`​ の値を書き込みます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read("hellohello", "application/xml", {nullValueOn: "empty"}) output application/json with binary --- write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true}) ``` 出力 JSON: ```json { "ex2": "hello", "ex3": { "@a": "greeting", "__text": "hello" } } ``` リーダープロパティを ​`readUrl`​ に渡す例を次に示します。 - [XML の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-xml#example1) - [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats-ndjson#example2) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # リーダーとライターの設定プロパティの設定 DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。 さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats)​を参照してください。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用 次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json indent = false --- { hello : "world", bello : "world", mello : "world" } ``` 出力 JSON: ```json {"hello": "world","bello": "world","mello": "world"} ``` 次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。 - `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-avro#examples) - `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-excel#example2) - `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-flatfile#examples)​の例 - `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-remove-certain-xml-attributes)​ の例 ## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用 DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。 次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​``​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。 スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`null`​) を含むオブジェクトをスキップし、属性と ​`hello`​ の値を書き込みます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read("hellohello", "application/xml", {nullValueOn: "empty"}) output application/json with binary --- write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true}) ``` 出力 JSON: ```json { "ex2": "hello", "ex3": { "@a": "greeting", "__text": "hello" } } ``` リーダープロパティを ​`readUrl`​ に渡す例を次に示します。 - [XML の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-xml#example1) - [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-ndjson#example2) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # リーダーとライターの設定プロパティの設定 DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。 さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、​[「サポートされるデータ形式」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats)​を参照してください。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 ## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用 次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json indent = false --- { hello : "world", bello : "world", mello : "world" } ``` 出力 JSON: ```json {"hello": "world","bello": "world","mello": "world"} ``` 次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。 - `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-avro#examples) - `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-excel#example2) - `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-flatfile#examples)​の例 - `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-remove-certain-xml-attributes)​ の例 ## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用 DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。 次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​``​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。 スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`null`​) を含むオブジェクトをスキップし、属性と ​`hello`​ の値を書き込みます。 DataWeave スクリプト: ```dataweave %dw 2.0 var myVar = read("hellohello", "application/xml", {nullValueOn: "empty"}) output application/json with binary --- write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true}) ``` 出力 JSON: ```json { "ex2": "hello", "ex3": { "@a": "greeting", "__text": "hello" } } ``` リーダープロパティを ​`readUrl`​ に渡す例を次に示します。 - [XML の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-xml#example1) - [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-ndjson#example2) ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # リスト内のデータをフラット化する関数の定義 ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。 この例では、次の関数を使用します。 - 入力のセット要素を調べる ​`map`​。 - 配列をフラット化する ​`reduce`​。 - 項目を条件付きで表示する ​`if`​。 - 入力を解析する ​`splitBy`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0]) --- payload.results map() -> { email: $.profile.email, name: $.profile.firstName, tags: reduceMapFor($.data.interests.tags[0]), (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0) } ``` 入力 JSON ペイロード: ```json { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ], "objectsCount": 2, "totalCount": 2, "statusCode": 200, "errorCode": 0, "statusReason": "OK" } ``` 出力 ```json [ { "email": "johndoe@demo.com", "name": "john", "tags": "digital-strategy,innovation" }, { "email": "janedoe@demo.com", "name": "jane", "tags": "tax-reform,retail-health", "contenttypes": "News,Analysis,Case studies,Press releases" } ] ``` ## [](#関連する例)関連する例 - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-conditional-list-reduction-via-function) - [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-define-a-custom-addition-function) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # リスト内のデータをフラット化する関数の定義 ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。 この例では、次の関数を使用します。 - 入力のセット要素を調べる ​`map`​。 - 配列をフラット化する ​`reduce`​。 - 項目を条件付きで表示する ​`if`​。 - 入力を解析する ​`splitBy`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0]) --- payload.results map() -> { email: $.profile.email, name: $.profile.firstName, tags: reduceMapFor($.data.interests.tags[0]), (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0) } ``` 入力 JSON ペイロード: ```json { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ], "objectsCount": 2, "totalCount": 2, "statusCode": 200, "errorCode": 0, "statusReason": "OK" } ``` 出力 ```json [ { "email": "johndoe@demo.com", "name": "john", "tags": "digital-strategy,innovation" }, { "email": "janedoe@demo.com", "name": "jane", "tags": "tax-reform,retail-health", "contenttypes": "News,Analysis,Case studies,Press releases" } ] ``` ## [](#関連する例)関連する例 - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-conditional-list-reduction-via-function) - [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-define-a-custom-addition-function) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # リスト内のデータをフラット化する関数の定義 ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。 この例では、次の関数を使用します。 - 入力のセット要素を調べる ​`map`​。 - 配列をフラット化する ​`reduce`​。 - 項目を条件付きで表示する ​`if`​。 - 入力を解析する ​`splitBy`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0]) --- payload.results map() -> { email: $.profile.email, name: $.profile.firstName, tags: reduceMapFor($.data.interests.tags[0]), (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0) } ``` 入力 JSON ペイロード: ```json { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ], "objectsCount": 2, "totalCount": 2, "statusCode": 200, "errorCode": 0, "statusReason": "OK" } ``` 出力 ```json [ { "email": "johndoe@demo.com", "name": "john", "tags": "digital-strategy,innovation" }, { "email": "janedoe@demo.com", "name": "jane", "tags": "tax-reform,retail-health", "contenttypes": "News,Analysis,Case studies,Press releases" } ] ``` ## [](#関連する例)関連する例 - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-conditional-list-reduction-via-function) - [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-define-a-custom-addition-function) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # リスト内のデータをフラット化する関数の定義 ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。 この例では、次の関数を使用します。 - 入力のセット要素を調べる ​`map`​。 - 配列をフラット化する ​`reduce`​。 - 項目を条件付きで表示する ​`if`​。 - 入力を解析する ​`splitBy`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0]) --- payload.results map() -> { email: $.profile.email, name: $.profile.firstName, tags: reduceMapFor($.data.interests.tags[0]), (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0) } ``` 入力 JSON ペイロード: ```json { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ], "objectsCount": 2, "totalCount": 2, "statusCode": 200, "errorCode": 0, "statusReason": "OK" } ``` 出力 ```json [ { "email": "johndoe@demo.com", "name": "john", "tags": "digital-strategy,innovation" }, { "email": "janedoe@demo.com", "name": "jane", "tags": "tax-reform,retail-health", "contenttypes": "News,Analysis,Case studies,Press releases" } ] ``` ## [](#関連する例)関連する例 - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-conditional-list-reduction-via-function) - [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-define-a-custom-addition-function) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # リスト内のデータをフラット化する関数の定義 ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。 この例では、次の関数を使用します。 - 入力のセット要素を調べる ​`map`​。 - 配列をフラット化する ​`reduce`​。 - 項目を条件付きで表示する ​`if`​。 - 入力を解析する ​`splitBy`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0]) --- payload.results map() -> { email: $.profile.email, name: $.profile.firstName, tags: reduceMapFor($.data.interests.tags[0]), (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0) } ``` 入力 JSON ペイロード: ```json { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ], "objectsCount": 2, "totalCount": 2, "statusCode": 200, "errorCode": 0, "statusReason": "OK" } ``` 出力 ```json [ { "email": "johndoe@demo.com", "name": "john", "tags": "digital-strategy,innovation" }, { "email": "janedoe@demo.com", "name": "jane", "tags": "tax-reform,retail-health", "contenttypes": "News,Analysis,Case studies,Press releases" } ] ``` ## [](#関連する例)関連する例 - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-conditional-list-reduction-via-function) - [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-define-a-custom-addition-function) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # リスト内のデータをフラット化する関数の定義 ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。 この例では、次の関数を使用します。 - 入力のセット要素を調べる ​`map`​。 - 配列をフラット化する ​`reduce`​。 - 項目を条件付きで表示する ​`if`​。 - 入力を解析する ​`splitBy`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0]) --- payload.results map() -> { email: $.profile.email, name: $.profile.firstName, tags: reduceMapFor($.data.interests.tags[0]), (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0) } ``` 入力 JSON ペイロード: ```json { "results": [ { "profile": { "firstName": "john", "lastName": "doe", "email": "johndoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "digital-strategy:Digital Strategy", "innovation:Innovation" ], "contenttypes": [] } ] } }, { "profile": { "firstName": "jane", "lastName": "doe", "email": "janedoe@demo.com" }, "data": { "interests": [ { "language": "English", "tags": [ "tax-reform:Tax Reform", "retail-health:Retail Health" ], "contenttypes": [ "News", "Analysis", "Case studies", "Press releases" ] } ] } } ], "objectsCount": 2, "totalCount": 2, "statusCode": 200, "errorCode": 0, "statusReason": "OK" } ``` 出力 ```json [ { "email": "johndoe@demo.com", "name": "john", "tags": "digital-strategy,innovation" }, { "email": "janedoe@demo.com", "name": "jane", "tags": "tax-reform,retail-health", "contenttypes": "News,Analysis,Case studies,Press releases" } ] ``` ## [](#関連する例)関連する例 - [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-use-constant-directives) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-conditional-list-reduction-via-function) - [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-define-a-custom-addition-function) - [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-pass-functions-as-arguments) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # 上位要素の取得 この DataWeave の例では、テストのスコアで候補者の配列を並び替え、募集職種が埋まるまで最もスコアの高い候補者のみを選択します。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、以下を使用します。 - 入力の各候補者を調べる ​`map`​。 - スコアに応じて一連の候補者を並び替える ​`orderBy`​。 - 候補者の全配列の一部のみを選択する ​`[n to n]`​。配列は昇順に並んでいるため、上位の候補者は配列の最後に配置されます。そのため、負のインデックスを使用する必要があります。この入力では、-3 から -1 が選択されます。-1 は配列の最後のインデックスです。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { TopCandidateList: (payload.candidates map ((candidate) -> { firstName: candidate.name, rank: candidate.score }) orderBy $.rank) [ -payload.availablePositions to -1] } ``` 入力 JSON ペイロード: ```json { "availablePositions": 3, "candidates": [ { "name":"Gunther Govan", "score":99 }, { "name":"Michael Patrick", "score":35 }, { "name":"Amalia Silva", "score":96 }, { "name":"Tom Mathews", "score":40 }, { "name":"Simon Wilson", "score":84 }, { "name":"Janet Nguyen", "score":52 } ] } ``` 出力 JSON: ```json { "TopCandidateList": [ { "firstName": "Simon Wilson", "rank": 84 }, { "firstName": "Amalia Silva", "rank": 96 }, { "firstName": "Gunther Govan", "rank": 99 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-remove-certain-xml-attributes) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # 上位要素の取得 この DataWeave の例では、テストのスコアで候補者の配列を並び替え、募集職種が埋まるまで最もスコアの高い候補者のみを選択します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - 入力の各候補者を調べる ​`map`​。 - スコアに応じて一連の候補者を並び替える ​`orderBy`​。 - 候補者の全配列の一部のみを選択する ​`[n to n]`​。配列は昇順に並んでいるため、上位の候補者は配列の最後に配置されます。そのため、負のインデックスを使用する必要があります。この入力では、-3 から -1 が選択されます。-1 は配列の最後のインデックスです。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { TopCandidateList: (payload.candidates map ((candidate) -> { firstName: candidate.name, rank: candidate.score }) orderBy $.rank) [ -payload.availablePositions to -1] } ``` 入力 JSON ペイロード: ```json { "availablePositions": 3, "candidates": [ { "name":"Gunther Govan", "score":99 }, { "name":"Michael Patrick", "score":35 }, { "name":"Amalia Silva", "score":96 }, { "name":"Tom Mathews", "score":40 }, { "name":"Simon Wilson", "score":84 }, { "name":"Janet Nguyen", "score":52 } ] } ``` 出力 JSON: ```json { "TopCandidateList": [ { "firstName": "Simon Wilson", "rank": 84 }, { "firstName": "Amalia Silva", "rank": 96 }, { "firstName": "Gunther Govan", "rank": 99 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-remove-certain-xml-attributes) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # 上位要素の取得 この DataWeave の例では、テストのスコアで候補者の配列を並び替え、募集職種が埋まるまで最もスコアの高い候補者のみを選択します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - 入力の各候補者を調べる ​`map`​。 - スコアに応じて一連の候補者を並び替える ​`orderBy`​。 - 候補者の全配列の一部のみを選択する ​`[n to n]`​。配列は昇順に並んでいるため、上位の候補者は配列の最後に配置されます。そのため、負のインデックスを使用する必要があります。この入力では、-3 から -1 が選択されます。-1 は配列の最後のインデックスです。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { TopCandidateList: (payload.candidates map ((candidate) -> { firstName: candidate.name, rank: candidate.score }) orderBy $.rank) [ -payload.availablePositions to -1] } ``` 入力 JSON ペイロード: ```json { "availablePositions": 3, "candidates": [ { "name":"Gunther Govan", "score":99 }, { "name":"Michael Patrick", "score":35 }, { "name":"Amalia Silva", "score":96 }, { "name":"Tom Mathews", "score":40 }, { "name":"Simon Wilson", "score":84 }, { "name":"Janet Nguyen", "score":52 } ] } ``` 出力 JSON: ```json { "TopCandidateList": [ { "firstName": "Simon Wilson", "rank": 84 }, { "firstName": "Amalia Silva", "rank": 96 }, { "firstName": "Gunther Govan", "rank": 99 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-remove-certain-xml-attributes) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # 上位要素の取得 この DataWeave の例では、テストのスコアで候補者の配列を並び替え、募集職種が埋まるまで最もスコアの高い候補者のみを選択します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - 入力の各候補者を調べる ​`map`​。 - スコアに応じて一連の候補者を並び替える ​`orderBy`​。 - 候補者の全配列の一部のみを選択する ​`[n to n]`​。配列は昇順に並んでいるため、上位の候補者は配列の最後に配置されます。そのため、負のインデックスを使用する必要があります。この入力では、-3 から -1 が選択されます。-1 は配列の最後のインデックスです。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { TopCandidateList: (payload.candidates map ((candidate) -> { firstName: candidate.name, rank: candidate.score }) orderBy $.rank) [ -payload.availablePositions to -1] } ``` 入力 JSON ペイロード: ```json { "availablePositions": 3, "candidates": [ { "name":"Gunther Govan", "score":99 }, { "name":"Michael Patrick", "score":35 }, { "name":"Amalia Silva", "score":96 }, { "name":"Tom Mathews", "score":40 }, { "name":"Simon Wilson", "score":84 }, { "name":"Janet Nguyen", "score":52 } ] } ``` 出力 JSON: ```json { "TopCandidateList": [ { "firstName": "Simon Wilson", "rank": 84 }, { "firstName": "Amalia Silva", "rank": 96 }, { "firstName": "Gunther Govan", "rank": 99 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-remove-certain-xml-attributes) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # 上位要素の取得 この DataWeave の例では、テストのスコアで候補者の配列を並び替え、募集職種が埋まるまで最もスコアの高い候補者のみを選択します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - 入力の各候補者を調べる ​`map`​。 - スコアに応じて一連の候補者を並び替える ​`orderBy`​。 - 候補者の全配列の一部のみを選択する ​`[n to n]`​。配列は昇順に並んでいるため、上位の候補者は配列の最後に配置されます。そのため、負のインデックスを使用する必要があります。この入力では、-3 から -1 が選択されます。-1 は配列の最後のインデックスです。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { TopCandidateList: (payload.candidates map ((candidate) -> { firstName: candidate.name, rank: candidate.score }) orderBy $.rank) [ -payload.availablePositions to -1] } ``` 入力 JSON ペイロード: ```json { "availablePositions": 3, "candidates": [ { "name":"Gunther Govan", "score":99 }, { "name":"Michael Patrick", "score":35 }, { "name":"Amalia Silva", "score":96 }, { "name":"Tom Mathews", "score":40 }, { "name":"Simon Wilson", "score":84 }, { "name":"Janet Nguyen", "score":52 } ] } ``` 出力 JSON: ```json { "TopCandidateList": [ { "firstName": "Simon Wilson", "rank": 84 }, { "firstName": "Amalia Silva", "rank": 96 }, { "firstName": "Gunther Govan", "rank": 99 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-remove-certain-xml-attributes) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # 上位要素の取得 この DataWeave の例では、テストのスコアで候補者の配列を並び替え、募集職種が埋まるまで最もスコアの高い候補者のみを選択します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - 入力の各候補者を調べる ​`map`​。 - スコアに応じて一連の候補者を並び替える ​`orderBy`​。 - 候補者の全配列の一部のみを選択する ​`[n to n]`​。配列は昇順に並んでいるため、上位の候補者は配列の最後に配置されます。そのため、負のインデックスを使用する必要があります。この入力では、-3 から -1 が選択されます。-1 は配列の最後のインデックスです。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/json --- { TopCandidateList: (payload.candidates map ((candidate) -> { firstName: candidate.name, rank: candidate.score }) orderBy $.rank) [ -payload.availablePositions to -1] } ``` 入力 JSON ペイロード: ```json { "availablePositions": 3, "candidates": [ { "name":"Gunther Govan", "score":99 }, { "name":"Michael Patrick", "score":35 }, { "name":"Amalia Silva", "score":96 }, { "name":"Tom Mathews", "score":40 }, { "name":"Simon Wilson", "score":84 }, { "name":"Janet Nguyen", "score":52 } ] } ``` 出力 JSON: ```json { "TopCandidateList": [ { "firstName": "Simon Wilson", "rank": 84 }, { "firstName": "Amalia Silva", "rank": 96 }, { "firstName": "Gunther Govan", "rank": 99 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-self-closing-xml-tags) - [指定した XML 属性の削除](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-remove-certain-xml-attributes) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # 個別のオブジェクトの項目のマージ DataWeave の例では、個別の入力配列の項目をマージします。最初の DataWeave 変数 (​`firstInput`​) は本 ID ごとに価格をリストし、2 番目の DataWeave 変数 (​`secondInput`​) は本 ID ごとに著者をリストします。各本には一意の ​`bookId`​ キーがあります。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 DataWeave スクリプトでは、同じ出力が生成されます。どちらのスクリプトも検索条件と共に 2 つの ​`map`​ 関数を使用しますが、一方のスクリプトは ​`bookId`​ の別名も作成します。 - 最初の ​`map`​ 関数は、​`firstInput`​ 配列の要素を反復処理します。その関数が各要素を評価するときに、2 番目の ​`map`​ 関数は検索条件を使用して、​`filter`​ 条件 (​`secondInput filter ($.*bookId contains firstInputValue.bookId)`​) に一致する 2 番目の配列 (​`secondInput`​) の要素を識別します。この検索条件は、​`firstInput`​ 要素の ​`bookId`​ 値と一致する ​`bookId`​ 値が含まれる ​`secondInput`​ の要素を返します。 - 2 番目の ​`map`​ 関数は、その絞り込まれた要素を評価し、​`secondInputValue.author`​ を使用して、オブジェクト ​`{author : secondInputValue.author}`​ の ​`"author"`​ 項目の値を選択して入力します。 - `filter`​ は、2 番目の ​`map`​ 関数のスコープを同じ ​`bookId`​ を共有する ​`secondInput`​ のオブジェクトに制限します。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> { theId : firstInputValue.bookId as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains firstInputValue.bookId) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theId": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theId": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` 次のスクリプトのように、​`id`​ の別名 (​`using (id = firstInputValue.bookId)`​ で作成される) を使用して同じスクリプトを記述することもできます。別名は、長いセレクター式 ​`firstInputValue.bookId`​ を置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> using (id = firstInputValue.bookId) { theValue : id as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains id) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theValue": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theValue": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` どちらのスクリプトも、同じ出力が生成されます。 ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-reference-multiple-inputs) - [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-zip-arrays-together) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # 個別のオブジェクトの項目のマージ DataWeave の例では、個別の入力配列の項目をマージします。最初の DataWeave 変数 (​`firstInput`​) は本 ID ごとに価格をリストし、2 番目の DataWeave 変数 (​`secondInput`​) は本 ID ごとに著者をリストします。各本には一意の ​`bookId`​ キーがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave スクリプトでは、同じ出力が生成されます。どちらのスクリプトも検索条件と共に 2 つの ​`map`​ 関数を使用しますが、一方のスクリプトは ​`bookId`​ の別名も作成します。 - 最初の ​`map`​ 関数は、​`firstInput`​ 配列の要素を反復処理します。その関数が各要素を評価するときに、2 番目の ​`map`​ 関数は検索条件を使用して、​`filter`​ 条件 (​`secondInput filter ($.*bookId contains firstInputValue.bookId)`​) に一致する 2 番目の配列 (​`secondInput`​) の要素を識別します。この検索条件は、​`firstInput`​ 要素の ​`bookId`​ 値と一致する ​`bookId`​ 値が含まれる ​`secondInput`​ の要素を返します。 - 2 番目の ​`map`​ 関数は、その絞り込まれた要素を評価し、​`secondInputValue.author`​ を使用して、オブジェクト ​`{author : secondInputValue.author}`​ の ​`"author"`​ 項目の値を選択して入力します。 - `filter`​ は、2 番目の ​`map`​ 関数のスコープを同じ ​`bookId`​ を共有する ​`secondInput`​ のオブジェクトに制限します。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> { theId : firstInputValue.bookId as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains firstInputValue.bookId) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theId": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theId": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` 次のスクリプトのように、​`id`​ の別名 (​`using (id = firstInputValue.bookId)`​ で作成される) を使用して同じスクリプトを記述することもできます。別名は、長いセレクター式 ​`firstInputValue.bookId`​ を置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> using (id = firstInputValue.bookId) { theValue : id as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains id) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theValue": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theValue": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` どちらのスクリプトも、同じ出力が生成されます。 ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-extract-data) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-reference-multiple-inputs) - [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-zip-arrays-together) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # 個別のオブジェクトの項目のマージ DataWeave の例では、個別の入力配列の項目をマージします。最初の DataWeave 変数 (​`firstInput`​) は本 ID ごとに価格をリストし、2 番目の DataWeave 変数 (​`secondInput`​) は本 ID ごとに著者をリストします。各本には一意の ​`bookId`​ キーがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave スクリプトでは、同じ出力が生成されます。どちらのスクリプトも検索条件と共に 2 つの ​`map`​ 関数を使用しますが、一方のスクリプトは ​`bookId`​ の別名も作成します。 - 最初の ​`map`​ 関数は、​`firstInput`​ 配列の要素を反復処理します。その関数が各要素を評価するときに、2 番目の ​`map`​ 関数は検索条件を使用して、​`filter`​ 条件 (​`secondInput filter ($.*bookId contains firstInputValue.bookId)`​) に一致する 2 番目の配列 (​`secondInput`​) の要素を識別します。この検索条件は、​`firstInput`​ 要素の ​`bookId`​ 値と一致する ​`bookId`​ 値が含まれる ​`secondInput`​ の要素を返します。 - 2 番目の ​`map`​ 関数は、その絞り込まれた要素を評価し、​`secondInputValue.author`​ を使用して、オブジェクト ​`{author : secondInputValue.author}`​ の ​`"author"`​ 項目の値を選択して入力します。 - `filter`​ は、2 番目の ​`map`​ 関数のスコープを同じ ​`bookId`​ を共有する ​`secondInput`​ のオブジェクトに制限します。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> { theId : firstInputValue.bookId as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains firstInputValue.bookId) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theId": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theId": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` 次のスクリプトのように、​`id`​ の別名 (​`using (id = firstInputValue.bookId)`​ で作成される) を使用して同じスクリプトを記述することもできます。別名は、長いセレクター式 ​`firstInputValue.bookId`​ を置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> using (id = firstInputValue.bookId) { theValue : id as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains id) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theValue": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theValue": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` どちらのスクリプトも、同じ出力が生成されます。 ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-extract-data) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-reference-multiple-inputs) - [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-zip-arrays-together) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # 個別のオブジェクトの項目のマージ DataWeave の例では、個別の入力配列の項目をマージします。最初の DataWeave 変数 (​`firstInput`​) は本 ID ごとに価格をリストし、2 番目の DataWeave 変数 (​`secondInput`​) は本 ID ごとに著者をリストします。各本には一意の ​`bookId`​ キーがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave スクリプトでは、同じ出力が生成されます。どちらのスクリプトも検索条件と共に 2 つの ​`map`​ 関数を使用しますが、一方のスクリプトは ​`bookId`​ の別名も作成します。 - 最初の ​`map`​ 関数は、​`firstInput`​ 配列の要素を反復処理します。その関数が各要素を評価するときに、2 番目の ​`map`​ 関数は検索条件を使用して、​`filter`​ 条件 (​`secondInput filter ($.*bookId contains firstInputValue.bookId)`​) に一致する 2 番目の配列 (​`secondInput`​) の要素を識別します。この検索条件は、​`firstInput`​ 要素の ​`bookId`​ 値と一致する ​`bookId`​ 値が含まれる ​`secondInput`​ の要素を返します。 - 2 番目の ​`map`​ 関数は、その絞り込まれた要素を評価し、​`secondInputValue.author`​ を使用して、オブジェクト ​`{author : secondInputValue.author}`​ の ​`"author"`​ 項目の値を選択して入力します。 - `filter`​ は、2 番目の ​`map`​ 関数のスコープを同じ ​`bookId`​ を共有する ​`secondInput`​ のオブジェクトに制限します。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> { theId : firstInputValue.bookId as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains firstInputValue.bookId) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theId": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theId": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` 次のスクリプトのように、​`id`​ の別名 (​`using (id = firstInputValue.bookId)`​ で作成される) を使用して同じスクリプトを記述することもできます。別名は、長いセレクター式 ​`firstInputValue.bookId`​ を置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> using (id = firstInputValue.bookId) { theValue : id as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains id) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theValue": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theValue": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` どちらのスクリプトも、同じ出力が生成されます。 ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-reference-multiple-inputs) - [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-zip-arrays-together) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # 個別のオブジェクトの項目のマージ DataWeave の例では、個別の入力配列の項目をマージします。最初の DataWeave 変数 (​`firstInput`​) は本 ID ごとに価格をリストし、2 番目の DataWeave 変数 (​`secondInput`​) は本 ID ごとに著者をリストします。各本には一意の ​`bookId`​ キーがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave スクリプトでは、同じ出力が生成されます。どちらのスクリプトも検索条件と共に 2 つの ​`map`​ 関数を使用しますが、一方のスクリプトは ​`bookId`​ の別名も作成します。 - 最初の ​`map`​ 関数は、​`firstInput`​ 配列の要素を反復処理します。その関数が各要素を評価するときに、2 番目の ​`map`​ 関数は検索条件を使用して、​`filter`​ 条件 (​`secondInput filter ($.*bookId contains firstInputValue.bookId)`​) に一致する 2 番目の配列 (​`secondInput`​) の要素を識別します。この検索条件は、​`firstInput`​ 要素の ​`bookId`​ 値と一致する ​`bookId`​ 値が含まれる ​`secondInput`​ の要素を返します。 - 2 番目の ​`map`​ 関数は、その絞り込まれた要素を評価し、​`secondInputValue.author`​ を使用して、オブジェクト ​`{author : secondInputValue.author}`​ の ​`"author"`​ 項目の値を選択して入力します。 - `filter`​ は、2 番目の ​`map`​ 関数のスコープを同じ ​`bookId`​ を共有する ​`secondInput`​ のオブジェクトに制限します。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> { theId : firstInputValue.bookId as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains firstInputValue.bookId) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theId": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theId": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` 次のスクリプトのように、​`id`​ の別名 (​`using (id = firstInputValue.bookId)`​ で作成される) を使用して同じスクリプトを記述することもできます。別名は、長いセレクター式 ​`firstInputValue.bookId`​ を置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> using (id = firstInputValue.bookId) { theValue : id as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains id) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theValue": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theValue": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` どちらのスクリプトも、同じ出力が生成されます。 ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-extract-data) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-reference-multiple-inputs) - [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-zip-arrays-together) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # 個別のオブジェクトの項目のマージ DataWeave の例では、個別の入力配列の項目をマージします。最初の DataWeave 変数 (​`firstInput`​) は本 ID ごとに価格をリストし、2 番目の DataWeave 変数 (​`secondInput`​) は本 ID ごとに著者をリストします。各本には一意の ​`bookId`​ キーがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 DataWeave スクリプトでは、同じ出力が生成されます。どちらのスクリプトも検索条件と共に 2 つの ​`map`​ 関数を使用しますが、一方のスクリプトは ​`bookId`​ の別名も作成します。 - 最初の ​`map`​ 関数は、​`firstInput`​ 配列の要素を反復処理します。その関数が各要素を評価するときに、2 番目の ​`map`​ 関数は検索条件を使用して、​`filter`​ 条件 (​`secondInput filter ($.*bookId contains firstInputValue.bookId)`​) に一致する 2 番目の配列 (​`secondInput`​) の要素を識別します。この検索条件は、​`firstInput`​ 要素の ​`bookId`​ 値と一致する ​`bookId`​ 値が含まれる ​`secondInput`​ の要素を返します。 - 2 番目の ​`map`​ 関数は、その絞り込まれた要素を評価し、​`secondInputValue.author`​ を使用して、オブジェクト ​`{author : secondInputValue.author}`​ の ​`"author"`​ 項目の値を選択して入力します。 - `filter`​ は、2 番目の ​`map`​ 関数のスコープを同じ ​`bookId`​ を共有する ​`secondInput`​ のオブジェクトに制限します。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> { theId : firstInputValue.bookId as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains firstInputValue.bookId) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theId": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theId": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` 次のスクリプトのように、​`id`​ の別名 (​`using (id = firstInputValue.bookId)`​ で作成される) を使用して同じスクリプトを記述することもできます。別名は、長いセレクター式 ​`firstInputValue.bookId`​ を置き換えます。 DataWeave スクリプト: ```dataweave %dw 2.0 var firstInput = [ { "bookId":"101", "title":"world history", "price":"19.99" }, { "bookId":"202", "title":"the great outdoors", "price":"15.99" } ] var secondInput = [ { "bookId":"101", "author":"john doe" }, { "bookId":"202", "author":"jane doe" } ] output application/json --- firstInput map (firstInputValue) -> using (id = firstInputValue.bookId) { theValue : id as Number, theTitle: firstInputValue.title, thePrice: firstInputValue.price as Number, (secondInput filter ($.*bookId contains id) map (secondInputValue) -> { theAuthor : secondInputValue.author }) } ``` 出力 JSON: ```json [ { "theValue": 101, "theTitle": "world history", "thePrice": 19.99, "theAuthor": "john doe" }, { "theValue": 202, "theTitle": "the great outdoors", "thePrice": 15.99, "theAuthor": "jane doe" } ] ``` どちらのスクリプトも、同じ出力が生成されます。 ## [](#関連する例)関連する例 - [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-extract-data) - [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-reference-multiple-inputs) - [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-zip-arrays-together) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # 出力からの項目の除外 この DataWeave の例では、特定の XML 要素を出力から除外します。次のようなタスクを実行して、機密データを削除できます。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、次の関数を使用します。 - 特定の ​`key:value`​ ペア (ここでは ​`ssn`​ および ​`password`​ XML 要素) を削除する ​`-`​。 - XML 要素を調べる ​`mapObject`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- users: { (payload.users mapObject { user: { personal_information: $.personal_information - "ssn", login_information: $.login_information - "password" } }) } ``` 入力 XML ペイロード: ```xml Emiliano Romoaldo Lesende 001-08-84382 3miliano mypassword1234 Mariano Toribio de Achaval 002-05-34738 machaval mypassword4321 ``` 出力 XML: ```xml Emiliano Romoaldo Lesende 3miliano Mariano Toribio de Achaval machaval ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-a-field-when-present) - [項目の値の変更](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-change-value-of-a-field) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # 出力からの項目の除外 この DataWeave の例では、特定の XML 要素を出力から除外します。次のようなタスクを実行して、機密データを削除できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - 特定の ​`key:value`​ ペア (ここでは ​`ssn`​ および ​`password`​ XML 要素) を削除する ​`-`​。 - XML 要素を調べる ​`mapObject`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- users: { (payload.users mapObject { user: { personal_information: $.personal_information - "ssn", login_information: $.login_information - "password" } }) } ``` 入力 XML ペイロード: ```xml Emiliano Romoaldo Lesende 001-08-84382 3miliano mypassword1234 Mariano Toribio de Achaval 002-05-34738 machaval mypassword4321 ``` 出力 XML: ```xml Emiliano Romoaldo Lesende 3miliano Mariano Toribio de Achaval machaval ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-a-field-when-present) - [項目の値の変更](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-change-value-of-a-field) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # 出力からの項目の除外 この DataWeave の例では、特定の XML 要素を出力から除外します。次のようなタスクを実行して、機密データを削除できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - 特定の ​`key:value`​ ペア (ここでは ​`ssn`​ および ​`password`​ XML 要素) を削除する ​`-`​。 - XML 要素を調べる ​`mapObject`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- users: { (payload.users mapObject { user: { personal_information: $.personal_information - "ssn", login_information: $.login_information - "password" } }) } ``` 入力 XML ペイロード: ```xml Emiliano Romoaldo Lesende 001-08-84382 3miliano mypassword1234 Mariano Toribio de Achaval 002-05-34738 machaval mypassword4321 ``` 出力 XML: ```xml Emiliano Romoaldo Lesende 3miliano Mariano Toribio de Achaval machaval ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-a-field-when-present) - [項目の値の変更](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-change-value-of-a-field) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # 出力からの項目の除外 この DataWeave の例では、特定の XML 要素を出力から除外します。次のようなタスクを実行して、機密データを削除できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - 特定の ​`key:value`​ ペア (ここでは ​`ssn`​ および ​`password`​ XML 要素) を削除する ​`-`​。 - XML 要素を調べる ​`mapObject`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- users: { (payload.users mapObject { user: { personal_information: $.personal_information - "ssn", login_information: $.login_information - "password" } }) } ``` 入力 XML ペイロード: ```xml Emiliano Romoaldo Lesende 001-08-84382 3miliano mypassword1234 Mariano Toribio de Achaval 002-05-34738 machaval mypassword4321 ``` 出力 XML: ```xml Emiliano Romoaldo Lesende 3miliano Mariano Toribio de Achaval machaval ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-a-field-when-present) - [項目の値の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-change-value-of-a-field) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # 出力からの項目の除外 この DataWeave の例では、特定の XML 要素を出力から除外します。次のようなタスクを実行して、機密データを削除できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - 特定の ​`key:value`​ ペア (ここでは ​`ssn`​ および ​`password`​ XML 要素) を削除する ​`-`​。 - XML 要素を調べる ​`mapObject`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- users: { (payload.users mapObject { user: { personal_information: $.personal_information - "ssn", login_information: $.login_information - "password" } }) } ``` 入力 XML ペイロード: ```xml Emiliano Romoaldo Lesende 001-08-84382 3miliano mypassword1234 Mariano Toribio de Achaval 002-05-34738 machaval mypassword4321 ``` 出力 XML: ```xml Emiliano Romoaldo Lesende 3miliano Mariano Toribio de Achaval machaval ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-a-field-when-present) - [項目の値の変更](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-change-value-of-a-field) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # 出力からの項目の除外 この DataWeave の例では、特定の XML 要素を出力から除外します。次のようなタスクを実行して、機密データを削除できます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、次の関数を使用します。 - 特定の ​`key:value`​ ペア (ここでは ​`ssn`​ および ​`password`​ XML 要素) を削除する ​`-`​。 - XML 要素を調べる ​`mapObject`​。 DataWeave スクリプト: ```dataweave %dw 2.0 output application/xml --- users: { (payload.users mapObject { user: { personal_information: $.personal_information - "ssn", login_information: $.login_information - "password" } }) } ``` 入力 XML ペイロード: ```xml Emiliano Romoaldo Lesende 001-08-84382 3miliano mypassword1234 Mariano Toribio de Achaval 002-05-34738 machaval mypassword4321 ``` 出力 XML: ```xml Emiliano Romoaldo Lesende 3miliano Mariano Toribio de Achaval machaval ``` ## [](#関連する例)関連する例 - [存在する項目の出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-a-field-when-present) - [項目の値の変更](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-change-value-of-a-field) - [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-conditional-list-reduction-via-function) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # 削除 ## [](#remove1)remove(text: String, toRemove: String): String 文字列から指定されたパターンのすべての出現を削除します。 _DataWeave バージョン 2.4.0 で導入されました。_​ ### [](#パラメーター)パラメーター
名前 説明

​text

削除元となるテキスト。

​toRemove

削除するパターン。

### [](#例)例 次の例では、​`remove`​ を使用して不要なプロパティを削除する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import remove from dw::core::Strings output application/json --- "lazyness purity state higher-order stateful" remove "state" ``` #### [](#出力)出力 ```Json "lazyness purity higher-order ful" ``` ## [](#remove2)remove(text: Null, toRemove: Any): Null `remove`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_​ # 削除 ## [](#remove1)remove(text: String, toRemove: String): String 文字列から指定されたパターンのすべての出現を削除します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

削除元となるテキスト。

toRemove

削除するパターン。

### [](#例)例 次の例では、​`remove`​ を使用して不要なプロパティを削除する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import remove from dw::core::Strings output application/json --- "lazyness purity state higher-order stateful" remove "state" ``` #### [](#出力)出力 ```Json "lazyness purity higher-order ful" ``` ## [](#remove2)remove(text: Null, toRemove: Any): Null `remove`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # 削除 ## [](#remove1)remove(text: String, toRemove: String): String 文字列から指定されたパターンのすべての出現を削除します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

削除元となるテキスト。

toRemove

削除するパターン。

### [](#例)例 次の例では、​`remove`​ を使用して不要なプロパティを削除する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import remove from dw::core::Strings output application/json --- "lazyness purity state higher-order stateful" remove "state" ``` #### [](#出力)出力 ```Json "lazyness purity higher-order ful" ``` ## [](#remove2)remove(text: Null, toRemove: Any): Null `remove`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # 削除 ## [](#remove1)remove(text: String, toRemove: String): String 文字列から指定されたパターンのすべての出現を削除します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

削除元となるテキスト。

toRemove

削除するパターン。

### [](#例)例 次の例では、​`remove`​ を使用して不要なプロパティを削除する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import remove from dw::core::Strings output application/json --- "lazyness purity state higher-order stateful" remove "state" ``` #### [](#出力)出力 ```Json "lazyness purity higher-order ful" ``` ## [](#remove2)remove(text: Null, toRemove: Any): Null `remove`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # 削除 ## [](#remove1)remove(text: String, toRemove: String): String 文字列から指定されたパターンのすべての出現を削除します。 _DataWeave バージョン 2.4.0 で導入されました。_ ### [](#パラメーター)パラメーター
名前 説明

text

削除元となるテキスト。

toRemove

削除するパターン。

### [](#例)例 次の例では、​`remove`​ を使用して不要なプロパティを削除する方法を示しています。 #### [](#ソース)ソース ```DataWeave %dw 2.0 import remove from dw::core::Strings output application/json --- "lazyness purity state higher-order stateful" remove "state" ``` #### [](#出力)出力 ```Json "lazyness purity higher-order ful" ``` ## [](#remove2)remove(text: Null, toRemove: Any): Null `remove`​ を ​`null`​ 値に使用できるようにするヘルパー関数。 _DataWeave バージョン 2.4.0 で導入されました。_ # 動的ライタープロパティの使用 以下の例の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​からパイプ値を選択しています。例ではスクリプトの本文で DataWeave writer 関数を使用してカンマ区切りの入力をパイプ区切りの出力に変更します。 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Set Variable コンポーネント (​``​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。 Transform Message コンポーネント (​``​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。 `payload`​ に設定された Logger コンポーネント (​``​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。 Mule フロー: ```xml ``` 例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します: `var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})` パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します: `write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})`​ スクリプトでは DataWeave ​`output`​ ディレクティブ ​`output application/csv with binary`​ をスクリプトのヘッダーで使用しています。​`write`​ 関数で CSV 出力が返されたため、​`with binary`​ 設定 (​[Mule 4.3.0 で導入済み](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats#set_mime_types)​) を追加してバイナリライターを呼び出す必要があります。この設定がないと、DataWeave は CSV を再度書き込もうとするため、​`CSV Structure should be an Array or Object but got String, while writing CSV.`​ の問題が発生します。 Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。 1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。 2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。 3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。 4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。 サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/mule-runtime/latest/transform-preview-transformation-output-studio-task)​を参照してください。 ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # 動的ライタープロパティの使用 以下の例の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​からパイプ値を選択しています。例ではスクリプトの本文で DataWeave writer 関数を使用してカンマ区切りの入力をパイプ区切りの出力に変更します。 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Set Variable コンポーネント (​``​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。 Transform Message コンポーネント (​``​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。 `payload`​ に設定された Logger コンポーネント (​``​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。 Mule フロー: ```xml ``` 例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します: `var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})` パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.5/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します: `write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})` スクリプトでは DataWeave ​`output`​ ディレクティブ ​`output application/csv with binary`​ をスクリプトのヘッダーで使用しています。​`write`​ 関数で CSV 出力が返されたため、​`with binary`​ 設定 (​[Mule 4.3.0 で導入済み](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats#set_mime_types)​) を追加してバイナリライターを呼び出す必要があります。この設定がないと、DataWeave は CSV を再度書き込もうとするため、​`CSV Structure should be an Array or Object but got String, while writing CSV.`​ の問題が発生します。 Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。 1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。 2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_​\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。 3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。 4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。 サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/mule-runtime/latest/transform-preview-transformation-output-studio-task)​を参照してください。 ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # 動的ライタープロパティの使用 以下の例の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​からパイプ値を選択しています。例ではスクリプトの本文で DataWeave writer 関数を使用してカンマ区切りの入力をパイプ区切りの出力に変更します。 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Set Variable コンポーネント (​``​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。 Transform Message コンポーネント (​``​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。 `payload`​ に設定された Logger コンポーネント (​``​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。 Mule フロー: ```xml ``` 例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します: `var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})` パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します: `write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})` スクリプトでは DataWeave ​`output`​ ディレクティブ ​`output application/csv with binary`​ をスクリプトのヘッダーで使用しています。​`write`​ 関数で CSV 出力が返されたため、​`with binary`​ 設定 (​[Mule 4.3.0 で導入済み](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats#set_mime_types)​) を追加してバイナリライターを呼び出す必要があります。この設定がないと、DataWeave は CSV を再度書き込もうとするため、​`CSV Structure should be an Array or Object but got String, while writing CSV.`​ の問題が発生します。 Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。 1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。 2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_​\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。 3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。 4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。 サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/mule-runtime/latest/transform-preview-transformation-output-studio-task)​を参照してください。 ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # 動的ライタープロパティの使用 以下の例の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​からパイプ値を選択しています。例ではスクリプトの本文で DataWeave writer 関数を使用してカンマ区切りの入力をパイプ区切りの出力に変更します。 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Set Variable コンポーネント (​``​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。 Transform Message コンポーネント (​``​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。 `payload`​ に設定された Logger コンポーネント (​``​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。 Mule フロー: ```xml ``` 例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します: `var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})` パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.7/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します: `write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})` スクリプトでは DataWeave ​`output`​ ディレクティブ ​`output application/csv with binary`​ をスクリプトのヘッダーで使用しています。​`write`​ 関数で CSV 出力が返されたため、​`with binary`​ 設定 (​[Mule 4.3.0 で導入済み](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats#set_mime_types)​) を追加してバイナリライターを呼び出す必要があります。この設定がないと、DataWeave は CSV を再度書き込もうとするため、​`CSV Structure should be an Array or Object but got String, while writing CSV.`​ の問題が発生します。 Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。 1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。 2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_​\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。 3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。 4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。 サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/mule-runtime/latest/transform-preview-transformation-output-studio-task)​を参照してください。 ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # 動的ライタープロパティの使用 以下の例の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/mule-runtime/latest/about-mule-variables)​からパイプ値を選択しています。例ではスクリプトの本文で DataWeave writer 関数を使用してカンマ区切りの入力をパイプ区切りの出力に変更します。 例の Scheduler コンポーネント (​``​) では、フローをトリガーするたびに Mule イベントを生成します。 Set Variable コンポーネント (​``​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。 Transform Message コンポーネント (​``​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。 `payload`​ に設定された Logger コンポーネント (​``​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。 Mule フロー: ```xml ``` 例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します: `var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})` パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します: `write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})` スクリプトでは DataWeave ​`output`​ ディレクティブ ​`output application/csv with binary`​ をスクリプトのヘッダーで使用しています。​`write`​ 関数で CSV 出力が返されたため、​`with binary`​ 設定 (​[Mule 4.3.0 で導入済み](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats#set_mime_types)​) を追加してバイナリライターを呼び出す必要があります。この設定がないと、DataWeave は CSV を再度書き込もうとするため、​`CSV Structure should be an Array or Object but got String, while writing CSV.`​ の問題が発生します。 Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。 1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。 2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_​\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。 3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。 4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。 サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/mule-runtime/latest/transform-preview-transformation-output-studio-task)​を参照してください。 ## [](#関連情報)関連情報 - [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats) - [コアコンポーネント](https://docs.mulesoft.com/mule-runtime/latest/about-components) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # 固定幅形式 MIME タイプ: `application/flatfile`​ ID: `flatfile`​ 固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ DataWeave は、この形式で入力データを読み取る指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​nulls​、それ以外の場合は ​spaces

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​: すべてのデータを実際の値として処理する

  • spaces​: スペースのみで構成される項目を欠落値として解釈する

  • zeroes​: 「0」文字のみで構成される数値項目とスペースのみで構成される文字項目を欠落値として解釈する

  • nulls​: 0 バイトのみで構成される項目を欠落値として解釈する

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。

recordParsing

String

strict

予想される、行/レコード間の分離:

  • strict​: 各レコードの末尾で改行が予想される。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

schemaPath​ (必須)

String

null

スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

​useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、リーダーは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。​有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。 有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ DataWeave は、この形式で出力データを書き込む指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

encoding

String

null

このライターで使用されるエンコード (​UTF-8​ など)。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​NULLS​、それ以外の場合は ​SPACES

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ を使用し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • SPACES​: 項目をスペースで埋める。

  • ZEROES​: 数値項目を ​0​ 文字で、文字項目をスペース文字で埋める。

  • NULLS​: 項目を 0 バイトで埋める。

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。

recordTerminator

String

システムプロパティ ​line.separator

レコード区切り文字 (改行)。有効値:

  • lf​

  • cr​

  • crlf​

  • none​

Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

retainEmptyStringFieldsOnParsing

false

true​ に設定すると、このプロパティによりリーダーは値がない項目を保持し、その値を空の文字列に設定します。 2023 年 1 月バージョンの Mule バージョン 4.3.0-20221212 の DataWeave 2.3 で導入されました。

schemaPath​ (必須)

String

null

スキーマ定義。使用するスキーマファイルが配置されているパス。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

trimValues

Boolean

false

末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効な値は、​true​ または ​false​ です。

trimValues

Boolean

false

切り捨て値が項目幅より長いかどうかを示します。有効なオプションは、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

​useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、ライターは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

zonedDecimalStrict

## [](#mime_type_fixed_width)サポートされる MIME タイプ (固定幅) 固定幅形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile​

# 固定幅形式 MIME タイプ: `application/flatfile`​ ID: `flatfile`​ 固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ DataWeave は、この形式で入力データを読み取る指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​nulls​、それ以外の場合は ​spaces

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​: すべてのデータを実際の値として処理する

  • spaces​: スペースのみで構成される項目を欠落値として解釈する

  • zeroes​: 「0」文字のみで構成される数値項目とスペースのみで構成される文字項目を欠落値として解釈する

  • nulls​: 0 バイトのみで構成される項目を欠落値として解釈する

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。​

recordParsing

String

strict

予想される、行/レコード間の分離:

  • strict​: 各レコードの末尾で改行が予想される。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

schemaPath​ (必須)

String

null

スキーマ定義。入力の解析で使用するスキーマファイルのローカルディスク内の場所。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を解析する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を解析する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、リーダーは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。​有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。 有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ DataWeave は、この形式で出力データを書き込む指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ。

deferred

Boolean

false

true​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。 有効な値は、​true​ または ​false​ です。

encoding

String

null

このライターで使用されるエンコード (​UTF-8​ など)。

enforceRequires

Boolean

false

必須値がない場合にエラーになります。 有効な値は、​true​ または ​false​ です。

missingValues

String

コピーブックスキーマの場合は ​NULLS​、それ以外の場合は ​SPACES

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ を使用し、​missingValues​ に次のいずれかの値を使用します。

  • NONE​: 欠落値の場合に何も書き込まない。

  • SPACES​: 項目をスペースで埋める。

  • ZEROES​: 数値項目を ​0​ 文字で、文字項目をスペース文字で埋める。

  • NULLS​: 項目を 0 バイトで埋める。

notTruncateDependingOnSubjectNotPresent

Boolean

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。 2021 年 8 月リリースの Mule 4.3.0-20210622 の DataWeave 2.3 で導入されました。​

recordTerminator

String

システムプロパティ ​line.separator

レコード区切り文字 (改行)。有効値:

  • lf​

  • cr​

  • crlf​

  • none​

Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

retainEmptyStringFieldsOnParsing

Boolean

false

true​ に設定すると、このプロパティによりリーダーは値がない項目を保持し、その値を空の文字列に設定します。リーダーのデフォルトの動作では、これらの項目を削除します。 2023 年 1 月バージョンの Mule バージョン 4.4.0-20230102 の DataWeave 2.4 で導入されました。

schemaPath​ (必須)

String

null

スキーマ定義。使用するスキーマファイルが配置されているパス。

segmentIdent

String

null

固定幅のスキーマまたはコピーブックスキーマのセグメント識別子 (1 つのセグメント/レコード定義を作成する場合と、スキーマに複数のセグメント定義が含まれている場合にのみ必要)。

structureIdent

String

null

フラットファイルスキーマのセグメント識別子 (構造定義を作成する場合と、スキーマに複数の構造定義が含まれている場合にのみ必要)。

trimValues

Boolean

false

末尾の文字を切り捨てることで、項目の長さを超える文字列値を切り取ります。有効な値は、​true​ または ​false​ です。

trimValues

Boolean

false

切り捨て値が項目幅より長いかどうかを示します。有効なオプションは、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill​

​Boolean

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、ライターは ​missingValues​ プロパティの設定に従います。 2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの ​strict​ ASCII 形式を使用します。有効な値は、​true​ または ​false​ です。

## [](#mime_type_fixed_width)サポートされる MIME タイプ (固定幅) 固定幅形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile​

# 固定幅形式 MIME タイプ: `application/flatfile` ID: `flatfile` 固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type_fixed_width)サポートされる MIME タイプ (固定幅) 固定幅形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# 固定幅形式 MIME タイプ: `application/flatfile` ID: `flatfile` 固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type_fixed_width)サポートされる MIME タイプ (固定幅) 固定幅形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# 固定幅形式 MIME タイプ: `application/flatfile` ID: `flatfile` 固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定を有効化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type_fixed_width)サポートされる MIME タイプ (固定幅) 固定幅形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# 固定幅形式 MIME タイプ: `application/flatfile` ID: `flatfile` 固定幅の種別は技術的にはフラットファイル形式の種別とみなされますが、このオプションを選択すると、Transform コンポーネントでは、この形式のニーズに合わせて適切に調整された設定が提供されます。
DataWeave の固定幅は最大 15 MB のファイルをサポートし、メモリ要件は約 40 対 1 です。たとえば、1 MB のファイルは処理に最大 40 MB のメモリを必要とするため、大きい固定幅ファイルに対する TPS のニーズと組み合わせてこのメモリ要件を考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。
## [](#properties)Configuration のプロパティ DataWeave では、この形式の以下の設定プロパティがサポートされています。 ### [](#reader_properties)Reader のプロパティ この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

allowLenientWithBinaryNotEndElement

Boolean

false

スキーマに型が Binary (バイナリ) または Packed (パック) の要素が含まれていると、最後の要素の形式種別に関係なく、​lenient​ オプションで短いレコードが許可されません。このプロパティを ​true​ に設定すると、検証はレコードが Binary (バイナリ) または Packed (パック) の型で終了するケースのみに適用されます。

有効な値は、​true​ または ​false​ です。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定をアクティブ化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordParsing

String

'strict'

予想される、行/レコード間の分離の種別を指定します。

  • strict​: 各レコードの末尾で改行が予想される。 strict​ はデフォルトです。

  • lenient​: 改行が使用されるが、レコードがスキーマ仕様よりも短いまたは長い場合がある。ペイロードに改行がない場合は、​lenient​ を使用しないでください。​recordParsing​ のもう 1 つのオプションで改行がないレコードがサポートされます。

  • noTerminator​: レコードが分離されずに互いに続く。このオプションは、改行がない固定長のレコードでお勧めします。

  • singleRecord​: 入力全体が 1 つのレコード。

種別 ​Binary​ または ​Packed​ のスキーマでは、改行を検出できないため、​recordParsing​ を ​lenient​ に設定すると、長いレコードのみを処理でき、短いレコードは処理できません。現在、このスキーマも特定の 1 バイト文字エンコードでのみ機能します (つまり、UTF-8 などの複数バイト形式では機能しません)。

retainEmptyStringFieldsOnParsing

Boolean (ブール)

false

解析動作の出力マップで、デフォルト値が設定された文字列項目を欠落した状態のまま保持できるようにします。

有効な値は、​true​ または ​false​ です。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

### [](#writer_properties)Writer のプロパティ この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター 型 デフォルト 説明

bufferSize

Number

8192

バッファライターのサイズ (バイト)。値は ​8​ よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

enforceRequires

Boolean

false

true​ に設定されていると、必須値がない場合にエラーが発生します。

有効な値は、​true​ または ​false​ です。

missingValues

String

null

欠落値を表すために使用される文字を入力します。デフォルト以外の設定をアクティブ化するには、​useMissCharAsDefaultForFill​ プロパティを ​true​ に設定し、​missingValues​ に次のいずれかの値を使用します。

  • none​ (リーダーの場合) または ​NONE​ (ライターの場合): すべてのデータを値として処理する。

  • spaces​ (リーダーの場合) または ​SPACES​ (ライターの場合): スペースのみで構成される項目を欠落値として解釈する。フラットファイルまたは固定幅形式のデフォルトです。

  • zeroes​ (リーダーの場合) または ​ZEROES​ (ライターの場合): 0​ 文字のみで構成される数値項目​と​スペースのみで構成される文字項目を欠落値として解釈する。

  • nulls​ (リーダーの場合) または ​NULLS​ (ライターの場合): 0​ バイトのみで構成される項目を欠落値として解釈する。COBOL コピーブックスキーマのデフォルトです。

notTruncateDependingOnSubjectNotPresent

Boolean (ブール)

false

DEPENDING ON の対象が存在しない場合にグループ全体を入力します。

有効な値は、​true​ または ​false​ です。

recordTerminator

String

null

レコード区切り文字の改行。有効な値: lf​、​cr​、​crlf​、​none​。Mule バージョン 4.0.4 以降では、これは、複数のレコードがある場合の区切り文字としてのみ使用されます。値は文字コードに直接変換されます (​none​ では各レコードの終端はありません)。

schemaPath​ (必須)

String

null

スキーマ定義へのパス。入力を解析するスキーマファイルのローカルディスク内の場所を指定します。

segmentIdent

String

null

固定幅のスキーマまたは COBOL コピーブックスキーマのセグメント識別子。スキーマに複数のセグメント定義が含まれている場合、単一セグメントまたはレコード定義を解析するときに必要になります。

structureIdent

String

null

フラットファイルスキーマの構造識別子。スキーマに複数の構造定義が含まれている場合、構造定義を解析するときに必要になります。

trimValues

Boolean

false

項目の幅より長い値を切り捨てます。

有効な値は、​true​ または ​false​ です。

truncateDependingOn

Boolean

false

COBOL コピーブックの DEPENDING ON 値を、使用される長さに切り捨てます。

有効な値は、​true​ または ​false​ です。

useMissCharAsDefaultForFill

Boolean (ブール)

false

デフォルトでは、フラットファイルリーダーおよびライターでは、欠落文字にスペースが使用され、​missingValues​ プロパティの設定が無視されます。このプロパティを ​true​ に設定すると、DataWeave は ​missingValues​ プロパティの設定に従います。2021 年 9 月リリースの Mule 4.3.0-20210823 の DataWeave 2.3 (2.3.0-20210823) で導入されました。

有効な値は、​true​ または ​false​ です。

zonedDecimalStrict

Boolean

false

COBOL コピーブックのゾーン 10 進数値に署名エンコードの 'strict' ASCII 形式を使用します。

有効な値は、​true​ または ​false​ です。

## [](#mime_type_fixed_width)サポートされる MIME タイプ (固定幅) 固定幅形式では、次の MIME タイプがサポートされています。
MIME タイプ

*/flatfile

# 型システム DataWeave バージョン 2 では型システムがサポートされます。型システムで実行される型チェックを利用するには、このセクションで説明されている変数および関数の制約式を提供する必要があります。この型の値を定義する方法についての詳細は、​[「型の値構成」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-types)​を参照してください。 型システムでは、次のような構成要素のセットに対して一連の制約を定義します。 - 変数 - 関数パラメーター この制約は、型チェックフェーズで、関数コールの変数または引数に割り当てられた値に DataWeave で制約を確実に適用する場合に使用されます。次に例を示します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json var userName: String = "John" `userName`​ の変数定義には、型 ​`String`​ の値を割り当てるといった制約があります。 他の値のデータ型が割り当てられた場合、型チェックエラーが発生します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" 関数 ​`toUser`​ のコールに対する制約では、1 番目の引数の型が ​`Number`​、2 番目の引数の型が ​`String`​ である (これらの型に強制変換できるようにする) 必要があります。また、別の制約では、関数の結果の型が ​`String`​ である必要があります。この制約は ​`toUser`​ のコールでは使用されません。これは、関数本文で適切な型が生成されたことを検証するための定義に適用されます。 toUser(123, "John") toUser("123", true) 2 番目のコールは失敗することが予想される場合がありますが、自動型強制を使用するとコールを正常終了し、両方のコールを正常に機能させることができます。2 番目の関数コールの場合は、​`String`​ 値 ​`"123"`​ を ​`Number`​ 値 ​`123`​ に変換し、​`Boolean`​ 値 ​`true`​ を ​`String`​ 値 ​`"true"`​ に変換する自動型強制があり、これにより関数をコールすることができます。 型チェックエラーが発生するコールの例として、​`toUser("a 12", "John")`​ があります。String (文字列) 値 ​`"a 12"`​ を ​`Number`​ 型に型強制できないためです。 また、DataWeave は、制約として型が指定されていない場合でも、グローバル型推定アルゴリズムを使用してコードを検証します。
制約の使用は省略可能ですが、大きなスクリプトや複数のスクリプトでは制約が役立つ場合があります。型システムでは型チェックアルゴリズムが実行されるため、DataWeave ロジックのバグを回避するには型システムが役立ちます。また、IDE でスクリプトを記述してこの制約を定義する場合、このツールを使用して型チェックエラーを見つけることができるため、スクリプトが実行されたときにスクリプトが失敗することはありません。
DataWeave の型システムでサポートされる型は 3 つのカテゴリに分割されます。 - 単純型 - 複合型 - 複雑型 ## [](#単純型)単純型 単純型は文字列やブールなどの値を表します。この値はアトミックです。つまり、この値は他の値から構成されていません。次の型は単純型です。 - `String`​ - `Boolean`​ - `Number`​ - `Regex`​ - `Null`​ - 一時的: `Date`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`Period`​ ### [](#null)Null `Null`​ は 1 つの値 (​`null`​) のみの型です。つまり、​`null`​ を、型 ​`Null`​ を除き、型 ​`String`​ やその他の型に割り当てることはできません。 たとえば、String モジュール内の ​`repeat`​ 関数にシグネチャー ​`repeat(String, Number): String`​ があるとします。つまり、この関数は 1 番目のパラメーターとして型 ​`String`​ の値のみを受け入れ、2 番目のパラメーターとして型 ​`Number.`​ の値のみを受け入れます。この関数は型 ​`String`​ の値を返します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json --- repeat("a", 3) これは ​`"aaa"`​ を返しますが、次の例ではエラーがスローされます。値 ​`null`​ を、型 ​`String`​ の値が想定されるパラメーターに割り当てることはできないためです。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(null, 3) 次の例では、スクリプトは 1 番目のパラメーターに型 ​`Null`​ の値を割り当てます (この値の型は ​`Type`​)。自動型強制によって値が型 ​`String`​ (​`"Null"`​) に変換されるため、これは ​`"NullNullNull"`​ を返します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(Null, 3) 一部の関数には、​`null`​ を使用してコールできるオーバーロード状態のシグネチャーがあります (関数にはさまざまなパラメーター種別の複数の定義があります)。 たとえば、​`dw::core::Strings`​ からの ​`isNumeric`​ 関数にシグネチャー ​`isNumeric(String): Boolean`​ があるとします。これは、文字列を受け取り、その文字列が数値の場合に結果を正常に返しますが、関数は ​`isNumeric(Null): Boolean`​ としても定義されています。 このため、​`null`​ (​`isNumeric(null)`​) を使用して関数 ​`isNumeric`​ をコールした場合、関数は例外をスローしません。実行時に、ディスパッチアルゴリズムである関数は、使用される値の型に基づいて正しい関数を選択します。​`null`​ を引数とする ​`isNumeric`​ の定義のため、この関数は ​`false`​ を返します。 ## [](#複合型)複合型 複合型には他の値が含まれます。複合型は ​`Array`​、​`Object`​、​`Function`​ です。 ### [](#array-配列-型)Array (配列) 型 配列の型は ​`Array`​ です。ここで、​`T`​ は、配列内の要素の型を定義する型パラメーターです。たとえば、​`Number`​ の ​`Array`​ 型を使用して変数を定義する構文を次に示します。 var idsList: Array = \[1, 22, 333, 4444\] 変数 ​`idsList`​ は、その変数に割り当てられた配列に ​`Number`​ 型の値のみが含まれる場合のみ、型チェックフェーズに合格します。 ### [](#object-オブジェクト-型)Object (オブジェクト) 型 `Object`​ 型は ​`Object`​ または ​`{}`​ の 2 つの方法で定義できます。この両方でオープンオブジェクトが定義されますが、キー-値ペアに対する制約は指定されません。「​[クローズドオブジェクトとオープンオブジェクト](#close_open_objects)​」も参照してください。 キー-値ペアに対する一連の制約を使用して ​`Object`​ 型を定義する構文は、​`Object`​ 型の値を定義する構文によく似ています。 { keyName @(attrName: AttrType): valueType, ... } たとえば、​`firstName`​ ​`String`​、​`lastName`​ ​`String`​、および ​`age`​ ​`Number`​ を使用して ​`User`​ 型を定義する構文を次に示します。 DataWeave スクリプト %dw 2.0 output application/json type User = { firstName: String, lastName: String, age: Number } 各キー-値ペアに修飾子を割り当てることで、項目が常に存在することや、項目が反復する可能性があることを指定できます。 反復する項目の場合は、​`*`​ を使用します。たとえば、次の型では、複数の ​`lastName`​ 項目を持つことができます。 DataWeave スクリプト %dw 2.0 output application/json { firstName: String, lastName\*: String, age: Number } 条件付き項目の場合は、​`?`​ を使用します。たとえば、次の型では、​`age`​ 項目は存在してもしなくても構いません。 DataWeave スクリプト %dw 2.0 output application/json { firstName: String, lastName\*: String, age?: Number } #### [](#close_open_objects)クローズドオブジェクトとオープンオブジェクト `Object`​ 型はクローズドまたはオープンにすることができます。​_クローズド_​オブジェクトでは、型で指定されたキー-値ペア以外の項目がない場合のみ、オブジェクト値を受け入れます。 _オープン_​オブジェクトでは、型で宣言された項目に対してのみ制約が適用され、すべての制約が検証された場合に型は値を受け入れます。この型は、宣言で示された項目とは別の項目を含むオブジェクトを受け入れます。特に指定しない限り、すべての ​`object`​ 型がオープンです。 次の例は、​`age`​ が型宣言に含まれていなくても、変数 ​`user`​ の型がオープンオブジェクトのため、成功します。 DataWeave スクリプト %dw 2.0 output application/json var user: {firstName: String, lastName: String} = {firstName: "John", lastName: "Smith", age: 34} クローズドオブジェクトを指定する構文は ​`{| |}`​ です。次の例では、​`User`​ 型でサポートされるキーを ​`firstName`​ と ​`lastName`​ のみに限定します。​`age`​ 項目が受け入れられないため、このスクリプトは例外をスローします。 DataWeave スクリプト %dw 2.0 output application/json var user: {|firstName: String, lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#function-関数-型)Function (関数) 型 DataWeave は関数型言語であり、関数は第一級オブジェクトとみなされます。つまり、関数は、関連付けられた型を持つ値です。 関数型を定義する構文を次に示します。 (paramType: ParamType,...) -> ReturnType たとえば、型 ​`String`​ のパラメーター、型 ​`Number`​ の 2 番目のパラメーター、および ​`Boolean`​ 戻り値を持つ ​`Function`​ 型を制約で定義する場合、正しい構文は次のようになります。 (paramA: String, paramB: Number) -> Boolean 次の例では、別の関数を引数として受け取る関数を定義します。 DataWeave スクリプト %dw 2.0 output application/json fun applyIDsChange(ids: Array, changeTo: (Number) -> Number): Array = ??? `changeTo`​ の制約 ​`(Number) → Number`​ に一致しない関数を含む関数 ​`applyIDsChange`​ をコールすると、DataWeave は型チェックエラーをスローします。 たとえば、次のコールでは、​`abs`​ が ​`Number`​ 型の値を取り、​`changeTo`​ パラメーターに一致する ​`Number`​ を返す関数のため、コールは正常に機能します。 applyIDsChange(\[1,-6, 3, -8\], abs) ただし、次のコールでは、​`sum`​ が ​`Array`​ を取り、パラメーター制約に一致しない ​`Number`​ を返す関数のため、コールは失敗します。 applyIDsChange(\[1,-6, 3, -8\], sum) ## [](#複雑型)複雑型 複雑型には、​`Any`​ と ​`Nothing`​ 型、​`Union`​ 型、​`Intersection`​ 型、および ​`Literal`​ 型が含まれます。この各型の名前は直感的なわかりやすい名前です。 ### [](#any-任意-と-nothing-空)Any (任意) と Nothing (空) 場合によって、型がすべての値を受け入れるために制約を適用できないことがあります。 - `Any`​ 型は、可能なすべての値を受け入れます。 - `Nothing`​ 型は値を受け入れませんが、すべての型に割り当てることができます。この型は明示的に使用されることは頻繁にはありませんが、型推定アルゴリズムで使用されます。 ### [](#union-結合-型)Union (結合) 型 `Union`​ 型は、型を構成するために使用されます。​`Union`​ 型を定義する構文を次に示します。 TypeA | TypeB | ... 次の例では、型 ​`String`​ または ​`Number`​ の値を受け入れる制約を使用して変数を定義します。 var age: String | Number = if (payload.allStrings) "32" else 32 一般的なパターンでは、​`Null`​ 型を ​`Union`​ 型と共に使用して、型が ​`null`​ を値として受け入れることを指定します。次の例では、関数 ​`parseEmail`​ は型 ​`String`​ または ​`Null`​ の入力を許容します。この場合、ペイロードの省略可能な項目 ​`email`​ を含むオブジェクトを使用でき、​`payload.email`​ を使用して関数をコールできます。 fun parseEmail(email: String | Null) = "Code that handles email being of type String or Null" ### [](#intersection-交差-型)Intersection (交差) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ `Intersection`​ 型は ​`Object`​ 型を交差させます。この場合、交差はオブジェクト型の連結 (​`++`​) として機能します。 `Intersection`​ 型の構文を次に示します。 TypeA & TypeB & ... 次の例では、​`Intersection`​ が 2 つの ​`Object`​ 型を連結し、結果として型 ​`{name: String, lastName: String}`​ が生成されます。この型は、追加のキー-値ペアを受け入れることができるオープンオブジェクトです。変数は、その変数に割り当てられた値を受け入れます。 var a: {name: String} & {lastName: String} = {name: "John", lastName: "Smith", age: 34} クローズドオブジェクトの場合、オブジェクト型の連結が返されますが、結果としてクローズドオブジェクトが生成されます。 次の例では、交差により型 ​`{|name: String, lastName: String|}`​ が生成されますが、オブジェクト内に追加項目 (項目 ​`age`​) がある場合、クローズドオブジェクトは ​`Object`​ 値を受け入れないため、例外がスローされます。 var a: {|name: String|} & {|lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#literal-types)Literal (リテラル) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_​ リテラル型は 1 つの値を表します。たとえば、​`String`​ 値 ​`"foo"`​ は型 ​`"foo"`​ で表すことができます。 次のリテラル型は型システムに含まれます。 - `String`​ リテラル型 - `Number`​ リテラル型 - `Boolean`​ リテラル型 リテラル型を ​`Union`​ 型と共に使用して、許容される値の有限セットとして型を宣言できます。たとえば、次の型宣言は ​`Union`​ 型とリテラル型の別名です。 type Weekdays = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" type Days = Weekdays | "Saturday" | "Sunday" 次の例では、変数はリテラル型 ​`404`​ および ​`500`​ の値のみを受け入れます。型システムでは、実行前に変数を確実にこれらのリテラル値のいずれかのみとすることができます。 DataWeave スクリプト %dw 2.0 output application/json var errorStatusCode: 404 | 500 = payload.statusCode match { case "error 404" -> 404 case "error 500" -> 500 } 関数オーバーロードでは、引数の値に基づいて異なる動作を定義できます。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json fun errorHandling(errorCode: 404 | 405, response): String = "Code for error 4XX handling here!" fun errorHandling(errorCode: 500 | 501, response): String = "Code for error 5XX handling here!" --- errorHandling(payload.statusCode, payload) 実行時に関数ディスパッチアルゴリズムが ​`payload.statusCode`​ の値の型に基づいて正しい関数を選択します。関数の動作を変更するために ​`if`​ ステートメントを使用して引数の値を確認する必要はありません。 ### [](#型パラメーター)型パラメーター 型パラメーターを使用すると、関数またはデータ型を汎用的に記述できるため、値の型に依存することなく、値を同様に処理できます。 たとえば、型情報を失うことなく配列の最初の要素を返す関数を定義できます。この例では、​`head`​ 関数が入力として取る配列内の項目の型を変数定義 ​`firstString:String`​ と ​`firstNumber:Number`​ で指定します。 ```DataWeave %dw 2.0 fun head(elements: Array): ItemType = elements[0]! var firstString:String = head(["DataWeave", "Java", "Scala", "Haskell"]) ++ " Rules!!!" var firstNumber:Number = head([1,2,3]) output application/json --- firstNumber ``` スクリプトの本文で、​`firstNumber`​ は数値 ​`1`​ を返します。​`firstNumber`​ を ​`firstString`​ に置き換えると、スクリプトは文字列 ​`"DataWeave Rules!!!"`​ を返します。 #### [](#型パラメーターのバインド)型パラメーターのバインド 型パラメーターをバインドして、特定の型の値を要求できます。次の例での ​`{name: "DataWeave"}`​ の追加は有効です。これは、関数定義内の ​`{name: String}`​ で、​`name`​ キーの値は文字列である必要があることが示されているためです。 ```DataWeave %dw 2.0 fun addName(user: User): User & {name: String} = user ++ {name: "DataWeave"} var myUser: {name: String, developers: Number} = addName({developers: 3}) ``` #### [](#型定義のパラメーター化)型定義のパラメーター化 型パラメーターを使用して、型定義をパラメーター化できます。たとえば、1 つはテキストファイル、もう 1 つはバイナリファイルのファイルのコンテンツをモデル化するデータ構造を定義するとします。型パラメーターを使用して、正しい実装をディスパッチする新しい型を作成できます。 ```DataWeave %dw 2.0 type FileData = { data: Content, name: String } fun read(file: FileData) = "This is a text file with data " ++ file.data fun read(file: FileData) = "This is a binary file with data " ++ (file.data as String {base: "64"}) --- { binary: read({data: "Hello World" as Binary, name: "myFile.bin"}), text: read({data: "Hello World", name: "myFile.txt"}) } ``` # 型システム 2.DataWeave の x バージョンでは型システムがサポートされます。型システムで実行される型チェックを利用するには、このセクションで説明されている変数および関数の制約式を提供する必要があります。この型の値を定義する方法についての詳細は、​[「型の値構成」](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-types)​を参照してください。 型システムでは、次のような構成要素のセットに対して一連の制約を定義します。 - 変数 - 関数パラメーター この制約は、型チェックフェーズで、関数コールの変数または引数に割り当てられた値に DataWeave で制約を確実に適用する場合に使用されます。次に例を示します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json var userName: String = "John" `userName`​ の変数定義には、型 ​`String`​ の値を割り当てるといった制約があります。 他の値のデータ型が割り当てられた場合、型チェックエラーが発生します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" 関数 ​`toUser`​ のコールに対する制約では、1 番目の引数の型が ​`Number`​、2 番目の引数の型が ​`String`​ である (これらの型に強制変換できるようにする) 必要があります。また、別の制約では、関数の結果の型が ​`String`​ である必要があります。この制約は ​`toUser`​ のコールでは使用されません。これは、関数本文で適切な型が生成されたことを検証するための定義に適用されます。 toUser(123, "John") toUser("123", true) 2 番目のコールは失敗することが予想される場合がありますが、自動型強制を使用するとコールを正常終了し、両方のコールを正常に機能させることができます。2 番目の関数コールの場合は、​`String`​ 値 ​`"123"`​ を ​`Number`​ 値 ​`123`​ に変換し、​`Boolean`​ 値 ​`true`​ を ​`String`​ 値 ​`"true"`​ に変換する自動型強制があり、これにより関数をコールすることができます。 型チェックエラーが発生するコールの例として、​`toUser("a 12", "John")`​ があります。String (文字列) 値 ​`"a 12"`​ を ​`Number`​ 型に型強制できないためです。 また、DataWeave は、制約として型が指定されていない場合でも、グローバル型推定アルゴリズムを使用してコードを検証します。
制約の使用は省略可能ですが、大きなスクリプトや複数のスクリプトでは制約が役立つ場合があります。型システムでは型チェックアルゴリズムが実行されるため、DataWeave ロジックのバグを回避するには型システムが役立ちます。また、IDE でスクリプトを記述してこの制約を定義する場合、このツールを使用して型チェックエラーを見つけることができるため、スクリプトが実行されたときにスクリプトが失敗することはありません。
DataWeave の型システムでサポートされる型は 3 つのカテゴリに分割されます。 - 単純型 - 複合型 - 複雑型 ## [](#単純型)単純型 単純型は文字列やブールなどの値を表します。この値はアトミックです。つまり、この値は他の値から構成されていません。次の型は単純型です。 - `String` - `Boolean` - `Number` - `Regex` - `Null` - 一時的: `Date`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`Period` ### [](#null)Null `Null`​ は 1 つの値 (​`null`​) のみの型です。つまり、​`null`​ を、型 ​`Null`​ を除き、型 ​`String`​ やその他の型に割り当てることはできません。 たとえば、String Module 内の ​`repeat`​ 関数にシグネチャー ​`repeat(String, Number): String`​ があるとします。つまり、この関数は 1 番目のパラメーターとして型 ​`String`​ の値のみを受け入れ、2 番目のパラメーターとして型 ​`Number.`​ の値のみを受け入れます。この関数は型 ​`String`​ の値を返します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json --- repeat("a", 3) これは ​`"aaa"`​ を返しますが、次の例ではエラーがスローされます。値 ​`null`​ を、型 ​`String`​ の値が想定されるパラメーターに割り当てることはできないためです。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(null, 3) 次の例では、スクリプトは 1 番目のパラメーターに型 ​`Null`​ の値を割り当てます (この値の型は ​`Type`​)。自動型強制によって値が型 ​`String`​ (​`"Null"`​) に変換されるため、これは ​`"NullNullNull"`​ を返します。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(Null, 3) 一部の関数には、​`null`​ を使用してコールできるオーバーロード状態のシグネチャーがあります (関数にはさまざまなパラメーター種別の複数の定義があります)。 たとえば、​`dw::core::Strings`​ からの ​`isNumeric`​ 関数にシグネチャー ​`isNumeric(String): Boolean`​ があるとします。これは、文字列を受け取り、その文字列が数値の場合に結果を正常に返しますが、関数は ​`isNumeric(Null): Boolean`​ としても定義されています。 このため、​`null`​ (​`isNumeric(null)`​) を使用して関数 ​`isNumeric`​ をコールした場合、関数は例外をスローしません。実行時に、ディスパッチアルゴリズムである関数は、使用される値の型に基づいて正しい関数を選択します。​`null`​ を引数とする ​`isNumeric`​ の定義のため、この関数は ​`false`​ を返します。 ## [](#複合型)複合型 複合型には他の値が含まれます。複合型は ​`Array`​、​`Object`​、​`Function`​ です。 ### [](#array-配列-型)Array (配列) 型 配列の型は ​`Array`​ です。ここで、​`T`​ は、配列内の要素の型を定義する型パラメーターです。たとえば、​`Number`​ の ​`Array`​ 型を使用して変数を定義する構文を次に示します。 var idsList: Array = \[1, 22, 333, 4444\] 変数 ​`idsList`​ は、その変数に割り当てられた配列に ​`Number`​ 型の値のみが含まれる場合のみ、型チェックフェーズに合格します。 ### [](#object-オブジェクト-型)Object (オブジェクト) 型 `Object`​ 型は ​`Object`​ または ​`{}`​ の 2 つの方法で定義できます。この両方でオープンオブジェクトが定義されますが、キー-値ペアに対する制約は指定されません。「​[クローズドオブジェクトとオープンオブジェクト](#close_open_objects)​」も参照してください。 キー-値ペアに対する一連の制約を使用して ​`Object`​ 型を定義する構文は、​`Object`​ 型の値を定義する構文によく似ています。 { keyName @(attrName: AttrType): valueType, ... } たとえば、​`firstName` ​`String`​、​`lastName` ​`String`​、および ​`age` ​`Number`​ を使用して ​`User`​ 型を定義する構文を次に示します。 DataWeave スクリプト %dw 2.0 output application/json type User = { firstName: String, lastName: String, age: Number } 各キー-値ペアに修飾子を割り当てることで、項目が常に存在することや、項目が反復する可能性があることを指定できます。 反復する項目の場合は、​`*`​ を使用します。たとえば、次の型では、複数の ​`lastName`​ 項目を持つことができます。 DataWeave スクリプト %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age: Number } 条件付き項目の場合は、​`?`​ を使用します。たとえば、次の型では、​`age`​ 項目は存在してもしなくても構いません。 DataWeave スクリプト %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age?: Number } #### [](#close_open_objects)クローズドオブジェクトとオープンオブジェクト `Object`​ 型はクローズドまたはオープンにすることができます。​_クローズド_​オブジェクトでは、型で指定されたキー-値ペア以外の項目がない場合のみ、オブジェクト値を受け入れます。 _オープン_​オブジェクトでは、型で宣言された項目に対してのみ制約が適用され、すべての制約が検証された場合に型は値を受け入れます。この型は、宣言で示された項目とは別の項目を含むオブジェクトを受け入れます。特に指定しない限り、すべての ​`object`​ 型がオープンです。 次の例は、​`age`​ が型宣言に含まれていなくても、変数 ​`user`​ の型がオープンオブジェクトのため、成功します。 DataWeave スクリプト %dw 2.0 output application/json var user: {firstName: String, lastName: String} = {firstName: "John", lastName: "Smith", age: 34} クローズドオブジェクトを指定する構文は ​`{| |}`​ です。次の例では、​`User`​ 型でサポートされるキーを ​`firstName`​ と ​`lastName`​ のみに限定します。​`age`​ 項目が受け入れられないため、このスクリプトは例外をスローします。 DataWeave スクリプト %dw 2.0 output application/json var user: {|firstName: String, lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#function-関数-型)Function (関数) 型 DataWeave は関数型言語であり、関数は第一級オブジェクトとみなされます。つまり、関数は、関連付けられた型を持つ値です。 関数型を定義する構文を次に示します。 (paramType: ParamType,...) -> ReturnType たとえば、型 ​`String`​ のパラメーター、型 ​`Number`​ の 2 番目のパラメーター、および ​`Boolean`​ 戻り値を持つ ​`Function`​ 型を制約で定義する場合、正しい構文は次のようになります。 (paramA: String, paramB: Number) -> Boolean 次の例では、別の関数を引数として受け取る関数を定義します。 DataWeave スクリプト %dw 2.0 output application/json fun applyIDsChange(ids: Array, changeTo: (Number) -> Number): Array = ??? `changeTo`​ の制約 ​`(Number) → Number`​ に一致しない関数を含む関数 ​`applyIDsChange`​ をコールすると、DataWeave は型チェックエラーをスローします。 たとえば、次のコールでは、​`abs`​ が ​`Number`​ 型の値を取り、​`changeTo`​ パラメーターに一致する ​`Number`​ を返す関数のため、コールは正常に機能します。 applyIDsChange(\[1,-6, 3, -8\], abs) ただし、次のコールでは、​`sum`​ が ​`Array`​ を取り、パラメーター制約に一致しない ​`Number`​ を返す関数のため、コールは失敗します。 applyIDsChange(\[1,-6, 3, -8\], sum) ## [](#複雑型)複雑型 複雑型には、​`Any`​ と ​`Nothing`​ 型、​`Union`​ 型、​`Intersection`​ 型、および ​`Literal`​ 型が含まれます。この各型の名前は直感的なわかりやすい名前です。 ### [](#any-任意-と-nothing-空)Any (任意) と Nothing (空) 場合によって、型がすべての値を受け入れるために制約を適用できないことがあります。 - `Any`​ 型は、可能なすべての値を受け入れます。 - `Nothing`​ 型は値を受け入れませんが、すべての型に割り当てることができます。この型は明示的に使用されることは頻繁にはありませんが、型推定アルゴリズムで使用されます。 ### [](#union-結合-型)Union (結合) 型 `Union`​ 型は、型を構成するために使用されます。​`Union`​ 型を定義する構文を次に示します。 TypeA | TypeB | ... 次の例では、型 ​`String`​ または ​`Number`​ の値を受け入れる制約を使用して変数を定義します。 var age: String | Number = if (payload.allStrings) "32" else 32 一般的なパターンでは、​`Null`​ 型を ​`Union`​ 型と共に使用して、型が ​`null`​ を値として受け入れることを指定します。次の例では、関数 ​`parseEmail`​ は型 ​`String`​ または ​`Null`​ の入力を許容します。この場合、ペイロードの省略可能な項目 ​`email`​ を含むオブジェクトを使用でき、​`payload.email`​ を使用して関数をコールできます。 fun parseEmail(email: String | Null) = "Code that handles email being of type String or Null" ### [](#intersection-交差-型)Intersection (交差) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ `Intersection`​ 型は ​`Object`​ 型を交差させます。この場合、交差はオブジェクト型の連結 (​`++`​) として機能します。 `Intersection`​ 型の構文を次に示します。 TypeA & TypeB & ... 次の例では、​`Intersection`​ が 2 つの ​`Object`​ 型を連結し、結果として型 ​`{name: String, lastName: String}`​ が生成されます。この型は、追加のキー-値ペアを受け入れることができるオープンオブジェクトです。変数は、その変数に割り当てられた値を受け入れます。 var a: {name: String} & {lastName: String} = {name: "John", lastName: "Smith", age: 34} クローズドオブジェクトの場合、オブジェクト型の連結が返されますが、結果としてクローズドオブジェクトが生成されます。 次の例では、交差により型 ​`{|name: String, lastName: String|}`​ が生成されますが、オブジェクト内に追加項目 (項目 ​`age`​) がある場合、クローズドオブジェクトは ​`Object`​ 値を受け入れないため、例外がスローされます。 var a: {|name: String|} & {|lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#literal-types)Literal (リテラル) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ リテラル型は 1 つの値を表します。たとえば、​`String`​ 値 ​`"foo"`​ は型 ​`"foo"`​ で表すことができます。 次のリテラル型は型システムに含まれます。 - `String`​ リテラル型 - `Number`​ リテラル型 - `Boolean`​ リテラル型 リテラル型を ​`Union`​ 型と共に使用して、許容される値の有限セットとして型を宣言できます。たとえば、次の型宣言は ​`Union`​ 型とリテラル型の別名です。 type Weekdays = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" type Days = Weekdays | "Saturday" | "Sunday" 次の例では、変数はリテラル型 ​`404`​ および ​`500`​ の値のみを受け入れます。型システムでは、実行前に変数を確実にこれらのリテラル値のいずれかのみとすることができます。 DataWeave スクリプト %dw 2.0 output application/json var errorStatusCode: 404 | 500 = payload.statusCode match { case "error 404" -> 404 case "error 500" -> 500 } 関数オーバーロードでは、引数の値に基づいて異なる動作を定義できます。 DataWeave スクリプト %dw 2.0 import \* from dw::core::Strings output application/json fun errorHandling(errorCode: 404 | 405, response): String = "Code for error 4XX handling here!" fun errorHandling(errorCode: 500 | 501, response): String = "Code for error 5XX handling here!" --- errorHandling(payload.statusCode, payload) 実行時に関数ディスパッチアルゴリズムが ​`payload.statusCode`​ の値の型に基づいて正しい関数を選択します。関数の動作を変更するために ​`if`​ ステートメントを使用して引数の値を確認する必要はありません。 ### [](#型パラメーター)型パラメーター 型パラメーターを使用すると、関数またはデータ型を汎用的に記述できるため、値の型に依存することなく、値を同様に処理できます。 たとえば、型情報を失うことなく配列の最初の要素を返す関数を定義できます。この例では、​`head`​ 関数が入力として取る配列内の項目の型を変数定義 ​`firstString:String`​ と ​`firstNumber:Number`​ で指定します。 ```DataWeave %dw 2.0 fun head(elements: Array): ItemType = elements[0]! var firstString:String = head(["DataWeave", "Java", "Scala", "Haskell"]) ++ " Rules!!!" var firstNumber:Number = head([1,2,3]) output application/json --- firstNumber ``` スクリプトの本文で、​`firstNumber`​ は数値 ​`1`​ を返します。​`firstNumber`​ を ​`firstString`​ に置き換えると、スクリプトは文字列 ​`"DataWeave Rules!!!"`​ を返します。 #### [](#型パラメーターのバインド)型パラメーターのバインド 型パラメーターをバインドして、特定の型の値を要求できます。次の例での ​`{name: "DataWeave"}`​ の追加は有効です。これは、関数定義内の ​`{name: String}`​ で、​`name`​ キーの値は文字列である必要があることが示されているためです。 ```DataWeave %dw 2.0 fun addName(user: User): User & {name: String} = user ++ {name: "DataWeave"} var myUser: {name: String, developers: Number} = addName({developers: 3}) ``` #### [](#型定義のパラメーター化)型定義のパラメーター化 型パラメーターを使用して、型定義をパラメーター化できます。たとえば、1 つはテキストファイル、もう 1 つはバイナリファイルのファイルのコンテンツをモデル化するデータ構造を定義するとします。型パラメーターを使用して、正しい実装をディスパッチする新しい型を作成できます。 ```DataWeave %dw 2.0 type FileData = { data: Content, name: String } fun read(file: FileData) = "This is a text file with data " ++ file.data fun read(file: FileData) = "This is a binary file with data " ++ (file.data as String {base: "64"}) --- { binary: read({data: "Hello World" as Binary, name: "myFile.bin"}), text: read({data: "Hello World", name: "myFile.txt"}) } ``` # 型システム 2.DataWeave の x バージョンでは型システムがサポートされます。型システムで実行される型チェックを利用するには、このセクションで説明されている変数および関数の制約式を提供する必要があります。この型の値を定義する方法についての詳細は、​[「型の値構成」](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-types)​を参照してください。 型システムでは、次のような構成要素のセットに対して一連の制約を定義します。 - 変数 - 関数パラメーター この制約は、型チェックフェーズで、関数コールの変数または引数に割り当てられた値に DataWeave で制約を確実に適用する場合に使用されます。次に例を示します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json var userName: String = "John" `userName`​ の変数定義には、型 ​`String`​ の値を割り当てるといった制約があります。 他の値のデータ型が割り当てられた場合、型チェックエラーが発生します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" 関数 ​`toUser`​ のコールに対する制約では、1 番目の引数の型が ​`Number`​、2 番目の引数の型が ​`String`​ である (これらの型に強制変換できるようにする) 必要があります。また、別の制約では、関数の結果の型が ​`String`​ である必要があります。この制約は ​`toUser`​ のコールでは使用されません。これは、関数本文で適切な型が生成されたことを検証するための定義に適用されます。 toUser(123, "John") toUser("123", true) 2 番目のコールは失敗することが予想される場合がありますが、自動型強制を使用するとコールを正常終了し、両方のコールを正常に機能させることができます。2 番目の関数コールの場合は、​`String`​ 値 ​`"123"`​ を ​`Number`​ 値 ​`123`​ に変換し、​`Boolean`​ 値 ​`true`​ を ​`String`​ 値 ​`"true"`​ に変換する自動型強制があり、これにより関数をコールすることができます。 型チェックエラーが発生するコールの例として、​`toUser("a 12", "John")`​ があります。String (文字列) 値 ​`"a 12"`​ を ​`Number`​ 型に型強制できないためです。 また、DataWeave は、制約として型が指定されていない場合でも、グローバル型推定アルゴリズムを使用してコードを検証します。
制約の使用は省略可能ですが、大きなスクリプトや複数のスクリプトでは制約が役立つ場合があります。型システムでは型チェックアルゴリズムが実行されるため、DataWeave ロジックのバグを回避するには型システムが役立ちます。また、IDE でスクリプトを記述してこの制約を定義する場合、このツールを使用して型チェックエラーを見つけることができるため、スクリプトが実行されたときにスクリプトが失敗することはありません。
DataWeave の型システムでサポートされる型は 3 つのカテゴリに分割されます。 - 単純型 - 複合型 - 複雑型 ## [](#単純型)単純型 単純型は文字列やブールなどの値を表します。この値はアトミックです。つまり、この値は他の値から構成されていません。次の型は単純型です。 - `String` - `Boolean` - `Number` - `Regex` - `Null` - 一時的: `Date`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`Period` ### [](#null)Null `Null`​ は 1 つの値 (​`null`​) のみの型です。つまり、​`null`​ を、型 ​`Null`​ を除き、型 ​`String`​ やその他の型に割り当てることはできません。 たとえば、String Module 内の ​`repeat`​ 関数にシグネチャー ​`repeat(String, Number): String`​ があるとします。つまり、この関数は 1 番目のパラメーターとして型 ​`String`​ の値のみを受け入れ、2 番目のパラメーターとして型 ​`Number`​ の値のみを受け入れます。この関数は型 ​`String`​ の値を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat("a", 3) これは ​`"aaa"`​ を返しますが、次の例ではエラーがスローされます。値 ​`null`​ を、型 ​`String`​ の値が想定されるパラメーターに割り当てることはできないためです。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(null, 3) 次の例では、スクリプトは 1 番目のパラメーターに型 ​`Null`​ の値を割り当てます (この値の型は ​`Type`​)。自動型強制によって値が型 ​`String`​ (​`"Null"`​) に変換されるため、これは ​`"NullNullNull"`​ を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(Null, 3) 一部の関数には、​`null`​ を使用してコールできるオーバーロード状態のシグネチャーがあります (関数にはさまざまなパラメーター種別の複数の定義があります)。 たとえば、​`dw::core::Strings`​ からの ​`isNumeric`​ 関数にシグネチャー ​`isNumeric(String): Boolean`​ があるとします。これは、文字列を受け取り、その文字列が数値の場合に結果を正常に返しますが、関数は ​`isNumeric(Null): Boolean`​ としても定義されています。 このため、​`null`​ (​`isNumeric(null)`​) を使用して関数 ​`isNumeric`​ をコールした場合、関数は例外をスローしません。実行時に、ディスパッチアルゴリズムである関数は、使用される値の型に基づいて正しい関数を選択します。​`null`​ を引数とする ​`isNumeric`​ の定義のため、この関数は ​`false`​ を返します。 ## [](#複合型)複合型 複合型には他の値が含まれます。複合型は ​`Array`​、​`Object`​、​`Function`​ です。 ### [](#array-配列-型)Array (配列) 型 配列の型は ​`Array`​ です。ここで、​`T`​ は、配列内の要素の型を定義する型パラメーターです。たとえば、​`Number`​ の ​`Array`​ 型を使用して変数を定義する構文を次に示します。 var idsList: Array = \[1, 22, 333, 4444\] 変数 ​`idsList`​ は、その変数に割り当てられた配列に ​`Number`​ 型の値のみが含まれる場合のみ、型チェックフェーズに合格します。 ### [](#object-オブジェクト-型)Object (オブジェクト) 型 `Object`​ 型は ​`Object`​ または ​`{}`​ の 2 つの方法で定義できます。この両方でオープンオブジェクトが定義されますが、キー-値ペアに対する制約は指定されません。「​[クローズドオブジェクトとオープンオブジェクト](#close_open_objects)​」も参照してください。 キー-値ペアに対する一連の制約を使用して ​`Object`​ 型を定義する構文は、​`Object`​ 型の値を定義する構文によく似ています。 { keyName @(attrName: AttrType): valueType, ... } たとえば、​`firstName` ​`String`​、​`lastName` ​`String`​、および ​`age` ​`Number`​ を使用して ​`User`​ 型を定義する構文を次に示します。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName: String, age: Number } 各キー-値ペアに修飾子を割り当てることで、項目が常に存在することや、項目が反復する可能性があることを指定できます。 反復する項目の場合は、​`*`​ を使用します。たとえば、次の型では、複数の ​`lastName`​ 項目を持つことができます。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age: Number } 条件付き項目の場合は、​`?`​ を使用します。たとえば、次の型では、​`age`​ 項目は存在してもしなくても構いません。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age?: Number } #### [](#close_open_objects)クローズドオブジェクトとオープンオブジェクト `Object`​ 型はクローズドまたはオープンにすることができます。​_クローズド_​オブジェクトでは、型で指定されたキー-値ペア以外の項目がない場合のみ、オブジェクト値を受け入れます。 _オープン_​オブジェクトでは、型で宣言された項目に対してのみ制約が適用され、すべての制約が検証された場合に型は値を受け入れます。この型は、宣言で示された項目とは別の項目を含むオブジェクトを受け入れます。特に指定しない限り、すべての ​`object`​ 型がオープンです。 次の例は、​`age`​ が型宣言に含まれていなくても、変数 ​`user`​ の型がオープンオブジェクトのため、成功します。 DataWeave スクリプト: %dw 2.0 output application/json var user: {firstName: String, lastName: String} = {firstName: "John", lastName: "Smith", age: 34} クローズドオブジェクトを指定する構文は ​`{| |}`​ です。次の例では、​`User`​ 型でサポートされるキーを ​`firstName`​ と ​`lastName`​ のみに限定します。​`age`​ 項目が受け入れられないため、このスクリプトは例外をスローします。 DataWeave スクリプト: %dw 2.0 output application/json var user: {|firstName: String, lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#function-関数-型)Function (関数) 型 DataWeave は関数型言語であり、関数は第一級オブジェクトとみなされます。つまり、関数は、関連付けられた型を持つ値です。 関数型を定義する構文を次に示します。 (paramType: ParamType,...) -> ReturnType たとえば、型 ​`String`​ のパラメーター、型 ​`Number`​ の 2 番目のパラメーター、および ​`Boolean`​ 戻り値を持つ ​`Function`​ 型を制約で定義する場合、正しい構文は次のようになります。 (paramA: String, paramB: Number) -> Boolean 次の例では、別の関数を引数として受け取る関数を定義します。 DataWeave スクリプト: %dw 2.0 output application/json fun applyIDsChange(ids: Array, changeTo: (Number) -> Number): Array = ??? `changeTo`​ の制約 ​`(Number) → Number`​ に一致しない関数を含む関数 ​`applyIDsChange`​ をコールすると、DataWeave は型チェックエラーをスローします。 たとえば、次のコールでは、​`abs`​ が ​`Number`​ 型の値を取り、​`changeTo`​ パラメーターに一致する ​`Number`​ を返す関数のため、コールは正常に機能します。 applyIDsChange(\[1,-6, 3, -8\], abs) ただし、次のコールでは、​`sum`​ が ​`Array`​ を取り、パラメーター制約に一致しない ​`Number`​ を返す関数のため、コールは失敗します。 applyIDsChange(\[1,-6, 3, -8\], sum) ## [](#複雑型)複雑型 複雑型には、​`Any`​ と ​`Nothing`​ 型、​`Union`​ 型、​`Intersection`​ 型、および ​`Literal`​ 型が含まれます。この各型の名前は直感的なわかりやすい名前です。 ### [](#any-任意-と-nothing-空)Any (任意) と Nothing (空) 場合によって、型がすべての値を受け入れるために制約を適用できないことがあります。 - `Any`​ 型は、可能なすべての値を受け入れます。 - `Nothing`​ 型は値を受け入れませんが、すべての型に割り当てることができます。この型は明示的に使用されることは頻繁にはありませんが、型推定アルゴリズムで使用されます。 ### [](#union-結合-型)Union (結合) 型 `Union`​ 型は、型を構成するために使用されます。​`Union`​ 型を定義する構文を次に示します。 TypeA | TypeB | ... 次の例では、型 ​`String`​ または ​`Number`​ の値を受け入れる制約を使用して変数を定義します。 var age: String | Number = if (payload.allStrings) "32" else 32 一般的なパターンでは、​`Null`​ 型を ​`Union`​ 型と共に使用して、型が ​`null`​ を値として受け入れることを指定します。次の例では、関数 ​`parseEmail`​ は型 ​`String`​ または ​`Null`​ の入力を許容します。この場合、ペイロードの省略可能な項目 ​`email`​ を含むオブジェクトを使用でき、​`payload.email`​ を使用して関数をコールできます。 fun parseEmail(email: String | Null) = "Code that handles email being of type String or Null" ### [](#intersection-交差-型)Intersection (交差) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ `Intersection`​ 型は ​`Object`​ 型を交差させます。この場合、交差はオブジェクト型の連結 (​`++`​) として機能します。 `Intersection`​ 型の構文を次に示します。 TypeA & TypeB & ... 次の例では、​`Intersection`​ が 2 つの ​`Object`​ 型を連結し、結果として型 ​`{name: String, lastName: String}`​ が生成されます。この型は、追加のキー-値ペアを受け入れることができるオープンオブジェクトです。変数は、その変数に割り当てられた値を受け入れます。 var a: {name: String} & {lastName: String} = {name: "John", lastName: "Smith", age: 34} クローズドオブジェクトの場合、オブジェクト型の連結が返されますが、結果としてクローズドオブジェクトが生成されます。 次の例では、交差により型 ​`{|name: String, lastName: String|}`​ が生成されますが、オブジェクト内に追加項目 (項目 ​`age`​) がある場合、クローズドオブジェクトは ​`Object`​ 値を受け入れないため、例外がスローされます。 var a: {|name: String|} & {|lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#literal-types)Literal (リテラル) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ リテラル型は 1 つの値を表します。たとえば、​`String`​ 値 ​`"foo"`​ は型 ​`"foo"`​ で表すことができます。 次のリテラル型は型システムに含まれます。 - `String`​ リテラル型 - `Number`​ リテラル型 - `Boolean`​ リテラル型 リテラル型を ​`Union`​ 型と共に使用して、許容される値の有限セットとして型を宣言できます。たとえば、次の型宣言は ​`Union`​ 型とリテラル型の別名です。 type Weekdays = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" type Days = Weekdays | "Saturday" | "Sunday" 次の例では、変数はリテラル型 ​`404`​ および ​`500`​ の値のみを受け入れます。型システムでは、実行前に変数を確実にこれらのリテラル値のいずれかのみとすることができます。 DataWeave スクリプト: %dw 2.0 output application/json var errorStatusCode: 404 | 500 = payload.statusCode match { case "error 404" -> 404 case "error 500" -> 500 } 関数オーバーロードでは、引数の値に基づいて異なる動作を定義できます。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun errorHandling(errorCode: 404 | 405, response): String = "Code for error 4XX handling here!" fun errorHandling(errorCode: 500 | 501, response): String = "Code for error 5XX handling here!" --- errorHandling(payload.statusCode, payload) 実行時に関数ディスパッチアルゴリズムが ​`payload.statusCode`​ の値の型に基づいて正しい関数を選択します。関数の動作を変更するために ​`if`​ ステートメントを使用して引数の値を確認する必要はありません。 ### [](#型パラメーター)型パラメーター 型パラメーターを使用すると、関数またはデータ型を汎用的に記述できるため、値の型に依存することなく、値を同様に処理できます。 たとえば、型情報を失うことなく配列の最初の要素を返す関数を定義できます。この例では、​`head`​ 関数が入力として取る配列内の項目の型を変数定義 ​`firstString:String`​ と ​`firstNumber:Number`​ で指定します。 ```DataWeave %dw 2.0 fun head(elements: Array): ItemType = elements[0]! var firstString:String = head(["DataWeave", "Java", "Scala", "Haskell"]) ++ " Rules!!!" var firstNumber:Number = head([1,2,3]) output application/json --- firstNumber ``` スクリプトの本文で、​`firstNumber`​ は数値 ​`1`​ を返します。​`firstNumber`​ を ​`firstString`​ に置き換えると、スクリプトは文字列 ​`"DataWeave Rules!!!"`​ を返します。 #### [](#型パラメーターのバインド)型パラメーターのバインド 型パラメーターをバインドして、特定の型の値を要求できます。次の例での ​`{name: "DataWeave"}`​ の追加は有効です。これは、関数定義内の ​`{name: String}`​ で、​`name`​ キーの値は文字列である必要があることが示されているためです。 ```DataWeave %dw 2.0 fun addName(user: User): User & {name: String} = user ++ {name: "DataWeave"} var myUser: {name: String, developers: Number} = addName({developers: 3}) ``` #### [](#型定義のパラメーター化)型定義のパラメーター化 型パラメーターを使用して、型定義をパラメーター化できます。たとえば、1 つはテキストファイル、もう 1 つはバイナリファイルのファイルのコンテンツをモデル化するデータ構造を定義するとします。型パラメーターを使用して、正しい実装をディスパッチする新しい型を作成できます。 ```DataWeave %dw 2.0 type FileData = { data: Content, name: String } fun read(file: FileData) = "This is a text file with data " ++ file.data fun read(file: FileData) = "This is a binary file with data " ++ (file.data as String {base: "64"}) --- { binary: read({data: "Hello World" as Binary, name: "myFile.bin"}), text: read({data: "Hello World", name: "myFile.txt"}) } ``` ## [](#reuse_types)型の再利用 同じ DataWeave スクリプト内で型を宣言して使用したり ([型システム](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-system)を参照)、特定のモジュールローダーを使用して別のソースの型を読み込んで再利用したりできます。現在、DataWeave では、以下の方法で型を読み込むことができます。 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-reuse-modules) - [JSON スキーマの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-reuse-json-schema) - [XML スキーマの再利用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-reuse-xml-schema) - [Java クラスの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-type-reuse-java-classes) モジュールローダーは、ファイルを DataWeave モジュールとして読み込むために使用されます。それらのファイルの各種パートは DataWeave 関数、変数、型、名前空間定義として読み込まれます。インポートディレクティブで ​`java!`​ や ​`xmlschema!`​ などのプレフィックスを使用して、Java クラスや XML スキーマを DataWeave モジュールとして読み込むときにどのモジュールローダーを使用するのかを DataWeave に指示します。 # 型システム 2.DataWeave の x バージョンでは型システムがサポートされます。型システムで実行される型チェックを利用するには、このセクションで説明されている変数および関数の制約式を提供する必要があります。この型の値を定義する方法についての詳細は、​[「型の値構成」](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types)​を参照してください。 型システムでは、次のような構成要素のセットに対して一連の制約を定義します。 - 変数 - 関数パラメーター この制約は、型チェックフェーズで、関数コールの変数または引数に割り当てられた値に DataWeave で制約を確実に適用する場合に使用されます。次に例を示します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json var userName: String = "John" `userName`​ の変数定義には、型 ​`String`​ の値を割り当てるといった制約があります。 他の値のデータ型が割り当てられた場合、型チェックエラーが発生します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" 関数 ​`toUser`​ のコールに対する制約では、1 番目の引数の型が ​`Number`​、2 番目の引数の型が ​`String`​ である (これらの型に強制変換できるようにする) 必要があります。また、別の制約では、関数の結果の型が ​`String`​ である必要があります。この制約は ​`toUser`​ のコールでは使用されません。これは、関数本文で適切な型が生成されたことを検証するための定義に適用されます。 toUser(123, "John") toUser("123", true) 2 番目のコールは失敗することが予想される場合がありますが、自動型強制を使用するとコールを正常終了し、両方のコールを正常に機能させることができます。2 番目の関数コールの場合は、​`String`​ 値 ​`"123"`​ を ​`Number`​ 値 ​`123`​ に変換し、​`Boolean`​ 値 ​`true`​ を ​`String`​ 値 ​`"true"`​ に変換する自動型強制があり、これにより関数をコールすることができます。 型チェックエラーが発生するコールの例として、​`toUser("a 12", "John")`​ があります。String (文字列) 値 ​`"a 12"`​ を ​`Number`​ 型に型強制できないためです。 また、DataWeave は、制約として型が指定されていない場合でも、グローバル型推定アルゴリズムを使用してコードを検証します。
制約の使用は省略可能ですが、大きなスクリプトや複数のスクリプトでは制約が役立つ場合があります。型システムでは型チェックアルゴリズムが実行されるため、DataWeave ロジックのバグを回避するには型システムが役立ちます。また、IDE でスクリプトを記述してこの制約を定義する場合、このツールを使用して型チェックエラーを見つけることができるため、スクリプトが実行されたときにスクリプトが失敗することはありません。
DataWeave の型システムでサポートされる型は 3 つのカテゴリに分割されます。 - 単純型 - 複合型 - 複雑型 ## [](#単純型)単純型 単純型は文字列やブールなどの値を表します。この値はアトミックです。つまり、この値は他の値から構成されていません。次の型は単純型です。 - `String` - `Boolean` - `Number` - `Regex` - `Null` - 一時的: `Date`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`Period` ### [](#null)Null `Null`​ は 1 つの値 (​`null`​) のみの型です。つまり、​`null`​ を、型 ​`Null`​ を除き、型 ​`String`​ やその他の型に割り当てることはできません。 たとえば、String Module 内の ​`repeat`​ 関数にシグネチャー ​`repeat(String, Number): String`​ があるとします。つまり、この関数は 1 番目のパラメーターとして型 ​`String`​ の値のみを受け入れ、2 番目のパラメーターとして型 ​`Number`​ の値のみを受け入れます。この関数は型 ​`String`​ の値を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat("a", 3) これは ​`"aaa"`​ を返しますが、次の例ではエラーがスローされます。値 ​`null`​ を、型 ​`String`​ の値が想定されるパラメーターに割り当てることはできないためです。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(null, 3) 次の例では、スクリプトは 1 番目のパラメーターに型 ​`Null`​ の値を割り当てます (この値の型は ​`Type`​)。自動型強制によって値が型 ​`String`​ (​`"Null"`​) に変換されるため、これは ​`"NullNullNull"`​ を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(Null, 3) 一部の関数には、​`null`​ を使用してコールできるオーバーロード状態のシグネチャーがあります (関数にはさまざまなパラメーター種別の複数の定義があります)。 たとえば、​`dw::core::Strings`​ からの ​`isNumeric`​ 関数にシグネチャー ​`isNumeric(String): Boolean`​ があるとします。これは、文字列を受け取り、その文字列が数値の場合に結果を正常に返しますが、関数は ​`isNumeric(Null): Boolean`​ としても定義されています。 このため、​`null`​ (​`isNumeric(null)`​) を使用して関数 ​`isNumeric`​ をコールした場合、関数は例外をスローしません。実行時に、ディスパッチアルゴリズムである関数は、使用される値の型に基づいて正しい関数を選択します。​`null`​ を引数とする ​`isNumeric`​ の定義のため、この関数は ​`false`​ を返します。 ## [](#複合型)複合型 複合型には他の値が含まれます。複合型は ​`Array`​、​`Object`​、​`Function`​ です。 ### [](#array-配列-型)Array (配列) 型 配列の型は ​`Array`​ です。ここで、​`T`​ は、配列内の要素の型を定義する型パラメーターです。たとえば、​`Number`​ の ​`Array`​ 型を使用して変数を定義する構文を次に示します。 var idsList: Array = \[1, 22, 333, 4444\] 変数 ​`idsList`​ は、その変数に割り当てられた配列に ​`Number`​ 型の値のみが含まれる場合のみ、型チェックフェーズに合格します。 ### [](#object-オブジェクト-型)Object (オブジェクト) 型 `Object`​ 型は ​`Object`​ または ​`{}`​ の 2 つの方法で定義できます。この両方でオープンオブジェクトが定義されますが、キー-値ペアに対する制約は指定されません。「​[クローズドオブジェクトとオープンオブジェクト](#close_open_objects)​」も参照してください。 キー-値ペアに対する一連の制約を使用して ​`Object`​ 型を定義する構文は、​`Object`​ 型の値を定義する構文によく似ています。 { keyName @(attrName: AttrType): valueType, ... } たとえば、​`firstName` ​`String`​、​`lastName` ​`String`​、および ​`age` ​`Number`​ を使用して ​`User`​ 型を定義する構文を次に示します。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName: String, age: Number } 各キー-値ペアに修飾子を割り当てることで、項目が常に存在することや、項目が反復する可能性があることを指定できます。 反復する項目の場合は、​`*`​ を使用します。たとえば、次の型では、複数の ​`lastName`​ 項目を持つことができます。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age: Number } 条件付き項目の場合は、​`?`​ を使用します。たとえば、次の型では、​`age`​ 項目は存在してもしなくても構いません。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age?: Number } #### [](#close_open_objects)クローズドオブジェクトとオープンオブジェクト `Object`​ 型はクローズドまたはオープンにすることができます。​_クローズド_​オブジェクトでは、型で指定されたキー-値ペア以外の項目がない場合のみ、オブジェクト値を受け入れます。 _オープン_​オブジェクトでは、型で宣言された項目に対してのみ制約が適用され、すべての制約が検証された場合に型は値を受け入れます。この型は、宣言で示された項目とは別の項目を含むオブジェクトを受け入れます。特に指定しない限り、すべての ​`object`​ 型がオープンです。 次の例は、​`age`​ が型宣言に含まれていなくても、変数 ​`user`​ の型がオープンオブジェクトのため、成功します。 DataWeave スクリプト: %dw 2.0 output application/json var user: {firstName: String, lastName: String} = {firstName: "John", lastName: "Smith", age: 34} クローズドオブジェクトを指定する構文は ​`{| |}`​ です。次の例では、​`User`​ 型でサポートされるキーを ​`firstName`​ と ​`lastName`​ のみに限定します。​`age`​ 項目が受け入れられないため、このスクリプトは例外をスローします。 DataWeave スクリプト: %dw 2.0 output application/json var user: {|firstName: String, lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#function-関数-型)Function (関数) 型 DataWeave は関数型言語であり、関数は第一級オブジェクトとみなされます。つまり、関数は、関連付けられた型を持つ値です。 関数型を定義する構文を次に示します。 (paramType: ParamType,...) -> ReturnType たとえば、型 ​`String`​ のパラメーター、型 ​`Number`​ の 2 番目のパラメーター、および ​`Boolean`​ 戻り値を持つ ​`Function`​ 型を制約で定義する場合、正しい構文は次のようになります。 (paramA: String, paramB: Number) -> Boolean 次の例では、別の関数を引数として受け取る関数を定義します。 DataWeave スクリプト: %dw 2.0 output application/json fun applyIDsChange(ids: Array, changeTo: (Number) -> Number): Array = ??? `changeTo`​ の制約 ​`(Number) → Number`​ に一致しない関数を含む関数 ​`applyIDsChange`​ をコールすると、DataWeave は型チェックエラーをスローします。 たとえば、次のコールでは、​`abs`​ が ​`Number`​ 型の値を取り、​`changeTo`​ パラメーターに一致する ​`Number`​ を返す関数のため、コールは正常に機能します。 applyIDsChange(\[1,-6, 3, -8\], abs) ただし、次のコールでは、​`sum`​ が ​`Array`​ を取り、パラメーター制約に一致しない ​`Number`​ を返す関数のため、コールは失敗します。 applyIDsChange(\[1,-6, 3, -8\], sum) ## [](#複雑型)複雑型 複雑型には、​`Any`​ と ​`Nothing`​ 型、​`Union`​ 型、​`Intersection`​ 型、および ​`Literal`​ 型が含まれます。この各型の名前は直感的なわかりやすい名前です。 ### [](#any-任意-と-nothing-空)Any (任意) と Nothing (空) 場合によって、型がすべての値を受け入れるために制約を適用できないことがあります。 - `Any`​ 型は、可能なすべての値を受け入れます。 - `Nothing`​ 型は値を受け入れませんが、すべての型に割り当てることができます。この型は明示的に使用されることは頻繁にはありませんが、型推定アルゴリズムで使用されます。 ### [](#union-結合-型)Union (結合) 型 `Union`​ 型は、型を構成するために使用されます。​`Union`​ 型を定義する構文を次に示します。 TypeA | TypeB | ... 次の例では、型 ​`String`​ または ​`Number`​ の値を受け入れる制約を使用して変数を定義します。 var age: String | Number = if (payload.allStrings) "32" else 32 一般的なパターンでは、​`Null`​ 型を ​`Union`​ 型と共に使用して、型が ​`null`​ を値として受け入れることを指定します。次の例では、関数 ​`parseEmail`​ は型 ​`String`​ または ​`Null`​ の入力を許容します。この場合、ペイロードの省略可能な項目 ​`email`​ を含むオブジェクトを使用でき、​`payload.email`​ を使用して関数をコールできます。 fun parseEmail(email: String | Null) = "Code that handles email being of type String or Null" ### [](#intersection-交差-型)Intersection (交差) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ `Intersection`​ 型は ​`Object`​ 型を交差させます。この場合、交差はオブジェクト型の連結 (​`++`​) として機能します。 `Intersection`​ 型の構文を次に示します。 TypeA & TypeB & ... 次の例では、​`Intersection`​ が 2 つの ​`Object`​ 型を連結し、結果として型 ​`{name: String, lastName: String}`​ が生成されます。この型は、追加のキー-値ペアを受け入れることができるオープンオブジェクトです。変数は、その変数に割り当てられた値を受け入れます。 var a: {name: String} & {lastName: String} = {name: "John", lastName: "Smith", age: 34} クローズドオブジェクトの場合、オブジェクト型の連結が返されますが、結果としてクローズドオブジェクトが生成されます。 次の例では、交差により型 ​`{|name: String, lastName: String|}`​ が生成されますが、オブジェクト内に追加項目 (項目 ​`age`​) がある場合、クローズドオブジェクトは ​`Object`​ 値を受け入れないため、例外がスローされます。 var a: {|name: String|} & {|lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#literal-types)Literal (リテラル) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ リテラル型は 1 つの値を表します。たとえば、​`String`​ 値 ​`"foo"`​ は型 ​`"foo"`​ で表すことができます。 次のリテラル型は型システムに含まれます。 - `String`​ リテラル型 - `Number`​ リテラル型 - `Boolean`​ リテラル型 リテラル型を ​`Union`​ 型と共に使用して、許容される値の有限セットとして型を宣言できます。たとえば、次の型宣言は ​`Union`​ 型とリテラル型の別名です。 type Weekdays = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" type Days = Weekdays | "Saturday" | "Sunday" 次の例では、変数はリテラル型 ​`404`​ および ​`500`​ の値のみを受け入れます。型システムでは、実行前に変数を確実にこれらのリテラル値のいずれかのみとすることができます。 DataWeave スクリプト: %dw 2.0 output application/json var errorStatusCode: 404 | 500 = payload.statusCode match { case "error 404" -> 404 case "error 500" -> 500 } 関数オーバーロードでは、引数の値に基づいて異なる動作を定義できます。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun errorHandling(errorCode: 404 | 405, response): String = "Code for error 4XX handling here!" fun errorHandling(errorCode: 500 | 501, response): String = "Code for error 5XX handling here!" --- errorHandling(payload.statusCode, payload) 実行時に関数ディスパッチアルゴリズムが ​`payload.statusCode`​ の値の型に基づいて正しい関数を選択します。関数の動作を変更するために ​`if`​ ステートメントを使用して引数の値を確認する必要はありません。 ### [](#型パラメーター)型パラメーター 型パラメーターを使用すると、関数またはデータ型を汎用的に記述できるため、値の型に依存することなく、値を同様に処理できます。 たとえば、型情報を失うことなく配列の最初の要素を返す関数を定義できます。この例では、​`head`​ 関数が入力として取る配列内の項目の型を変数定義 ​`firstString:String`​ と ​`firstNumber:Number`​ で指定します。 ```DataWeave %dw 2.0 fun head(elements: Array): ItemType = elements[0]! var firstString:String = head(["DataWeave", "Java", "Scala", "Haskell"]) ++ " Rules!!!" var firstNumber:Number = head([1,2,3]) output application/json --- firstNumber ``` スクリプトの本文で、​`firstNumber`​ は数値 ​`1`​ を返します。​`firstNumber`​ を ​`firstString`​ に置き換えると、スクリプトは文字列 ​`"DataWeave Rules!!!"`​ を返します。 #### [](#型パラメーターのバインド)型パラメーターのバインド 型パラメーターをバインドして、特定の型の値を要求できます。次の例での ​`{name: "DataWeave"}`​ の追加は有効です。これは、関数定義内の ​`{name: String}`​ で、​`name`​ キーの値は文字列である必要があることが示されているためです。 ```DataWeave %dw 2.0 fun addName(user: User): User & {name: String} = user ++ {name: "DataWeave"} var myUser: {name: String, developers: Number} = addName({developers: 3}) ``` #### [](#型定義のパラメーター化)型定義のパラメーター化 型パラメーターを使用して、型定義をパラメーター化できます。たとえば、1 つはテキストファイル、もう 1 つはバイナリファイルのファイルのコンテンツをモデル化するデータ構造を定義するとします。型パラメーターを使用して、正しい実装をディスパッチする新しい型を作成できます。 ```DataWeave %dw 2.0 type FileData = { data: Content, name: String } fun read(file: FileData) = "This is a text file with data " ++ file.data fun read(file: FileData) = "This is a binary file with data " ++ (file.data as String {base: "64"}) --- { binary: read({data: "Hello World" as Binary, name: "myFile.bin"}), text: read({data: "Hello World", name: "myFile.txt"}) } ``` ## [](#reuse_types)型の再利用 同じ DataWeave スクリプト内で型を宣言して使用したり ([型システム](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-system)を参照)、特定のモジュールローダーを使用して別のソースの型を読み込んで再利用したりできます。現在、DataWeave では、以下の方法で型を読み込むことができます。 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-reuse-modules) - [JSON スキーマの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-reuse-json-schema) - [XML スキーマの再利用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-reuse-xml-schema) - [Java クラスの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-type-reuse-java-classes) モジュールローダーは、ファイルを DataWeave モジュールとして読み込むために使用されます。それらのファイルの各種パートは DataWeave 関数、変数、型、名前空間定義として読み込まれます。インポートディレクティブで ​`java!`​ や ​`xmlschema!`​ などのプレフィックスを使用して、Java クラスや XML スキーマを DataWeave モジュールとして読み込むときにどのモジュールローダーを使用するのかを DataWeave に指示します。 # 型システム 2.DataWeave の x バージョンでは型システムがサポートされます。型システムで実行される型チェックを利用するには、このセクションで説明されている変数および関数の制約式を提供する必要があります。この型の値を定義する方法についての詳細は、​[「型の値構成」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-types)​を参照してください。 型システムでは、次のような構成要素のセットに対して一連の制約を定義します。 - 変数 - 関数パラメーター この制約は、型チェックフェーズで、関数コールの変数または引数に割り当てられた値に DataWeave で制約を確実に適用する場合に使用されます。次に例を示します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json var userName: String = "John" `userName`​ の変数定義には、型 ​`String`​ の値を割り当てるといった制約があります。 他の値のデータ型が割り当てられた場合、型チェックエラーが発生します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" 関数 ​`toUser`​ のコールに対する制約では、1 番目の引数の型が ​`Number`​、2 番目の引数の型が ​`String`​ である (これらの型に強制変換できるようにする) 必要があります。また、別の制約では、関数の結果の型が ​`String`​ である必要があります。この制約は ​`toUser`​ のコールでは使用されません。これは、関数本文で適切な型が生成されたことを検証するための定義に適用されます。 toUser(123, "John") toUser("123", true) 2 番目のコールは失敗することが予想される場合がありますが、自動型強制を使用するとコールを正常終了し、両方のコールを正常に機能させることができます。2 番目の関数コールの場合は、​`String`​ 値 ​`"123"`​ を ​`Number`​ 値 ​`123`​ に変換し、​`Boolean`​ 値 ​`true`​ を ​`String`​ 値 ​`"true"`​ に変換する自動型強制があり、これにより関数をコールすることができます。 型チェックエラーが発生するコールの例として、​`toUser("a 12", "John")`​ があります。String (文字列) 値 ​`"a 12"`​ を ​`Number`​ 型に型強制できないためです。 また、DataWeave は、制約として型が指定されていない場合でも、グローバル型推定アルゴリズムを使用してコードを検証します。
制約の使用は省略可能ですが、大きなスクリプトや複数のスクリプトでは制約が役立つ場合があります。型システムでは型チェックアルゴリズムが実行されるため、DataWeave ロジックのバグを回避するには型システムが役立ちます。また、IDE でスクリプトを記述してこの制約を定義する場合、このツールを使用して型チェックエラーを見つけることができるため、スクリプトが実行されたときにスクリプトが失敗することはありません。
DataWeave の型システムでサポートされる型は 3 つのカテゴリに分割されます。 - 単純型 - 複合型 - 複雑型 ## [](#単純型)単純型 単純型は文字列やブールなどの値を表します。この値はアトミックです。つまり、この値は他の値から構成されていません。次の型は単純型です。 - `String` - `Boolean` - `Number` - `Regex` - `Null` - 一時的: `Date`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`Period` ### [](#null)Null `Null`​ は 1 つの値 (​`null`​) のみの型です。つまり、​`null`​ を、型 ​`Null`​ を除き、型 ​`String`​ やその他の型に割り当てることはできません。 たとえば、String Module 内の ​`repeat`​ 関数にシグネチャー ​`repeat(String, Number): String`​ があるとします。つまり、この関数は 1 番目のパラメーターとして型 ​`String`​ の値のみを受け入れ、2 番目のパラメーターとして型 ​`Number`​ の値のみを受け入れます。この関数は型 ​`String`​ の値を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat("a", 3) これは ​`"aaa"`​ を返しますが、次の例ではエラーがスローされます。値 ​`null`​ を、型 ​`String`​ の値が想定されるパラメーターに割り当てることはできないためです。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(null, 3) 次の例では、スクリプトは 1 番目のパラメーターに型 ​`Null`​ の値を割り当てます (この値の型は ​`Type`​)。自動型強制によって値が型 ​`String`​ (​`"Null"`​) に変換されるため、これは ​`"NullNullNull"`​ を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(Null, 3) 一部の関数には、​`null`​ を使用してコールできるオーバーロード状態のシグネチャーがあります (関数にはさまざまなパラメーター種別の複数の定義があります)。 たとえば、​`dw::core::Strings`​ からの ​`isNumeric`​ 関数にシグネチャー ​`isNumeric(String): Boolean`​ があるとします。これは、文字列を受け取り、その文字列が数値の場合に結果を正常に返しますが、関数は ​`isNumeric(Null): Boolean`​ としても定義されています。 このため、​`null`​ (​`isNumeric(null)`​) を使用して関数 ​`isNumeric`​ をコールした場合、関数は例外をスローしません。実行時に、ディスパッチアルゴリズムである関数は、使用される値の型に基づいて正しい関数を選択します。​`null`​ を引数とする ​`isNumeric`​ の定義のため、この関数は ​`false`​ を返します。 ## [](#複合型)複合型 複合型には他の値が含まれます。複合型は ​`Array`​、​`Object`​、​`Function`​ です。 ### [](#array-配列-型)Array (配列) 型 配列の型は ​`Array`​ です。ここで、​`T`​ は、配列内の要素の型を定義する型パラメーターです。たとえば、​`Number`​ の ​`Array`​ 型を使用して変数を定義する構文を次に示します。 var idsList: Array = \[1, 22, 333, 4444\] 変数 ​`idsList`​ は、その変数に割り当てられた配列に ​`Number`​ 型の値のみが含まれる場合のみ、型チェックフェーズに合格します。 ### [](#object-オブジェクト-型)Object (オブジェクト) 型 `Object`​ 型は ​`Object`​ または ​`{}`​ の 2 つの方法で定義できます。この両方でオープンオブジェクトが定義されますが、キー-値ペアに対する制約は指定されません。「​[クローズドオブジェクトとオープンオブジェクト](#close_open_objects)​」も参照してください。 キー-値ペアに対する一連の制約を使用して ​`Object`​ 型を定義する構文は、​`Object`​ 型の値を定義する構文によく似ています。 { keyName @(attrName: AttrType): valueType, ... } たとえば、​`firstName` ​`String`​、​`lastName` ​`String`​、および ​`age` ​`Number`​ を使用して ​`User`​ 型を定義する構文を次に示します。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName: String, age: Number } 各キー-値ペアに修飾子を割り当てることで、項目が常に存在することや、項目が反復する可能性があることを指定できます。 反復する項目の場合は、​`*`​ を使用します。たとえば、次の型では、複数の ​`lastName`​ 項目を持つことができます。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age: Number } 条件付き項目の場合は、​`?`​ を使用します。たとえば、次の型では、​`age`​ 項目は存在してもしなくても構いません。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age?: Number } #### [](#close_open_objects)クローズドオブジェクトとオープンオブジェクト `Object`​ 型はクローズドまたはオープンにすることができます。​_クローズド_​オブジェクトでは、型で指定されたキー-値ペア以外の項目がない場合のみ、オブジェクト値を受け入れます。 _オープン_​オブジェクトでは、型で宣言された項目に対してのみ制約が適用され、すべての制約が検証された場合に型は値を受け入れます。この型は、宣言で示された項目とは別の項目を含むオブジェクトを受け入れます。特に指定しない限り、すべての ​`object`​ 型がオープンです。 次の例は、​`age`​ が型宣言に含まれていなくても、変数 ​`user`​ の型がオープンオブジェクトのため、成功します。 DataWeave スクリプト: %dw 2.0 output application/json var user: {firstName: String, lastName: String} = {firstName: "John", lastName: "Smith", age: 34} クローズドオブジェクトを指定する構文は ​`{| |}`​ です。次の例では、​`User`​ 型でサポートされるキーを ​`firstName`​ と ​`lastName`​ のみに限定します。​`age`​ 項目が受け入れられないため、このスクリプトは例外をスローします。 DataWeave スクリプト: %dw 2.0 output application/json var user: {|firstName: String, lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#function-関数-型)Function (関数) 型 DataWeave は関数型言語であり、関数は第一級オブジェクトとみなされます。つまり、関数は、関連付けられた型を持つ値です。 関数型を定義する構文を次に示します。 (paramType: ParamType,...) -> ReturnType たとえば、型 ​`String`​ のパラメーター、型 ​`Number`​ の 2 番目のパラメーター、および ​`Boolean`​ 戻り値を持つ ​`Function`​ 型を制約で定義する場合、正しい構文は次のようになります。 (paramA: String, paramB: Number) -> Boolean 次の例では、別の関数を引数として受け取る関数を定義します。 DataWeave スクリプト: %dw 2.0 output application/json fun applyIDsChange(ids: Array, changeTo: (Number) -> Number): Array = ??? `changeTo`​ の制約 ​`(Number) → Number`​ に一致しない関数を含む関数 ​`applyIDsChange`​ をコールすると、DataWeave は型チェックエラーをスローします。 たとえば、次のコールでは、​`abs`​ が ​`Number`​ 型の値を取り、​`changeTo`​ パラメーターに一致する ​`Number`​ を返す関数のため、コールは正常に機能します。 applyIDsChange(\[1,-6, 3, -8\], abs) ただし、次のコールでは、​`sum`​ が ​`Array`​ を取り、パラメーター制約に一致しない ​`Number`​ を返す関数のため、コールは失敗します。 applyIDsChange(\[1,-6, 3, -8\], sum) ## [](#複雑型)複雑型 複雑型には、​`Any`​ と ​`Nothing`​ 型、​`Union`​ 型、​`Intersection`​ 型、および ​`Literal`​ 型が含まれます。この各型の名前は直感的なわかりやすい名前です。 ### [](#any-任意-と-nothing-空)Any (任意) と Nothing (空) 場合によって、型がすべての値を受け入れるために制約を適用できないことがあります。 - `Any`​ 型は、可能なすべての値を受け入れます。 - `Nothing`​ 型は値を受け入れませんが、すべての型に割り当てることができます。この型は明示的に使用されることは頻繁にはありませんが、型推定アルゴリズムで使用されます。 ### [](#union-結合-型)Union (結合) 型 `Union`​ 型は、型を構成するために使用されます。​`Union`​ 型を定義する構文を次に示します。 TypeA | TypeB | ... 次の例では、型 ​`String`​ または ​`Number`​ の値を受け入れる制約を使用して変数を定義します。 var age: String | Number = if (payload.allStrings) "32" else 32 一般的なパターンでは、​`Null`​ 型を ​`Union`​ 型と共に使用して、型が ​`null`​ を値として受け入れることを指定します。次の例では、関数 ​`parseEmail`​ は型 ​`String`​ または ​`Null`​ の入力を許容します。この場合、ペイロードの省略可能な項目 ​`email`​ を含むオブジェクトを使用でき、​`payload.email`​ を使用して関数をコールできます。 fun parseEmail(email: String | Null) = "Code that handles email being of type String or Null" ### [](#intersection-交差-型)Intersection (交差) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ `Intersection`​ 型は ​`Object`​ 型を交差させます。この場合、交差はオブジェクト型の連結 (​`++`​) として機能します。 `Intersection`​ 型の構文を次に示します。 TypeA & TypeB & ... 次の例では、​`Intersection`​ が 2 つの ​`Object`​ 型を連結し、結果として型 ​`{name: String, lastName: String}`​ が生成されます。この型は、追加のキー-値ペアを受け入れることができるオープンオブジェクトです。変数は、その変数に割り当てられた値を受け入れます。 var a: {name: String} & {lastName: String} = {name: "John", lastName: "Smith", age: 34} クローズドオブジェクトの場合、オブジェクト型の連結が返されますが、結果としてクローズドオブジェクトが生成されます。 次の例では、交差により型 ​`{|name: String, lastName: String|}`​ が生成されますが、オブジェクト内に追加項目 (項目 ​`age`​) がある場合、クローズドオブジェクトは ​`Object`​ 値を受け入れないため、例外がスローされます。 var a: {|name: String|} & {|lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#literal-types)Literal (リテラル) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ リテラル型は 1 つの値を表します。たとえば、​`String`​ 値 ​`"foo"`​ は型 ​`"foo"`​ で表すことができます。 次のリテラル型は型システムに含まれます。 - `String`​ リテラル型 - `Number`​ リテラル型 - `Boolean`​ リテラル型 リテラル型を ​`Union`​ 型と共に使用して、許容される値の有限セットとして型を宣言できます。たとえば、次の型宣言は ​`Union`​ 型とリテラル型の別名です。 type Weekdays = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" type Days = Weekdays | "Saturday" | "Sunday" 次の例では、変数はリテラル型 ​`404`​ および ​`500`​ の値のみを受け入れます。型システムでは、実行前に変数を確実にこれらのリテラル値のいずれかのみとすることができます。 DataWeave スクリプト: %dw 2.0 output application/json var errorStatusCode: 404 | 500 = payload.statusCode match { case "error 404" -> 404 case "error 500" -> 500 } 関数オーバーロードでは、引数の値に基づいて異なる動作を定義できます。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun errorHandling(errorCode: 404 | 405, response): String = "Code for error 4XX handling here!" fun errorHandling(errorCode: 500 | 501, response): String = "Code for error 5XX handling here!" --- errorHandling(payload.statusCode, payload) 実行時に関数ディスパッチアルゴリズムが ​`payload.statusCode`​ の値の型に基づいて正しい関数を選択します。関数の動作を変更するために ​`if`​ ステートメントを使用して引数の値を確認する必要はありません。 ### [](#型パラメーター)型パラメーター 型パラメーターを使用すると、関数またはデータ型を汎用的に記述できるため、値の型に依存することなく、値を同様に処理できます。 たとえば、型情報を失うことなく配列の最初の要素を返す関数を定義できます。この例では、​`head`​ 関数が入力として取る配列内の項目の型を変数定義 ​`firstString:String`​ と ​`firstNumber:Number`​ で指定します。 ```DataWeave %dw 2.0 fun head(elements: Array): ItemType = elements[0]! var firstString:String = head(["DataWeave", "Java", "Scala", "Haskell"]) ++ " Rules!!!" var firstNumber:Number = head([1,2,3]) output application/json --- firstNumber ``` スクリプトの本文で、​`firstNumber`​ は数値 ​`1`​ を返します。​`firstNumber`​ を ​`firstString`​ に置き換えると、スクリプトは文字列 ​`"DataWeave Rules!!!"`​ を返します。 #### [](#型パラメーターのバインド)型パラメーターのバインド 型パラメーターをバインドして、特定の型の値を要求できます。次の例での ​`{name: "DataWeave"}`​ の追加は有効です。これは、関数定義内の ​`{name: String}`​ で、​`name`​ キーの値は文字列である必要があることが示されているためです。 ```DataWeave %dw 2.0 fun addName(user: User): User & {name: String} = user ++ {name: "DataWeave"} var myUser: {name: String, developers: Number} = addName({developers: 3}) ``` #### [](#型定義のパラメーター化)型定義のパラメーター化 型パラメーターを使用して、型定義をパラメーター化できます。たとえば、1 つはテキストファイル、もう 1 つはバイナリファイルのファイルのコンテンツをモデル化するデータ構造を定義するとします。型パラメーターを使用して、正しい実装をディスパッチする新しい型を作成できます。 ```DataWeave %dw 2.0 type FileData = { data: Content, name: String } fun read(file: FileData) = "This is a text file with data " ++ file.data fun read(file: FileData) = "This is a binary file with data " ++ (file.data as String {base: "64"}) --- { binary: read({data: "Hello World" as Binary, name: "myFile.bin"}), text: read({data: "Hello World", name: "myFile.txt"}) } ``` ## [](#reuse_types)型の再利用 同じ DataWeave スクリプト内で型を宣言して使用したり ([型システム](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-system)を参照)、特定のモジュールローダーを使用して別のソースの型を読み込んで再利用したりできます。現在、DataWeave では、以下の方法で型を読み込むことができます。 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-reuse-modules) - [JSON スキーマの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-reuse-json-schema) - [XML スキーマの再利用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-reuse-xml-schema) - [Java クラスの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-type-reuse-java-classes) モジュールローダーは、ファイルを DataWeave モジュールとして読み込むために使用されます。それらのファイルの各種パートは DataWeave 関数、変数、型、名前空間定義として読み込まれます。インポートディレクティブで ​`java!`​ や ​`xmlschema!`​ などのプレフィックスを使用して、Java クラスや XML スキーマを DataWeave モジュールとして読み込むときにどのモジュールローダーを使用するのかを DataWeave に指示します。 # 型システム 2.DataWeave の x バージョンでは型システムがサポートされます。型システムで実行される型チェックを利用するには、このセクションで説明されている変数および関数の制約式を提供する必要があります。この型の値を定義する方法についての詳細は、​[「型の値構成」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-types)​を参照してください。 型システムでは、次のような構成要素のセットに対して一連の制約を定義します。 - 変数 - 関数パラメーター この制約は、型チェックフェーズで、関数コールの変数または引数に割り当てられた値に DataWeave で制約を確実に適用する場合に使用されます。次に例を示します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json var userName: String = "John" `userName`​ の変数定義には、型 ​`String`​ の値を割り当てるといった制約があります。 他の値のデータ型が割り当てられた場合、型チェックエラーが発生します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun toUser(id: Number, userName: String): String = "you called the function toUser!" 関数 ​`toUser`​ のコールに対する制約では、1 番目の引数の型が ​`Number`​、2 番目の引数の型が ​`String`​ である (これらの型に強制変換できるようにする) 必要があります。また、別の制約では、関数の結果の型が ​`String`​ である必要があります。この制約は ​`toUser`​ のコールでは使用されません。これは、関数本文で適切な型が生成されたことを検証するための定義に適用されます。 toUser(123, "John") toUser("123", true) 2 番目のコールは失敗することが予想される場合がありますが、自動型強制を使用するとコールを正常終了し、両方のコールを正常に機能させることができます。2 番目の関数コールの場合は、​`String`​ 値 ​`"123"`​ を ​`Number`​ 値 ​`123`​ に変換し、​`Boolean`​ 値 ​`true`​ を ​`String`​ 値 ​`"true"`​ に変換する自動型強制があり、これにより関数をコールすることができます。 型チェックエラーが発生するコールの例として、​`toUser("a 12", "John")`​ があります。String (文字列) 値 ​`"a 12"`​ を ​`Number`​ 型に型強制できないためです。 また、DataWeave は、制約として型が指定されていない場合でも、グローバル型推定アルゴリズムを使用してコードを検証します。
制約の使用は省略可能ですが、大きなスクリプトや複数のスクリプトでは制約が役立つ場合があります。型システムでは型チェックアルゴリズムが実行されるため、DataWeave ロジックのバグを回避するには型システムが役立ちます。また、IDE でスクリプトを記述してこの制約を定義する場合、このツールを使用して型チェックエラーを見つけることができるため、スクリプトが実行されたときにスクリプトが失敗することはありません。
DataWeave の型システムでサポートされる型は 3 つのカテゴリに分割されます。 - 単純型 - 複合型 - 複雑型 ## [](#単純型)単純型 単純型は文字列やブールなどの値を表します。この値はアトミックです。つまり、この値は他の値から構成されていません。次の型は単純型です。 - `String` - `Boolean` - `Number` - `Regex` - `Null` - 一時的: `Date`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`Period` ### [](#null)Null `Null`​ は 1 つの値 (​`null`​) のみの型です。つまり、​`null`​ を、型 ​`Null`​ を除き、型 ​`String`​ やその他の型に割り当てることはできません。 たとえば、String Module 内の ​`repeat`​ 関数にシグネチャー ​`repeat(String, Number): String`​ があるとします。つまり、この関数は 1 番目のパラメーターとして型 ​`String`​ の値のみを受け入れ、2 番目のパラメーターとして型 ​`Number`​ の値のみを受け入れます。この関数は型 ​`String`​ の値を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat("a", 3) これは ​`"aaa"`​ を返しますが、次の例ではエラーがスローされます。値 ​`null`​ を、型 ​`String`​ の値が想定されるパラメーターに割り当てることはできないためです。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(null, 3) 次の例では、スクリプトは 1 番目のパラメーターに型 ​`Null`​ の値を割り当てます (この値の型は ​`Type`​)。自動型強制によって値が型 ​`String`​ (​`"Null"`​) に変換されるため、これは ​`"NullNullNull"`​ を返します。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json --- repeat(Null, 3) 一部の関数には、​`null`​ を使用してコールできるオーバーロード状態のシグネチャーがあります (関数にはさまざまなパラメーター種別の複数の定義があります)。 たとえば、​`dw::core::Strings`​ からの ​`isNumeric`​ 関数にシグネチャー ​`isNumeric(String): Boolean`​ があるとします。これは、文字列を受け取り、その文字列が数値の場合に結果を正常に返しますが、関数は ​`isNumeric(Null): Boolean`​ としても定義されています。 このため、​`null`​ (​`isNumeric(null)`​) を使用して関数 ​`isNumeric`​ をコールした場合、関数は例外をスローしません。実行時に、ディスパッチアルゴリズムである関数は、使用される値の型に基づいて正しい関数を選択します。​`null`​ を引数とする ​`isNumeric`​ の定義のため、この関数は ​`false`​ を返します。 ## [](#複合型)複合型 複合型には他の値が含まれます。複合型は ​`Array`​、​`Object`​、​`Function`​ です。 ### [](#array-配列-型)Array (配列) 型 配列の型は ​`Array`​ です。ここで、​`T`​ は、配列内の要素の型を定義する型パラメーターです。たとえば、​`Number`​ の ​`Array`​ 型を使用して変数を定義する構文を次に示します。 var idsList: Array = \[1, 22, 333, 4444\] 変数 ​`idsList`​ は、その変数に割り当てられた配列に ​`Number`​ 型の値のみが含まれる場合のみ、型チェックフェーズに合格します。 ### [](#object-オブジェクト-型)Object (オブジェクト) 型 `Object`​ 型は ​`Object`​ または ​`{}`​ の 2 つの方法で定義できます。この両方でオープンオブジェクトが定義されますが、キー-値ペアに対する制約は指定されません。​[クローズドオブジェクトとオープンオブジェクト](#close_open_objects)​も参照してください。 キー-値ペアに対する一連の制約を使用して ​`Object`​ 型を定義する構文は、​`Object`​ 型の値を定義する構文によく似ています。 { keyName @(attrName: AttrType): valueType, ... } たとえば、​`firstName` ​`String`​、​`lastName` ​`String`​、および ​`age` ​`Number`​ を使用して ​`User`​ 型を定義する構文を次に示します。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName: String, age: Number } 各キー-値ペアに修飾子を割り当てることで、項目が常に存在することや、項目が反復する可能性があることを指定できます。 反復する項目の場合は、​`*`​ を使用します。たとえば、次の型では、複数の ​`lastName`​ 項目を持つことができます。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age: Number } 条件付き項目の場合は、​`?`​ を使用します。たとえば、次の型では、​`age`​ 項目は存在してもしなくても構いません。 DataWeave スクリプト: %dw 2.0 output application/json type User = { firstName: String, lastName\*: String, age?: Number } #### [](#close_open_objects)クローズドオブジェクトとオープンオブジェクト `Object`​ 型はクローズドまたはオープンにすることができます。​_クローズド_​オブジェクトでは、型で指定されたキー-値ペア以外の項目がない場合のみ、オブジェクト値を受け入れます。 _オープン_​オブジェクトでは、型で宣言された項目に対してのみ制約が適用され、すべての制約が検証された場合に型は値を受け入れます。この型は、宣言で示された項目とは別の項目を含むオブジェクトを受け入れます。特に指定しない限り、すべての ​`object`​ 型がオープンです。 次の例は、​`age`​ が型宣言に含まれていなくても、変数 ​`user`​ の型がオープンオブジェクトのため、成功します。 DataWeave スクリプト: %dw 2.0 output application/json var user: {firstName: String, lastName: String} = {firstName: "John", lastName: "Smith", age: 34} クローズドオブジェクトを指定する構文は ​`{| |}`​ です。次の例では、​`User`​ 型でサポートされるキーを ​`firstName`​ と ​`lastName`​ のみに限定します。​`age`​ 項目が受け入れられないため、このスクリプトは例外をスローします。 DataWeave スクリプト: %dw 2.0 output application/json var user: {|firstName: String, lastName: String|} = {firstName: "John", lastName: "Smith", age: 34} ### [](#function-関数-型)Function (関数) 型 DataWeave は関数型言語であり、関数は第一級オブジェクトとみなされます。つまり、関数は、関連付けられた型を持つ値です。 関数型を定義する構文を次に示します。 (paramType: ParamType,...) -> ReturnType たとえば、型 ​`String`​ のパラメーター、型 ​`Number`​ の 2 番目のパラメーター、および ​`Boolean`​ 戻り値を持つ ​`Function`​ 型を制約で定義する場合、正しい構文は次のようになります。 (paramA: String, paramB: Number) -> Boolean 次の例では、別の関数を引数として受け取る関数を定義します。 DataWeave スクリプト: %dw 2.0 output application/json fun applyIDsChange(ids: Array, changeTo: (Number) -> Number): Array = ??? `changeTo`​ の制約 ​`(Number) → Number`​ に一致しない関数を含む関数 ​`applyIDsChange`​ をコールすると、DataWeave は型チェックエラーをスローします。 たとえば、次のコールでは、​`abs`​ が ​`Number`​ 型の値を取り、​`changeTo`​ パラメーターに一致する ​`Number`​ を返す関数のため、コールは正常に機能します。 applyIDsChange(\[1,-6, 3, -8\], abs) ただし、次のコールでは、​`sum`​ が ​`Array`​ を取り、パラメーター制約に一致しない ​`Number`​ を返す関数のため、コールは失敗します。 applyIDsChange(\[1,-6, 3, -8\], sum) ## [](#複雑型)複雑型 複雑型には、​`Any`​ と ​`Nothing`​ 型、​`Union`​ 型、​`Intersection`​ 型、および ​`Literal`​ 型が含まれます。この各型の名前は直感的なわかりやすい名前です。 ### [](#any-任意-と-nothing-空)Any (任意) と Nothing (空) 場合によって、型がすべての値を受け入れるために制約を適用できないことがあります。 - `Any`​ 型は、可能なすべての値を受け入れます。 - `Nothing`​ 型は値を受け入れませんが、すべての型に割り当てることができます。この型は明示的に使用されることは頻繁にはありませんが、型推定アルゴリズムで使用されます。 ### [](#union-結合-型)Union (結合) 型 `Union`​ 型は、型を構成するために使用されます。​`Union`​ 型を定義する構文を次に示します。 TypeA | TypeB | ... 次の例では、型 ​`String`​ または ​`Number`​ の値を受け入れる制約を使用して変数を定義します。 var age: String | Number = if (payload.allStrings) "32" else 32 一般的なパターンでは、​`Null`​ 型を ​`Union`​ 型と共に使用して、型が ​`null`​ を値として受け入れることを指定します。次の例では、関数 ​`parseEmail`​ は型 ​`String`​ または ​`Null`​ の入力を許容します。この場合、ペイロードの省略可能な項目 ​`email`​ を含むオブジェクトを使用でき、​`payload.email`​ を使用して関数をコールできます。 fun parseEmail(email: String | Null) = "Code that handles email being of type String or Null" ### [](#intersection-交差-型)Intersection (交差) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ `Intersection`​ 型は ​`Object`​ 型を交差させます。この場合、交差はオブジェクト型の連結 (​`++`​) として機能します。 `Intersection`​ 型の構文を次に示します。 TypeA & TypeB & ... 次の例では、​`Intersection`​ が 2 つの ​`Object`​ 型を連結し、結果として型 ​`{name: String, lastName: String}`​ が生成されます。この型は、追加のキー-値ペアを受け入れることができるオープンオブジェクトです。変数は、その変数に割り当てられた値を受け入れます。 var a: {name: String} & {lastName: String} = {name: "John", lastName: "Smith", age: 34} クローズドオブジェクトの場合、オブジェクト型の連結が返されますが、結果としてクローズドオブジェクトが生成されます。 次の例では、交差により型 ​`{|name: String, lastName: String|}`​ が生成されますが、オブジェクト内に追加項目 (項目 ​`age`​) がある場合、クローズドオブジェクトは ​`Object`​ 値を受け入れないため、例外がスローされます。 var a: {|name: String|} & {|lastName: String|} = {name: "John", lastName: "Smith", age: 34} ### [](#literal-types)Literal (リテラル) 型 _DataWeave 2.3.0 で導入されました。Mule 4.3 以降でサポートされます。_ リテラル型は 1 つの値を表します。たとえば、​`String`​ 値 ​`"foo"`​ は型 ​`"foo"`​ で表すことができます。 次のリテラル型は型システムに含まれます。 - `String`​ リテラル型 - `Number`​ リテラル型 - `Boolean`​ リテラル型 リテラル型を ​`Union`​ 型と共に使用して、許容される値の有限セットとして型を宣言できます。たとえば、次の型宣言は ​`Union`​ 型とリテラル型の別名です。 type Weekdays = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" type Days = Weekdays | "Saturday" | "Sunday" 次の例では、変数はリテラル型 ​`404`​ および ​`500`​ の値のみを受け入れます。型システムでは、実行前に変数を確実にこれらのリテラル値のいずれかのみとすることができます。 DataWeave スクリプト: %dw 2.0 output application/json var errorStatusCode: 404 | 500 = payload.statusCode match { case "error 404" -> 404 case "error 500" -> 500 } 関数オーバーロードでは、引数の値に基づいて異なる動作を定義できます。 DataWeave スクリプト: %dw 2.0 import \* from dw::core::Strings output application/json fun errorHandling(errorCode: 404 | 405, response): String = "Code for error 4XX handling here!" fun errorHandling(errorCode: 500 | 501, response): String = "Code for error 5XX handling here!" --- errorHandling(payload.statusCode, payload) 実行時に関数ディスパッチアルゴリズムが ​`payload.statusCode`​ の値の型に基づいて正しい関数を選択します。関数の動作を変更するために ​`if`​ ステートメントを使用して引数の値を確認する必要はありません。 ### [](#型パラメーター)型パラメーター 型パラメーターを使用すると、関数またはデータ型を汎用的に記述できるため、値の型に依存することなく、値を同様に処理できます。 たとえば、型情報を失うことなく配列の最初の要素を返す関数を定義できます。この例では、​`head`​ 関数が入力として取る配列内の項目の型を変数定義 ​`firstString:String`​ と ​`firstNumber:Number`​ で指定します。 ```DataWeave %dw 2.0 fun head(elements: Array): ItemType = elements[0]! var firstString:String = head(["DataWeave", "Java", "Scala", "Haskell"]) ++ " Rules!!!" var firstNumber:Number = head([1,2,3]) output application/json --- firstNumber ``` スクリプトの本文で、​`firstNumber`​ は数値 ​`1`​ を返します。​`firstNumber`​ を ​`firstString`​ に置き換えると、スクリプトは文字列 ​`"DataWeave Rules!!!"`​ を返します。 #### [](#型パラメーターのバインド)型パラメーターのバインド 型パラメーターをバインドして、特定の型の値を要求できます。次の例での ​`{name: "DataWeave"}`​ の追加は有効です。これは、関数定義内の ​`{name: String}`​ で、​`name`​ キーの値は文字列である必要があることが示されているためです。 ```DataWeave %dw 2.0 fun addName(user: User): User & {name: String} = user ++ {name: "DataWeave"} var myUser: {name: String, developers: Number} = addName({developers: 3}) ``` #### [](#型定義のパラメーター化)型定義のパラメーター化 型パラメーターを使用して、型定義をパラメーター化できます。たとえば、1 つはテキストファイル、もう 1 つはバイナリファイルのファイルのコンテンツをモデル化するデータ構造を定義するとします。型パラメーターを使用して、正しい実装をディスパッチする新しい型を作成できます。 ```DataWeave %dw 2.0 type FileData = { data: Content, name: String } fun read(file: FileData) = "This is a text file with data " ++ file.data fun read(file: FileData) = "This is a binary file with data " ++ (file.data as String {base: "64"}) --- { binary: read({data: "Hello World" as Binary, name: "myFile.bin"}), text: read({data: "Hello World", name: "myFile.txt"}) } ``` ## [](#reuse_types)型の再利用 同じ DataWeave スクリプト内で型を宣言して使用したり ([型システム](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-system)を参照)、特定のモジュールローダーを使用して別のソースの型を読み込んで再利用したりできます。現在、DataWeave では、以下の方法で型を読み込むことができます。 - [DataWeave モジュールの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-modules) - [JSON スキーマの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-json-schema) - [XML スキーマの再利用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-xml-schema) - [Java クラスの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-java-classes) - [Avro スキーマの型の再利用](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-avro-schema) モジュールローダーは、ファイルを DataWeave モジュールとして読み込むために使用されます。それらのファイルの各種パートは DataWeave 関数、変数、型、名前空間定義として読み込まれます。インポートディレクティブで ​`java!`​ や ​`xmlschema!`​ などのプレフィックスを使用して、Java クラスや XML スキーマを DataWeave モジュールとして読み込むときにどのモジュールローダーを使用するのかを DataWeave に指示します。 # 型に応じた形式 この DataWeave の例では、対応する値の型に応じてオブジェクトのキーに変更を適用します。要素が配列の場合、キーは複数化されます。数値の場合、キャメルケースに設定されます。その他の場合、大文字になります。 開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。 この例では、以下を使用します。 - ペイロードの各要素を調べる ​`mapObject`​。 - 要素が特定の型かどうかをチェックする ​`if`​。 - キャメルケース形式 (すべての単語が結合され、大文字を使用して区切りを表す) を文字列に適用する文字列ライブラリの ​`camelize`​。 - 大文字形式 (すべての単語が分離され、大文字で始まる) を文字列に適用する文字列ライブラリの ​`capitalize`​。 - 単数形の単語を複数形に変更する文字列ライブラリの ​`pluralize`​。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- payload mapObject ((elementValue, elementKey) -> { (if (elementValue is Array) pluralize(elementKey) else if(elementValue is Number) camelize(elementKey) else capitalize(elementKey)) : elementValue }) ``` 入力 JSON ペイロード: ```json { "VersionNo": 1.6, "StoreOfOrigin": "SFO", "Item": [ { "ID":"34546315801", "DeliveryMethod":"AIR", "Quantity":8 }, { "ID":"56722087289", "Boxes": 3, "DeliveryMethod":"GROUND", "Quantity":2 } ] } ``` 出力 JSON: ```json { "versionNo": 1.6, "Store Of Origin": "SFO", "Items": [ { "ID": "34546315801", "DeliveryMethod": "AIR", "Quantity": 8 }, { "ID": "56722087289", "Boxes": 3, "DeliveryMethod": "GROUND", "Quantity": 2 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook) # 型に応じた形式 この DataWeave の例では、対応する値の型に応じてオブジェクトのキーに変更を適用します。要素が配列の場合、キーは複数化されます。数値の場合、キャメルケースに設定されます。その他の場合、大文字になります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - ペイロードの各要素を調べる ​`mapObject`​。 - 要素が特定の型かどうかをチェックする ​`if`​。 - キャメルケース形式 (すべての単語が結合され、大文字を使用して区切りを表す) を文字列に適用する文字列ライブラリの ​`camelize`​。 - 大文字形式 (すべての単語が分離され、大文字で始まる) を文字列に適用する文字列ライブラリの ​`capitalize`​。 - 単数形の単語を複数形に変更する文字列ライブラリの ​`pluralize`​。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- payload mapObject ((elementValue, elementKey) -> { (if (elementValue is Array) pluralize(elementKey) else if(elementValue is Number) camelize(elementKey) else capitalize(elementKey)) : elementValue }) ``` 入力 JSON ペイロード: ```json { "VersionNo": 1.6, "StoreOfOrigin": "SFO", "Item": [ { "ID":"34546315801", "DeliveryMethod":"AIR", "Quantity":8 }, { "ID":"56722087289", "Boxes": 3, "DeliveryMethod":"GROUND", "Quantity":2 } ] } ``` 出力 JSON: ```json { "versionNo": 1.6, "Store Of Origin": "SFO", "Items": [ { "ID": "34546315801", "DeliveryMethod": "AIR", "Quantity": 8 }, { "ID": "56722087289", "Boxes": 3, "DeliveryMethod": "GROUND", "Quantity": 2 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook) # 型に応じた形式 この DataWeave の例では、対応する値の型に応じてオブジェクトのキーに変更を適用します。要素が配列の場合、キーは複数化されます。数値の場合、キャメルケースに設定されます。その他の場合、大文字になります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - ペイロードの各要素を調べる ​`mapObject`​。 - 要素が特定の型かどうかをチェックする ​`if`​。 - キャメルケース形式 (すべての単語が結合され、大文字を使用して区切りを表す) を文字列に適用する文字列ライブラリの ​`camelize`​。 - 大文字形式 (すべての単語が分離され、大文字で始まる) を文字列に適用する文字列ライブラリの ​`capitalize`​。 - 単数形の単語を複数形に変更する文字列ライブラリの ​`pluralize`​。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- payload mapObject ((elementValue, elementKey) -> { (if (elementValue is Array) pluralize(elementKey) else if(elementValue is Number) camelize(elementKey) else capitalize(elementKey)) : elementValue }) ``` 入力 JSON ペイロード: ```json { "VersionNo": 1.6, "StoreOfOrigin": "SFO", "Item": [ { "ID":"34546315801", "DeliveryMethod":"AIR", "Quantity":8 }, { "ID":"56722087289", "Boxes": 3, "DeliveryMethod":"GROUND", "Quantity":2 } ] } ``` 出力 JSON: ```json { "versionNo": 1.6, "Store Of Origin": "SFO", "Items": [ { "ID": "34546315801", "DeliveryMethod": "AIR", "Quantity": 8 }, { "ID": "56722087289", "Boxes": 3, "DeliveryMethod": "GROUND", "Quantity": 2 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.5/dataweave-cookbook) # 型に応じた形式 この DataWeave の例では、対応する値の型に応じてオブジェクトのキーに変更を適用します。要素が配列の場合、キーは複数化されます。数値の場合、キャメルケースに設定されます。その他の場合、大文字になります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - ペイロードの各要素を調べる ​`mapObject`​。 - 要素が特定の型かどうかをチェックする ​`if`​。 - キャメルケース形式 (すべての単語が結合され、大文字を使用して区切りを表す) を文字列に適用する文字列ライブラリの ​`camelize`​。 - 大文字形式 (すべての単語が分離され、大文字で始まる) を文字列に適用する文字列ライブラリの ​`capitalize`​。 - 単数形の単語を複数形に変更する文字列ライブラリの ​`pluralize`​。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- payload mapObject ((elementValue, elementKey) -> { (if (elementValue is Array) pluralize(elementKey) else if(elementValue is Number) camelize(elementKey) else capitalize(elementKey)) : elementValue }) ``` 入力 JSON ペイロード: ```json { "VersionNo": 1.6, "StoreOfOrigin": "SFO", "Item": [ { "ID":"34546315801", "DeliveryMethod":"AIR", "Quantity":8 }, { "ID":"56722087289", "Boxes": 3, "DeliveryMethod":"GROUND", "Quantity":2 } ] } ``` 出力 JSON: ```json { "versionNo": 1.6, "Store Of Origin": "SFO", "Items": [ { "ID": "34546315801", "DeliveryMethod": "AIR", "Quantity": 8 }, { "ID": "56722087289", "Boxes": 3, "DeliveryMethod": "GROUND", "Quantity": 2 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook) # 型に応じた形式 この DataWeave の例では、対応する値の型に応じてオブジェクトのキーに変更を適用します。要素が配列の場合、キーは複数化されます。数値の場合、キャメルケースに設定されます。その他の場合、大文字になります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - ペイロードの各要素を調べる ​`mapObject`​。 - 要素が特定の型かどうかをチェックする ​`if`​。 - キャメルケース形式 (すべての単語が結合され、大文字を使用して区切りを表す) を文字列に適用する文字列ライブラリの ​`camelize`​。 - 大文字形式 (すべての単語が分離され、大文字で始まる) を文字列に適用する文字列ライブラリの ​`capitalize`​。 - 単数形の単語を複数形に変更する文字列ライブラリの ​`pluralize`​。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- payload mapObject ((elementValue, elementKey) -> { (if (elementValue is Array) pluralize(elementKey) else if(elementValue is Number) camelize(elementKey) else capitalize(elementKey)) : elementValue }) ``` 入力 JSON ペイロード: ```json { "VersionNo": 1.6, "StoreOfOrigin": "SFO", "Item": [ { "ID":"34546315801", "DeliveryMethod":"AIR", "Quantity":8 }, { "ID":"56722087289", "Boxes": 3, "DeliveryMethod":"GROUND", "Quantity":2 } ] } ``` 出力 JSON: ```json { "versionNo": 1.6, "Store Of Origin": "SFO", "Items": [ { "ID": "34546315801", "DeliveryMethod": "AIR", "Quantity": 8 }, { "ID": "56722087289", "Boxes": 3, "DeliveryMethod": "GROUND", "Quantity": 2 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook) # 型に応じた形式 この DataWeave の例では、対応する値の型に応じてオブジェクトのキーに変更を適用します。要素が配列の場合、キーは複数化されます。数値の場合、キャメルケースに設定されます。その他の場合、大文字になります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。 この例では、以下を使用します。 - ペイロードの各要素を調べる ​`mapObject`​。 - 要素が特定の型かどうかをチェックする ​`if`​。 - キャメルケース形式 (すべての単語が結合され、大文字を使用して区切りを表す) を文字列に適用する文字列ライブラリの ​`camelize`​。 - 大文字形式 (すべての単語が分離され、大文字で始まる) を文字列に適用する文字列ライブラリの ​`capitalize`​。 - 単数形の単語を複数形に変更する文字列ライブラリの ​`pluralize`​。 DataWeave スクリプト: ```dataweave %dw 2.0 import * from dw::core::Strings output application/json --- payload mapObject ((elementValue, elementKey) -> { (if (elementValue is Array) pluralize(elementKey) else if(elementValue is Number) camelize(elementKey) else capitalize(elementKey)) : elementValue }) ``` 入力 JSON ペイロード: ```json { "VersionNo": 1.6, "StoreOfOrigin": "SFO", "Item": [ { "ID":"34546315801", "DeliveryMethod":"AIR", "Quantity":8 }, { "ID":"56722087289", "Boxes": 3, "DeliveryMethod":"GROUND", "Quantity":2 } ] } ``` 出力 JSON: ```json { "versionNo": 1.6, "Store Of Origin": "SFO", "Items": [ { "ID": "34546315801", "DeliveryMethod": "AIR", "Quantity": 8 }, { "ID": "56722087289", "Boxes": 3, "DeliveryMethod": "GROUND", "Quantity": 2 } ] } ``` ## [](#関連する例)関連する例 - [自己終了 XML タグの出力](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-output-self-closing-xml-tags) - [XML タグへの属性の挿入](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-insert-attribute) ## [](#関連情報)関連情報 - [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors) - [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook) # 型の値構成 DataWeave では値を使用してデータを表します。値にはそれぞれデータ型が関連付けられています。型には文字列、配列、ブール、数値、オブジェクト、日付、時刻などさまざまなものがあります。各型では、値を作成するいくつかの方法がサポートされています。このトピックでは、その多くの作成方法について説明します。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。 DataWeave が提供する型はモジュールにバンドルされ、モジュールにも、関連する関数が含まれます。 `dw::Core`​ モジュール内の型 (Core 型) は、Core モジュールをインポートしなくても使用できます。他のモジュールについては、モジュールをインポートしてその関数と型を使用できるようにする必要があります。 各 DataWeave 型で使用できる値、それらの値の作成方法、使用される一般的なパターンについて理解しておくことが重要です。 - [配列](#conditional_elements_array)​と​[オブジェクト](#conditional_elements_object)​に対して ​`if`​ 式を使用する条件付き要素。 - [文字列補間](#string_interpolation)​ - 日付の各部分にアクセスするための​[日付複合](#date_decomposition)​ - [日付と時刻の形式](#date_format)​ - オブジェクトの各部への動的なアクセスを可能にする​[動的キー](#dynamic_keys)​および​[動的要素](#dynamic_elements)​ - [Regex (正規表現) (dw::Core 型)](#dw_type_regex)​ 式の使用 ## [](#dw_type_array)Array (配列) (dw::Core 型) 配列には、サポートされるすべての型の要素を保持できます。配列の例を次に示します。 例: DataWeave 配列 ```dataweave %dw 2.0 output application/json var x = "words" --- [ "My", "three", x ] ``` ### [](#conditional_elements_array)条件付き要素 配列では、条件に基づいて表示する (または表示しない) 要素を定義できます。 条件付き要素は、次の例のように、​`(value) if condition`​ の形式をとります。 例: if 条件 ```dataweave %dw 2.0 output application/json --- [(1) if true, (2) if false] ``` 出力 ```json [1] ``` ## [](#dw_type_boolean)Boolean (ブール) (dw::Core 型) `Boolean`​ は、キーワード ​`true`​ および ​`false`​ によって定義されます。 ## [](#dw_type_cdata)CData (dw::Core 型) XML では、​`CData`​ という名前のカスタム型を定義します。これは ​`String`​ を継承し、拡張します。これを使用して、CDATA XML ブロックを識別します。CDATA 内でコンテンツをラップするか、CDATA ブロック内に入力文字列が到達したかどうかを確認するように、これを使用してライターに指示することができます。 変換 ```dataweave %dw 2.0 output application/xml encoding="UTF-8" --- { users: { user : "Mariano" as CData, age : 31 as CData } } ``` 出力 ```xml ``` ## [](#dw_type_dates)日時 (dw::Core 型) DataWeave の日付は [ISO-8601 標準](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)​に従い、リテラルは ​`|`​ 文字の間に定義されます。 この言語には次のネイティブの日付型があります。 - `Date`​ - `DateTime`​ - `LocalDateTime`​ - `LocalTime`​ - `Period`​ - `Time`​ - `TimeZone` ### [](#dw_type_dates_date)Date (日付) `Year`​、​`Month`​、および ​`Day`​ で表され、​`|uuuu-MM-dd|`​ として指定される ​`Date`​。​`Date`​ 型に Time コンポーネントはありません。 例 ```dataweave |2003-10-01| ``` ### [](#dw_type_dates_datetime)DateTime タイムゾーン内の日付と時刻。これは ​`Date`​ + ​`Time`​ + ​`TimeZone`​ を接続したものです。 例 ```dataweave |2003-10-01T23:57:59-03:00| ``` ### [](#LocalDateTime)LocalDateTime 現在の ​`TimeZone`​ 内の ​`DateTime`​。 例 ```dataweave |2003-10-01T23:57:59| ``` ### [](#dw_type_dates_localtime)LocalTime 現在の ​`TimeZone`​ 内の ​`Time`​。 ### [](#dw_type_dates_period)Period (期間) `Period`​ は時間を表します。この型は次の形式を取ります。 - `P[n]Y[n]M[n]DT[n]H[n]M[n]S`​ - `PT