Группа: JSON

Подгруппа: -

Последняя версия: 6 (Java)


Описание

Извлекает данные из JSON-документа по пути JSONPath. Поддерживает фильтры, срезы, рекурсивный поиск и возврат множественных результатов.

Применение

  1. Извлеките данные из JSON-документа действием «Получить значение из JSON».
  2. Конвертируйте результат в требуемый тип или продолжите работу с полученным JSON-фрагментом с помощью действий группы «JSON».
  3. Используйте результат в других действиях платформы.

Параметры и их настройки

СвойствоОписаниеТипПример заполненияОбязательность заполнения поля
Параметры



Исходный 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];
  • выбор всех элементов через wildcard: $.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, отрицательным индексам и рекурсивному поиску. Также добавлена поддержка множественного результата: если путь выбирает несколько элементов, действие возвращает массив найденных элементов.

Версии

  • Нет меток