Как в JSON экранируются специальные символы?
- JSON — текстовый формат обмена данными, построенный на основе JavaScript
- Специальные символы экранируются с помощью обратного слеша (
\)
- Экранируются следующие символы:
" (кавычка), \, / (необязательно), \b, \f, \n, \r, \t
- Символы Unicode, находящиеся за пределами ASCII, записываются в формате
\uXXXX
- Экранирование позволяет сохранять корректность парсинга JSON
- Оно обеспечивает правильную передачу строк, содержащих управляющие символы
- Для сериализации и десериализации применяется стандартный синтаксис JSON
Благодаря этому специальные символы внутри строк не изменяют структуру JSON и корректно интерпретируются системой, которая читает данные.
Развёрнутый ответ
Краткий ответ
В JSON специальные символы экранируются обратным слешем (\). Это необходимо для сохранения корректного формата и предотвращения ошибок парсинга. Кавычки, обратный слеш и управляющие символы, включая перевод строки и табуляцию, должны иметь экранированное представление при сериализации и передаче данных.
Основные положения
- В JSON-строках экранированию подлежат следующие символы:
- Кавычка (
") — чтобы она не завершила строку преждевременно
- Обратный слеш (
\) — для исключения неоднозначного толкования
- Управляющие символы: перевод строки (
\n), возврат каретки (\r), табуляция (\t), backspace (\b) и form feed (\f)
- Unicode-символы за пределами допустимого диапазона, а также управляющие символы, можно представить как
\uXXXX — шестнадцатеричный код обеспечивает универсальную и безопасную передачу данных
- Экранирование выполняется при сериализации: современные языки, например
JSON.stringify в JavaScript, а также Python и Java, имеют встроенную поддержку корректного экранирования, что снижает вероятность ошибок
Практическое применение
При использовании API и передаче JSON данные со специальными символами, например пользовательский ввод с кавычками, обычно экранируются автоматически. Это предотвращает ошибки на клиентской и серверной стороне, обеспечивает корректный парсинг и защищает от инъекций через строки. Например, встроенные JSON-парсеры в React 18 и Node.js учитывают эти особенности при сериализации и десериализации.