Tenía una pregunta similar relacionada: ¿Qué pasaría si quisieras recuperar el formato original del objeto (con nombres clave, por ejemplo, FOO, BAR)?
Jq proporciona to_entries
y from_entries
para convertir entre objetos y matrices de pares clave-valor. Eso junto con map
todo el selecto
Estas funciones se convierten entre un objeto y una matriz de pares clave-valor. Si to_entries pasa un objeto, entonces para cada entrada k: v en la entrada, la matriz de salida incluye {"clave": k, "valor": v}.
from_entries realiza la conversión opuesta, y with_entries (foo) es una abreviatura de to_entries | mapa (foo) | from_entries, útil para realizar algunas operaciones con todas las claves y valores de un objeto. from_entries acepta clave, clave, nombre, nombre, valor y valor como claves.
jq15 < json 'to_entries | map(select(.value.location=="Stockholm")) | from_entries'
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
}
}
Usando la with_entries
taquigrafía, esto se convierte en:
jq15 < json 'with_entries(select(.value.location=="Stockholm"))'
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
}
}