Перейти к содержанию

Применитель JSON Patch

Применяет JSON Patch (RFC 6902) или JSON Merge Patch (RFC 7396) к JSON-документу.

Входные данные
Патч (JSON)
Выходные данные

Применитель JSON Patch

Вставьте JSON-документ и патч, и этот инструмент применит патч и вернёт результирующий документ. Поддерживаются оба стандарта: RFC 6902 JSON Patch — стандартный массив операций add, remove, replace, move, copy и test — и RFC 7396 JSON Merge Patch, более простой формат «просто опишите желаемую структуру», используемый многими REST API для запросов PATCH.

Перед выполнением проверяется структура патча на наличие проблем: неизвестное имя операции, отсутствующий или некорректный «path», отсутствующий «value» в add/replace/test или отсутствующий «from» в move/copy — всё обнаруживается заранее с указанием индекса операции вместо сбоя на середине процесса. Когда патч проходит проверку, опция «При ошибке» определяет, что происходит, если отдельная операция всё равно не применяется (путь больше не существует, проверка не совпадает): остановиться на первой ошибке и сохранить уже применённое, или пропустить и продолжить. Включите пошаговую трассировку, чтобы увидеть документ после каждой операции — бесценно, когда девятишаговый патч ведёт себя неожиданно на шестом шаге. Пробный запуск вычисляет всё без изменения вывода, поэтому вы можете проверить безопасность патча перед применением.

Пути JSON Pointer точно следуют RFC 6901, включая токен "-" для добавления в массив и экранирование ~0 / ~1 для «~» и «/» внутри ключа. Move и copy читают источник с помощью «from» и пишут с помощью «path»; test сравнивает структурно, игнорируя порядок ключей объекта. Вывод может быть отформатирован для удобства чтения или сжат для вставки обратно в вызов API, а итоговая статистика показывает, сколько операций применилось, не получилось или пропустилось.

Всё выполняется локально в вашем браузере — документ и патч никогда не отправляются куда-либо, поэтому безопасно использовать с реальными API-ответами или файлами конфигурации. Скопируйте результат, загрузите его как файл .txt или отправьте прямо обратно во входное поле, чтобы применить ещё один патч сверху.

FAQ

В чём отличие между JSON Patch и JSON Merge Patch?
JSON Patch (RFC 6902) — это явный список операций — добавить это, удалить то, переместить вот сюда — поэтому может выразить точные изменения, такие как переупорядочение массива. JSON Merge Patch (RFC 7396) — это просто частичный объект JSON, описывающий желаемую структуру; ключ, установленный в null, удаляет его, всё остальное перезаписывает его. Merge patch проще писать вручную, но не может выразить правку массивов или различать между «удалить этот ключ» и «установить на null» однозначно.
Что происходит, если операция не удаётся в процессе?
При «остановиться на первой ошибке» уже применённые операции остаются в силе, а остальные пропускаются — статистика и трассировка показывают точно, где остановилось. При «пропустить и продолжить» каждая операция пытается выполниться, и только неудачные исключаются из результата.
Что делает пробный запуск?
Пробный запуск проверяет патч и моделирует каждую операцию, поэтому статистика и трассировка показывают точно, что произойдёт, но в поле вывода остаётся ваш исходный, не изменённый документ. Ничто не «записывается» в инструменте браузера — это способ предпросмотра эффекта патча перед его использованием.
Проверяет ли он патч перед применением?
Да. Неизвестное имя операции, путь, который не является допустимым JSON Pointer, или отсутствующий «value»/«from» — всё это перехватывается до запуска любой операции, и ошибка указывает индекс операции, чтобы вы смогли его найти в длинном патче.
Мой JSON отправляется куда-либо?
Нет. И документ, и патч обрабатываются полностью в вашем браузере и никогда не покидают ваше устройство.