Pular para o conteúdo

Playground de jq

jq Playground

Executa filtros do jq 1.7 sobre JSON colado no navegador, com uma cola de sintaxe, e entrega a linha de comando equivalente.

Executa filtros jq contra um documento no navegador: um interpretador de verdade para a gramática do jq 1.7, não umas poucas operações de string, então pipes, `reduce`, `def`, desestruturação e os operadores de atualização se comportam como na linha de comando. O comando de shell equivalente é impresso abaixo do filtro.

🔒 Roda inteiramente no seu navegadorjqjsonqueryplayground

Filtro

jq '.orders[] | select(.status == "shipped") | {id, customer}' data.json

JSON de entrada

Solte um arquivo .json

Lido só nesta aba. Nada é enviado.

1 saída

Saídas

1

Tempo

<1 ms

Tipos

object

Um interpretador da gramática do jq 1.7, escrito aqui. Ele suporta caminhos (.a[0].b, .., ?), |·,·//, aritmética, comparação, and/or/not, interpolação de strings, if, try, reduce, foreach, as (com desestruturação), def, atualizações como |=·+=, formatos como @base64·@csv, e as 180 funções embutidas listadas abaixo. Os testes são os próprios exemplos do manual do jq.

Não suportado: input·inputs (só existe um documento), $ENV·env (vazio), label·break, --stream, arrays aninhados em @sh, formatos diferentes de ISO 8601 no strptime, o modo de stream do getpath e os módulos (import). As expressões regulares rodam no motor do navegador e não no Oniguruma do jq, então \p{L} e os grupos nomeados funcionam, e pode haver diferenças sutis em torno do lookbehind.

Se tudo o que você quer é um caminho, talvez seja mais simples o Testador de JSONPath.

Como usar

  1. Cole o documento

    Um valor JSON, ou vários em sequência: a ferramenta os lê como um stream de entrada do jq, e a contagem aparece no título do painel.

  2. Escreva o filtro, ou pegue um da fileira de exemplos

    Os botões cobrem as formas que aparecem: select, map, group_by, interpolação de strings, reduce e os operadores de atualização. Passar o mouse por um diz o que ele faz.

  3. Defina as flags que você usaria na linha de comando

    `-c` para uma linha por saída, `-S` para ordenar chaves, `-r` para strings sem aspas, `-s` para juntar várias entradas em um array só. A linha de comando no fim se atualiza com elas.

  4. Copie o comando, não só a saída

    A linha `jq …` gerada está com as aspas certas para um shell POSIX, então pode ir direto para um script ou um pipeline.

Perguntas frequentes

Isto é jq de verdade?

É um interpretador independente da gramática do jq, testado contra os exemplos do próprio manual do jq. Isso cobre a linguagem e os builtins comuns; não é uma compilação do jq em si, então qualquer coisa que dependa dos internos em C do jq vai diferir.

Por que `input` não funciona?

Porque aqui há um documento, não um stream do qual um filtro possa puxar mais. `input`, `inputs`, `$ENV`, `env`, `label`/`break`, `--stream` e módulos estão todos listados como não suportados na página, em vez de falhar misteriosamente.

Minha expressão regular se comporta diferente da do jq.

O jq usa Oniguruma; isto usa o motor do navegador. Na prática `\p{L}` e grupos nomeados funcionam nos dois, e as diferenças aparecem em torno de lookbehind e de alguns escapes de classe de caracteres. Se um padrão importa, teste na máquina que vai executá-lo.

Parou em 5.000 saídas.

Um limite deliberado, junto com um limite de passos. `..` sobre um documento grande produz uma saída enorme, e um filtro com recursão desgovernada travaria a aba de outro modo. Restrinja o filtro, ou execute na linha de comando, onde você pode encadear com `head`.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.