| Свойство | Описание | Тип | Пример заполнения | Обязательность заполнения поля |
|---|---|---|---|---|
| Параметры | ||||
| Исходный JSON | Текст в формате JSON, из которого необходимо извлечь данные. Должен быть валидным JSON-документом. | JSON | {"items":[{"price":50},{"price":150}]} | Да |
| JSONPath | Выражение JSONPath для указания узлов, из которых необходимо извлечь данные. | Строка | $.items[?(@.price > 100)] | Да |
| Результаты | ||||
| Результат | Извлечённое значение. Если путь указывает на один элемент, возвращается сам элемент. Если путь выбирает несколько элементов через фильтр, срез, wildcard или рекурсивный поиск, возвращается массив найденных элементов. | JSON | [{"price":150}] |
Путь в параметре «JSONPath» должен начинаться с символа $.
В Java-версии поддерживается расширенный синтаксис JSONPath:
$.user.name;$.items[0];$.items[-1];$.items[1:4];$.items[*];$..price;$.items[?(@.price > 100)].В фильтрах можно использовать сравнения ==, !=, >, >=, <, <=, логические операторы &&, ||, !, строки, числа, true, false и null.
Для поиска вхождения в Java-версии можно использовать ключевое слово contains, например $.items[?(@.tags contains 'sale')].
Операторы в фильтрах нужно отделять пробелами от значений. Используйте @.price > 100, а не @.price>100.
Если в выражении для элемента массива пропустить закрывающую скобку, например указать $.items[1, Java-версия воспринимает путь как обращение ко всему списку $.items.
Если путь корректен, но данные по нему не найдены, действие завершается ошибкой «Элементы по пути не найдены».
| № | Событие | Описание ошибки в логе |
|---|---|---|
| 1 | Параметр «Исходный JSON» содержит некорректный JSON. | Обрабатываемый JSON некорректен. |
| 2 | Параметр «JSONPath» не начинается с $ или содержит синтаксическую ошибку. | JSONPath содержит синтаксическую ошибку: <текст ошибки>. |
| 3 | По указанному пути не найдено ни одного значения. | Элементы по пути не найдены. |
| 4 | В фильтре JSONPath указано некорректное регулярное выражение. | Некорректное регулярное выражение в JSONPath: <текст ошибки>. |
| 5 | Возникла внутренняя ошибка обработки JSONPath. | Внутренняя ошибка обработки JSONPath: <текст ошибки>. |
| Сценарий | Описание | Параметр: значение | Результат |
|---|---|---|---|
| Успешное выполнение | Получить значение поля по точному пути | Исходный JSON: {"user":{"name":"Alex"}} JSONPath: $.user.name | "Alex" |
| Успешное выполнение | Получить элементы по фильтру | Исходный JSON: {"items":[{"price":50},{"price":150}]} JSONPath: $.items[?(@.price > 100)] | [{"price":150}] |
| Успешное выполнение | Найти элементы массива через contains | Исходный JSON: {"items":[{"tags":["sale"]},{"tags":["new"]}]} JSONPath: $.items[?(@.tags contains 'sale')] | [{"tags":["sale"]}] |
| Успешное выполнение | Получить значения рекурсивным поиском | Исходный JSON: {"store":{"book":{"price":10},"bike":{"price":20}}} JSONPath: $..price | [10,20] |
| Неуспешное выполнение | Передан некорректный JSON | Исходный JSON: {"broken": json} JSONPath: $.broken | Действие завершилось с ошибкой №1. |
| Неуспешное выполнение | JSONPath не начинается с $ | Исходный JSON: {"items":[1,2]} JSONPath: items[0] | Действие завершилось с ошибкой №2. |
| Неуспешное выполнение | По фильтру ничего не найдено | Исходный JSON: {"items":[{"price":50}]} JSONPath: $.items[?(@.price > 100)] | Действие завершилось с ошибкой №3. |
По сравнению с предыдущей Java-версией действие поддерживает полноценный JSONPath вместо ограниченного синтаксиса пути через /.
Теперь пользователь может получать данные по фильтрам, срезам, wildcard, отрицательным индексам и рекурсивному поиску. Также добавлена поддержка множественного результата: если путь выбирает несколько элементов, действие возвращает массив найденных элементов.