JSON 字符串转义工具
在浏览器中将任意文本或 JSON 转义为合法的 JSON 字符串字面量。处理引号、换行、制表符、Unicode 与斜杠。100% 私密,无需上传,即时完成。
选项
什么是 JSON 转义?
JSON 转义是把原始字符串转换为可安全嵌入 JSON 文档的形式的过程。JSON 有一小组带结构含义的字符——双引号界定字符串、反斜杠开启转义序列——以及不允许字面出现在字符串内的控制字符(换行、制表符)。转义把它们各自替换为安全的双字符序列(\"、\\、\n、\t)或 \uXXXX Unicode 转义,使结果字符串在任何地方都能干净解析。
你需要 JSON 转义的频率可能比你以为的高。最常见的情形是 JSON-in-JSON:webhook 信封、消息队列负载或审计日志把请求体作为字符串字段存储,这意味着内层 JSON 必须先转义才能赋值。另一种是手写 JSON 配置:把多行 shell 脚本、SQL 查询或代码片段粘贴进单个 JSON 值,需要把每个换行变成 \n。第三种是在 curl 等工具中手动构造 REST 请求体,带引号的 JSON 字符串必须转义才能在 shell 和 HTTP 层中存活。
相比朴素的转义器,本工具有三个差异点。第一,它基于精确的 JSON 规范规则——与合规序列化器相同的逻辑——所以输出可无损往返:在这里转义,在任何地方解析,逐字节取回。第二,可选的 ASCII 安全模式把每个非 ASCII 字符(包括按代理对处理的星平面 emoji)转为 \uXXXX,供不能可靠处理 UTF-8 的系统使用。第三,一切都 100% 在你的浏览器中运行——你常含 PII、令牌和密钥的负载绝不接触服务器。要反向操作,请使用我们的 JSON 反转义 工具;要先校验 JSON,请看 JSON 格式化。
// Input text
She said "hi"
then left.
// Escaped (Wrap on) — identical to JSON.stringify(input)
"She said \"hi\"\nthen left."
// Escaped (Wrap off) — just the body, for hand-built JSON
She said \"hi\"\nthen left.
// JSON-in-JSON
{"a":1} -> "{\"a\":1}" -> {"payload": "{\"a\":1}"} 核心功能
符合规范的转义
基于 JSON 规范的精确规则构建——引号、反斜杠、换行、制表符、回车和控制字符的转义与合规序列化器完全一致。输出可在任何 JSON 解析器中无损往返。
带引号或不带引号的输出
「包裹双引号」开启时给出完整的 JSON 字符串字面量(与 JSON.stringify 相同);关闭时只给出转义后的内容,适合你在手写 JSON 文档中自己打引号的场景。
ASCII 安全的 \uXXXX 模式
可选地把每个 U+007F 以上的字符转为 Unicode 转义,emoji 等星平面字符按正确的代理对处理。输出为纯 ASCII,对错误处理 UTF-8 的老旧管道也安全。
HTML 安全的斜杠转义
「转义正斜杠」把 / 变成 \/,化解 </script> 序列,使 JSON 能内联进 HTML <script> 标签而不会提前关闭它。默认关闭,其它一切场景输出更干净。
用「交换」验证往返
一个「交换方向」按钮就地翻转为反转义模式并把输出回填为输入,于是你能在交付前确认 转义 → 反转义 逐字节返回你的原始文本。
100% 基于浏览器的隐私
所有转义都在客户端运行——你的负载(PII、令牌、密钥)绝不离开浏览器。在 Network 面板验证:粘贴时零请求。这是在线工具中转义敏感数据唯一安全的方式。
示例
把 JSON 嵌入 JSON(JSON-in-JSON)
{"event":"signup","user":{"id":42,"name":"Alice"}} 转义这个对象,使其能作为字符串值存放在另一个 JSON 文档内——例如 webhook 负载字段或 Kafka 消息信封。开启「包裹引号」后,输出即可直接粘贴到冒号之后。
把多行代码片段放进配置字段
function greet(name) {
return `Hello, ${name}!`;
} 把一个多行 JS 函数转成单行 JSON 字符串。换行变成 \n,反引号模板保持不变——粘贴进 JSON 配置值而不会破坏文件。
含引号和制表符的文本
She said "hello" then left.
双引号被转义为 \",制表符变成 \t,于是这个字符串可安全放入任何 JSON 解析器、日志行或 REST 请求体。
面向老旧系统的纯 ASCII 输出
Price: 9.99€ — café société
开启「转义非 ASCII」可把 € 和带重音的字母转为 \uXXXX。结果是纯 ASCII,对在传输中破坏 UTF-8 的系统也安全。
如何使用
- 1
粘贴你的文本或 JSON
在输入框中输入或粘贴任何内容——JSON 对象、代码片段、日志行或纯文本。转义结果即时出现。点击「加载示例」试用 JSON-in-JSON 负载或多行函数等样例。
- 2
选择转义选项
保持「包裹双引号」开启可得到完整的 JSON 字符串字面量(与 JSON.stringify 相同),关闭则只得到转义后的内容。需要纯 ASCII 的 \uXXXX 输出时切换「转义非 ASCII」,把 JSON 内联进 HTML <script> 标签时切换「转义正斜杠」。
- 3
复制转义后的字符串
点击「复制」抓取结果,即可粘贴进 JSON 文档、REST 请求体或配置文件。点击「交换方向」翻转为反转义模式以验证无损往返。
常见转义陷阱
双重转义(转义已转义的文本)
转义两次会把 \n 变成 \\n、把 \" 变成 \\\",于是消费方看到的是字面的反斜杠-n 而不是换行。这通常发生在文本已在上游被 JSON 转义过时。先反转义(交换方向)检查,然后只转义一次。
Input already escaped: line1\nline2 Escaped again -> line1\\nline2 (literal backslash-n)
Raw input: line1 line2 Escaped once -> line1\nline2 (real newline encoded)
忘记外层引号
「包裹」关闭时你只得到转义后的内容,而非完整的 JSON 字符串。把它直接粘贴到期望值的位置会产生无效 JSON,因为缺少引号。要么保持「包裹」开启,要么确保你自己打引号。
{"msg": hello \"world\"}
// Missing quotes around the value -> invalid JSON {"msg": "hello \"world\""}
// Wrap on supplies the quotes -> valid JSON 不必要地过度转义非 ASCII
当消费方本能正常处理 UTF-8 时还开启「转义非 ASCII」,只会让输出膨胀、损害可读性——café 无缘无故变成 caf\u00e9。除非某个特定的老旧系统需要纯 ASCII,否则请关闭该选项。
café -> caf\u00e9 (no downstream need; just noise)
café -> café (valid JSON, readable, smaller)
常见用例
- JSON-in-JSON Webhook 负载
- 转义请求体,使其能作为字符串字段存进 webhook 信封、Kafka 消息或审计日志。保持「包裹」开启,输出即可赋给外层文档的某个键。
- 配置中的多行片段
- 把多行 shell 脚本、SQL 查询或代码片段变成单个 JSON 字符串值。每个换行变成 \n,JSON 配置文件在单行内保持有效。
- 手写的 REST 请求体
- 在把 JSON 字符串放进 curl --data 参数或 HTTP 客户端前先转义,使引号和换行能在 shell 与传输链路中存活而不破坏请求。
- 日志安全的字符串编码
- 在把用户提供的内容写入结构化日志行前先转义,防止注入的引号或换行破坏日志格式或下游 JSON 日志解析器。
- 纯 ASCII 的老旧集成
- 为 SOAP 网关、邮件头或在传输中破坏 UTF-8 的旧系统生成纯 ASCII 的 \uXXXX 输出,同时仍可被任何现代 JSON 解析器完全解码。
- 把 JSON 内联进 HTML
- 转义正斜杠,使 JSON 数据块能直接嵌入服务端渲染页面的 <script> 标签,而不会因数据内的 </script> 提前关闭标签。
技术细节
- 转义算法
- 本工具用 JSON 规范的字符串规则序列化你的输入:U+0022 (") → \",U+005C (\) → \\,U+0008 → \b,U+000C → \f,U+000A → \n,U+000D → \r,U+0009 → \t,任何其它 U+0020 以下字符 → \u00XX。开启「包裹」时包含外层双引号;关闭时去掉它们。这与合规序列化器的输出完全一致,保证无损往返。
- Unicode 与代理对
- 默认情况下,U+007F 以上的字符以字面 UTF-8 输出,这是 JSON 允许的。开启「转义非 ASCII」后,每个这样的字符都用其 UTF-16 码元转为 \uXXXX;基本多文种平面之外的字符(emoji、罕见文字)编码为两个 \uXXXX 转义的代理对——例如 😀(U+1F600)变成 \ud83d\ude00,与 JSON 序列化器生成的表示相同。
- 正斜杠与 HTML 上下文
- JSON 不要求转义 /,所以默认保留。启用「转义正斜杠」后,每个 / 变成 \/。这样做唯一的实际理由是 HTML 嵌入:在 <script> 标签内,字面子串 </script> 无论 JSON 上下文如何都会关闭标签,因此把斜杠转义为 <\/script> 可在保持规范有效的同时保护内联的 JSON 完整。
最佳实践
- 需要完整字面量时保持「包裹」开启
- 当你需要在代码中赋值或粘贴到 JSON 冒号之后的值时,保持「包裹双引号」开启——输出是与 JSON.stringify 相同的完整、可解析的 JSON 字符串。只有当你自己手打外层引号时才关闭它。
- 非必要不开启 Unicode 转义
- 原始 UTF-8 是合法 JSON 且可读性更好。只在某个错误处理 UTF-8 的特定下游系统(老旧 SOAP、某些日志管道、纯 ASCII 源文件)才启用「转义非 ASCII」。默认转义一切只会让输出更杂乱。
- 只为 HTML 嵌入转义斜杠
- 正斜杠转义只在一处重要:内联进 HTML <script> 标签的 JSON。在那之外它只增加杂乱而无益处,所以对 REST 请求体、配置文件和消息负载请关闭它。
- 用「交换」验证往返
- 在把转义数据送入管道前,点击「交换方向」对其反转义,确认取回原始文本。这能捕捉意外的双重转义——本应是 \n 处出现 \\n 的常见根源。随时可用我们的 JSON 反转义 工具反向操作。
常见问题
这个 JSON 转义工具有什么用?
JSON 转义和 JSON stringify 有什么区别?
我的数据会被上传到任何地方吗?
什么时候需要 \uXXXX(转义非 ASCII)选项?
如何把一个 JSON 对象嵌入另一个 JSON 字符串(JSON-in-JSON)?
「转义正斜杠(\/)」选项有什么用?
它能正确处理换行、制表符和控制字符吗?
相关工具
查看所有工具 →Base64 解码与编码工具
编码和格式化
免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。
Base64 转图片转换工具
编码和格式化
在浏览器中把 Base64 字符串或 data URI 解码还原为图片。预览、读取尺寸与 MIME,再下载为 PNG、JPG、GIF、SVG。无需上传。
CSV 转 JSON 转换器
编码和格式化
在浏览器中将 CSV 转换为 JSON。支持 RFC 4180、类型推断、表头行、大整数安全。100% 隐私,无需上传。
HTML 转 Markdown 转换器
编码和格式化
在浏览器中将 HTML 转换为干净的 Markdown——支持 GFM 表格、任务列表和链接。可选 ATX/Setext 标题及内联或引用链接。非常适合迁移网页内容或喂给 LLM。100% 私密,无需上传。
图片转 Base64 转换工具
编码和格式化
在浏览器中将图片转换为 Base64 data URI——支持 PNG、JPG、GIF、WebP、SVG、ICO。一键复制 HTML、CSS、Markdown 和 JSON 输出。100% 私密,无需上传。
JSON Diff 对比
编码和格式化
在浏览器中即时对比两份 JSON。Side-by-Side 高亮 + RFC 6902 JSON Patch 输出,一键忽略 timestamps、IDs 等噪音字段。100% 隐私保护,零上传。