Introduction
In the last part
DataWeave Using mapObject - Part I. I presented a way to add new attribute to the payload. In this post, I am going to demonstrate the dataweave code for change keys of the JSON payload.
Input Data
[
{
"worker_id": "AMAGWK00002673",
"position_id": "35119973",
"requisition_id": "R-32353",
"applicant_id": "199505",
"staff_id": "199504"
},
{
"worker_id": "AMAGWK00002674",
"position_id": "35119943",
"requisition_id": "R-32353",
"applicant_id": "199505",
"staff_id": "199506"
},
{
"worker_id": "AMAGWK00002675",
"position_id": "35119975",
"requisition_id": "R-32354",
"applicant_id": "199507",
"staff_id": ""
}
]
Desired Result
[
{
"ew_id": "AMAGWK00002673",
"position_id": "35119973",
"requisition_id": "R-32353",
"applicant_id": "199505",
"staff_id": "199504",
"type": "re-hire"
},
{
"ew_id": "AMAGWK00002674",
"position_id": "35119943",
"requisition_id": "R-32353",
"applicant_id": "199505",
"staff_id": "199506",
"type": "re-hire"
},
{
"ew_id": "AMAGWK00002675",
"position_id": "35119975",
"requisition_id": "R-32354",
"applicant_id": "199507",
"staff_id": "",
"type": "new-hire"
}
]
Solution
%dw 1.0
%output application/json
---
payload map ((worker) ->{
(worker mapObject (value, key) -> {
(ew_id : value) when key as :string == 'worker_id',
((key) : value) when (key as :string != 'worker_id')
}),
type : "new-hire" when worker.staff_id == null or worker.staff_id == '' otherwise 're-hire'
})
Key learning Points
From the solution I provided, the key syntax is that if the key is worker_id, we will update the key with new key value which is ew_id.
(ew_id : value) when key as :string == 'worker_id',
((key) : value) when (key as :string != 'worker_id')
Very informative post for mulesoft developers.You can also visit goformule.com for mulesoft stuff.
ReplyDelete