Introducción
JSON es un formato de representación de datos que se utiliza para almacenar y transferir datos entre diferentes capas de una aplicación; almacena datos en pares clave: valor.
La sintaxis JSON se derivó de JavaScript, pero en sí misma es independiente del lenguaje. Es compatible con muchos lenguajes de programación; estos lenguajes incluyen código que se puede utilizar para incrustar JSON en el programa; pero desafortunadamente, no podemos trabajar con JSON directamente en el shell de Linux ya que no puede interpretarlo. Para trabajar con JSON en el shell de Linux, utilizamos una combinación de herramientas como JQ y sed.
En esta publicación, aprenderemos cómo usar el comando JQ para manipular y trabajar con datos JSON en un shell de Linux.
Cómo instalar el comando JQ
El comando JQ no está disponible en algunas distribuciones de Linux de forma predeterminada; Debe descargarse al sistema antes de que pueda usarse en el terminal; Puede descargar el comando JQ como cualquier otro paquete en su sistema. En Ubuntu 20.04 use el siguiente comando para instalar la utilidad JQ:
sudo apt install jq
Simplemente reemplace apt con el administrador de paquetes de su sistema si está ejecutando una distribución que no sea Ubuntu.
Si está ejecutando una distribución como CentOS 8 que ya tiene JQ de forma predeterminada, obtendrá una salida similar a esta:
sudo dnf install jq
Sintaxis
Ahora podemos comenzar a usar el comando JQ ya que se instaló con éxito en nuestro sistema, pero primero echemos un vistazo a la sintaxis del comando JQ:
jq [options] [file...]
jq [options] --args [strings...]
jq [options] --jsonargs [JSON_TEXTS...]
El comando JQ se puede utilizar de muchas formas diferentes; Se puede usar directamente en un archivo JSON y también se puede combinar con muchos otros comandos para interpretar datos JSON. El comando JQ se puede utilizar con diferentes filtros, como el filtro “.”, “|”, “,”
o el “.[]”
para organizar datos JSON.
JQ El comando también tiene varias opciones, como temas tales como --tab
, --stream
, --indent n
, --unbuffered
, y el directorio opción -L . La sintaxis del comando JQ puede parecer compleja al principio, pero se familiarizará con ella una vez que lea el artículo completo.
Cómo organizar datos JSON usando el comando JQ
La función más simple y utilizada de los filtros de comandos de JQ. Se utilizan para organizar y embellecer los datos JSON al imprimir en una salida estándar.
En este ejemplo, tenemos un archivo JSON llamado employee.json y necesitamos enviar los datos a la salida estándar:
{"workers":{"name": "John Brooks","id": "003"}}
Podemos usar el comando cat para mostrar los datos:
cat employee.json
Los datos impresos en la salida estándar mediante el comando cat están desorganizados y desordenados. Podemos organizar estos datos usando el comando JQ junto con el filtro ‘.’
:
jq '.' employee.json
Ahora los datos se han vuelto mucho más organizados, coloridos y más fáciles de entender. Este filtro es especialmente necesario cuando se accede a datos de API; Los datos almacenados en la API pueden ser muy desorganizados y confusos.
Cómo acceder a una propiedad usando el comando JQ
El filtro .field junto con el comando JQ se puede utilizar para acceder a la propiedad del objeto en el shell.
Si solo queremos acceder e imprimir una sola propiedad en la salida estándar, podemos usar el operador .field. Por ejemplo, para acceder a la propiedad del trabajador podemos usar este comando:
jq '.workers' employee.json
También podemos acceder a los elementos presentes dentro de la propiedad usando el operador .field. Para acceder a la entrada de nombre en la propiedad del trabajador usaremos:
jq '.workers.name' employee.json
Cómo acceder a un elemento de matriz usando el comando JQ
También podemos acceder y devolver elementos dentro de una matriz en un archivo JSON usando el operador .[]
. Para este ejemplo, modificaremos nuestro archivo JSON para que se vea así:
[{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"},{"name": "Todd Gray","id": "009"}]
Para producir todas las matrices presentes en el archivo JSON ejecutaremos el siguiente comando:
jq '.[]' employee.json
Para producir solo la segunda matriz, podemos modificar el comando anterior de la siguiente manera:
jq '.[1]' employee.json
Recuerde que la matriz comienza en 0 (cero).
También podemos acceder a las propiedades presentes dentro de la matriz utilizando el operador .field. Por ejemplo, si queremos acceder a la propiedad del nombre en el tercer arreglo, ejecutaremos el siguiente comando:
jq '.[2].name' employee.json
Del mismo modo, para acceder a todas las propiedades del nombre dentro de las matrices podemos ejecutar este comando:
jq '.[].name' employee.json
Conclusión
El comando JQ se utiliza para transformar datos JSON en un formato más legible e imprimirlos en una salida estándar en Linux. El comando JQ se basa en filtros que se utilizan para buscar e imprimir solo los datos requeridos por un archivo JSON.
En esta guía práctica, aprendimos cómo usar el comando JQ para organizar y filtrar datos JSON.