ToolActToolAct

Экранирование JSON

Быстрое экранирование и разэкранирование JSON-строк

Ввод
Символов: 0
Байт: 0
Результат
Символов: 0
Байт: 0

Выберите способ конвертации

Что такое экранирование JSON?

Экранирование JSON — это процесс преобразования специальных символов в JSON-строке в экранированные последовательности. Часто экранируемые символы: " в \", \\ в \\\\, перенос строки в \n, табуляция в \t и т.д.

Сценарии использования: когда нужно встроить JSON-данные как строку в другой JSON, определить JSON-строку в коде или сохранить JSON в базе данных.

JSON-escaping подготавливает текст для безопасного помещения внутрь JSON-строки. Кавычки, обратные слеши, переносы строк, tabs и управляющие символы нужно экранировать правильно, иначе parser может принять их за структуру, а не содержимое. Это полезно для API payloads, конфигураций, логов, встроенных сообщений об ошибках и тестовых данных. Экранирование строки не валидирует весь JSON-документ и не делает результат автоматически безопасным для HTML, JavaScript, SQL или shell.

Как использовать

Как использовать

  1. Вставьте или введите текст в поле ввода
  2. Нажмите «JSON Escape» для экранирования спецсимволов (например, " → \")
  3. Нажмите «JSON Unescape» для восстановления экранированных символов (например, \" → ")
  4. Результаты появятся автоматически ниже и готовы к копированию

Заметки об экранировании

  • Экранируйте текст только для целевого контекста; JSON-строки, исходный код JavaScript, URL-адреса и атрибуты HTML имеют разные правила экранирования.
  • После деэкранирования проверьте разрывы строк, обратные слэши и кавычки перед вставкой в конфигурационные файлы.

Применение

Безопасное встраивание текста в JSON-строкиКогда сообщение об ошибке, фрагмент SQL, регулярное выражение, путь Windows или многострочный промпт нужно превратить в строковое значение JSON, режим экранирования преобразует кавычки, обратные слеши, переводы строк и управляющие символы в безопасные для JSON последовательности. Счётчики символов и байтов помогают заметить рост размера до вставки в запрос API. Всё обрабатывается в браузере через стандартный JSON.stringify, исходная строка никогда не покидает страницу.
Чтение экранированных данных из логовAPI-шлюзы и системы логирования часто показывают значения JSON-строк с экранированными переводами строк и кавычками. Режим разэкранирования возвращает эти последовательности в читаемый вид, что упрощает анализ стектрейсов, сериализованных промптов, тел вебхуков и скопированных конфигураций. Разэкранирование использует путь JSON.parse браузера, поэтому восстановленные символы остаются локально и появляются только в поле вывода.
Локальная проверка преобразований сложного текстаПоскольку инструмент опирается на браузерный JSON-парсер и сериализатор, он воспроизводит стандартные правила экранирования JSON-строк, а не изобретает свой синтаксис. Это удобная локальная площадка для проверки переживёт ли значение вставку в JSON-документ. Входная строка обрабатывается только в браузере, никаких API-вызовов не происходит, поэтому черновики со стектрейсами, промптами или неопубликованным текстом не покидают вкладку.
Экранирование значений для вложенных JSON-полейКогда тело вебхука должно нести сериализованный JSON-объект в качестве строкового значения, прогоните внутренний JSON через режим экранирования, чтобы внешний парсер по-прежнему воспринимал его как одну строку. Сопоставьте вывод с разэкранированием на стороне получателя, чтобы подтвердить целостность往返. Поскольку экранирование — это локальный stringify, можно экспериментировать с граничными случаями вроде вложенных кавычек или \u-последовательностей, не передавая контракт внешним инструментам.
Поиск скрытых управляющих символов в скопированном текстеВставленный текст из терминалов, PDF или мессенджеров часто содержит нулевые байты NUL, BEL или случайные символы CR, которые незаметно ломают нисходящие JSON-парсеры. Экранирование выводит их как последовательности \u0000, чтобы их можно было просмотреть и удалить, вместо того чтобы превращать документ в невалидный блоб. Сканирование работает полностью во внутреннем JSON-кодировальщике страницы, поэтому вставленные строки с конфиденциальными фрагментами обрабатываются без выхода из вкладки браузера.

Технический принцип

JSON (RFC 8259) — это строгая текстовая грамматика; каждый строковый литерал должен быть заключён в ASCII двойные кавычки (U+0022), и любой символ, способный нарушить эту грамматику, должен быть выражен как экранированная последовательность с обратным слешем. Обязательные экранирования: двойная кавычка в обратный слеш-кавычка, обратный слеш в двойной обратный слеш и 32 управляющих символа от U+0000 до U+001F (включая \b U+0008, \f U+000C, \n U+000A, \r U+000D, \t U+0009). Любой символ выше U+001F может присутствовать в строке как последовательность сырых байтов UTF-8, включая CJK-идеограммы, эмодзи, буквы с диакритиками и другие дополнительные символы. Прямой слеш необязательно экранировать (\/), но конвенция предписывает делать это, когда JSON встраивается в HTML-теги <script>, чтобы последовательность закрывающего тега скрипта не закрыла окружающий элемент script преждевременно. На практике встречаются два слоя экранирования. JSON-экранирование (синтаксическая подстановка) — единственный, требуемый RFC 8259: оно гарантирует, что строка является валидным JSON. Unicode-экранирование (перезапись каждого символа как \uXXXX или \u{XXXXX}) — это выбор представления, а не синтаксическое требование; оно меняет только то, как байты выглядят в файле, но не то, во что они декодируются. CJK-текст уже валиден в JSON как сырые байты UTF-8; режим Unicode-экранирования страницы перезаписывает его в \uXXXX, что полезно при встраивании строки в исходный код Java или JavaScript, где окружающему парсеру пришлось бы работать с многобайтовым UTF-8, но это добавляет 4-6 байтов на символ и ухудшает читаемость. У правил экранирования есть граничные случаи. JSON.parse строг к ведущим нулям (01 вызывает ошибку парсинга, хотя JavaScript принял бы его как восьмеричное 1); JSON.stringify в V8 всегда генерирует минимально необходимые экранирования (управляющие символы как \b/\n/\r/\t/\f, когда возможно, иначе как \uXXXX, а прямой слеш /, U+2028, U+2029 остаются нетронутыми для читаемого вывода). Одинокий суррогат (высокий суррогат без низкого после него) технически валиден по RFC 8259, но JSON.parse в строгом режиме или в TypeScript отвергает его как InvalidString; режим экранирования страницы заменяет одинокие суррогаты на \uFFFD (символ замены), чтобы вывод проходил round-trip через любой стандартный парсер. Для встраивания в исходный код JavaScript строке JSON нужен третий слой экранирования: JSON внутри строкового литерала JS должен экранировать сами обратные слеши. Режим вывода JS-страницы добавляет это двойное экранирование, а кнопка eval или JSON.parse показывает, что оба кодирования декодируются в одну строку. Контексты встраивания в HTML добавляют четвёртый слой: <, >, & требуют HTML-экранирования сущностей в окружающей странице, а значения атрибутов также требуют экранирования кавычек. JSON в HTML печально известен как опасный (ловушка </script>, описанная выше), и лучше избегать его в пользу безопасных приёмников, таких как присвоение textContent или JSON.stringify в блок <script type="application/json"> (затем читать через script.textContent, а не eval). JSON5 (популярное надмножество) добавляет одинарные кавычки, многострочные строки, ключи без кавычек, trailing-запятые, NaN/Infinity и однострочные комментарии //. Страница не генерирует вывод JSON5; если нужен round-trip, используйте специализированную библиотеку.

  • Строки JSON (RFC 8259) должны экранировать двойную кавычку в обратный слеш-кавычку, обратный слеш в двойной обратный слеш и 32 управляющих символа U+0000..U+001F (\b \f \n \r \t, остальные как \uXXXX). Всё выше U+001F допустимо как сырые байты UTF-8, включая CJK, эмодзи и буквы с диакритиками.
  • Два слоя «экранирования»: JSON-экранирование (синтаксическое, обязательное) делает строку валидным JSON; Unicode-экранирование (представительное) перезаписывает символы как \uXXXX и меняет только читаемость, но не валидность.
  • Необязательный '/': / в \/ допустим в JSON. Конвенция: экранировать при встраивании JSON в HTML <script>, чтобы последовательность закрывающего тега скрипта не закрывала окружающий тег.
  • CJK не экранируется в сыром UTF-8 JSON: пример '你好' — 6 сырых байтов. Режим Unicode-экранирования страницы перезаписывает его как \u4f60\u597d для использования в исходных файлах, что жертвует читаемостью ради совместимости.
  • Одинокие суррогаты: высокий суррогат (U+D800..U+DBFF) без низкого после него технически валиден по RFC 8259, но JSON.parse в строгом режиме или TypeScript отвергает его. Страница заменяет одинокие суррогаты на \uFFFD, чтобы вывод проходил round-trip через строгие парсеры.
  • JSON.parse строг: ведущие нули (01) — ошибка парсинга, NaN/Infinity — невалидные литералы, trailing-запятые не допускаются. JSON.stringify в V8 всегда генерирует минимально необходимые экранирования и оставляет прямой слеш / и U+2028/U+2029 нетронутыми для читаемости.
  • JSON в JS: для встраивания JSON-строки в строковый литерал JS удвойте обратные слеши. Режим вывода «JS string» страницы добавляет этот слой; eval над результатом даёт ту же строку, что и JSON.parse.
  • Надмножество JSON5: строки в одинарных кавычках, многострочные строки, ключи без кавычек, trailing-запятые, NaN/Infinity, однострочные комментарии //. Страница генерирует строгий JSON RFC 8259, а не JSON5.

Примеры

Строки с двойными кавычками и обратными слешами

Вход:  He said "Hello\World"
Выход: He said \"Hello\\World\"

Строки с переводами строк и табуляциями

Вход:  Line1\tIndent\nLine2
Выход: Line1\tIndent\nLine2

Строки с китайскими символами и двойными кавычками

Вход:  {"name": "Alice", "msg": "He said \"Hi\""}
Выход: {\"name\": \"Alice\", \"msg\": \"He said \\\"Hi\\\"\"}

Часто задаваемые вопросы

Что делает экранирование JSON-строки?

Оборачивает ввод в кавычки и заменяет каждый специальный символ на безопасную для JSON escape-последовательность: " → \", \ → \\, перевод строки → \n, табуляция → \t, управляющие символы → \u00NN. В результате получается валидный JSON-строковый литерал, который можно вставить в другой JSON-документ или редактор кода.

Зачем мне это нужно?

Типичные случаи: встраивание многострочного сообщения в JSON-конфиг, передача JSON-строки в качестве аргумента командной строки, размещение JSON внутри JSON (например, тело API-запроса, которое само является JSON-кодированной строкой), или санитизация пользовательского ввода перед логированием.

Это то же самое, что URL-кодирование?

Нет. JSON-экранирование использует \n, \", \u00XX. URL-кодирование — %20, %22, %0A. Разные синтаксические контексты, разные правила экранирования. Используйте то, что соответствует целевому формату.

Обработает ли режим разэкранирования любую JSON-последовательность?

Да — все стандартные escape-последовательности (\", \\, \/, \b, \f, \n, \r, \t, \uXXXX). Суррогатные пары для кодовых точек выше U+FFFF (\uD83D\uDE00 = 😀) собираются обратно в реальный эмодзи. Некорректные escape-последовательности дают ошибку, которую можно исправить.

В чём разница между экранированием строки и сериализацией объекта?

Экранирование превращает фрагмент текста в JSON-строку в кавычках. Сериализация (JSON.stringify) превращает JavaScript-объект в полноценный JSON-документ. Эта страница делает первое; для второго запишите объект как JSON в редакторе кода или используйте JSON-форматтер.

Всегда ли экранируются управляющие символы?

Да — этого требует JSON. Переводы строк, табуляции, NULL и другие управляющие символы ASCII (0x00–0x1F) должны быть экранированы, иначе строка не будет валидным JSON. Некоторые реализации также экранируют DEL (0x7F) и символы выше U+FFFF; страница строго следует RFC 8259.

Отправляются ли данные куда-либо?

Нет. Экранирование и разэкранирование выполняются в вашем браузере. Вставленный текст никуда не загружается.

Связанные инструменты

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.

Кодировщик/Декодировщик Base64

Онлайн-инструмент для кодирования и декодирования Base64 с поддержкой UTF-8 текста, кириллицы и изображений. Мгновенное кодирование без установки программ.

Кодировщик/Декодировщик URL

Бесплатный онлайн-кодировщик и декодировщик URL для параметров, текста Unicode и спецсимволов. Исправляйте проблемы с кодировкой ссылок прямо в браузере.

JSON в TypeScript

Бесплатный онлайн-конвертер JSON в интерфейсы TypeScript: автоматически генерирует определения типов с поддержкой вложенных объектов, массивов и union-типов.

Генератор JSON Schema

Бесплатный онлайн-генератор JSON Schema, создающий соответствующие стандартам определения схем из JSON-данных. Поддерживает вложенные объекты, вывод типов массивов, настройку обязательных полей для быстрой настройки валидации данных.

Кодировщик HTML-сущностей

Бесплатный онлайн-кодировщик HTML-сущностей: преобразует спецсимволы в сущности и обратно. Защищает от XSS-атак и обеспечивает безопасный вывод HTML.