ToolAct工具行动

JSON 转义工具

快速对 JSON 字符串进行转义和反转义处理

输入内容
字符数: 0
字节数: 0
转换结果
字符数: 0
字节数: 0

选择转换方式

什么是 JSON 转义?

JSON 转义是将 JSON 字符串中的特殊字符转换为转义序列的过程。常见的转义字符包括:双引号转为 \",反斜杠转为 \\,换行符转为 \n,制表符转为 \t 等。 使用场景:当需要在 JSON 字符串中嵌入另一个 JSON、在代码中定义 JSON 字符串常量、或在数据库中存储 JSON 数据时,都需要进行转义处理。 实际使用时还要区分“字符串转义”和“完整 JSON 序列化”:前者只处理文本中的特殊字符,后者会同时考虑对象结构、数组、数字、布尔值和空值,混用容易造成多转义或解析失败。

使用方法

使用方法

  1. 在输入框中粘贴或输入文本
  2. 点击「JSON 转义」对特殊字符进行转义(如 " 转为 \")
  3. 点击「JSON 反转义」恢复转义后的字符(如 \" 转为 ")
  4. 结果会自动显示在下方,可直接复制

转义注意事项

  • 仅针对目标上下文进行转义;JSON 字符串、JavaScript 源码、URL 和 HTML 属性各有不同的转义规则。
  • 反转义后,请先检查换行符、反斜杠和引号,再粘贴到配置文件中。

使用场景

将文本安全嵌入 JSON 字符串当错误信息、SQL 片段、正则表达式、Windows 路径或多行提示词需要成为 JSON 字符串值时,转义模式会把引号、反斜杠、换行和控制字符转换为 JSON 安全的序列。字符数和字节数的统计能帮助你在粘贴到 API 请求前察觉载荷膨胀。所有处理都在浏览器端通过标准 JSON.stringify 完成,源文本不会离开页面。
从日志中还原转义载荷API 网关和日志系统经常把 JSON 字符串值中的换行和引号显示为转义序列。反转义模式将这些序列恢复为可读文本,方便检查堆栈信息、序列化的提示词、Webhook 请求体和复制的配置值。反转义使用浏览器的 JSON.parse 路径,还原后的字符仅出现在输出框中,直到你手动复制。
在本地对棘手文本做往返测试由于工具依赖浏览器的 JSON 解析器和序列化器,它遵循标准 JSON 字符串转义规则,而非自定义方言。这使它成为检查某个值能否安全放入 JSON 文档的本地沙盒。输入仅在浏览器中处理,不做任何 API 调用,因此包含堆栈信息、提示词或未发布文案的草稿不会经过网络传输。
为 JSON 嵌套字段转义值当 Webhook 载荷需要在字符串字段中携带序列化的 JSON 对象时,先对内部 JSON 执行转义模式,让外层解析器仍将其视为一个字符串。在接收端配合反转义验证往返完整性后再正式上线。由于转义是本地 stringify 操作,你可以在不暴露契约的前提下试验嵌套引号或内含 \u 序列等边界情况。
发现复制文本中隐藏的控制字符从终端、PDF 或聊天应用粘贴的文本常包含 NUL、BEL 或多余的 CR 字符,这些字符会悄悄破坏下游的 JSON 解析器。转义后它们会显示为 \u0000 形式的序列,便于审查和清除,而不是让整个文档变成无效内容。扫描完全基于页面内的 JSON 编码器,包含私密片段的粘贴文本在浏览器标签页内完成处理和改写,不会外泄。

技术原理

JSON(RFC 8259)是严格的文本语法;每个字符串字面量必须用 ASCII 双引号(U+0022)包裹,任何可能破坏该语法的字符都必须用反斜杠转义。强制转义的字符包括:双引号转义为 \",反斜杠转义为 \\,以及 U+0000 到 U+001F 的 32 个控制字符(包括 \b U+0008、\f U+000C、\n U+000A、\r U+000D、\t U+0009)。U+001F 以上的字符可以作为原始 UTF-8 字节序列出现在字符串中,包括 CJK 表意文字、表情符号、重音字母和其他补充字符。正斜杠可以转义也可以不转义(\/),但惯例是在 JSON 嵌入 HTML <script> 标签时进行转义,以避免 </script> 序列过早关闭外层 script 元素。 实际使用中有两层转义。JSON 转义(语法替换)是 RFC 8259 唯一要求的:它确保字符串是合法的 JSON。Unicode 转义(将每个字符改写为 \uXXXX 或 \u{XXXXX})是表示形式的选择,而非语法要求——它只改变字节在文件中的外观,不改变解码结果。CJK 文本在 JSON 中作为原始 UTF-8 字节是合法的;页面的 Unicode 转义模式将其改写为 \uXXXX,适用于将字符串传入 Java 或 JavaScript 源文件的场景(否则解析器需处理多字节 UTF-8),但会增加每个字符 4-6 字节并降低可读性。 转义规则存在边界情况。JSON.parse 对前导零严格检查(01 是解析错误,尽管 JavaScript 会将其视为八进制 1);V8 的 JSON.stringify 始终产生最小必要转义(控制字符尽可能用 \b/\n/\r/\t/\f,否则用 \uXXXX,斜杠 /、U+2028、U+2029 保留原样以提高可读性)。孤立代理项(高代理项后没有低代理项)在 RFC 8259 下技术上是合法 JSON,但 JSON.parse 的严格模式或 TypeScript 会将其拒绝为 InvalidString;页面的转义模式将孤立代理项替换为 \uFFFD(替换字符),确保输出可被任何标准解析器往返处理。 用于 JavaScript 源码嵌入时,JSON 字符串需要第三层转义:嵌入 JS 字符串字面量中的 JSON 必须对反斜杠本身进行转义。页面的「JS 字符串」输出模式添加了这一双重转义,eval 或 JSON.parse 按钮证明两种编码解码后结果相同。嵌入 HTML 的上下文增加第四层:<、>、& 需要在周围页面中进行 HTML 实体转义,属性值还需要引号转义。JSON 嵌入 HTML 是众所周知的危险做法(上述 </script> 陷阱),最好使用 textContent 赋值或将 JSON.stringify 放入 <script type="application/json"> 块(通过 script.textContent 读取,永远不要用 eval)等安全方式替代。 JSON5(流行的超集)添加了单引号字符串、多行字符串、无引号键名、尾逗号、NaN/Infinity 和单行 // 注释。本页面不产生 JSON5 输出;如需往返处理,请使用专用库。

  • JSON 字符串(RFC 8259)必须将双引号转义为 \"、反斜杠转义为 \\,并将 32 个控制字符 U+0000..U+001F(\b \f \n \r \t 及其余用 \uXXXX)转义。U+001F 以上的所有字符作为原始 UTF-8 均合法,包括 CJK、表情符号和重音字母。
  • 实际存在两层「转义」:JSON 转义(语法性,必需)使字符串成为合法 JSON;Unicode 转义(表示性)将字符改写为 \uXXXX,只改变可读性,不影响合法性。
  • 可选的 / 转义:JSON 允许将 / 转义为 \/。惯例:在 HTML <script> 中嵌入 JSON 时进行转义,避免 </script> 关闭外层标签。
  • CJK 在原始 UTF-8 JSON 中无需转义:示例「你好」为 6 个原始字节。页面的 Unicode 转义模式将其改写为 \u4f60\u597d,用于源文件场景,牺牲可读性换取兼容性。
  • 孤立代理项:高代理项(U+D800..U+DBFF)后没有低代理项在 RFC 8259 下技术上是合法 JSON,但 JSON.parse 严格模式或 TypeScript 会拒绝它。页面将孤立代理项替换为 \uFFFD,确保输出可通过严格解析器往返处理。
  • JSON.parse 严格检查:前导零(01)是解析错误,NaN/Infinity 不是合法字面量,不允许尾逗号。V8 的 JSON.stringify 始终产生最小必要转义,保留斜杠 / 和 U+2028/U+2029 原样以提高可读性。
  • JSON 嵌入 JS:将 JSON 字符串放入 JS 字符串字面量时需要对反斜杠进行双重转义。页面的「JS 字符串」输出添加了这层转义;eval 结果与 JSON.parse 解码结果相同。
  • JSON5 超集:单引号字符串、多行字符串、无引号键名、尾逗号、NaN/Infinity、单行 // 注释。本页面产生严格的 RFC 8259 JSON,而非 JSON5。

示例

包含双引号和反斜杠的字符串

输入:He said "Hello\World"
输出:He said \"Hello\\World\"

包含换行和制表符的字符串

输入:Line1\tIndent\nLine2
输出:Line1\tIndent\nLine2

包含中文和双引号的字符串

输入:{"name": "Alice", "msg": "He said \"Hi\""}
输出:{\"name\": \"Alice\", \"msg\": \"He said \\\"Hi\\\"\"}

常见问题

JSON 字符串转义具体做了什么?

它会给输入加上引号,并把每个特殊字符替换为 JSON 安全的转义序列:" → \"、\ → \\、换行符 → \n、制表符 → \t、控制字符 → \u00NN。结果是一个合法的 JSON 字符串字面量,可直接粘贴到另一份 JSON 文档或代码编辑器中。

什么时候需要这个功能?

常见场景包括:在 JSON 配置文件里嵌入多行文本;把 JSON 字符串作为命令行参数传递;在 JSON 中嵌套 JSON(例如 API 请求体本身就是一段 JSON 编码字符串);以及在记录用户输入到日志前进行清洗。

JSON 转义和 URL 编码一样吗?

不一样。JSON 转义使用 \n、\"、\u00XX;URL 编码使用 %20、%22、%0A。两者面向不同的语法上下文,规则也不同。请根据目标格式选用对应方式。

反转义模式能处理所有 JSON 转义吗?

可以——支持所有标准转义(\"、\\、\/、\b、\f、\n、\r、\t、\uXXXX)。U+FFFF 以上码点的代理对(如 \uD83D\uDE00 = 😀)会被重新组合为对应表情。格式错误的转义序列会报错,便于你定位修正。

字符串转义和对象序列化有什么区别?

转义是把一段文本变成带引号的 JSON 字符串。序列化(JSON.stringify)是把一个 JavaScript 对象变成完整的 JSON 文档。本页负责前者;后者请在代码编辑器里直接写 JSON,或使用 JSON 格式化工具。

控制字符一定会被转义吗?

是的——这是 JSON 的强制要求。换行符、制表符、NULL 以及其他 ASCII 控制字符(0x00-0x1F)都必须转义,否则结果不是合法 JSON。部分实现还会转义 DEL(0x7F)以及 U+FFFF 以上的字符;本页严格遵循 RFC 8259。

数据会被发送到任何地方吗?

不会。转义和反转义都在你的浏览器内执行,粘贴的文本不会上传。