%dw 2.0
output application/json
---
{ "result" : [0, 1, 2] ++ ["a", "b", "c"] }
DataWeave
++
++<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 |
---|---|
|
The source array. |
|
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
Output
{ "result": [0, 1, 2, "a", "b", "c"] }
JSON
Example
Source
%dw 2.0
output application/json
---
{ "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] }
DataWeave
Output
{ "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] }
JSON
++(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 |
---|---|
|
The source string. |
|
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" }
DataWeave
Output
{ "name": "MuleSoft" }
JSON
++<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 |
---|---|
|
The source object. |
|
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"} }
DataWeave
Output
<?xml version="1.0" encoding="UTF-8"?>
<concat>
<aa>a</aa>
<bb>b</bb>
<cc>c</cc>
</concat>
XML
++(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 |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{ "LocalDateTime": "2017-10-01T23:57:59" }
JSON
++(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 |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{ "LocalDateTime": "2017-10-01T23:57:59" }
JSON
++(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 |
---|---|
|
A |
|
A |
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| ]
DataWeave
Output
[ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ]
JSON
++(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 |
---|---|
|
A |
|
A |
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|
DataWeave
Output
"2018-11-30T23:57:59+01:00"
JSON
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|
}
DataWeave
Output
{
"DateTime1": "2017-10-01T23:57:59Z",
"DateTime2": "2017-10-01T23:57:59Z",
"DateTime3": "2017-10-01T23:57:59+02:00"
}
JSON
++(date: Date, timezone: TimeZone): DateTime
Appends a TimeZone
to a Date
type value and returns a DateTime
result.
Parameters
Name | Description |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{ "DateTime": "2017-10-01T00:00:00-03:00" }
JSON
++(timezone: TimeZone, date: Date): DateTime
Appends a Date
to a TimeZone
in order to return a DateTime
.
Parameters
Name | Description |
---|---|
|
A |
|
A |
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| }
DataWeave
Output
{ "DateTime": "2017-10-01T00:00:00-03:00" }
JSON
++(dateTime: LocalDateTime, timezone: TimeZone): DateTime
Appends a TimeZone
to a LocalDateTime
in order to return a DateTime
.
Parameters
Name | Description |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{ "DateTime": "2003-10-01T23:57:59-03:00 }
JSON
++(timezone: TimeZone, datetime: LocalDateTime): DateTime
Appends a LocalDateTime
to a TimeZone
in order to return a DateTime
.
Parameters
Name | Description |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{ "TimeZone": "2003-10-01T23:57:59-03:00" }
JSON
++(time: LocalTime, timezone: TimeZone): Time
Appends a TimeZone
to a LocalTime
in order to return a Time
.
Parameters
Name | Description |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{ "Time": "23:57:00-03:00" }
JSON
++(timezone: TimeZone, time: LocalTime): Time
Appends a LocalTime
to a TimeZone
in order to return a Time
.
Parameters
Name | Description |
---|---|
|
A |
|
A |
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|) }
DataWeave
Output
{
"Time": "23:57:00-03:00"
}
JSON