Saltar al contenido

Extraiga un campo específico de la salida JSON usando jq

este problema se puede tratar de diversas formas, sin embargo te compartimos la resolución más completa en nuestra opinión.

Solución:

Si solo desea extraer el name campos, el comando que está buscando es jq '.example."sub-example" | .[] | .name'. Si desea mantener los nombres en un arrayenvolver todo jq expresión entre corchetes.

En jq 1.3, puede usar el filtro para extraer los valores:

.example["sub-example"] | .[] | .name

O más compacto:

.example["sub-example"][].name

Estos, por supuesto, también funcionan con versiones posteriores de jq.

Lectura en variables de shell

En lugar de completar variables de shell separadas (lo que requeriría saber de antemano cuántos valores hay), considere completar un shell array. Por ejemplo, usando un shell bash con mapfile (también conocido como readarray):

mapfile -t ary < <(< json_file jq '.example."sub-example"[].name')

Alternativamente, podría usar un caparazón while círculo. Etc etc. Hay muchos SO Q sobre este tema.

Han pasado algunos años y recientemente tuve que hacer esto yo mismo, así que pensé que debería publicar de otra manera aquí.

También puedes usar map() para extraer campos específicos. p.ej

.example."sub-example"|map(.name)

Referencia: https://jqplay.org/s/N6TboUkELM

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *