Skip to content

jq tricks

Get values from array of maps:

echo '[ { "id": "144", "name": "foo"}, { "id": "628", "name": "bar"} ]' | jq -r '.[] | "\(.name) \(.id)"'
foo 144
bar 628

Show map:

echo '{"id":"2222222","release":"1.23","hostname":"srv-1"}' | jq 'to_entries[] | "\(.key): \(.value)"' | tr -d '"'

id: 2222222
release: 1.23
hostname: srv-1

Return empty string, if value not found:

echo '{ "name": "aaa", "host": "server", "id": "kkkk" }' | jq ".header // empty"