sudo apt-get update
sudo apt-get install jq
sudo dnf install jq
brew install jq
La sintaxis básica de jq
implica pasar un filtro al comando jq
seguido de los datos JSON a procesar. Por ejemplo:
echo '{"name": "Juan", "age": 30}' | jq '.'
Este comando simplemente formatea y muestra el JSON de manera legible.
Para extraer datos específicos de un JSON, se utilizan los filtros. Por ejemplo, para obtener el valor del campo "name":
echo '{"name": "Juan", "age": 30}' | jq '.name'
Para acceder a elementos dentro de objetos y arrays:
echo '{"person": {"name": "Juan", "age": 30}}' | jq '.person.name'
Para acceder a un elemento en un array:
echo '{"people": [{"name": "Juan"}, {"name": "Maria"}]}' | jq '.people[1].name'
Puedes filtrar arrays basándote en condiciones específicas:
echo '{"people": [{"name": "Juan", "age": 30}, {"name": "Maria", "age": 25}]}' | jq '.people[] | select(.age > 28)'
También puedes transformar datos, por ejemplo, renombrar claves o modificar valores:
echo '{"name": "Juan", "age": 30}' | jq '{fullName: .name, yearsOld: .age}'
jq
proporciona funciones de mapeo y reducción para manipular arrays:
echo '[1, 2, 3, 4]' | jq 'map(. * 2)'
Esto duplica cada número en el array.
Para sumar los valores de un array:
echo '[1, 2, 3, 4]' | jq 'reduce .[] as $num (0; . + $num)'
jq
tiene varias funciones predefinidas, como length
, keys
, y has
:
echo '{"name": "Juan", "age": 30}' | jq 'length' # Cuenta el número de claves
echo '{"name": "Juan", "age": 30}' | jq 'keys' # Muestra las claves del objeto
echo '{"name": "Juan", "age": 30}' | jq 'has("name")' # Verifica si el objeto tiene la clave "name"
Imagina que obtienes datos JSON desde una API y quieres extraer información específica:
curl -s 'https://api.example.com/data' | jq '.results[] | {name: .name, age: .age}'
Si tienes un archivo JSON y necesitas modificar su contenido, puedes hacerlo directamente con jq
:
jq '.age = 31' person.json > updated_person.json
Para depurar y formatear JSON:
jq '.' data.json
Puedes combinar múltiples comandos jq
para operaciones más complejas:
cat data.json | jq '.people | map(select(.age > 20)) | map({name: .name, age: .age})'
jq
es una herramienta esencial para cualquier administrador de sistemas o desarrollador que trabaje con datos JSON en Linux. Su capacidad para extraer, transformar y manipular datos JSON de manera eficiente la convierte en una adición valiosa al conjunto de herramientas de línea de comandos. Con los ejemplos y conceptos básicos proporcionados en este artículo, deberías estar bien encaminado para utilizar jq
de manera efectiva en tus proyectos diarios.
Jorge García
Fullstack developer