Извлечь слаг свойства из файла json

Я хотел бы извлечь имена репозиториев и их размер после получения списка всех репозиториев в битбакете с использованием API через сценарий оболочки. Команда, которую я использую для этого,

repo_list=$(cat repo.json | jq '.[] | .slug ' | sed 's/"//g')

repo.json содержит:

{
"pagelen":100,
"size":494,
"values":[
  {
     "scm":"git",
     "website":"",
     "fork_policy":"no_public_forks",
     "full_name":"org_name/ecomm-dist-cache",
     "name":"ecomm-dist-cache",
     "language":"java",
     "created_on":"2014-11-18T19:01:25.741787+00:00",
     "mainbranch":{
        "type":"branch",
        "name":"master"
     },
     "workspace":{
        "slug":"org_name",
        "type":"workspace",
        "name":"Org Name ",
        "uuid":"{xxxxxxxxxxxxx}"
     },
     "has_issues":true,
     "updated_on":"2018-06-06T22:17:02.947496+00:00",
     "size":105095621,
     "type":"repository",
     "slug":"ecomm-dist-cache",
     "is_private":true,
     "description":"Initial Migration of ecomm-dist-cache"
  },
  {
     "scm":"git",
     "website":"",
     "full_name":"org_name/mqfte_ecommoutboundtransfertoweddingchannel",
     "name":"MQFTE_ECOMMOutboundTransferToWeddingChannel",
     "language":"",
     "mainbranch":{
        "type":"branch",
        "name":"master"
     },
     "workspace":{
        "slug":"org_name",
        "type":"workspace",
        "name":"Org Name ",
        "uuid":"{xxxxxxxxxxxxx}"
     },
     "has_issues":false,
     "size":99549,
     "type":"repository",
     "slug":"mqfte_ecommoutboundtransfertoweddingchannel",
     "is_private":true,
     "description":""
  }
],
"page":1,
"next":"https://api.bitbucket.org/2.0/repositories/org_name? pagelen=100&page=2"
}

Сообщение об ошибке, которое я получаю,

Cannot index number with string "slug"

Ожидаемый результат

ecomm-dist-cache
mqfte_ecommoutboundtransfertoweddingchannel

Укажите действительный JSON, а не ваш. Заходите на jsonlint.com

Inian 24.12.2020 12:46

Вы отметили jq, поэтому я предполагаю, что вы хотите проанализировать содержимое JSON, что означает, что действительно необходим правильный файл JSON.

Inian 24.12.2020 13:27

@Inian Я предоставил правильный файл JSON.

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

Ответы 1

Ответ принят как подходящий
jq -r '.values[].slug' repo.json

-r удалит кавычки, поэтому нет необходимости передавать sed.

можно ли получить несколько значений в одной строке? например, ecomm-dist-cache — 105095621 mqfte_ecommoutboundtransfertoweddingchannel — 99549 slug — размер

Hell 24.12.2020 16:10

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