Vai al contenuto

Banco di prova per jq

jq Playground

Esegue filtri jq 1.7 sul JSON incollato dentro il browser, con un promemoria della sintassi, e ti consegna la riga di comando corrispondente.

Esegue filtri jq su un documento nel browser — un vero interprete per la grammatica di jq 1.7 e non quattro operazioni su stringhe, così le pipe, `reduce`, `def`, il destructuring e gli operatori di aggiornamento si comportano tutti come da riga di comando. Il comando di shell equivalente viene stampato sotto il filtro.

🔒 Funziona interamente nel tuo browserjqjsonqueryplayground

Filtro

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

JSON in ingresso

Trascina un file .json

Letto solo in questa scheda. Non viene caricato niente.

1 uscita

Uscite

1

Tempo

<1 ms

Tipi

object

Un interprete della grammatica di jq 1.7, scritto qui. Supporta i percorsi (.a[0].b, .., ?), |·,·//, aritmetica, confronti, and/or/not, interpolazione di stringhe, if, try, reduce, foreach, as (destrutturazione compresa), def, aggiornamenti come |=·+=, formati come @base64·@csv, e le 180 funzioni integrate qui sotto. I test sono gli esempi del manuale di jq.

Non supportato: input·inputs (c’è un solo documento), $ENV·env (vuoto), label·break, --stream, gli array annidati in @sh, i formati diversi da ISO 8601 in strptime, la modalità stream di getpath e i moduli (import). Le espressioni regolari girano sul motore del browser e non sull’Oniguruma di jq, quindi \p{L} e i gruppi con nome funzionano, e attorno al lookbehind ci possono essere differenze sottili.

Se ti serve solo un percorso, forse è più semplice il Banco di prova per JSONPath.

Come si usa

  1. Incollare il documento

    Un valore JSON, oppure diversi di seguito: lo strumento li legge come un flusso di input jq, e il conteggio compare nel titolo del pannello.

  2. Scrivere il filtro, o prenderne uno dalla fila di esempi

    I pulsanti coprono le forme che capitano: select, map, group_by, interpolazione di stringhe, reduce e gli operatori di aggiornamento. Passandoci sopra si legge che cosa fa ciascuno.

  3. Impostare i flag che si userebbero da riga di comando

    `-c` per una riga per ogni output, `-S` per ordinare le chiavi, `-r` per le stringhe senza virgolette, `-s` per raccogliere più input in un solo array. La riga di comando in fondo si aggiorna con essi.

  4. Copiare il comando, non solo l’uscita

    La riga `jq …` generata ha il quoting giusto per una shell POSIX, quindi può finire dritta in uno script o in una pipeline.

Domande frequenti

È davvero jq?

È un interprete indipendente per la grammatica di jq, provato sugli esempi del manuale di jq stesso. Copre il linguaggio e le funzioni predefinite più comuni; non è una compilazione di jq in sé, quindi tutto ciò che dipende dalle sue interiora in C sarà diverso.

Perché `input` non funziona?

Perché qui c’è un documento solo, non un flusso da cui un filtro possa tirarne altri. `input`, `inputs`, `$ENV`, `env`, `label`/`break`, `--stream` e i moduli sono tutti elencati nella pagina come non supportati, invece di fallire in modo misterioso.

La mia espressione regolare si comporta diversamente da quella di jq.

jq usa Oniguruma; qui si usa il motore del browser. In pratica `\p{L}` e i gruppi denominati funzionano in entrambi, e le differenze saltano fuori intorno al lookbehind e a qualche escape di classe di caratteri. Se un pattern conta, va provato sulla macchina che lo eseguirà.

Si è fermato a 5.000 output.

È un limite voluto, insieme a un limite di passi. `..` su un documento grande produce un’uscita enorme, e un filtro con una ricorsione fuori controllo bloccherebbe altrimenti la scheda. Meglio restringere il filtro, oppure eseguirlo da riga di comando dove si può mandare in pipe a `head`.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.