jq es un procesador JSON de línea de comandos liviano y flexible muy parecido a sed en el sentido de que le permite dividir, filtrar, asignar y transformar datos de un formato a otro. Por ejemplo, se puede usar para convertir datos JSON en CSV (valores separados por comas) para cargarlos en una base de datos MySQL sin columnas JSON. Puede descargarlo desde https://stedolan.github.io/jq/, y hay una versión en línea en https://jqplay.org/ para experimentar. Además, jq utiliza el analizador de expresiones regulares compatibles con Perl (PCRE), como muchos otros lenguajes. (Esta maravillosa herramienta merece tener mucho más escrito sobre ella que los ejemplos simples aquí, y leer el manual es una forma rápida de familiarizarse con las muchas funciones de esta herramienta).
Si encuentra el siguiente error:
jq: command not found (JSON CLI Parser)
Puede intentar instalar el siguiente paquete según su elección de distribución.
Distribución | Comando |
---|---|
OS X | instalar cerveza jq |
Debian | apt-get install jq |
Ubuntu | apt-get install jq |
Alpino | apk agregar jq |
Arco Linux | pacman -S jq |
Kali Linux | apt-get install jq |
Fedora | dnf instalar jq |
Raspbian | apt-get install jq |
Docker | docker ejecutar cmd.cat/jq jq |
Sin argumentos para jq, "imprimirá bastante" el documento JSON. Esto es muy útil para documentos extremadamente complejos con muchas capas de objetos incrustados y matrices que son difíciles de ver en una sola línea plana.
Seleccione ciertos campos
En algunas ocasiones, no todos los datos en un documento JSON serán de interés, y puede usar jq para reformar los datos y proporcionar solo partes seleccionadas. Por ejemplo:
$ jq '{city, state, id}' myfile.json
Ejemplos de comandos jq
1. Genere un archivo JSON, en formato de impresión bonita:
$ jq . file.json
2. Genere todos los elementos de las matrices (o todos los pares clave-valor de los objetos) en un archivo JSON:
$ jq .[] file.json
3. Leer objetos JSON de un archivo en una matriz y generarlos (inverso de `jq .[]`):
$ jq --slurp . file.json
4. Muestra el primer elemento en un archivo JSON:
$ jq .[0] file.json
5. Muestra el valor de una clave dada del primer elemento en un texto JSON desde stdin:
$ cat file.json | jq .[0].key_name
6. Muestra el valor de una clave dada de cada elemento en un texto JSON desde stdin:
$ cat file.json | jq 'map(.key_name)'
Resumen
jq es un procesador JSON de línea de comandos. Funciona como sed para datos JSON; puede usarlo para filtrar, analizar y transformar datos estructurados con la misma facilidad que sed, awk o grep le permiten hacer con texto sin procesar. Jq está disponible en GitHub en https://stedolan.github.io/jq/. La instalación es muy sencilla; es solo un binario único, disponible para Windows, macOS y Linux. Simplemente descárguelo y cópielo en la carpeta disponible en su sistema PATH para poder ejecutarlo desde el shell o la línea de comandos.