Vamos a empezar una serie de artículos sobre mini lenguajes1.
Voy a empezar con uno bastante útil, un lenguaje desarrollado para resolver una necesidad creada tras la adopción de JSON.
JSON viene de JavaScript Object Notation, fue inventado por Douglas Crockford a principios de los 2000. Ganó gran popularidad como alternativa de reemplazo a XML y es el formato más usado con REST.
Un objeto JSON se ve así:
{
"first_name": "John",
"last_name": "Smith",
"is_alive": true,
"age": 27,
"address": {
"street_address": "21 2nd Street",
"city": "New York",
"state": "NY",
"postal_code": "10021-3100"
},
"phone_numbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [
"Catherine",
"Thomas",
"Trevor"
],
"spouse": null
}
Aunque está basado en los objetos de JavaScript el formato es abierto, aunque hay varias estandarizaciones, está disponible en prácticamente todos los lenguajes de programación.
JQ es un lenguaje de programación creado por Stephen Dolan en 2012. Su idea era crear una herramienta al estilo de sed o awk, pero para datos expresados en JSON.
Supongamos que tienes un archivo llamado person.json
cuyo contenido es el objeto JSON que pusimos arriba. Entonces, si quieres obtener los hijos de esta persona, haces:
$ cat person.json | jq ‘.children’
[
"Catherine",
"Thomas",
"Trevor"
]
Si quieres obtener el segundo hijo, haces:
$ cat person.json | jq ‘.children[1]’
"Thomas"
En jq, al igual que muchos lenguajes, los índices de los arreglos empiezan desde 0. Habrás notado que el punto sirve para indicar el origen del objeto. Por ejemplo, ‘.address.city’
indica el atributo city
del atributo address
, entonces los puntos separan las partes del camino para llegar a un atributo. Una vez que entiendes esto, es muy fácil usar jq para buscar dentro de todo tipo de archivo json.
Pero eso no es todo lo que podemos hacer con jq, ya les dije que es un lenguaje de programación, no solo eso, es un lenguaje de programación funcional, por lo que podemos hacer muchas más cosas con él. Pero eso lo vamos a ver en los próximos capítulos de esta serie. Te invito a suscribirte si ya no lo has hecho, o a compartir esta serie con tus colegas y amigos.
En realidad es un decir. Los llamo mini lenguajes porque se usan para mini proyectos, scripts que se usan una vez para una tarea única, o a veces los usamos directamente en la línea de comandos. Pero son lenguajes completos, y nada impide escribir sistemas completos con ellos.