Contact Us 1-800-596-4880

toNumber

toNumber(str: String, formatters: Array<Formatter>): Number

Transforms a String value into a Number value using the first Formatter that matches with the given value to transform.

Introduced in DataWeave version 2.5.0.

Parameters

Name Type Description

str

String

The String value to transform into a Number value.

formatters

Array<DatesFormatter>

The array of formatting to use on the Number value.

Example

This example shows how toNumber behaves with different inputs. It produces output in the application/dw format.

Source

%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
}

Output

{
  a: 0.005 as Number {format: ".00"},
  b: "Could not find a valid formatter for '0.005'"
}

toNumber(dateTime: DateTime, unit: MillisOrSecs | Null = null): Number

A variant of toNumber that transforms a DateTime value into a number of seconds or milliseconds, depending on the selected unit.

Introduced in DataWeave version 2.4.0.

Parameters

Name Description

dateTime

The DateTime value to transform into a Number value.

unit

The unit of time ("milliseconds" or "seconds") to use Given a null value, the function uses "seconds".

Example

This example shows how toNumber behaves with different inputs.

Source

%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")
}

Output

{
  "epoch": 1443743879,
  "millis": 1443743879000
}

toNumber(period: Period, unit: PeriodUnits | Null = null): Number

A variant of toNumber that transforms a Period value into a number of hours, minutes, seconds, milliseconds or nanoseconds (nanos).

Introduced in DataWeave version 2.4.0.

Parameters

Name Description

period

The Period value to transform into a Number value.

unit

The unit to apply to the specified period: hours, minutes, seconds, milliseconds, or nanos.

Example

This example shows how toNumber behaves with different inputs.

Source

%dw 2.0
import * from dw::util::Coercions
output application/json
---
{
    toSecondsEx1: toNumber(|PT1H10M|, "seconds"),
    toSecondsEx2: toNumber(|PT1M7S|, "milliseconds")
}

Output

{
  "toSecondsEx1": 4200,
  "toSecondsEx2": 67000
}

toNumber(value: String | Key, format: String | Null = null, locale: String | Null = null): Number

A variant of toNumber that transforms a String or Key value into a Number value and that accepts a format and locale.

Introduced in DataWeave version 2.4.0.

Parameters

Name Description

value

The String or Key value to transform into a Number value.

format

Optional formatting to apply to the value. A format accepts # or 0 (but not both) as placeholders for decimal values and a single whole number that is less than 10. Only one decimal point is permitted. A null or empty String value has no effect on the Number value. Other characters produce an error.

locale

Optional ISO 3166 country code to use, such as US, AR, or ES. A null or absent value uses your JVM default.

Example

This example shows how toNumber behaves with different inputs.

Source

%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])
 }

Output

{
  "default": 1.0,
  "withFormat": 0.005,
  "withLocal": 1.25,
  "withExtraPlaceholders": 5.55,
  "keyToNumber": 123
}