当 JSON 字符串里出现双引号、反斜杠或换行符时,就需要用转义字符来表示。转义的目的是让这些「有特殊含义的字符」能作为普通文本出现在字符串里,避免破坏 JSON 的结构。本文把 JSON 转义规则一次讲清。
在 JSON 字符串值中,以下字符必须转义:
| 字符 | 转义写法 | 说明 |
|---|---|---|
双引号 " |
\" |
字符串的边界符号,必须转义 |
反斜杠 \ |
\\ |
转义符本身,必须转义 |
| 换行符 | \n |
控制字符 |
| 制表符 | \t |
控制字符 |
| 回车符 | \r |
控制字符 |
| 退格符 | \b |
控制字符 |
| 换页符 | \f |
控制字符 |
假设要表示这样一句话:He said "Hello",直接写会出错:
{ "msg": "He said "Hello"" } // ❌ 双引号提前闭合,非法
{ "msg": "He said \"Hello\"" } // ✅ 正确转义
再看一个含路径的例子(Windows 路径常遇到):
{ "path": "C:\Users\Tom" } // ❌ \U 是非法转义
{ "path": "C:\\Users\\Tom" } // ✅ 反斜杠转义
JSON 还支持用 \uXXXX 表示任意 Unicode 字符,常用于表示非 ASCII 字符或特殊符号:
{ "emoji": "\u2764\uFE0F" } // 表示 ❤️
{ "cn": "\u4E2D\u6587" } // 表示 "中文"
不过现代 JSON 解析器都原生支持 UTF-8,中文和 emoji 通常不需要手动转义,直接写原文即可。
大多数情况下,转义由 JSON.stringify 自动完成,你几乎不用手动写。需要手动处理的主要场景:
const s = '{"a":"b"}',引号层级容易混淆。转义写错是 JSON 报错的高发原因。如果你不确定一段 JSON 的转义对不对,最省事的办法是用 JSON 在线校验工具 粘贴进去——它会在解析时立即指出错误位置。