Як розпарсити json-рядок в командному рядку linux

Як розпарсити JSON-рядок в командному рядку Linux +15

  • 10.07.16 7:25 •
  • Indexator •
  • # 305370 •
  • Хабрахабр •
  • Переклад •
  • 23 •
  • 10900

- такий же як Forbes, тільки краще.

Як розпарсити json-рядок в командному рядку linux

Якщо ви часто працюєте з текстами формату 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 виявилося в рази простіше і зручніше, ніж налаштовувати хукі або писати розширення. Треба буде зібратися і написати статейку.

Схожі статті