jq não está funcionando no nome da tag com traços e números

Estou usando jq mas tendo “-” na minha tag json make jq não compile. Eu não posso escaping para fazer isso funcionar. Aqui o comando

curl -X GET -H "X-AppKey:foo" "foo/v2/_status" | jq '.component-status[]' 

Eu li no github de jq este post https://github.com/stedolan/jq/issues/202 mas não consigo fazer isso funcionar.

Esta é a saída da onda

  { "status": "ok", "hostname": "0b0b495a46db", "component-status": [ { "status-code": 200, "component": "Service1", "status": "OK" }, { "status-code": 200, "component": "Service2", "status": "OK" } ] } 

Qualquer ideia?

Você precisa colocar entre colchetes e aspas duplas:

 jq '.["component-status"]' 

Com sua input dada, retorna:

 [ { "status": "OK", "component": "Service1", "status-code": 200 }, { "status": "OK", "component": "Service2", "status-code": 200 } ] 

O Manual jq (desenvolvimento) -> Filtros básicos :

 .foo, .foo.bar 

O filtro útil mais simples é o .foo . Quando recebe um object JSON (também conhecido como dictionary ou hash) como input, ele produz o valor na chave “foo”, ou null se não houver nenhum presente.

Se a chave contiver caracteres especiais, você precisará cercá-la com aspas duplas como esta:. ."foo$" .

Do problema do github Não é possível selecionar o campo se o nome do campo tiver traços :

Atualmente, isso é analisado como uma subtração. Você sempre pode explicitamente usar strings para quando suas chaves não se encheckboxm na syntax do identificador.