Filter Selectors (myKey[?($ == “aValue”)])
myKey[?($ == “aValue”)] returns only the values of matching keys within an array or object. Note that ? is also used in Key Present Validator. If no key-value pairs match, the result is null.
The following example inputs the array of name keys returned by *.name, then checks for name keys with the value “Mariano”. It filters out any values that do not match. Note that the $ references the value of the selected key.
DataWeave Script:
%dw 2.0
output application/json
—
{ users: payload.users.*name[?($ == “Mariano”)] }
Input XML Payload:
<users>
<name>Mariano</name>
<name>Luis</name>
<name>Mariano</name>
</users>
Output JSON:
{
“users”: [
“Mariano”,
“Mariano”
]
}
The following example assumes the same input and returns all the key-value pairs of the input because the expression ( 1 == 1 ) is true. Note that a false expression, such as ( 1 == 2 ), returns null.
DataWeave Script:
%dw 2.0
output application/json
—
{ users: payload.users.*name[?( 1 == 1)] }
Input XML Payload:
<users>
<name>Mariano</name>
<name>Luis</name>
<name>Mariano</name>
</users>
Output JSON:
{
“users”: [
“Mariano”,
“Luis”,
“Mariano”
]
}
The following example assumes the same input. It uses mapObject to iterate over the entire input object and return matching key-value pairs, filtering out any pairs that do not match.
DataWeave Script:
%dw 2.0
output application/json
—
payload mapObject { ($$) : $[?($==”Mariano”)] }
Input XML Payload:
<users>
<name>Mariano</name>
<name>Luis</name>
<name>Mariano</name>
</users>
Output JSON:
{
“users”: {
“name”: “Mariano”,
“name”: “Mariano”
}
}
If you like my post please follow me to read my latest post on programming and technology.
You are given a stream of elements that is too large to fit into memory.…
The formula for the area of a circle is given by πr². Use the Monte…
Given an integer k and a string s, write a function to determine the length…
There is a staircase with N steps, and you can ascend either 1 step or…
Build an autocomplete system that, given a query string s and a set of possible…
Design a job scheduler that accepts a function f and an integer n. The scheduler…