Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerDataWeave では、as
演算子を使用して、型を別の型に強制的に変換できます。型強制は実行時に適用されます。
開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 のドキュメントを参照してください。
他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
期待される型に一致しないプロパティを演算子に提供した場合、DataWeave は、自動的に、提供されたプロパティを必須の型に強制的に変換しようとします。
この DataWeave 例では、String
型を使用して型 Currency
を定義し、Java DecimalFormat パターン (##
) を使用して値を書式設定し、as
を使用して price
値を Currency
型に強制的に変換します。
<items>
<item>
<price>22.30</price>
</item>
<item>
<price>20.31</price>
</item>
</items>
%dw 2.0
output application/json
type Currency = String { format: "\$#,###.00"}
---
books: payload.items.*item map
book:
price: $.price as Currency
{
"books": [
{
"book": {
"price": "22.30"
}
},
{
"book": {
"price": "20.31"
}
}
]
}
次の表は、可能な組み合わせと、変換で使用するスキーマからのプロパティを示しています。
ソース | 対象 | プロパティ |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プロパティ | 説明 |
---|---|
|
Object (オブジェクト) 型の Java クラスを受け入れます。 |
|
数値と日付を書式設定するための Java |
|
Java ロケールを受け入れます。Java |
|
日付値と時刻値の解析モード。有効な値:
|
|
値には |
次の例は、mode
プロパティの使用方法を示しています。LENIENT
と SMART
は、02/31/2020
のような無効な日付を受け取った場合でも有効な日付を返しますが、返される日付は異なります。 STRICT
は、無効な日付に対してエラーを返します。例では、yyyy
ではなく uuuu
を使用して年を表しています。
%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'}
}
}
%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'}
によってエラーが返されています。
"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
に強制変換します。また、++
を使用して結果を連結します。
%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"}
"12-28-2020 16:08:00"
次の例も、文字列を日付形式に変換します。まず、この変換は as
を使用して文字列を LocalDateTime
型に強制変換してから、結果を指定された出力形式の String
型に強制変換します。
%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"}
"08/30/2020"
次の例では、文字列を 10 進数表現の数値に変換します。数値から文字列への変換時に format
はゼロを追加するため、まず文字列値 "22"
を Number
に変換してから String
に再度変換します。入力データが数値 22
の場合、最初の Number
変換を実行する必要はありません。
後者の Number
変換では、出力を 10 進数表現の数値にします。
%dw 2.0
output application/json
---
{
data: "22" as Number as String {format: ".00"} as Number
}
{
"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"
プロパティでは、月をスペイン語で書式設定します。
%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"}
}
{
"enNumber": "12.3",
"esNumber": "12,3",
"esDate": "31-dic.-20",
"enDate": "31-Dec-20"
}