如何 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]
如果这是输入,
{
"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]