jq — инструмент для обработки JSON-данных
jq
— это мощный инструмент командной строки для обработки JSON-данных. Он позволяет легко фильтровать, преобразовывать, изменять и форматировать JSON. Это делает его особенно полезным при работе с API и данными в формате JSON в скриптах.
Основные возможности и команды jq
1. Форматирование JSON
Для начала, jq
часто используется для форматирования JSON, чтобы сделать его более читабельным.
1 2 |
echo '{"name": "Alice", "age": 25}' | jq . |
Этот код выводит JSON в удобочитаемом формате.
2. Доступ к полям
Вы можете обращаться к конкретным полям JSON, используя точечную нотацию. Например:
1 2 |
echo '{"name": "Alice", "age": 25}' | jq .name |
Этот пример выведет Alice
.
3. Фильтрация массивов и объектов
Допустим, у вас есть массив объектов:
1 2 3 4 5 |
[ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 30} ] |
Чтобы вывести имена всех людей, можно использовать:
1 2 |
echo '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]' | jq '.[].name' |
Результат:
1 2 3 |
"Alice" "Bob" |
4. Фильтрация по условиям
jq
позволяет фильтровать элементы по определенным условиям. Например, если нужно вывести информацию о людях старше 25 лет:
1 2 |
echo '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]' | jq '.[] | select(.age > 25)' |
Результат:
1 2 3 4 5 |
{ "name": "Bob", "age": 30 } |
5. Изменение данных
Вы можете модифицировать JSON, добавляя или изменяя поля. Например, чтобы изменить возраст на 35:
1 2 |
echo '{"name": "Alice", "age": 25}' | jq '.age = 35' |
Результат:
1 2 3 4 5 |
{ "name": "Alice", "age": 35 } |
6. Комбинирование операций
jq
поддерживает цепочку операций. Например, можно сначала отфильтровать данные, а затем выбрать конкретное поле:
1 2 |
echo '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]' | jq '.[] | select(.age > 25) | .name' |
Результат:
1 2 |
"Bob" |
7. Подсчет и агрегирование
Для подсчета элементов или суммирования значений можно использовать встроенные функции jq
. Например, чтобы посчитать общее количество людей:
1 2 |
echo '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]' | jq 'length' |
Результат
1 |
2 |
8. Сохранение результата в переменную
Если вы используете jq
в скриптах, можно сохранить результат в переменной. Например:
1 2 3 |
NAME=$(echo '{"name": "Alice", "age": 25}' | jq -r .name) echo $NAME |
Флаг -r
убирает кавычки из результата, что полезно для работы с переменными.
Примеры с jq
в curl
для работы с API
jq
отлично работает вместе с curl
для обработки JSON-ответов от API. Например:
1 2 3 4 |
response=$(curl -s https://jsonplaceholder.typicode.com/todos/1) title=$(echo $response | jq -r .title) echo "Title: $title" |
Заключение
jq
— это незаменимый инструмент для работы с JSON в командной строке, позволяющий фильтровать, форматировать и изменять JSON-данные. Он особенно удобен для работы с API и автоматизации скриптов, где требуется обработка данных в формате JSON.
Recommended Posts
Спецификация JSON:API 1.0 на русском языке
28.01.2022