Reputation: 25
I have a JSON like:
{"ab":12,"cd":23,"ef":34,"gh":"xyz"}
I would like to transform it into:
[
{"key":"ab","value":12},
{"key":"cd","value":23},
{"key":"ef","value":34},
{"key":"gh","value":"xyz"}
]
How can I achieve this within Node-RED?
Upvotes: 2
Views: 1285
Reputation: 10117
Assuming you have that JSON object in msg.payload
, then you can add a Change
node, configure it to set msg.payload
and select expression
from the list of types in the 'to' field. Then set the to
value to:
$each($.payload,function($v, $k) {{"key":$k,"value": $v}})
This is a JSONata expression. The $each function will call the provided function to each key/value pair in the object ($.payload
). The provided function maps the key ($k
) and value ($v
) to the required format.
Note - if the object you want to map is not held under msg.payload
, then you'll need to change the $.payload
bit to point at the required property.
Upvotes: 2