Как получить значение свойства числового объекта через JQ? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть объект json с цифровыми ключами в файле example.json:

{
  "1": "foo",
  "2": "bar"
}

Я хочу получить его свойства по ключу через jq, и я попытался:

$ jq ."1" example.json
0.1

и

jq .["1"] example.json
jq: error (at example.json:4): Cannot index object with number

Результат должен быть

"foo"

, хотя.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Команда:

jq ."1" example.json

не работает, поскольку кавычки интерпретируются оболочкой, и первый аргумент, который получает jq, равен .1.Вышеприведенная команда идентична jq .1 example.json и не является правильной, поскольку jq сообщает.

Вам необходимо заключить программу jq в апострофы, чтобы оболочка не интерпретировала любой символ в ней:

jq '."1"' example.json

Таким образом, jq получает ."1" в качестве своей программы и с радостью интерпретирует ее.

Вы также можете поместить имя ключа в квадратные скобки (как вы уже пробовали), но это не так.Не добавляю никаких улучшений, это та же программа, только раздутая.И это дает вам больше причин поместить его в апострофы, чтобы защитить его от оболочки:

jq '.["1"]' example.json
0 голосов
/ 12 декабря 2018

Использовать кавычки:

$ jq '."1"' example.json
"foo"
...