Covered in this article
Related pages
Latest Changelog
Version 1.1.0 ()
Jsonata component

Jsonata component

Dedicated data transformation component.

Table of Contents

Description

Dedicated data transformation component.

How it works

This component takes the incoming message body and applies the configured JSONata transformation on it. It uses a fact that JSONata expression is a superset of JSON document so that by default any valid JSON document is a valid JSONata expression.

For example let’s take 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 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
}

After understanding the basic concept, now you can also do something more complicated, like this array-to-array transformation:

{
    "account": Account."Account Name",
    "products": Account.Order.Product.({
    	"name": $."Product Name",
        "revenue": (Price * Quantity)
    }),
    "orderIDs": Account.Order[].(OrderID)
}

Resulting in:

{
  "account": "Firefly",
  "products": [
    {
      "name": "Bowler Hat",
      "revenue": 68.9
    },
    {
      "name": "Trilby hat",
      "revenue": 21.67
    }
  ],
  "orderIDs": [
    "order103"
  ]
}

Triggers

This component has no trigger functions. This means it will not be accessible to select as a first component during the integration flow design.

Actions

Transform

This action executes the specified JSONata expression.

Transformation

Click here to learn more about the elastic.io iPaaS