---
title: JQ
slug: jq
docTags: 
createdAt: 2024-07-23T21:01:37.555Z
---

## Objetivo/Resumo

O conector `jq` é uma ferramenta poderosa utilizada para filtrar, transformar, e manipular dados JSON de forma eficiente e flexível. Ele permite que desenvolvedores e analistas de dados realizem operações complexas em estruturas JSON, extraiam informações relevantes e formatem os dados de maneira customizada para atender a diversas necessidades de processamento e análise.

:::hint{type="info"}
**Saiba mais:**

[Manual](https://jqlang.github.io/jq/manual/)

[Tutorial](https://jqlang.github.io/jq/tutorial/)

[Wiki](https://github.com/jqlang/jq/wiki)

[Cookbook](https://github.com/jqlang/jq/wiki/Cookbook)&#x20;

[Página oficial](https://jqlang.github.io/jq/)&#x20;

Valide seus filtros neste [Playground](https://jqplay.org/).
:::

### Criando um fluxo utilizando Conector JQ

Este conector não precisa de conexão para ser usado. Basta configurar suas parametrizações de acordo com a lógica a ser implementada no fluxo. Para usá-lo, crie um fluxo e arraste o conector JQ para o canvas.

OBS: [Acesse aqui](docId\:OcJTBFHi9Rerkr2d6OwIP) o passo a passo para criar um fluxo.&#x20;

Após arrastar o conector para o canvas, selecione-o e na aba `Parametrizações`, preencha os seguintes parâmetros de configuração:

- **Query/Filter**: informe a query/filter jq que será aplicada no JSON  de entrada. (campo obrigatório)&#x20;
- **JSON Input**: informe o JSON de entrada em que sera aplicada a query/filter. (campo obrigatório)

Na aba `Propriedades`  dê um nome ao [passo old](docId:9ju6QKlqZLk13hL_hFTIH) e se necessário detalhe uma descrição.

Para melhor uso do conector sugerimos acessar a documentação oficial do JQ, lá você terá mais informações detalhadas como filtros basicos, expressões regulares entre outras, [acesse aqui](https://jqlang.github.io/jq/manual/). Também deixaremos o [playground](https://jqplay.org/) oficial do jq para testar suas querys.

## Na prática

Neste tópico iremos criar um fluxo que irá demonstrar a execução de uma query JQ em um JSON utilizando o conector JQ.

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/n_7MIcKtsah2PI4ByVjLf_image.png)

Assim ficará a `Parametrização` do nosso primeiro e único passo:



::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/ajK3XbDFKNQxoFBo6IErD_image.png" size="50" width="422" height="369" position="center" darkWidth="422" darkHeight="369" showCaption="false"}

A Query/Filter configuramos como `{firstName: .name}` ela irá montar um JSON onde o valor firstName será recuperado do JSON de entrada no qual será aplicado a query.

O JSON Input iremos buscar do payload de entrada do fluxo utilizando [Fluid Expression Language](docId:0VQVPw6saqz2z1jGp8FwC) com a função **getJsonEscaped.**

Na aba `Propriedades` informamos o nome do passo:

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/ZTqnUGbr3wRc1XhfSeZ8D_image.png" size="50" width="423" height="487" position="center" showCaption="false"}

**Conclusão**

Com o passo configurado basta disparar o fluxo informando o seguinte payload de entrada:

:::BlockQuote
\{
&#x20; "name": "John"
}
:::

Após o disparo, o resultado do fluxo aparecerá em realtime no canvas:



![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/aV50RQAIt71Fw9FqEOgR6_image.png)

Ao clicar em detalhes, temos a resposta gerada pelo conector JQ:

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/DSzkzcuAZJ2aASXPSQpEC_image.png)

## Filtros úteis

### Liste chaves usadas em qualquer objeto em uma lista

Considere o seguinte *array*:

```json
[{"a": {"b":1}}, {"a": {"c":2}}]
```

Para obter uma lista das chaves no nível principal do *array* (gera o resultado: `["a"]`):

```shell
add | keys
```

Para obter a lista das chaves independente da profundidade onde elas aparecem:

```shell
[.. | objects | keys[]] | unique
```

Resultado:

```json
["a", "b", "c"]
```

