Saltar al contenido

jq – Cómo iterar a través de claves de diferentes nombres

Solución:

La etiqueta original de esta pregunta era jq así que aquí hay un jq solución:

.[] | keys[]

Por ejemplo, con la entrada como se muestra en la pregunta:

$ jq '.[] | keys[]' input.json

"identifier1"
"identifier2"

Para recuperar los nombres de las claves en el orden en que aparecen en el objeto JSON, utilice keys_unsorted.

Creo que algo así funcionaría bien:

jq '. | to_entries | .[].key'

ver https://stedolan.github.io/jq/manual/#to_entries,from_entries,with_entries

o si desea obtener los valores de una variable:

JSON_DATA={main:{k1:v1,k2:v2}}
result=$(jq -n "$JSON_DATA" | jq '.main | to_entries | .[].value' --raw-output)
echo $result

##outputs: v1 v2

Vine aquí con la esperanza de ordenar un montón de claves de mi JSON, encontré dos funciones útiles. Hay tres funciones “to_entries”, “from_entries” y “with_entries”. Puede filtrar los valores por clave o valor, así:

JSON_DATA='
{
  "fields": {
    "first": null,
    "second": "two",
    "third": "three"
  }
}
'

echo "$JSON_DATA" | jq '{fields: .fields | with_entries(select(.value != null and .key != "third")) }'

Producción:

{
  "fields": {
    "second": "two"
  }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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