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