Примеры 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) 
и заменить значение фильтра (в данном случае “Владислав”).


Узнать количество элементов списка

Если необходимо узнать количество возвращаемых элементов списка, можно использовать метод length.

Например, для получения количества задач можно использовать метод tasks.task.list и JSONPath:

$.tasks[length()]

Для элементов CRM, полученных методом crm.item.list, количество записей может возвращаться в значении total. Если необходимо посчитать количество элементов непосредственно в полученном списке, можно использовать:

$.items[length()]

pasted-image.png



Другие примеры 

Больше примеров в таблице ниже, а также по ссылке в документации и других примерах



Получить все данные из массива

Если есть json с массивом внутри, то для получения всех данных массива с разбитием их на значения нужно добавить ".*" в конце запроса. В этом случае массив вида [15653, 15655] будет разбит на элементы массива:


Пример

Пример БП будет выглядеть так:

По блокам:

1. Получаем данные о файлах в задаче:


2. Итерируемся по результатам 1 jsonpath:


3. Выводим в отчет:


Вот так будет выглядеть лог:



Комментарии