Saltar al contenido

Laboratorio de jq

jq Playground

Ejecuta filtros de jq 1.7 sobre el JSON que pegues, dentro del navegador, con una chuleta y la línea de comandos equivalente.

Ejecuta filtros de jq contra un documento en el navegador: un intérprete real de la gramática de jq 1.7 en lugar de unas cuantas operaciones de cadenas, así que las tuberías, `reduce`, `def`, la desestructuración y los operadores de actualización se comportan como en la línea de comandos. El comando de shell equivalente se imprime bajo el filtro.

🔒 Se ejecuta por completo en tu navegadorjqjsonqueryplayground

Filtro

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

JSON de entrada

Suelta un archivo .json

Se lee solo en esta pestaña. No se sube nada.

1 salida

Salidas

1

Tiempo

<1 ms

Tipos

object

Un intérprete de la gramática de jq 1.7, escrito aquí. Admite rutas (.a[0].b, .., ?), |·,·//, aritmética, comparación, and/or/not, interpolación de cadenas, if, try, reduce, foreach, as (con desestructuración), def, actualizaciones como |=·+=, formatos como @base64·@csv, y las 180 funciones integradas de abajo. Las pruebas son los propios ejemplos del manual de jq.

No soportado: input·inputs (solo hay un documento), $ENV·env (vacío), label·break, --stream, los arrays anidados en @sh, los formatos distintos de ISO 8601 en strptime, el modo de flujo de getpath y los módulos (import). Las expresiones regulares corren en el motor del navegador y no en el Oniguruma de jq, así que \p{L} y los grupos con nombre funcionan, y puede haber diferencias sutiles alrededor del lookbehind.

Si lo único que quieres es una ruta, quizá sea más simple el Probador de JSONPath.

Cómo se usa

  1. Pega el documento

    Un valor JSON, o varios seguidos: la herramienta los lee como un flujo de entrada de jq, y el recuento se muestra en el título del panel.

  2. Escribe el filtro, o toma uno de la fila de ejemplos

    Los botones cubren las formas que aparecen: select, map, group_by, interpolación de cadenas, reduce y los operadores de actualización. Pasar el cursor por uno dice qué hace.

  3. Ajusta los flags que usarías en la línea de comandos

    `-c` para una línea por salida, `-S` para ordenar claves, `-r` para cadenas sin comillas, `-s` para engullir varias entradas en un solo arreglo. La línea de comandos del final se actualiza con ellos.

  4. Copia el comando, no solo la salida

    La línea `jq …` generada está correctamente entrecomillada para una shell POSIX, así que puede ir directamente a un script o a una tubería.

Preguntas frecuentes

¿Esto es jq de verdad?

Es un intérprete independiente de la gramática de jq, probado contra los ejemplos del propio manual de jq. Eso cubre el lenguaje y los builtins comunes; no es una compilación de jq en sí, así que cualquier cosa que dependa de los internos en C de jq será distinta.

¿Por qué `input` no funciona?

Porque aquí hay un documento, no un flujo del que un filtro pueda sacar más. `input`, `inputs`, `$ENV`, `env`, `label`/`break`, `--stream` y los módulos se listan todos como no admitidos en la página en lugar de fallar misteriosamente.

Mi expresión regular se comporta distinto que en jq.

jq usa Oniguruma; esto usa el motor del navegador. En la práctica `\p{L}` y los grupos con nombre funcionan en ambos, y las diferencias aparecen en torno al lookbehind y a unos pocos escapes de clases de caracteres. Si un patrón importa, pruébalo en la máquina que lo va a ejecutar.

Se detuvo en 5.000 salidas.

Un límite deliberado, junto con un límite de pasos. `..` sobre un documento grande produce una salida enorme, y un filtro con una recursión desbocada colgaría la pestaña de lo contrario. Acota el filtro, o ejecútalo en la línea de comandos donde puedes canalizar a `head`.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.