json bash jq

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?