Transformer (JOLT) allows the manipulation of a JSON through JOLT technology.

The component is useful to:

  • modify the structure of a JSON and keep its values;

  • add, extract and remove data from a JSON;

  • sort the structure of a JSON;

  • modify the values contained in a JSON through functions, such as text manipulation, mathematical calculations, conversions between data types, among others;

  • access and manipulate data from arrays.

Take a look at the configuration parameters of the component:

  • Type Properties: area to include the JOLT transformations.

Example of a configured Transformer (JOLT):

IMPORTANT: the JSON configured in Type Properties doesn’t represent the JSON to be manipulated, but the JOLT transformation itself. The JOLT itself uses a JSON structure for the transformation construction, which will interpret the JSON received by the Transformer (JOLT) component.

JOLT operations

  • shift: used to change the structure of a JSON, keeping the values contained in that same JSON.

Example:

Input

{
"body": {
"userName": "John"
}
}

Transformation

[
{
"operation": "shift",
"spec": {
"body": {
"userName": "data.user_name"
}
}
}
]

Output

{
"data" : {
"user_name" : "John"
}
}

  • default: used to add new fields or objects in a JSON, if they don't already exist.

Example:

Input

{
"body": {
"userName": "John"
}
}

Transformation

[
{
"operation": "default",
"spec": {
"body": {
"email": "default@email.com"
}
}
}
]

Output

{
"body": {
"userName": "John",
"email": "default@email.com"
}
}

  • remove: used to remove fields or objects from a JSON.

Example:

Input

{
"body": {
"userName": "John",
"email": "default@email.com"
}
}

Transformation

[
{
"operation": "remove",
"spec": {
"body": {
"email": ""
}
}
}
]

Output

{
"body" : {
"userName" : "John"
}
}

  • sort: used to sort fields and objects in a JSON, in alphabetical order.

Example:

Input

{
"employee": {
"phone": "999999999",
"name": "Sort Employee",
"birthDate": "1980-01-01",
"role": "analyst"
}
}

Transformation:

[

{
"operation": "sort"
}
]

Output

{
"employee" : {
"birthDate" : "1980-01-01",
"name" : "Sort Employee",
"phone" : "999999999",
"role" : "analyst"
}
}

  • cardinality: used to transform simple fields and objects into arrays and vice-versa.

Example:

Input

{
"products": {
"name": "Product A",
"id": "123-A",
"value": 10
}
}

Transformation

[
{
"operation": "cardinality",
"spec": {
"products": "MANY"
}
}
]

Output

{
"products" : [ {
"name": "Product A",
"id": "123-A",
"value": 10
} ]
}

  • modify-default-beta: used to add values ​​and apply functions to a JSON.

Example:

Input

{
"products": [
{
"name": "Product A",
"price": 10
},
{
"name": "Product B",
"price": 20
}
]
}

Transformation

[
{
"operation": "modify-default-beta",
"spec": {
"products": {
"*": {
"manufacturer": "Manufacturer default"
}
}
}
}
]

Output

{
"products" : [ {
"name" : "Produto A",
"price" : 10,
"manufacturer": "Manufacturer default"
}, {
"name" : "Produto B",
"price" : 20,
"manufacturer": "Manufacturer default"
} ]
}

  • modify-overwrite-beta: used to override values ​​and apply functions to a JSON.

Example:

Input

{
"data": {
"firstName": "John",
"lastName": "Smith"
}
}

Transformation

[
{
"operation": "modify-overwrite-beta",
"spec": {
"data": {
"fullName": "=concat(@(1,firstName),' ',@(1,lastName))"
}
}
}
]

Output

{
"data" : {
"firstName" : "John",
"lastName" : "Smith",
"fullName" : "John Smith"
}
}

Click here to read a detailed article about Transformer (JOLT).

Did this answer your question?