Строка JSON — значение в двойных кавычках с небольшой точной грамматикой escape-последовательностей. EscapeJSON различает обычный текст, полную строку и внутреннее содержимое, поэтому результат не зависит от угадывания.

Какие символы нужно экранировать

RFC 8259 требует экранировать двойную кавычку, обратный слеш и все управляющие символы от U+0000 до U+001F внутри строки. Для перевода строки, табуляции, возврата каретки, возврата на один символ и перевода страницы есть короткие записи; остальные управляющие символы используют четыре шестнадцатеричные цифры после \u. Обычный слеш можно экранировать, но это необязательно. Печатный Unicode может оставаться читаемым.

Полная строка и внутреннее содержимое

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

Проверьте назначение и число слоёв

Сверяйте результат с контрактами источника и назначения. Экранирование защищает только грамматику одной строки JSON и не санитизирует HTML, SQL, JavaScript, командную оболочку или другой синтаксический анализатор. Снимайте по одному проверенному слою, отклоняйте повреждённый Unicode и сохраняйте известный тестовый пример для важных интеграций.