Невозможно получить значения массива JSON, используя jq в сценарии оболочки - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь получить ключ из приведенного ниже файла JSON:

Я только что выполнил приведенную ниже команду, которая выдаст следующий вывод JSON

Команда:

jq -r '.issues'

Вывод:

"issues": [
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "1999875",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/1999875",
      "key": "KINDLEAMZ-67578"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2019428",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2019428",
      "key": "KINDLEAMZ-68661"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2010958",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2010958",
      "key": "KINDLEAMZ-68167"
    }
  ]
}

Я просто хочу получить вывод в формате ниже и не знаю, как его получить.

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

{
"JIRA-1":"KINDLEAMZ-67578",

"JIRA-2":"KINDLEAMZ-68661",

"JIRA-3":"KINDLEAMZ-68167"
}

Как получить значение ключа из каждого массива и отобразить, как указано выше?и JIRA-n будет увеличиваться в зависимости от результата.

1 Ответ

1 голос
/ 22 сентября 2019

Для данного массива вы можете использовать to_entries/1 для сопоставления массива с индексом и значениями.Затем вы можете отобразить нужные вам ключи и значения на объекте, используя reduce или with_entries/1.

reduce (.issues | to_entries[]) as {$key,$value} ({};
    .["JIRA-\($key + 1)"] = $value.key
)

https://jqplay.org/s/y6AFKg2dSM

.issues | with_entries({key: "JIRA-\(.key + 1)", value: .value.key})

https://jqplay.org/s/H2uxyFJn9E


Похоже, вы используете версию меньше, чем 1,5.Вам нужно будет внести некоторые коррективы и удалить деконструкцию.

reduce (.issues | to_entries[]) as $e ({};
    .["JIRA-\($e.key + 1)"] = $e.value.key
)
...