Transformation
Choose the right component
Use the flowchart below to assist in choosing the appropriate component for your use case:
Dedicated data transformation component.
How it works
This component takes the incoming message body and applies the configured JSONata transformation to it. It uses the fact that JSONata expression is a superset of JSON document. By default, any valid JSON document is a valid JSONata expression.
For example, consider this sample incoming message body:
{
"Account": {
"Account Name": "Firefly",
"Order": [
{
"OrderID": "order103",
"Product": [
{
"Product Name": "Bowler Hat",
"ProductID": 858383,
"SKU": "0406654608",
"Description": {
"Colour": "Purple",
"Width": 300,
"Height": 200,
"Depth": 210,
"Weight": 0.75
},
"Price": 34.45,
"Quantity": 2
},
{
"Product Name": "Trilby hat",
"ProductID": 858236,
"SKU": "0406634348",
"Description": {
"Colour": "Orange",
"Width": 300,
"Height": 200,
"Depth": 210,
"Weight": 0.6
},
"Price": 21.67,
"Quantity": 1
}
]
}
]
}
}
You can use the following JSONata expressions to transform it:
{
"account": Account."Account Name",
"orderCount" : $count(Account.Order)
}
The result of that transformation will be the following JSON document:
{
"account": "Firefly",
"orderCount": 1
}
More complicated transformations are possible. For example, consider this array-to-array transformation:
{
"account": Account."Account Name",
"products": Account.Order.Product.({
"name": $."Product Name",
"revenue": (Price * Quantity)
}),
"orderIDs": Account.Order[].(OrderID)
}
The output after transformation would be:
{
"account": "Firefly",
"products": [
{
"name": "Bowler Hat",
"revenue": 68.9
},
{
"name": "Trilby hat",
"revenue": 21.67
}
],
"orderIDs": [
"order103"
]
}