jq

1. Cicle de vida

Descripció

Aquesta eina permet manipular fitxers JSON des de la línia de comandaments del sistema operatiu, de forma equivalent al que permeten altres eines com awk, sed o grep respecte de fitxers de text. D’aquesta manera, és possible extreure valors del conjunt de dades en format JSON sense haver de convertir de format el fitxer de text que les conté.

Mitjançant la utilització de jq és possible la seva utilització per a dividir, filtrar, mapar i/o transformar fitxers JSON.

L’eina està disponible per ser instal·lada com un binari en diferents versions de sistemes operatius i també es troba disponible el codi font a C de la mateixa eina.

Enllaç al recurs

https://stedolan.github.io/jq/

Exemple d’ús

Per a l’exemple següent prendrem el fragment d’un fitxer JSON amb preguntes i respostes utilitzat per a un concurs:

{ "quiz":[
        {
            "pregunta": "Quin dels equips següents juga a La Lliga?",
            "opcions": 
               "Reial Madrid",
                "Lackers",
                "Estudiants",
                "Liverpool"
            ],
            "resposta": "Reial Madrid"
        },
        {
            "pregunta": "5 + 5 = ?",
            "opcions": [
                "10",
                "11",
                "12",
                "13"
           ],
            "resposta": "10"
        },
        {
            "pregunta": "12 - 9 = ?",
            "opcions": [
                "1",
                "2",
                "3",
                "4"
           ],
            "resposta": "3"
        }
    ]
}

Mitjançant la utilització de l’eina jq es processa el fitxer JSON amb l’objectiu de generar un llistat de pregunta-resposta, que ometi les diferents opcions, així com altres elements que pogués contenir el fitxer JSON. El filtre que es proposa per a dur a terme aquesta comesa és el següent:

1 [.quiz[] | {pregunta: .pregunta, resposta: .resposta} ]

Usant la sintaxi de jq, en primer lloc, s’accedeix a tots els elements de quiz i, posteriorment, es processen un a un, associant-los a les etiquetes pregunta i resposta, respectivament.

Finalment, s’incorpora l’exemple després de processar-lo:

[
  {
    "pregunta": "Quin dels equips següents juga a La Lliga?",
    "resposta": "Reial Madrid"
  },
  {
   "pregunta": "5 + 5 = ?",
   "resposta": "10"
  },
  {
    "pregunta": "12 - 9 = ?",
    "resposta": "3"
  }
]

Enllaços relacionats

Format JSON: https://es.wikipedia.org/wiki/json

Eina jq en línia: https://jqplay.org/