如何 select 在 jq 中作为变量提供的键的值?

How to select values of keys that are provided as variables in jq?

如果这是输入,

{
    "a_key":        2,
    "another_key":  100,
    "one_more_key": -4.2
}

通过提供键的名称作为变量来 select 任何这些键的值的最佳方法是什么?理想情况下,我正在寻找类似的东西:

"a_key" as $key | .$key

不过这会导致语法错误 ("unexpected '$'")。我想不出让 jq 评估变量的直接方法。

玩了一会儿之后,我想到了这个函数,它通过使用 "to_entries":

将键转换为值来达到目的
def val(key):
    key as $key | 
    to_entries | 
    .[] | select(.key == $key) | 
    .value;

"a_key" as $key | val($key) # outputs 2

不过,我觉得应该有一个更简单的解决方案。

就像javascript一样,jq支持索引。您可以按名称访问对象的属性。

"a_key" as $key | .[$key]