如何转义 JSON 字符串
- 选择模式:转义、反转义、JSON 转字符串或解析字符串化 JSON。
- 输入或粘贴内容,结果会立即显示。转义时,可以选择是否在两侧加引号,以及是否将非 ASCII 字符写成
\uXXXX。 - 复制结果,或点击互换反向执行操作,检验能否完整还原。
JSON 转义字符一览
| 字符 | 转义后 |
|---|---|
双引号 " | \" |
反斜杠 \ | \\ |
| 换行符(LF) | \n |
| 回车符 | \r |
| 制表符 | \t |
| 退格符、换页符 | \b、\f |
| 其他控制字符 U+0000–U+001F | \u0000 … \u001f |
| 任意字符(可选) | \uXXXX,例如 é → \u00e9,😀 → \ud83d\ude00 |
斜杠 /(可选) | \/ |
在 JSON 中,单引号永远不需要转义,因为 JSON 字符串始终使用双引号。
字符串化的 JSON
字符串化的 JSON 是指存放在 JSON 字符串中的 JSON 文档,例如 API 字段 "payload": "{\"id\":7}",或保存在数据库字段、环境变量、日志行中的 JSON。JSON 转字符串可将文档生成这样的字符串;解析字符串化 JSON则能将其解包(即使被字符串化了两次也可以),并格式化结果。
- JavaScript:
JSON.stringify(text)用于转义,JSON.parse(literal)用于反转义。 - Python:
json.dumps(text)和json.loads(literal)。 - PHP:
json_encode($text)和json_decode($literal)。
常见问题
JSON 中哪些字符必须转义?
只有双引号、反斜杠以及 U+0000 到 U+001F 的控制字符(如换行符和制表符)。其他所有字符,包括 é、“中”这样的汉字以及 emoji 表情,都可以在 UTF-8 编码的 JSON 中原样出现。
为什么中文显示成了 \u4e2d\u6587 这样的编码?
有些程序会把每个非 ASCII 字符(包括中文)都写成 \uXXXX 转义形式。两种写法含义完全相同;使用“反转义”即可将转义序列还原为可读文本。
转义和字符串化有什么区别?
转义是将任意文本转换为 JSON 字符串字面量。字符串化则会先检查输入是否为有效的 JSON,将其压缩后再转义,因此结果是一个包含 JSON 文档的字符串。
可以对不带外层引号的字符串进行反转义吗?
可以。无论内容是否带有两侧的引号都可以直接粘贴;零散的未转义引号和真实的换行符也能被正确处理。