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

时间:2015-05-19 15:33:54

标签: json variables dictionary key jq

如果这是输入,

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

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

"a_key" as $key | .$key

但这会导致语法错误("意外' $'")。我无法想出让jq评估变量的直接方法。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

在玩了一下之后,我想出了这个功能,通过使用" to_entries"将键转换为值来实现这一功能:

def val(key):
    key as $key | 
    to_entries | 
    .[] | select(.key == $key) | 
    .value;

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

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