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的值。您可能已经猜到,每次加载页面时,键的名称都会更改,因此我需要获

我有一个JSON值

{
    "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]]