Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 2 Текущий »

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

Свойство

Описание

Тип

Пример
заполнения

Обязательность
заполнения поля

Параметры
Исходный JSON

Текст в формате JSON, из которого необходимо извлечь данные. Должен быть валидным JSON-документом.

Пустая строка или невалидный JSON вызовут ошибку валидации.

JSON

{ "id": 67890, "name": "Рик Санчез", "email": "rick@example.com", "isActive": true, "subscriptions": ["web", "mobile"] }

Да
JSONPath

Выражение JSONPath для указания узлов, из которых необходимо извлечь данные (например, $.items[?(@.price > 100)]).

Поддерживает стандартный синтаксис JSONPath (Newtonsoft.Json). Оператор contains не поддерживается; используйте [*] == для массивов и =~ для строк.

Строка

$.isActive

Да
Результаты

Результат

Извлеченное значение. Если путь указывает на один элемент — возвращается сам элемент (скаляр, объект, массив). Если путь выбирает несколько элементов (через фильтр, срез или wildcard) — возвращается массив найденных элементов.

JSON


-

Особые условия использования

Примеры корректных выражений JSONPath

СценарийЖелаемый синтаксис (не работает)Рабочий синтаксис (Newtonsoft.Json)Пояснение
Поиск элемента в массиве
(Есть ли значение "sale" в массиве тегов?)
$.items[?(@.tags contains 'sale')]$.items[?(@.tags[*] == 'sale')]Используем wildcard [*] внутри массива tags, чтобы проверить каждый элемент на равенство.
Поиск подстроки в тексте
(Содержит ли имя слово "phone"?)
$.items[?(@.name contains 'phone')]$.items[?(@.name =~ /phone/)]Оператор =~ запускает проверку регулярным выражением. По умолчанию регистрозависим, для игнорирования регистра используйте /phone/i.
Поиск подстроки с игнорированием регистра$.items[?(@.name contains 'phone')]$.items[?(@.name =~ /phone/i)]Флаг i в конце регулярного выражения делает поиск нечувствительным к регистру.
Сложное условие: массив И строка
(Тег "new" И имя содержит "book")
$.items[?(@.tags contains 'new' && @.title contains 'book')]$.items[?(@.tags[*] == 'new' && @.title =~ /book/)]Комбинируем оба подхода внутри одного фильтра через оператор &&.
Отрицание: массив НЕ содержит
(Нет тега "archive")
$.items[?(!(@.tags contains 'archive'))]$.items[?(!(@.tags[*] == 'archive'))]Отрицание ! применяется к результату проверки равенства внутри массива.
Поиск числа в массиве чисел
(Есть ли цена 100 в списке цен?)
$.orders[?(@.prices contains 100)]$.orders[?(@.prices[*] == 100)]Для чисел используется обычное сравнение ==, кавычки не нужны.

Исключения

ИсключениеСобытиеОписание ошибки в логе
Robin.Exception.ValidationErrorВходная строка параметра «Исходный JSON» не является корректным JSON-документом.Обрабатываемый JSON некорректен.
Robin.Exception.ValidationErrorВыражение в параметре «JSONPath» содержит синтаксическую ошибку (незакрытая скобка, неверный оператор, использование неподдерживаемого ключевого слова contains).JSONPath содержит синтаксическую ошибку: <текст исключения от библиотеки-парсера>
Robin.Exception.ValidationErrorОшибка компиляции регулярного выражения в фильтре JSONPath (некорректный паттерн в операторе =~).Некорректное регулярное выражение в JSONPath: <текст ошибки>
Robin.Exception.JSONExceptionКритическая ошибка внутреннего движка (например, переполнение стека при рекурсивном спуске .. на глубокой структуре).Внутренняя ошибка обработки JSONPath: <текст ошибки>
Robin.Exception.ElementNotFoundВыражение JSONPath синтаксически верно, но не нашло ни одного совпадения в документе (пустой результат).Элементы по пути не найдены.

Изменения в версии

  • Параметр «JSONPath» теперь принимает на вход JSONPath, а не JSON Pointer.
  • Нет меток