【问题标题】:How to use jq when the variable has reserved characters?当变量有保留字符时如何使用jq?
【发布时间】:2023-03-26 16:12:01
【问题描述】:

我正在尝试让以下工作,但它没有,请帮助我:

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

有问题的变量包括一个句点,我几乎尝试了所有方法来逃避句点 && 还尝试用引号将它括起来;不行;这是我要从中提取的变量(我在没有任何过滤器的情况下运行 jq,并在此处截断输出以显示我需要的内容。提前感谢未来的问题解决者!

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"
},
....

【问题讨论】:

    标签: json key special-characters jq


    【解决方案1】:

    当键包含对标识符无效的字符时,您必须引用该名称。

    ."OPEN.BTC"
    

    或者对于旧版本的 jq,使用索引。

    .["OPEN.BTC"]
    

    【讨论】:

    • 我尝试了这两个,它们都为我返回 null,我在 jq 1.5
    • 确保引用过滤器,最好用单引号。不要不加引号。即,这样做:... | jq '."OPEN.BTC"'
    • 我不能说jq,但你通常称后面的括号表示法,和:a.b.c点表示法。
    • 我建议将评论jq '."OPEN.BTC"'作为回复,因为没有单引号它不起作用(我使用的是jq 1.6)。
    • 另一种选择是转义引号。 jq .\"OPEN.BTC\"
    【解决方案2】:

    另一个答案对我不起作用,但@jeff-mercado 写的评论对我有用。所以,在这里添加它作为答案。

    如果您的密钥有“OPEN.BTC”之类的点,那么您的jq 命令应该是

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

    首先将键放在双引号中,然后用单引号将第一个点括起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-13
      • 2012-01-27
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多