json - jq no funciona en el nombre de la etiqueta con guiones y números
bash (1)
Debe encerrar entre corchetes y comillas dobles:
jq ''.["component-status"]''
Con su entrada dada, devuelve:
[
{
"status": "OK",
"component": "Service1",
"status-code": 200
},
{
"status": "OK",
"component": "Service2",
"status-code": 200
}
]
El manual jq (desarrollo) -> Filtros básicos :
.foo, .foo.bar
El filtro útil más simple es
.foo
. Cuando se le da un objeto JSON (también conocido como diccionario o hash) como entrada, produce el valor en la clave "foo", o nulo si no hay ninguno presente.Si la clave contiene caracteres especiales, debe rodearla con comillas dobles como esta:.
."foo$"
.
Del problema de github No se puede seleccionar el campo si el nombre del campo tiene guiones :
Actualmente, eso se analiza como una resta. Siempre puede usar cadenas explícitamente cuando sus claves no se ajustan a la sintaxis del identificador.
Estoy usando jq pero tener "-" en mi etiqueta json hace que jq no se compile. No puedo escapar para que funcione. Aquí el comando
curl -X GET -H "X-AppKey:foo" "foo/v2/_status" | jq ''.component-status[]''
He leído en el github de jq esta publicación https://github.com/stedolan/jq/issues/202 pero no puedo hacer que funcione.
Esta es la salida del rizo
{
"status": "ok",
"hostname": "0b0b495a46db",
"component-status": [
{
"status-code": 200,
"component": "Service1",
"status": "OK"
},
{
"status-code": 200,
"component": "Service2",
"status": "OK"
}
]
}
¿Alguna idea?