Dynamic Key Value Pair in DataWeave

Jaron Thatcher picture Jaron Thatcher · Feb 12, 2016 · Viewed 14.1k times · Source

DataWeave doesn't like what I'm trying to do with it, and I'm not sure if I'm doing something wrong, or if it is a limitation of DataWeave that isn't possible.

Here's the scenario: I'm querying Salesforce and getting two values back: lets call them X and Y.

Here's the return I want [{X:Y}, {X2:Y2}, {X3:Y3}, ...] however, using DataWeave it doesnt seem possible to get a key value pair like that, instead, it only seems possible to specifically set the Key for each value in the script like so: [{Value_X: X, Value_Y: Y}, {Value_X: X2, Value_Y: Y2}, ...]

Here is my current DataWeave script that works, but gives me the second result:

%dw 1.0
%output application/java
---

payload map {
    Value_X: $.X,
    Value_Y: $.Y
}

And here's the DataWeave script that I wish worked, but doesn't

%dw 1.0
%output application/java
---

payload map {
    $.X: $.Y
}

Answer

Tim Marinšek picture Tim Marinšek · Mar 11, 2016

In order for your Dataweave code to work properly, you need to surround the variable you want to use as a key with parentheses:

%dw 1.0
%output application/java
---

payload map {
    ($.X): $.Y
}