Как использовать jq: установка, фильтр JSON, map массивов, pipe с curl
Установить jq, вытащить поля JSON, map массивов, сократить ответ API через curl.
При отладке REST API или CI-логов jq позволяет фильтровать и преобразовывать JSON в терминале. Установка на macOS, Linux и Windows, фильтры полей, map массивов и pipe с curl для читателей hereink.
Запрос — как использовать jq с JSON и pipe curl. В итоге: установленный jq, .key, map, сокращённый ответ API.
Что решает jq
Больше, чем json.tool
json.tool в Python только форматирует. jq печатает .data.items[0].id, фильтрует массивы, выравнивает вложенность.
Естественный партнёр curl
Тела API часто длинные. | jq '.field' в конце оставляет нужные ключи.
Проверка:
jq --version. Документация:jqlang.org, GitHubjqlang/jq.
Установка jq на трёх ОС
- 1macOS (Homebrew)
brew install jq.which jqиjq --version. - 2Linux
Debian/Ubuntu:
sudo apt update && sudo apt install jq. Fedora:sudo dnf install jq. Arch:sudo pacman -S jq. - 3Windows
winget install jqlang.jqилиchoco install jq. Новый терминал, затемjq --version. - 4Первый фильтр
echo '{"ok":true}' | jq .ok→true.
Фильтр ключей и map массивов
echo '{"user":{"name":"Lin"}}' | jq .user.name
echo '{"items":[{"id":1},{"id":2}]}' | jq '.items[]'
echo '{"items":[{"id":1},{"id":2}]}' | jq '.items | map(.id)'Фильтры в одинарных кавычках. Точка . — текущее JSON-значение.
Pipe с curl
| Сценарий | Пример | Заметка |
|---|---|---|
| Публичный API | curl -s https://api.github.com/repos/jqlang/jq | jq '{name, stars: .stargazers_count}' | Только нужные поля |
| Сырой текст | curl -s … | jq -r '.token' | -r без кавычек JSON |
- Подходит
- Поля REST, фильтр JSON-логов, метаданные CI.
- Не подходит
- Массовое редактирование JSON на месте; не-JSON текст.
Что значит parse error?
Вход — не валидный JSON. Проверьте jq . отдельно.
Windows не видит jq?
Откройте терминал заново. where jq.
jq = yq?
Нет. jq для JSON. YAML — yq.
Затем нарисуйте границы
Форма API в терминале, границы — на одном рисунке. как создать пространство.