Ferramentas JSON

jq playgroundteste a consulta antes de usar no script

Escolha o modo de entrada, execute jq de verdade e confira o texto de stdout junto com o código de saída.

jq playground

Entrada JSON / texto

Programa jq

Resultado

Prévia em blocos de 5.000 caracteres. Cópia e download incluem o resultado completo.

A entrada e o programa ficam na memória do navegador, sem salvar histórico.

Permitidas: -c -r -j -S -a -e, opções curtas combinadas e aliases longos. Selecione -s/-R/-n pelo modo de entrada.

jq 1.8.2 · WebAssembly local · execução manual

Resultado desatualizado; cópia e download desativados.

Somente shell POSIX. Salve a entrada como input.json primeiro; o comando copiado não inclui seus dados.

Ao montar um script para consumir uma API, vale testar a seleção com dados pequenos. O jq playground ajuda a filtrar JSON, conferir campos ausentes e transformar JSON sem alterar a entrada original.

Um filtro jq pode emitir vários valores, devolver um array ou não produzir nada. Essa diferença fica visível na saída, para você ajustar a consulta ao formato que a próxima etapa do script precisa receber.

Por que usar este jq playground?

Confira o que cada registro produz

Com .people[] | select(.age >= 18) | .name, cada adulto gera uma string separada. A saída mantém os valores e suas quebras de linha: fica mais fácil perceber quando falta reunir os resultados em um array.

Três registros entram em um filtro e dois registros selecionados saem como resultados separados.

Reúna os dados no momento certo

O modo -s do jq playground junta os valores JSON de entrada em um array antes de avaliar a expressão. Já [filtro] reúne o que o filtro emite para cada entrada atual. A escolha muda o que o programa consegue comparar de uma vez.

Três objetos JSON independentes reunidos em um único array.

Três decisões antes de aproveitar a saída

01

Defina como a entrada será lida

JSON aceita valores consecutivos; -s coloca esses valores em um array. Use -R para linhas de texto e -Rs para uma string com o texto inteiro. -n começa com null, mas as funções input e inputs ainda podem ler os dados fornecidos.

02

Aplique a prévia e execute manualmente

Arquivo, exemplo e limpeza passam por uma prévia antes da substituição. Desfazer recupera o estado anterior, inclusive o resultado. Use o botão ou Ctrl/Cmd+Enter para executar; editar entrada, programa, modo ou opções exige uma nova execução para exportar.

03

Leia o código de saída

Todo retorno diferente de zero bloqueia todas as exportações. Isso também vale quando -e apenas indica false, null ou nenhuma saída. Remova -e e execute de novo quando fizer sentido. O comando POSIX pressupõe os mesmos dados salvos em input.json.

Recursos para consultas do dia a dia

Seleção e mapeamento

Combine select para escolher registros com map para gerar um array transformado. O exemplo usa idades numéricas e um campo booleano; uma idade escrita como string continua sendo um tipo diferente e merece tratamento explícito.

Programas completos no motor jq

jq 1.8.2 em WebAssembly oferece pipes, reduce, def, recursão, try/catch e expressões regulares. É possível experimentar funções próprias na consulta. A página não expõe módulos em arquivos nem argumentos CLI que leem arquivos extras.

Opções de apresentação

-r escreve strings sem aspas JSON e -j omite também os separadores. -c compacta a saída, -S ordena chaves e -a gera escapes ASCII. As opções curtas podem ser combinadas e têm aliases longos; outros parâmetros são recusados.

Resultado sem reformatação posterior

Espaços, quebras de linha, BOM inicial e caracteres NUL são preservados no texto exportado. debug e stderr aparecem separadamente. A prévia mostra blocos de 5.000 caracteres; quando habilitada, a exportação inclui toda a saída.

O que pode interromper uma execução

Limites de entrada e tempo
Entrada e arquivos: até 500.000 bytes UTF-8. Programa: até 8.000 bytes UTF-8. Opções: até 256 caracteres. O carregamento tem 15 segundos e, depois dele, a execução tem 3 segundos. Parar encerra o Worker.
Orçamento de memória e saída
A memória linear WASM tem teto de 256 MiB; esse valor não limita a memória total do navegador. stdout e stderr somados têm limite de 2 MiB. Falhas por tempo, pilha, memória ou excesso de saída impedem a exportação de resultados parciais.
Precisão segue as regras do jq
Os dados não passam pelo JSON.parse do JavaScript antes do motor. Literais numéricos grandes sem alteração podem manter a escrita decimal; operações usam ponto flutuante e podem arredondar. Em chaves duplicadas, vale a última. Guarde identificadores exatos como strings.
Retorno diferente de zero
Com -e, false/null normalmente retorna 1 e nenhuma saída retorna 4. halt_error pode usar os mesmos códigos. Por isso, qualquer código diferente de zero desabilita todas as exportações; stdout e diagnósticos continuam disponíveis para inspeção e podem estar incompletos.
Sem acesso ao seu ambiente local
Não há editor --arg, --stream, --seq, envio de módulos, acesso ao sistema de arquivos, leitura de URL ou links que contenham os dados. O comando copiado usa sintaxe POSIX, não PowerShell ou cmd. Funções dependentes do ambiente consultam o WASM, não sua máquina.

Dúvidas sobre jq playground

Como filtrar um array de objetos JSON com jq?

Para os dados do exemplo, escreva .people[] | select(.age >= 18) | .name. [] percorre os objetos, select mantém quem atende à condição e .name extrai o campo. Coloque a expressão inteira entre colchetes se precisar receber um array.

Como remover as aspas duplas da saída do jq para processar arquivos JSON no Bash?

Use -r nas opções de saída. Ele remove as aspas JSON das strings, sem retirar espaços que fazem parte do conteúdo. Objetos e arrays continuam sendo serializados como JSON. -j também remove os separadores entre resultados.

Como gerar um array com os resultados de select no jq?

Escreva [.people[] | select(.age >= 18)]. Os colchetes coletam os resultados emitidos pelo filtro. Quando nada corresponde, o resultado será [], em vez de um fluxo sem valores, o que facilita etapas que sempre esperam um array.

Como reunir vários objetos JSON em um array?

Escolha Agrupar JSON (-s) e execute . para inspecionar o array. Se a entrada contém vários arrays e você quer concatená-los, use -s com add. Para mesclar objetos, defina antes como lidar com chaves repetidas.

Como converter pares key = value em JSON?

Para linhas simples, escolha Linhas de texto (-R) e comece com split("=") | {(.[0]): .[1]}. Remova os espaços de chaves e valores conforme necessário. Um valor que também contenha = exige outra lógica; não suponha que todos os formatos de configuração usam os mesmos escapes.

Encontrou uma consulta com resultado incorreto?

Valide com uma amostra pequena

No jq playground, compare a saída de map com a de vários resultados e só então leve a consulta conferida para o seu script.