# JSON Transformer

O componente **JSON Transformer** possibilita a aplicação de transformações no JSON que está sendo processado dentro do seu *pipeline*. Você pode realizar uma série de ações utilizando um formulário de configurações.

## Parâmetros

Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por [expressões *Double Braces*](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th width="290">Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Actions</strong></td><td>Adiciona ou remove diferentes ações.</td><td>N/A</td><td>Opções de ações</td></tr><tr><td><strong>Description</strong></td><td>Este campo é usado para documentar a ação.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Type</strong></td><td>Define a ação que será executada, como: <strong>Rename Property</strong>, <strong>Edit Property</strong>, <strong>Remove Property</strong> e <strong>Remove Property with Condition</strong>. Veja abaixo mais detalhes sobre cada ação.</td><td>Rename Property</td><td><em>String</em></td></tr><tr><td><strong>Action Settings</strong></td><td>Configurações adicionais relacionadas à ação selecionada.</td><td>N/A</td><td>Oções de configuração de ações</td></tr><tr><td><strong>Root Path</strong></td><td>Deve ser preenchido quando a propriedade JSON estiver na raiz do objeto. Quando esta opção é ativada, <strong>Path (Dot notation)</strong> não estará disponível.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Path (Dot notation)</strong></td><td>Deve ser preenchido quando a propriedade JSON não estiver na raiz do objeto. Esse campo permite indicar <em>dot notation</em>, o que torna mais simples o acesso a diferentes níveis do JSON, incluindo atravessar <em>array</em> e <em>object</em> do JSON.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Properties to be renamed</strong> <code>(DB)</code></td><td>Este parâmetro é mostrado apenas quando a ação <strong>Rename Property</strong> estiver selecionada. Deve ser preenchida com a chave e valor que você deseja renomear.</td><td>N/A</td><td>Pares de chave-valor</td></tr><tr><td><strong>Values to be edited</strong> <code>(DB)</code></td><td>Este parâmetro é mostrado apenas quando a ação <strong>Edit Property</strong> estiver selecionada. Deve ser preenchida com a chave e valor que você deseja editar.</td><td>N/A</td><td>Pares de chave-valor</td></tr><tr><td><strong>Properties to be removed</strong> <code>(DB)</code></td><td>Este parâmetro é mostrado apenas quando as ações <strong>Remove Property</strong> ou <strong>Remove Property with Condition</strong> estiverem selecionadas. Deve ser preenchida com o <em>key name</em> exato do JSON (no caso de <strong>Remove Property</strong>) ou chave e valor (no caso de <strong>Remove Property with Condition</strong>) que você deseja remover.</td><td>N/A</td><td><em>String</em> / Pares de chave-valor</td></tr><tr><td><strong>Fail On Error</strong></td><td>Se a opção estiver ativada, a execução do <em>pipeline</em> com erro será interrompida; do contrário, a execução do <em>pipeline</em> continua, mas o resultado vai mostrar um valor falso para a propriedade "success".</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

Ao utilizar *Double Braces*, os valores das propriedades que serão transformadas deverão ser acessados utilizando a palavra "item". Com a palavra "item" é possível obter valores de todas as propriedades contidas no mesmo nível do JSON que está sendo acessado.

Exemplos:

```
{{ item.keyName }}
{{ CONCAT(item.customer.id, item.customer.name) }}
{{ FORMATDATE( item.orders.dateAdded, "dd-MM-yyyy", "dd MMM yyyy") }}
```

## Informações adicionais sobre parâmetros

### Type

* **Rename Property:** Renomeia a chave JSON para uma nova chave que pode ser composta por um valor estático ou dinâmico composto por *Double Braces*.
* **Edit Property:** Permite a transformação de valores em uma propriedade por meio de *Double Braces*.
* **Remove Property:** Remove propriedades em qualquer estrutura do JSON.
* **Remove Property with Condition:** Usando os operadores lógicos das funções, você pode definir uma condição para que "true" seja retornado, indicando quando a propriedade deve ser removida.

## Fluxo de mensagens

### Entrada

Esse componente não espera nenhuma mensagem de entrada específica, somente se for informada uma expressão em *Double Braces* em algum dos seus campos.

### Saída

Por se tratar de um componente que transforma o JSON de entrada, a saída é resultado das configurações definidas por você.

Se nenhuma propriedade definida nas configurações do componente for encontrada no JSON, o resultado será exatamente o mesmo JSON da entrada.

Para entender melhor o fluxo das mensagens na Digibee Integration Platform, consulte o artigo[ Processamento de mensagens](/documentation/developer-guide/pt-br/development-cycle/build-overview/pipelines/messages-processing.md).

## JSON Transformer em ação

Veja abaixo como o componente se comporta em determinadas situações e as suas respectivas configurações.

### Renomeando propriedades

As propriedades podem ser renomeadas utilizando valores estáticos ou dinâmicos composto por *Double Braces*. Essas propriedades podem estar em um *object*, *array* ou na raiz.

Neste exemplo, veja como renomear "a" para "id" e "b" para "name". As configurações do componente deverão ser:

#### Entrada

```
{
  "products": [
          {
           "a": 1,
           "b": "Table"
          },
          {
           "a": 2,
           "b": "Chair"
          }
  ]
}
```

#### Configurações

<figure><img src="/files/kt8e5FuZnc873ejCjils" alt=""><figcaption></figcaption></figure>

#### Saída

```
{
  "products": [
          {
           "id": 1,
           "name": "Table"
          },
          {
           "id": 2,
           "name": "Chair"
          }
  ]
}
```

### Editando propriedades

Os valores podem ser transformados aplicando o *Double Braces* e funções contidas na Digibee Integration Platform. Essa propriedade pode estar em um *object*, *array* ou na raiz.

É possível aplicar as funções como FORMATDATE, CONCAT, REPLACE, FORMATNUMBER, dentre outras.

Para entender melhor como funcionam esses recursos, leia o artigo [Funções Double Braces](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions.md).

Neste exemplo, veja como transformar o "id" de *number* para *string*. As configurações do componente deverão ser:

#### Entrada

```
{
  "products": [
          {
           "id": 1,
           "name": "Table"
          },
          {
           "id": 2,
           "name": "Chair"
          }
  ]
}
```

#### Configurações

<figure><img src="/files/lA1j6XFOacu9ajb3jJNo" alt=""><figcaption></figcaption></figure>

#### Saída

```
{
  "products": [
          {
           "id": "1",
           "name": "Table"
          },
          {
           "id": "2",
           "name": "Chair"
          }
  ]
}
```

### Removendo propriedades com condições de decisão

As propriedades podem ser removidas utilizando os operadores lógicos das funções *Double Braces*. É possível definir uma condição que, quando for resolvida para *true*, indicará que a propriedade deverá ser removida. Essas propriedades podem estar em um objeto, *array* ou na raiz.

Neste exemplo, veja como remover "description" com valor *null*. As configurações do componente deverão ser:

#### Entrada

```
{
  "products": [
          {
           "id": 1,
           "name": "Table",
           "description": "Tea Table",   
},
          {
           "id": 2,
           "name": "Chair",
           "description": null
          }
  ]
}
```

#### Configurações

<figure><img src="/files/CRCBe3D7N3YOlby2zN30" alt=""><figcaption></figcaption></figure>

#### Saída

```
{
  "products": [
          {
           "id": 1,
           "name": "Table",
           "description": "Tea Table",     
},
          {
           "id": 2,
           "name": "Chair"
          }
  ]
}
```

### Removendo propriedades apenas pelo nome

As propriedades podem ser removidas apenas declarando seus nomes no campo **Properties to be removed**. Essas propriedades podem estar em um *object*, *array* ou na raiz.

{% hint style="info" %}
Alguns dos parâmetros acima aceitam *Double Braces*. Para entender melhor como funciona essa linguagem, leia o artigo [Como referenciar dados usando Double Braces](/documentation/connectors-and-triggers/pt-br/double-braces/how-to-reference-data-using-double-braces.md).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/tools/json-transformer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
