Вывести первое значение, не зная ключа

У меня есть значение 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. 

Я попробовал функцию keys, и она возвращает ключи, как и ожидалось. Однако функции values нет, иначе я мог бы получить значения и вернуть только первый элемент

cat result.json | jq -r 'keys'

Есть ли способ получить 0-е значение из этой строки, когда имя ключа неизвестно?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
4
0
1 687
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать функцию to_entries, чтобы добраться туда!

jq 'to_entries|.[0].value' file.json

должен сделать трюк.

Из jq документа:

Если to_entries передается объект, затем для каждой записи 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"
    }
  }
]

где вы можете найти первый ключ и соответствующее ему значение.

Ответ принят как подходящий

Вы ищете первый/1.

first(.[])

Online demo

Если вы, по крайней мере, знаете, что первое значение всегда является скалярным, тогда вы можете отбросить остальную часть ввода, чтобы не исчерпать память и не тратить процессорное время.

$ jq --stream -n 'input[1]' file
"3.1.44.0"

Я попробовал функцию keys

Вы можете использовать функцию keys_unsorted следующим образом:

.[keys_unsorted[0]]

Другие вопросы по теме