jq Playground

Escribe un filtro jq y ve el resultado al instante. Pega tu JSON (o JSON Lines), activa opciones de jq como -r, -c y -s y aprende con una biblioteca de filtros listos para usar. Todo se ejecuta localmente en tu navegador.

Última actualización:

Se ejecuta en vivo mientras escribes. Ctrl+Intro lo ejecuta ya. Se admiten filtros de varias líneas, funciones def y comentarios (#).

Entrada JSON
0 B
Salida listo


Línea de comandos

Biblioteca de filtros de ejemplo

Publicidad
Publicidad

Cómo usar jq Playground

  1. Pega tu JSON en el cuadro de entrada, suelta un archivo .json sobre él o usa los datos de ejemplo.
  2. Escribe un filtro jq como .users[] | select(.active) | .name. La salida se actualiza mientras escribes.
  3. Activa opciones como -r para cadenas sin comillas, -c para un resultado por línea o -s para reunir JSON Lines en un array.
  4. Explora la biblioteca de ejemplos y haz clic en cualquier tarjeta para cargar un filtro que funciona y que puedes adaptar.
  5. Copia o descarga la salida, o copia el comando jq equivalente para ejecutarlo en tu terminal.

Chuleta de jq

FiltroQué haceResultado de ejemplo
.Identidad: toda la entradaJSON formateado
.key, .a.b, ."my-key"Campo del objeto (null si falta).name → "Ada"
.[0], .[-1], .[2:4]Índice de array, desde el final, porción[1,2,3] | .[-1] → 3
.[], .[]?Cada elemento / valor (? ignora los errores)Un resultado por elemento
a | bTubería: pasa cada salida de a a b.users[] | .name
a, bAmbas salidas.name, .age
[ ... ], {a, b: .c}Construir un array o un objeto{name, city: .address.city}
select(cond)Conserva la entrada solo si cond es verdaderaselect(.age > 30)
map(f), map_values(f)Aplica f a cada elementomap(.price * 2)
a // bAlternativa: b cuando a es null, false o vacío.email // "none"
.a = v, .a |= f, .a += 1Asignar, actualizar o modificar una ruta.n |= . + 1
del(.a), to_entries, with_entries(f)Eliminar rutas, trabajar con pares clave/valorwith_entries(.key |= ascii_upcase)
sort_by(f), group_by(f), unique_by(f)Ordenar, agrupar o eliminar duplicados por una clavesort_by(-.age)
add, length, min_by(f), max_by(f)Agregar un array[.[].n] | add
reduce .[] as $x (init; update)Reducir muchos valores a unoreduce .[] as $x (0; . + $x)
"\(.a) and \(.b)"Interpolación de cadenas"Hi \(.name)"
test(), capture(), sub(), gsub()Expresiones regularesgsub("\\s+"; " ")
@csv, @tsv, @base64, @uri, @html, @shCadenas de formato (úsalas con -r)[.id, .name] | @csv
.., paths, getpath(p)Recorrer cada valor / ruta[.. | numbers]
try f catch g, f?Manejar errorestry tonumber catch 0

Opciones de línea de comandos de jq

OpciónSignificadoUso típico
-rSalida raw: cadenas sin comillasListas de nombres, filas CSV/TSV, scripts de shell
-cSalida compacta: un resultado por líneaGenerar JSON Lines, logs
-sSlurp: lee todas las entradas en un arrayContar o sumar JSON Lines
-nEntrada nula: empieza con nullGenerar JSON, leer con input/inputs
-REntrada raw: cada línea es una cadenaAnalizar CSV o texto plano con jq
-SOrdenar las claves de los objetos en la salidaDiffs estables
-jJoin: salida raw sin saltos de líneaConstruir una cadena larga
--arg name v / --argjson name jsonDefine $namePasar valores del shell a un filtro de forma segura

Consejos para escribir filtros jq

Construye los filtros paso a paso. Empieza con ., añade una tubería cada vez y observa cómo cambia la salida. Cuando un paso devuelve muchos resultados, envuélvelo en [ ] para verlos como un array.

Los campos que faltan son null, no errores. .missing devuelve null, pero .missing[] o .missing.x sobre un número falla. Usa ?, // default o select() para proteger los datos opcionales.

Pon los filtros entre comillas en el shell. En Linux y macOS envuelve el filtro entre comillas simples: jq -r '.items[] | .name' data.json. El comando que aparece bajo la salida ya está entrecomillado.

Preguntas frecuentes

¿Qué es jq?

jq es un procesador de JSON para la línea de comandos. Un filtro jq describe cómo transformar JSON: elige campos con .name, recorre arrays con .[], filtra con select(), da nueva forma con {} y [] y agrega con funciones como map, group_by, add y reduce. Este playground te permite probar filtros sin instalar nada.

¿Se sube mi JSON a un servidor?

No. El motor de jq se ejecuta completamente en JavaScript dentro de tu navegador (en un worker en segundo plano), así que tus datos nunca salen de tu dispositivo y la página sigue funcionando sin conexión una vez cargada.

¿Es igual que el jq real?

El motor sigue la sintaxis y la semántica de jq 1.7, incluidas las rutas, los operadores de asignación, reduce, foreach, label/break, try/catch, la desestructuración, los @formatos y la mayoría de las funciones integradas. Pequeñas diferencias: las expresiones regulares usan el motor del navegador en lugar de Oniguruma, las fechas se manejan en UTC, los módulos (import/include) no están disponibles, $ENV está vacío y los números son de coma flotante de 64 bits.

¿Cómo obtengo la salida sin comillas?

Activa -r (salida raw). Así las cadenas se imprimen como texto plano, que es lo que necesitas para listas de nombres, filas @csv o @tsv y scripts de shell. Los números, arrays y objetos se siguen imprimiendo como JSON.

¿Cómo proceso JSON Lines (NDJSON) o varios documentos JSON?

Pégalos uno detrás de otro. jq ejecuta el filtro una vez por valor. Activa -s (slurp) para leer primero todos los valores en un solo array, por ejemplo para contarlos o sumarlos con length o add.

¿Por qué recibo errores "Cannot iterate over null" o "Cannot index"?

El filtro intentó usar .[] o .key sobre un valor de tipo incorrecto, a menudo porque falta un campo (null) en algunos elementos. Añade ? para ignorar los errores (.items[]?), usa // para dar un valor por defecto (.items // []) o filtra antes con select(.items != null).

¿Cómo paso un valor a un filtro como con --arg?

Abre Variables y añade una línea como country=US (una cadena, como --arg) o limit:=10 (JSON, como --argjson). Úsala en el filtro como $country o $limit. La línea de comandos que aparece bajo la salida incluye las opciones --arg correspondientes.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Entornos de prueba de código →