将 JSON 转义为字符串字面量(并解码双重编码的 JSON)
对 JSON 进行 stringify 时,会用双引号包裹并转义内部引号与特殊字符,得到可安全嵌入到其他位置的 JSON 字符串字 面量。
「转义成字面量」是什么意思
把一个 JSON 字符串传给 JSON.stringify,会用双引号把它包起来,并对内部的引号与反斜杠做转义,得到一个可以安全嵌入的单个字符串值。
什么时候需要它
把 JSON 嵌入到另一份 JSON 的字段里、存进字符串类型的数据库列、或者作为环境变量或 URL 参数传递时,都需要先转义成字符串字面量。
转义规则
双引号用反斜杠转义,反斜杠加倍,换行、tab 等控制字符变成两字符的转义序列。结果里不会出现原始的换行。
解码被双重编码的 JSON
如果收到一个以转义引号开头、内部包含转义引号序列的字符串,说明它被 stringify 过。先 parse 一次还原内部 JSON 字符串,再 parse 一次拿到真正的值。
双重编码常出现在哪里
把上下文对象序列化的日志框架、把 JSON body 包在 'body' 字段里的 webhook、用「JSON 字符串信封」传输的消息队列,以及类型为 text 或 varchar 的数据库列,都是最常见的来源。看到开头一个引号加偶数个反斜杠就是信号。
在日志里处理嵌入的 JSON
结构化日志通常把对象 stringify 成一行。要查看时,把那一行从日志查看器里复制出来,用 JSON.parse 解掉转义,再把还原的 JSON 格式化。不要去 grep 多行的 JSON 对象 —— stringify 成一行的 JSON 更容易搜索。
完成往返的工具
浏览器控制台:JSON.parse(line) 取回内部 JSON,再 JSON.stringify(...,null,2) 美化。Node 命令行:'node -e "console.log(JSON.parse(process.argv[1]))" "<line>"' 一次完成。本站的 JSON Stringify 工具能一键处理任意深度的嵌套。
JSON 修复指南
主题中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具体指南
- 如何解码 Base64 字符串(以及 JWT Payload)
- URL 编码:百分号编码查询参数与路径
- 将 YAML 转为 JSON(并避免缩进错误)
- 将 JSON 转为 CSV:把对象数组扁平化
- 将 JSON 转为 XML:根元素、属性与数组
- 修复 JSON 中的尾随逗号
- 修复 JSON 中 的单引号
- 修复 JSON 中未加引号的键
- 修复 LLM 输出的 JSON
- 修复 JSON 解析错误:Expected Property Name
- JSON 与 JavaScript 对象字面量的区别
- 在发起 API 请求前校验 JSON
- JSON 格式化器 vs JSON 修复工具
- 修复 JSON Unexpected Token 错误
- JSON 转 JavaScript 对象转换器