Примеры JSONPath


Будем разбирать работу JSONPath на информации, которую мы получим с помощью REST-метода user.get. При вызове данного метода мы можем наблюдать следующее (см. скрин ниже). Нам пришёл ответ, в котором содержится много объектов внутри списка, также внутри каждого объекта есть поля с данными.

Задача, которую решает JSONPath: помогает достать необходимые вам данные с помощью определенного синтаксиса. 







Получить один объект из списка 


Попробуем получить первый объект в списке, для этого введем в JSONPath следующую конструкцию $[0] (см. скрин ниже). Чтобы получить последний объект списка в скобках нужно указать $[-1] или ID последнего объекта. Таким образом вы можете получить любой объект списка.








Получить значение поля объекта 


Попробуем у найденного объекта получить значение поля EMAIL, для этого вводим в JSONPath $[0].EMAIL (см. скрин ниже). Таким образом, вы можете получить значение любого поля в данном объекте, просто поменяв значение EMAIL на любое другое, которое вам необходимо.








Получить элемента списка внутри объекта

Теперь сделаем чуть более сложный запрос и получим первое значение у списка в поле UF_DEPARTMENT. Для этого вводим в поле $[0].UF_DEPARTMENT[0] (см. скрин ниже). 

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







Получить по каждому объекту только значения определенного поля 

Вернемся к первоначальному набору данных, когда у нас были доступны все объекты, и попробуем получить от каждого объекта только значения поля NAME.
Для этого вводим $[*].NAME (см. скрины ниже) 

Так мы можем получить информацию по любым полям, меняя параметр NAME на любой другой. 








Получить объекты по условию


Теперь, давайте попробуем получить объекты по условию. Условие следующее: найдем всех пользователей у которых значение поля NAME = Владислав.
Для этого в JSONpath прописываем "$[*][?(@.NAME = "Владислав")"] (см. скрин ниже). 

Таким образом, мы можем получить объекты по разным условиям, просто нужно заменить параметр, по которому будет вестись фильтрация (в данном случае параметр NAME) и заменить значение фильтра (в данном случае “Владислав”).