whoami
whoami

Reputation: 1899

Modify payload field values

I have incoming payload as follow:

{
    "id": "",
    "provision": {
        "switch": "xyz",
        "port": ""
    }
}

I want to transform this payload so that id gets set to 9 and port to 80. So after the transform the payload should be

{
    "id": "9",
    "provision": {
        "switch": "xyz",
        "port": "80"
    }
}

How can I do this? I am using EE 4.2.2

Upvotes: 0

Views: 546

Answers (2)

Salim Khan
Salim Khan

Reputation: 4303

Another crude approach. Not recommended..

%dw 2.0
output application/json
var id = payload - "provision"
var provision = payload - "id"
var newProv= provision[0] - "port" ++ {"port" : 80}

---
{id:9} ++ provision : newProv

Upvotes: 0

Salim Khan
Salim Khan

Reputation: 4303

You can make use of the update operator.

https://docs.mulesoft.com/mule-runtime/4.3/dw-values-functions-update

Input

{
    "id": "",
    "provision": {
        "switch": "xyz",
        "port": ""
    }
}

Script

%dw 2.0
import * from dw::util::Values
output application/json
---
(payload update field("id") with 9) update ["provision",field("port")] with 80

Output

{
  "id": 9,
  "provision": {
    "switch": "xyz",
    "port": 80
  }
}

Upvotes: 2

Related Questions