Contact Us 1-800-596-4880

++

++<S, T>(source: Array<S>, with: Array<T>): Array<S | T>

Concatenates two values.

This version of ++ concatenates the elements of two arrays into a new array. Other versions act on strings, objects, and the various date and time formats that DataWeave supports.

If the two arrays contain different types of elements, the resulting array is all of S type elements of Array<S> followed by all the T type elements of Array<T>. Either of the arrays can also have mixed-type elements. Also note that the arrays can contain any supported data type.

Parameters

Name Description

source

The source array.

with

The array to concatenate with the source array.

Example

The example concatenates an Array<Number> with an Array<String>. Notice that it outputs the result as the value of a JSON object.

Source

%dw 2.0
output application/json
---
{ "result" : [0, 1, 2] ++ ["a", "b", "c"] }

Output

{ "result": [0, 1, 2, "a", "b", "c"] }

Example

Source

%dw 2.0
output application/json
---
{ "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] }

Output

{ "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] }

++(source: String, with: String): String

Concatenates the characters of two strings.

Strings are treated as arrays of characters, so the ++ operator concatenates the characters of each string as if they were arrays of single-character string.

Parameters

Name Description

source

The source string.

with

The string to concatenate with the source string.

Example

This example concatenates two strings. Here, Mule is treated as Array<String> ["M", "u", "l", "e"]. Notice that the example outputs the result MuleSoft as the value of a JSON object.

Source

%dw 2.0
output application/json
---
{ "name" : "Mule" ++ "Soft" }

Output

{ "name": "MuleSoft" }

++<T <: Object, Q <: Object>(source: T, with: Q): T & Q

Concatenates two objects and returns one flattened object.

The ++ operator extracts all the key-values pairs from each object, then combines them together into one result object.

Parameters

Name Description

source

The source object.

with

The object to concatenate with the source object.

Example

This example concatenates two objects and transforms them to XML. Notice that it flattens the array of objects {aa: "a", bb: "b"} into separate XML elements and that the output uses the keys of the specified JSON objects as XML elements and the values of those objects as XML values.

Source

%dw 2.0
output application/xml
---
{ concat : {aa: "a", bb: "b"} ++ {cc: "c"} }

Output

<?xml version="1.0" encoding="UTF-8"?>
<concat>
  <aa>a</aa>
  <bb>b</bb>
  <cc>c</cc>
</concat>

++(date: Date, time: LocalTime): LocalDateTime

Appends a LocalTime with a Date to return a LocalDateTime value.

Date and LocalTime instances are written in standard Java notation, surrounded by pipe (|) symbols. The result is a LocalDateTime object in the standard Java format. Note that the order in which the two objects are concatenated is irrelevant, so logically, Date LocalTime` produces the same result as `LocalTime Date.

Parameters

Name Description

date

A Date.

time

A LocalTime, a time format without a time zone.

Example

This example concatenates a Date and LocalTime object to return a LocalDateTime.

Source

%dw 2.0
output application/json
---
{ "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) }

Output

{ "LocalDateTime": "2017-10-01T23:57:59" }

++(time: LocalTime, date: Date): LocalDateTime

Appends a LocalTime with a Date to return a LocalDateTime.

Note that the order in which the two objects are concatenated is irrelevant, so logically, LocalTime Date` produces the same result as `Date LocalTime.

Parameters

Name Description

time

A LocalTime, a time format without a time zone.

date

A Date.

Example

This example concatenates LocalTime and Date objects to return a LocalDateTime.

Source

%dw 2.0
output application/json
---
{ "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) }

Output

{ "LocalDateTime": "2017-10-01T23:57:59" }

++(date: Date, time: Time): DateTime

Appends a Date to a Time in order to return a DateTime.

Note that the order in which the two objects are concatenated is irrelevant, so logically, Date + Time produces the same result as Time + Date.

Parameters

Name Description

date

A Date.

time

A Time, a time format that can include a time zone (Z or HH:mm).

Example

This example concatenates Date and Time objects to return a DateTime.

Source

%dw 2.0
output application/json
---
[ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ]

Output

[ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ]

++(time: Time, date: Date): DateTime

Appends a Date to a Time object to return a DateTime.

Note that the order in which the two objects are concatenated is irrelevant, so logically, Date + Time produces the same result as a Time + Date.

Parameters

Name Description

time

A Time, a time format that can include a time zone (Z or HH:mm).

date

A Date.

Example

This example concatenates a Date with a Time to output a DateTime. Notice that the inputs are surrounded by pipes (|).

Source

%dw 2.0
output application/json
---
|2018-11-30| ++ |23:57:59+01:00|

Output

"2018-11-30T23:57:59+01:00"

Example

This example concatenates Time and Date objects to return DateTime objects. Note that the first LocalTime object is coerced to a `Time. Notice that the order of the date and time inputs does not change the order of the output DateTime.

Source

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

Output

{
  "DateTime1": "2017-10-01T23:57:59Z",
  "DateTime2": "2017-10-01T23:57:59Z",
  "DateTime3": "2017-10-01T23:57:59+02:00"
}

++(date: Date, timezone: TimeZone): DateTime

Appends a TimeZone to a Date type value and returns a DateTime result.

Parameters

Name Description

date

A Date.

timezone

A TimeZone (Z or HH:mm).

Example

This example concatenates Date and TimeZone (-03:00) to return a DateTime. Note the local time in the DateTime is 00:00:00 (midnight).

Source

%dw 2.0
output application/json
---
{ "DateTime" : (|2017-10-01| ++ |-03:00|) }

Output

{ "DateTime": "2017-10-01T00:00:00-03:00" }

++(timezone: TimeZone, date: Date): DateTime

Appends a Date to a TimeZone in order to return a DateTime.

Parameters

Name Description

date

A Date.

timezone

A TimeZone (Z or HH:mm).

Example

This example concatenates TimeZone (-03:00) and Date to return a DateTime. Note the local time in the DateTime is 00:00:00 (midnight).

Source

%dw 2.0
output application/json
---
{ "DateTime" : |-03:00| ++ |2017-10-01| }

Output

{ "DateTime": "2017-10-01T00:00:00-03:00" }

++(dateTime: LocalDateTime, timezone: TimeZone): DateTime

Appends a TimeZone to a LocalDateTime in order to return a DateTime.

Parameters

Name Description

dateTime

A LocalDateTime, a date and time without a time zone.

timezone

A TimeZone (Z or HH:mm).

Example

This example concatenates LocalDateTime and TimeZone (-03:00) to return a DateTime.

Source

%dw 2.0
output application/json
---
{ "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) }

Output

{ "DateTime": "2003-10-01T23:57:59-03:00 }

++(timezone: TimeZone, datetime: LocalDateTime): DateTime

Appends a LocalDateTime to a TimeZone in order to return a DateTime.

Parameters

Name Description

dateTime

A LocalDateTime, a date and time without a time zone.

timezone

A TimeZone (Z or HH:mm).

Example

This example concatenates TimeZone (-03:00) and LocalDateTime to return a DateTime.

Source

%dw 2.0
output application/json
---
{ "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) }

Output

{ "TimeZone": "2003-10-01T23:57:59-03:00" }

++(time: LocalTime, timezone: TimeZone): Time

Appends a TimeZone to a LocalTime in order to return a Time.

Parameters

Name Description

time

A LocalTime, time format without a time zone.

timezone

A TimeZone (Z or HH:mm).

Example

This example concatenates LocalTime and TimeZone (-03:00) to return a Time. Note that the output returns`:00` for the unspecified seconds.

Source

%dw 2.0
output application/json
---
{ "Time" : (|23:57| ++ |-03:00|) }

Output

{ "Time": "23:57:00-03:00" }

++(timezone: TimeZone, time: LocalTime): Time

Appends a LocalTime to a TimeZone in order to return a Time.

Parameters

Name Description

time

A LocalTime, a time format without a time zone.

timezone

A TimeZone (Z or HH:mm).

Example

This example concatenates TimeZone (-03:00) and LocalTime to return a Time. Note that the output returns`:00` for the unspecified seconds.

Source

%dw 2.0
output application/json
---
{ "Time" : (|-03:00| ++ |23:57|) }

Output

{
  "Time": "23:57:00-03:00"
}