Ir para o conteúdo

construtor de filtros jq

Transforme um documento JSON num filtro jq funcional, com pré-visualização dos resultados.

Entrada
Saída

construtor de filtros jq

Cole um documento JSON e esta ferramenta lista cada caminho de campo que contém, na própria sintaxe ponto-e-colchete do jq — .users[].email, .items[0].price, etc. — para que não tenha de adivinhar a estrutura de dados que não escreveu. Escolha um desses caminhos, ou escreva o seu próprio, e a ferramenta constrói um filtro jq funcional à sua volta.

A opção de operação controla que tipo de filtro é criado. Selecionar devolve o valor ou valores do caminho, um por linha, exatamente como o jq simples imprime um fluxo. Mapear envolve os mesmos valores numa única matriz JSON com colchetes. Filtrar necessita de um caminho que termine em [] e uma condição como age > 18 ou status == "active" — mantém apenas os elementos que correspondem, usando select() internamente. Agregar aponta para uma matriz inteira (sem []) e relata a contagem, e — quando cada elemento é um número — a soma, mínimo e máximo também; adicione uma condição para agregar apenas os elementos que a verificam primeiro.

A saída em texto plano remove as aspas dos resultados de cadeia, correspondendo à bandeira -r do jq; a saída compacta reduz o JSON para uma linha em vez de indentação de dois espaços. A opção de versão de sintaxe jq marca o filtro gerado com um comentário para jq 1.5, 1.6 ou 1.7 — útil quando está a fixar um pipeline a uma versão específica — sem alterar o que a pré-visualização calcula, uma vez que o subconjunto do jq que esta ferramenta implementa comporta-se da mesma forma em todas as três. As condições suportam ==, !=, >, >=, <, <= e contains, e comparam com números, cadeias, booleanos, null ou texto entre aspas.

Tudo funciona localmente no seu navegador: o JSON que cola, o filtro que constrói e o resultado que produz nunca saem do seu dispositivo. Quando estiver satisfeito com o filtro, copie o resultado, descarregue-o como ficheiro .txt, ou envie a saída de volta para a entrada para continuar a refiná-lo.

FAQ

Isto executa um binário jq real?
Não. Implementa um subconjunto prático da sintaxe de caminhos jq e operações em JavaScript, para que o mesmo filtro que vê aqui possa necessitar de ajustes para casos extremos que uma instalação completa de jq lidaria.
Porque é que Filtro precisa de um caminho terminado em []?
A filtragem mantém ou descarta elementos individuais de uma matriz, portanto o caminho tem de nomear uma coleção iterada — .users[] em vez de .users. A ferramenta avisa-o se não o fizer.
Que aceita o campo de condição?
Um nome de campo mais um operador e um valor, como age > 18 ou status == "active", ou apenas um operador e valor (> 10) para comparar os elementos de uma matriz diretamente. Os operadores suportados são ==, !=, >, >=, <, <= e contains.
Porque é que Agregar só mostra uma contagem para alguns caminhos?
Soma, mínimo e máximo só fazem sentido para uma matriz de números. Quando a matriz contém objetos — uma lista de utilizadores, por exemplo — ainda assim obtém uma contagem, opcionalmente reduzida por uma condição primeiro.
O meu JSON é carregado em qualquer lugar?
Não. Análise, descoberta de caminhos e filtragem acontecem tudo no seu navegador — o seu documento nunca é enviado para um servidor.