JSON 转义/ 转义 · 反转义
JSON 字符串转义与反转义,自动处理双引号、换行、制表符等特殊字符,调试 API 必备工具。
纯文本 → JSON 字符串
原始文本
0 字符
已转义字符串
0 字符
JSON 转义序列参考
\\反斜杠\"双引号\n换行\r回车\t制表符\f换页符\b退格\uXXXXUnicode 码点这个工具有帮到你吗?
代码示例
JavaScript
const raw = 'Hello "World"\nLine 2';
const escaped = JSON.stringify(raw).slice(1, -1);
// 'Hello \"World\"\\nLine 2'
const unescaped = JSON.parse('"' + escaped + '"');Python
import json
raw = 'Hello "World"\nLine 2'
escaped = json.dumps(raw)[1:-1]
original = json.loads('"' + escaped + '"')Go
raw := "Hello \"World\"\nLine 2" b, _ := json.Marshal(raw) // string(b) includes outer quotes
Shell (curl)
# Escape for curl:
curl -d '{"msg": "Hello\nWorld"}' ...
# Or use Python:
python3 -c "import json,sys; print(json.dumps(sys.stdin.read()))"常见问题
为什么 JSON 字符串需要转义?
JSON 规范(RFC 8259)要求字符串中的特殊字符必须使用反斜杠转义。最常见的是双引号(")必须写成 \",换行符必须写成 \n,反斜杠本身必须写成 \\。未转义的特殊字符会导致 JSON 解析失败。
哪些字符必须在 JSON 字符串中转义?
必须转义的字符:双引号("→\")、反斜杠(\→\\)、控制字符(U+0000 到 U+001F),包括换行(\n)、回车(\r)、制表符(\t)、退格(\b)、换页(\f)。其他 Unicode 字符不需要转义,但可以用 \uXXXX 格式表示。
JSON.stringify 和手动转义有什么区别?
JSON.stringify(str) 会在字符串两端加上双引号,并处理所有必要的转义,适合生成完整 JSON 值。手动转义只处理字符串内部的内容,不加引号,适合将文本嵌入已有的 JSON 结构中。本工具提供手动转义功能。
\uXXXX 是什么格式?
\uXXXX 是 JSON 的 Unicode 转义序列,XXXX 是 4 位十六进制的 Unicode 码点。例如 \u4e2d 是汉字「中」,\u0009 是制表符(Tab)。所有 Unicode 字符都可以用此格式表示,但通常只在需要确保 ASCII 兼容性时才使用。
在调试 API 时如何使用这个工具?
常见场景:1)将包含换行符的多行文本放入 JSON 字段前先转义;2)调试 curl 命令时,需要将 JSON body 中的引号和特殊字符转义后才能在 shell 中使用;3)将 SQL 查询字符串放入 JSON 请求体时处理单引号和换行。
JSON 转义和 HTML 转义有什么区别?
JSON 转义用反斜杠(\)处理字符串特殊字符,主要目标是符合 JSON 规范。HTML 转义用 HTML 实体(如 &、<、")处理 HTML 标记中的特殊字符。在某些场景下(如将 JSON 嵌入 HTML),两种转义都需要,顺序应该是先 JSON 转义再 HTML 转义。