Как использовать 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.

Установкаbrew / apt / winget
Фильтр.field · .[] · select
Pipecurl -s … | jq

Что решает jq

Больше, чем json.tool

json.tool в Python только форматирует. jq печатает .data.items[0].id, фильтрует массивы, выравнивает вложенность.

Естественный партнёр curl

Тела API часто длинные. | jq '.field' в конце оставляет нужные ключи.

Проверка: jq --version. Документация: jqlang.org, GitHub jqlang/jq.

Установка jq на трёх ОС

  1. 1
    macOS (Homebrew)

    brew install jq. which jq и jq --version.

  2. 2
    Linux

    Debian/Ubuntu: sudo apt update && sudo apt install jq. Fedora: sudo dnf install jq. Arch: sudo pacman -S jq.

  3. 3
    Windows

    winget install jqlang.jq или choco install jq. Новый терминал, затем jq --version.

  4. 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

СценарийПримерЗаметка
Публичный APIcurl -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 в терминале, границы — на одном рисунке. как создать пространство.

Начать