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

Перевод статьи Python JSONPath Examples.

Что такое JSONPath?

JSONPath это язык запросов к JSON. Он очень похож на язык запросов XPath для XML. Вы формируете строку запроса и получаете нужное значение. Такое подход экономит память, так как необходимости разбазарить JSON полностью.

Библиотеки Python для JSONPath

Существует много JSONPath-библиотек для Python.

jsonpath: это портированая из Perl и JavaScript версия JSONPath.

jsonpath-rw: полностью Python-реализация JSONPath. Объект выражения JSONPath это объект первого класса, простой для анализа, преобразования, обработки, печати и расширения. Модуль jsonpath-rw-ext расширяет функционал библиотеки.

jsonpath-ng: окончательная реализация JSONPath цель которой соответствие стандарту, включая арифметические и бинарные сравнения. Эта библиотека соединяет модули jsonpath-rw и jsonpath-rw-ext и расширяет их.

Какую библиотеку использовать?

Модуль jsonpath-ng самый развитый и написан на чистом Python. Он поддерживает Python 2 и Python 3. Мы будем использовать этот модуль для примеров.

Установка модуля:

Разбор JSON

Рассмотрим пример разбора JSON и получения значения требуемого атрибута.

Вывод программы:

Мы используем модуль json для преобразования строки JSON в словарь.

Расписка списка

Ключи JSON могут содержать списки значений. Мы можем использовать JSONPath для анализа списоков и получения значений.

Предположим, что у нас есть JSON-файл db.json с следующим содержимым:

Мы хотим разобрать этот JSON-файл и получить список идентификаторов сотрудников.

Вывод программы:

Рекомендовано к чтению Python f-strings – PEP 498 – Literal String Interpolation.

Для получения данных в виде списка используйте генератор списков:

Заключение

JSONPath предоставляет простой способ разбора JSON и извлечения конкретных значений. Это очень полезно когда данных в JSON много, а нам интересны только некоторые значения.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *