Работайте с JSON в BASH, используя jq
Last updated
Last updated
Инструмент jq
командной строки — это легкий и гибкий процессор JSON командной строки . Он отлично подходит для анализа вывода JSON в BASH.
Одна из замечательных особенностей заключается jq
в том, что он написан на переносимом языке C и не имеет никаких зависимостей во время выполнения. Все, что вам нужно сделать, это загрузить один двоичный файл или использовать менеджер пакетов, например apt, и установить его с помощью одной команды.
Для демонстрации в этом уроке я бы использовал внешний REST API, который возвращает простой вывод JSON, называемый :
Если вы хотите следовать инструкциям, обязательно получите бесплатный ключ API здесь:
QuizAPI бесплатен для разработчиков.
Существует множество способов установки jq
в вашу систему. Один из наиболее простых способов сделать это — использовать менеджер пакетов в зависимости от вашей ОС.
Вот список команд, которые вам нужно будет использовать в зависимости от вашей ОС:
Установите jq в Ubuntu/Debian:
Установите jq в Fedora:
Установите jq на openSUSE:
Установите jq на Arch:
Установка на Mac с помощью Homebrew:
Установите на Mac с помощью MacPort:
Если вы используете другую ОС, я бы рекомендовал просмотреть официальную документацию здесь для получения дополнительной информации:
После установки jq вы можете проверить текущую версию, выполнив следующую команду:
После jq
установки ключа API QuizAPI вы можете анализировать выходные данные QuizAPI в формате JSON непосредственно в своем терминале.
Сначала создайте переменную, в которой будет храниться ваш ключ API:
Чтобы получить выходные данные от одной из конечных точек QuizAPI, вы можете использовать команду Curl:
Для более конкретного вывода вы можете использовать генератор URL-адресов QuizAPI здесь:
После запуска команды curl результат, который вы получите, будет выглядеть следующим образом:
Это может быть довольно сложно прочитать, но благодаря инструменту командной строки jq все, что нам нужно сделать, это передать команду Curl в jq, и мы увидим хороший форматированный вывод JSON:
Обратите внимание на
| jq
в конце.
В этом случае результат, который вы получите, будет выглядеть примерно так:
Теперь это выглядит намного красивее! Инструмент командной строки jq отформатировал вывод и добавил красивую раскраску!
Допустим, мы хотели получить только первый элемент из вывода JSON, для этого нам нужно просто указать индекс, который мы хотим видеть, с помощью следующего синтаксиса:
Теперь, если мы снова запустим команду curl и направим вывод в jq .[0] следующим образом:
Вы получите только первый элемент, и результат будет выглядеть следующим образом:
Иногда вам может потребоваться получить только значение определенного ключа, скажем, в нашем примере QuizAPI возвращает список вопросов вместе с ответами, описанием и т. д., но что, если вы хотите получить только вопросы без дополнительной информации? ?
Это будет довольно просто с jq
, все, что вам нужно сделать, это добавить ключ после команды jq, чтобы это выглядело примерно так:
Нам нужно добавить, .[]
поскольку QuizAPI возвращает массив, и, указав его, .[]
мы сообщаем jq, что хотим получить значение .question для всех элементов массива.
Результат, который вы получите, будет выглядеть так:
Как видите, теперь мы получаем только вопросы без остальных значений.
Давайте продолжим и создадим небольшой bash-скрипт, который должен выводить нам следующую информацию:
Получить только первый вопрос из вывода
Получите все ответы на этот вопрос
Присвойте ответы переменным
Распечатать вопрос и ответы
Для этого я собрал следующий скрипт:
{notice} обязательно замените часть API_KEY своим фактическим ключом QuizAPI:
Если вы запустите скрипт, вы получите следующий результат:
Мы можем пойти еще дальше, сделав это интерактивным, чтобы мы могли выбирать ответ прямо в нашем терминале.
Уже существует скрипт bash, который делает это с помощью QuizAPI и jq
:
Вы можете посмотреть этот скрипт здесь:
Инструмент jq
командной строки — это потрясающий инструмент, который дает вам возможность работать с JSON непосредственно в терминале BASH.
Таким образом, вы можете легко взаимодействовать со всеми видами REST API с помощью BASH.
Для получения дополнительной информации вы можете взглянуть на официальную документацию здесь:
Для получения дополнительной информации о QuizAPI вы можете просмотреть официальную документацию здесь: