Главная > Обработка текста и поиск > jq

jq: Обработка данных JSON

jq — это мощный инструмент для эффективной обработки и преобразования данных JSON из командной строки. Он используется для фильтрации, нарезки, сопоставления и преобразования данных JSON, позволяя легко извлекать нужную информацию даже из сложных структур JSON. Часто используется с другими командами через пайп (|).

Обзор

jq принимает данные JSON на вход и обрабатывает их различными способами, а затем выводит результат. Он способен как извлекать простые значения, так и выполнять сложные операции с массивами/объектами, что делает его незаменимым инструментом при работе с JSON в скриптовых средах.

Основные функции

  • Парсинг и форматирование данных JSON
  • Извлечение и фильтрация определенных полей
  • Манипуляции с массивами и объектами
  • Преобразование и реструктуризация данных

Основные опции

Формат ввода/вывода

Фильтрация/Преобразование

Сгенерированная команда:

Комбинируйте команды.

Описание:

`jq` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

Базовое форматирование JSON

echo '{"name": "Alice", "age": 30}' | jq .

Выводит введенный JSON в удобочитаемом формате.

Извлечение определенного поля

echo '{"name": "Bob", "age": 25}' | jq '.name'

Извлекает значение поля 'name' из объекта JSON.

Извлечение поля из элементов массива

echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq '.[].name'

Извлекает поле 'name' из каждого объекта в массиве JSON.

Вывод необработанной строки

echo '{"city": "Seoul"}' | jq -r '.city'

Выводит извлеченное строковое значение без кавычек.

Выбор нескольких полей и создание нового объекта

echo '{"name": "Charlie", "age": 40, "email": "charlie@example.com"}' | jq '{name: .name, age: .age}'

Создает новый объект, содержащий только поля 'name' и 'age' из существующего объекта.

Фильтрация по условию

echo '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]' | jq '.[] | select(.age >= 30)'

Фильтрует только пользователей старше 30 лет.

Преобразование элементов массива (map)

echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq 'map(.name | ascii_upcase)'

Преобразует имя каждого пользователя в верхний регистр.


Те же команды в категории