jq

1. Ciclo de vida

Descripción

Esta herramienta permite manipular ficheros JSON desde la línea de comandos del sistema operativo, de forma equivalente a lo que permiten otras herramientas como awk, sed o grep respecto a ficheros de texto. De este modo, es posible extraer valores del conjunto de datos en formato JSON sin tener que convertir de formato el fichero de texto que lo contiene.

Mediante la utilización de jq es posible dividir, filtrar, mapear y/o transformar ficheros JSON.

La herramienta está disponible para ser instalada como un binario en diferentes versiones de sistemas operativos y también se encuentra disponible el código fuente en lenguaje C de la misma.

Enlace al recurso

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

Ejemplo de uso

Para el siguiente ejemplo tomaremos el fragmento de un fichero JSON con preguntas y respuestas utilizado para un concurso:

{ "quiz":[
        {
            "pregunta": "¿Cuál de los siguientes equipos juega en La Liga?",
            "opciones": [
                "Real Madrid",
                "Lackers",
                "Estudiantes",
                "Liverpool"
            ],
            "respuesta": "Real Madrid"
        },
        {
           "pregunta": "5 + 5 = ?",
            "opciones": [
                "10",
                "11",
                "12",
                "13"
            ],
            "respuesta": "10"
        },
        {
            "pregunta": "12 - 9 = ?",
            "opciones": [
                "1",
                "2",
                "3",
                "4"
           ],
            "respuesta": "3"
       }
    ]
}

Mediante la utilización de la herramienta jq se procesa el fichero JSON con el objetivo de generar un listado de pregunta-respuesta, que omita las diferentes opciones, así como otros elementos que pudiera contener el fichero JSON. El filtro que se propone para llevar a cabo este cometido es el siguiente:

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

Usando la sintaxis de jq, en primer lugar, se accede a todos los elementos de quiz y, posteriormente, se procesan uno a uno, asociándolos a las etiquetas pregunta y respuesta, respectivamente.

Por último, se incorpora el ejemplo tras su procesado:

[
  {
    "pregunta": "¿Cuál de los siguientes equipos juega en La Liga?",
    "respuesta": "Real Madrid"
  },
  {
    "pregunta": "5 + 5 = ?",
   "respuesta": "10"
 },
  {
    "pregunta": "12 - 9 = ?",
    "respuesta": "3"
  }
]

Enlaces relacionados

Formato JSON: https://es.wikipedia.org/wiki/JSON

Herramienta jq en línea: https://jqplay.org/