JSON转义反转义工具

一段带引号和换行的文本要嵌进 JSON 字符串,本页帮你加上反斜杠;反过来也能把转义字面量还原成可读文本。

转义只会动反斜杠、双引号与不可见控制字符;中文与 emoji 默认保持原样,需要纯 ASCII 请自行套一层码位转换。

使用方法

JSON转义反转义工具只做一件事:在「可读文本」与「JSON 字符串字面量」之间来回转换,四步:

  1. 「模式」先选方向:转义(文本变字面量)或反转义(字面量变文本)。
  2. 在文本框里贴入内容,演示已预填一段带引号和三行的文本。
  3. 按 Ctrl / Cmd + Enter 执行(文本框里 Enter 留给换行,不触发)。
  4. 点「复制结果」拿走,再粘回你的代码或配置文件。

下方对照表列出 18 个常见字符的转义写法,前 12 行展开,余下 6 行点「加载更多」。

JSON转义反转义工具能解决什么

它解决「把一段文字塞进 JSON 字符串」这件小事,典型场景有三类:

  • 写配置:配置文件里要放多行文本,换行必须写成反斜杠加 n,手写容易漏。
  • 调试接口:日志里抓出一串转义字面量,想知道原文长什么样,粘进来一键还原。
  • 嵌脚本:把一段文本内联进页面脚本时,引号与小于号需要处理,本页一次转干净。

它不做三件事:不校验整段 JSON 是否合法(只处理字符串字面量)、不做 Base64、不做压缩。要校验整段 JSON 请用专门的格式化工具。

原理和变量

① 到底哪些字符必须转义:JSON 规定字符串里必须转义的有三小类——双引号、反斜杠,以及码位在 U+0000 到 U+001F 之间的 32 个控制字符(换行、回车、制表都属这一类)。

② 控制字符的两种写法:可以用简写 \n、\t,也可以写成全码位 \u000A、\u0009。两者等价,简写更短、更好读。

③ 中文为什么不转:JSON 允许字符串里直接出现非 ASCII 字符,标准里也没有强制转义。本页保持原样,避免把可读的一句话变成一串码位;确实需要纯 ASCII 时,用 codePointAt 转成码位即可。

④ 输入怎么变成输出:原文「他说:"你好"」共 7 个字符,含两个双引号;转义后变成「他说:\"你好\"」,长度 9,两个引号各多出一个反斜杠。原文「第一行…第二行」中间是真实换行,转义后换行变成两个字符 \n,总长度从 7 变成 8。

⑤ 边界与校验:输入为空直接提示;反转义模式下遇到不认识的反斜杠组合(如 \q)会原样保留并在结果里提示出现次数;\u 后面不是 4 位十六进制时不算码位,按普通文本处理。

⑥ 常见误用:一是把整段 JSON 当字符串再转义一次,得到双重转义;二是以为正斜杠必须转义——JSON 允许不转,转义只是习惯;三是把 emoji 按 1 个字符数,其实它在 UTF-16 里占 2 个码元,码位是 U+1F600,转成 \uD83D\uDE00 需要两个码位。

完整示例

演示输入(预填内容):

  • 「他说:"你好"」——原文 7 个字符,转义后「他说:\"你好\"」共 9 个字符
  • 「第一行」换行「第二行」——原文 7 个字符,转义后换行变成 \n,共 8 个字符
  • 「路径 C:\tmp\a.txt」——原文 15 个字符,两个反斜杠各翻倍,转义后 17 个字符

反向执行时,把「他说:\"你好\"」贴回去选反转义,就会还原成带引号的原文。中文与 emoji 在两个方向上都保持原样:「中用」的转义结果仍是「中用」,不会变成 \u4E2D\u6587;😀 若要转成码位,则是 \uD83D\uDE00 这样的代理对。

输入范围与对照表

下表列出 18 个常见字符的转义写法,前 12 行直接展开,余下 6 行点「加载更多」:

18 个转义字符对照(前 12 行展开,余下 6 行点「加载更多」)
字符简写形式全码位形式说明
双引号 "\"\u0022JSON 字符串里必须转义
反斜杠 \\\\u005C本身是转义符,必须成对写
换行 LF\n\u000A控制字符 U+000A
回车 CR\r\u000D控制字符 U+000D
制表 TAB\t\u0009控制字符 U+0009
退格 BS\b\u0008控制字符 U+0008
换页 FF\f\u000C控制字符 U+000C
正斜杠 /\/\u002FJSON 允许不转义,源文件里常见转义
单引号 '(不转)\u0027JSON 无单引号字符串,一般不必转
反引号 `(不转)\u0060模板字符串定界符,嵌入 HTML 时建议转
竖线 |(不转)\u007C某些模板引擎会误解析
小于号 <(不转)\u003C嵌进内联脚本时建议转

输入范围:单次输入建议不超过 20 万个字符;模式只有转义与反转义两档。必须转义的只有双引号、反斜杠与 32 个控制字符,其余字符可转可不转,本页默认不动。

结果边界和舍入

三条边界:

  • 只处理字符串字面量,不校验整段 JSON:输入不必是合法 JSON,本页只按字符逐个转义,不做语法解析。
  • 不认识的反斜杠组合原样保留:反转义时遇到 \q 这类非法组合会照抄,并在结果里提示出现次数,而不是丢掉字符或报错退出。
  • 只解一层:输入是双重转义(例如 \\n)时,反转义一次得到 \n 两个字符,再执行一次才得到真正的换行。本页不递归。

常见问题

哪些字符必须转义?

双引号、反斜杠,以及码位 U+0000 到 U+001F 的 32 个控制字符。其余字符按标准都可以直接写。

中文会被转成 \uXXXX 吗?

默认不会。JSON 允许直接写非 ASCII,本页保持中文原样;需要纯 ASCII 请自行转码位。

转义与反转义能来回切换吗?

能。把结果复制回输入框,切到另一个模式再执行一次即可还原,中间不会丢字符。

为什么转义后长度变长了?

每个被转义的字符都会多出一个反斜杠。换行也算一个字符,但它原本是不可见的,转成两个可见字符后长度自然增加。

emoji 为什么算两个码元?

emoji 😀 的码位是 U+1F600,超出 UTF-16 单码元范围,标准写法是代理对 \uD83D\uDE00,占两个码元。

遇到 \q 这种写法会怎样?

原样保留,并在结果下方提示出现过几次无法识别的组合,不会丢字符。

能校验整段 JSON 是否合法吗?

不能。本页只做字符串字面量的转义与反转义,整段 JSON 校验请用格式化与校验工具。

内容会上传吗?

不会。转换在浏览器本地完成,输入内容不会离开你的设备。

相关工具