Json 在不知道密钥的情况下打印第一个值
我有一个JSON值Json 在不知道密钥的情况下打印第一个值,json,jq,key-value,Json,Jq,Key Value,我有一个JSON值 { "RandomKey1": "3.1.44.0", "Common": { "Services": "3.50.103.0", "Common": "3.50.103.0" } } 我想获得RandomKey1的值。您可能已经猜到,每次加载页面时,键的名称都会更改,因此我需要获
{
"RandomKey1": "3.1.44.0",
"Common": {
"Services": "3.50.103.0",
"Common": "3.50.103.0"
}
}
我想获得RandomKey1
的值。您可能已经猜到,每次加载页面时,键的名称都会更改,因此我需要获取第0个键的值。保证在第0位
我希望这至少会有一些结果
cat result.json | jq -r '.[0]'
但是我得到了错误
jq: error (at <stdin>:0): Cannot index object with number.
当键名未知时,有没有办法从该字符串中获取第0个值?您可以使用
to_entries
函数获取该值
jq 'to_entries|.[0].value' file.json
我们应该做到这一点
从jq
doc:
如果to_条目被传递给一个对象,
然后,对于输入中的每个k:v条目,输出数组包括{“key”:k,“value”:v}
因此,在此之后,您的json将如下所示:
[
{
"key": "RandomKey1",
"value": "3.1.44.0"
},
{
"key": "Common",
"value": {
"Services": "3.50.103.0",
"Common": "3.50.103.0"
}
}
]
您可以在其中找到第一个键及其对应的值。您要查找的
如果您至少知道第一个值始终是标量,那么您可以放弃其余的输入,以避免耗尽内存和浪费CPU时间
$jq--stream-n“输入[1]”文件
"3.1.44.0"
我尝试了功能键
您可以像这样使用键\u unsorted
功能:
.[keys_unsorted[0]]
first(.[])
.[keys_unsorted[0]]