Как работать с JSON в терминале через jq
- 6 июня 2026
Когда вы запрашиваете данные через curl или читаете конфигурационный файл, JSON в терминале выглядит примерно так: одна длинная строка без переносов и отступов, которую невозможно читать. А если ответ весит несколько килобайт с вложенными объектами — найти нужное поле глазами нереально.
jq — инструмент командной строки для работы с JSON: форматирует, фильтрует, извлекает нужные поля и преобразует данные. Работает как конвейер: передаёте JSON на вход, получаете нужный кусок на выходе.
Установка
# macOS
brew install jq
# Ubuntu/Debian
sudo apt-get install jq
# Windows (через Scoop)
scoop install jq
Базовое форматирование
Самый простой случай — просто красиво вывести JSON. Фильтр . означает «вернуть всё как есть»:
curl https://api.example.com/user | jq '.'
Было:
{"id":1,"name":"Иван","address":{"city":"Москва","zip":"101000"}}
Стало:
{
"id": 1,
"name": "Иван",
"address": {
"city": "Москва",
"zip": "101000"
}
}
Извлечение полей
Обращение к полю — через точку:
echo '{"name":"Иван","city":"Москва"}' | jq '.name'
# "Иван"
Вложенные поля:
echo '{"user":{"name":"Иван","age":28}}' | jq '.user.name'
# "Иван"
Работа с массивами
# все элементы массива
echo '[1,2,3]' | jq '.[]'
# элемент по индексу
echo '["a","b","c"]' | jq '.[1]'
# "b"
# длина массива
echo '[1,2,3,4,5]' | jq 'length'
# 5
Попробуйте сами — интерактивный jq
Фильтрация и преобразование
# оставить только фронтендеров
cat users.json | jq '[.[] | select(.role == "frontend")]'
# извлечь только имена
cat users.json | jq '[.[] | .name]'
# найти максимальный score
cat users.json | jq '[.[] | .score] | max'
В паре с curl
jq идеально работает в конвейере с curl:
# получить только поле token из ответа авторизации
curl -X POST https://api.example.com/auth \
-d '{"login":"user","password":"pass"}' | jq '.token'
# вывести все id из списка
curl https://api.example.com/posts | jq '[.[] | .id]'
Что запомнить
jq — это grep и sed для JSON. Базовый синтаксис прост: .поле для обращения к ключу, .[] для перебора массива, select() для фильтрации. В связке с curl позволяет быстро вытащить нужное поле из ответа API прямо в терминале.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.