# JSON Generator

O JSON Generator cria um objeto JSON. Este conector aceita qualquer input.

### Parâmetros

Confira as opções de configuração do conector. Os parâmetros que suportam expressões Double Braces estão marcados com (DB).

| Parâmetro         | Descrição                                                                                                                                                                                  | Valor padrão | Tipo de dado |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ------------ |
| **JSON (DB)**     | O objeto JSON que será o output do conector.                                                                                                                                               | N/A          | JSON Object  |
| **Fail on Error** | Se a opção estiver ativada, a execução do pipeline será interrompida em caso de erro. Caso contrário, a execução continua, mas o resultado exibirá o valor false na propriedade "success". | False        | Boolean      |

### Usando variáveis globais

Variáveis globais podem ser recuperadas no conector JSON Generator usando a seguinte expressão Double Braces:

```
{{global.global-name}}
```

Você pode recuperar variáveis globais de duas formas:

* Como string
* Como número

#### Recuperando variáveis globais como string

Se o valor da variável global for uma string, independentemente da sua categoria, você deve envolver a expressão Double Braces entre aspas duplas.

Por exemplo, suponha que você crie uma variável global chamada `global-email` na categoria Email e defina um endereço de e-mail como valor. A plataforma interpretará esse valor como uma string. Portanto, para recuperar essa variável global no conector JSON Generator, estruture a expressão da seguinte forma:

```json
{
	"email": "{{global.global-email}}"
}
```

Se você não envolver a expressão entre aspas duplas, receberá o seguinte erro:

```json
{
	"timestamp": 1738778741919,
	"error": "An internal error has occurred. Exception: com.digibee.pipelineengine.exception.PipelineEngineRuntimeException: Could not parse double braces parameter json due to JSON exception: com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'email': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (String)\"{\n  \"email\": email@gmail.com\n}\"; line: 2, column: 17]",
	"code": 500
}
```

Essa regra se aplica a qualquer variável global com valor do tipo string.

#### Recuperando variáveis globais como número

Se o valor da variável global for um número, não envolva a expressão Double Braces entre aspas duplas. Caso contrário, o número será tratado como string.

Por exemplo, suponha que você crie uma variável global chamada `global-id` na categoria ID e defina seu valor como `1234`.

Para recuperar essa variável global como número no conector JSON Generator, estruture a expressão da seguinte forma:

```json
{
	"id": {{global.global-id}}
}
```

O output será:

```json
{
	"id": 1234
}
```

Porém, se precisar recuperá-la como string, basta envolver a expressão entre aspas duplas:

```json
{
	"id": "{{global.global-id}}"
}
```

O retorno será:

```json
{
	"id": "1234"
}
```

### Usando mocks

Você pode usar mocks para definir múltiplos payloads de exemplo com valores fixos e simular diferentes cenários de input sem modificar o pipeline. Os mocks estão disponíveis na construção de pipelines, na construção de cápsulas e em [Casos de teste](/documentation/developer-guide/pt-br/development-cycle/build-overview/canvas/test-cases.md).

Consulte a documentação de [Mock de conectores](/documentation/developer-guide/pt-br/development-cycle/build-overview/canvas/mocking.md) para saber mais.

{% hint style="info" %}
Campos de mock não suportam expressões Double Braces. Todos os valores devem ser fixos.
{% endhint %}

#### Criando uma mock response

As mock responses para o conector JSON Generator devem ser criadas pelo formulário de configuração do conector. A criação de mocks a partir do output de execução do conector não é suportada.

1. Abra o formulário de configuração do conector.
2. Para criar o primeiro mock, clique em **Novo** na opção **Criar Mock Response**.
3. Insira o payload no campo **JSON Body**.
4. Insira um **Nome** para a mock response.
5. Clique em **Adicionar**

Para adicionar mais mocks após o primeiro, clique no **ícone de lápis** ao lado da lista de mocks. Um sidesheet será aberto com o formulário **Adicionar** no rodapé, onde você pode configurar respostas de mock adicionais.

#### Criando múltiplos mocks

Você pode criar múltiplos mocks para representar diferentes cenários. Após criados, cada mock pode ser habilitado ou desabilitado individualmente pelo seu toggle. Apenas um mock por conector pode estar ativo ao mesmo tempo. Quando um mock está ativo, o conector exibe o badge **M** na árvore do flow.

#### Executando um pipeline com um mock ativo

Quando você executa o pipeline com um mock ativo, o conector JSON Generator é substituído pelo payload do mock em tempo de execução. Os conectores seguintes recebem o output do mock como se fosse o output real do conector.

### Exemplos de uso

#### Modificando dados

Neste exemplo, usamos o conector JSON Generator para modificar dados de uma pessoa. O objetivo é unir as propriedades `firstName` e `lastName` em uma única propriedade chamada `fullName`, remover a propriedade `phoneNumber` e adicionar uma propriedade `country` com o valor `"Brazil"`.

**Input**

```json
{
  "firstName": "Carlos",
  "lastName": "Silva",
  "phoneNumber": "+55(11)99999-8888"
}
```

**Configuração do parâmetro**

Usamos o conector JSON Generator com a seguinte configuração no parâmetro JSON:

```json
{
  "fullName": {{ CONCAT(message.firstName," ", message.lastName) }},
  "country": "Brazil"
}
```

Aqui, utilizamos a função Double Braces CONCAT para unir o primeiro e o último nome, com um espaço em branco entre eles.

**Output**

```json
{
  "fullName": "Carlos Silva",
  "country": "Brazil"
}
```

#### Exemplo de uso com mock

Neste exemplo, usamos o recurso de mock para testar dois estados de pedido diferentes no mesmo pipeline sem modificar o parâmetro JSON a cada execução.

O pipeline processa pedidos recebidos e os encaminha com base no status. Durante o desenvolvimento, queremos verificar se a lógica de roteamento funciona corretamente tanto para um pedido concluído quanto para um pedido pendente.

**Configuração dos mocks**

Em vez de editar o parâmetro JSON do conector a cada teste, criamos duas respostas de mock, cada uma representando um cenário diferente.

**Mock 1 — nome: "completed-order"**

```json
{
  "orderId": "ORD-2024-001",
  "customerId": "C-789",
  "status": "completed",
  "total": 299.90
}
```

**Mock 2 — nome: "pending-order"**

```json
{
  "orderId": "ORD-2024-002",
  "customerId": "C-456",
  "status": "pending",
  "total": 149.50
}
```

Para criar o primeiro mock, abra o formulário de configuração do conector, clique em **Novo** na opção **criar mock response**, preencha o **JSON Body**, insira um nome e clique em **Adicionar**.

Para adicionar o segundo mock, clique no **ícone de lápis** ao lado da lista de mocks e use o formulário **Adicionar** no rodapé do sidesheet.

**Testando cada cenário**

Para testar o fluxo do pedido concluído, habilite o switch **Mock Response** no formulário de configuração do conector, selecione **completed-order** no dropdown e confirme as alterações no conector. O JSON Generator exibirá o badge **M** na árvore do flow, confirmando que o mock está ativo.

Ao executar o pipeline, os conectores seguintes recebem o payload do Mock 1 em vez do output real do conector.

Para testar o fluxo do pedido pendente, volte ao formulário de configuração, selecione **pending-order** no dropdown e salve novamente. Apenas um mock pode estar ativo ao mesmo tempo. Para trocar de cenário, selecione um mock diferente no dropdown e salve o formulário de configuração.

Ao fazer o deploy do pipeline, as respostas de mock são automaticamente ignoradas. Não é necessário desativá-las antes do deploy.

**Output (completed-order ativo)**

```json
{
  "orderId": "ORD-2024-001",
  "customerId": "C-789",
  "status": "completed",
  "total": 299.90
}
```

**Output (pending-order ativo)**

```json
{
  "orderId": "ORD-2024-002",
  "customerId": "C-456",
  "status": "pending",
  "total": 149.50
}
```


---

# 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-generator.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.
