How to use jq when the variable has special characters

Jonny Gerold picture Jonny Gerold · May 4, 2016 · Viewed 8.3k times · Source

I'm trying to get the following to work & it's not, help me please:

curl -s 'https://cryptofresh.com/api/asset/markets?asset=MKR' | jq .OPEN.BTC

The variable in question includes a period, I tried just about everything to escape the period && also tried surrounding it in quotes; no go ; this is the variable I'm looking to pull from (I ran jq without any filters, and truncated the output here to show what I need. Thanks in advance future problem solver!

curl -s 'https://cryptofresh.com/api/asset/markets?asset=MKR' | jq
....
 "OPEN.BTC": {
"volume24": 0.932166,
"price": 0.09995,
"updated": "2016-05-04T03:03:29.000Z"
},
....

Answer

Jeff Mercado picture Jeff Mercado · May 4, 2016

When a key contains characters that are invalid for identifiers, you'll have to quote the name.

."OPEN.BTC"

Or for older versions of jq, use an index.

.["OPEN.BTC"]