Як розпарсити JSON-рядок в командному рядку Linux +15
- 10.07.16 7:25 •
- Indexator •
- # 305370 •
- Хабрахабр •
- Переклад •
- 23 •
- 10900
- такий же як Forbes, тільки краще.
Якщо ви часто працюєте з текстами формату JSON з командного рядка або в шелл-скриптах, ви можете задатися питанням, чи є якась консольна утиліта, яка може розпарсити JSON-рядок. Консольний JSON-парсер може бути зручний, коли ви тестируете або налагоджувати мережеві JSON-сервіси. Ви можете згодувати відповіді формату JSON від веб-сервісу консольного JSON-парсеру, тим самим легко вивчаючи мають важко JSON-відповіді або витягуючи з них окремі об'єкти.
У цьому керівництві я покажу, як розпарсити JSON-рядок з командного рядка.
У Linux є консольний JSON-процесор jq. який робить те, що нам необхідно. Використовуючи jq, ви можете парсити, фільтрувати, мапіть і перетворювати JSON-структуру даних без особливих зусиль.
Встановіть jq зі сховищ вашого дистрибутива Linux.
Для Debian і Ubuntu:
Також ви можете встановити jq, просто скачавши його бінарник (доступний окремо для 32- і 64-бітної систем), як показано далі.
Бінарник jq також доступний для Windows, OS X і Solaris платформ, а його повний вихідний код випущений під ліцензією MIT.
Наступні приклади показують, як парсити JSON-структуру даних за допомогою jq.
Щоб розпарсити JSON-об'єкт:
Щоб розпарсити вкладений JSON-об'єкт:
Щоб розпарсити JSON-масив:
Щоб витягти конкретні поля з JSON-об'єкта:
Якщо JSON великий і структура його не ясна (приклад: відповідь AWS API) можна використовувати github.com/ilyash/show-struct (моя розробка), який покаже структуру у вигляді можливих аргументів (paths) для JQ.
Більш радикальне рішення для роботи з структурованими даними в короби: ... Шелл який підтримує структуровані дані і в якому не потрібен JQ. Я працюю над цим: github.com/ilyash/ngs. Приклад: instances = `` aws ec2 describe-instances $ * filters``
Хороший інструмент. Використовую іноді в скриптах. У нього значно більше можливостей, ніж це описано в статті, по суті там свій маленький мову програмування для перетворення JSON.
Корисна утиліта. Нещодавно здорово виручила для потреб CI - парсити / Трансформ з шелла JSON відповідь Stash зі списком PR виявилося в рази простіше і зручніше, ніж налаштовувати хукі або писати розширення. Треба буде зібратися і написати статейку.