常见问题
关于 JSON 格式化、修复、校验和数据安全的常见问题。
常见问题
- 可以在线格式化无效的 JSON 吗?
- 可以。把破损的 JSON 粘贴进来,点击 Repair & Format。工具会先尝试修复单引号、尾随逗号、JSON 键缺少引号、注释和 Python 风格的值,然后再格式化输出。
- 怎么格式化破损的 JSON?
- 从能安全粘贴的最小片段开始:先修复语法,再用严格的 JSON 解析器校验结果。如果数据里有尾随逗号,工具会先把最后那个逗号去掉,再把合法结果格式化输出。
- 「Unexpected token」是什么意思?
- 意思是解析器在当前位置遇到了严格 JSON 语法里不该出现的字符。常见的元凶是单引号、斜杠、尾随逗号、或大写的
True—— 这些通常说明文本是从 JavaScript、Python 或 AI 回复里拷来的「近似 JSON」。 - 可以把 JSON 转成 JavaScript 对象吗?
- 可以。一旦输入是合法 JSON,在 JavaScript 里调用
JSON.parse(jsonText)即可。如果文本本身是 JavaScript 对象字面量,先把它修复成严格 JSON 再解析。 - 我的数据安全吗?
- 安全。工具完全在你的浏览器中用 JavaScript 运行,不会把数据上传到任何服务器。
- Repair 和 Validate 有什么区别?
- Repair 容忍常见错误,尽量产出合法 JSON;Validate 用严格解析器,报告错误的精确行列。
完整使用指南
多数 JSON 格式化工具一遇到解析错误就停下来。这个工具是为「格式化之前的一步」设计的:它把近似 JSON 转成严格 JSON,然后再美化输出,让你能审视结构。所以它适合「怎么格式化破损 JSON」这类问题,而不只是「怎么美化合法 JSON」。
从能安全粘贴的最小破损 JSON 开始。文本来自 JavaScript 对象字面量、Python 片段、Markdown 回复、手改过的配置或类 JSON 日志时,点击 Repair & Format。修复阶段会把常见语法错误归一化成合法 JSON,再以 可预测的缩进打印,方便审阅嵌套数组和对象。
修复完成后再点 Validate。校验走严格解析,应该是把输出复制到 API 客户端、应用配置、数据库迁移、测试样例或命令行示例之前的最后一关。校验失败时看清行列、检查高亮的字符,并对比原文和修复后的版本。修复负责语法层面的清理,而不负责判断值在业务语义上是否正确。
JSON 合法之后再用 Minify。压缩后的 JSON 适合放进环境变量、查询参数、紧凑日志和文档里的小示例;做代码审查、调试或 API 测试时,格式化输出通常更安全,因为每个键、数组项和嵌套值都在可预测的行上。
JSON 错误词典
- 尾随逗号
- 在
}或]之前的最后一个逗号被很多 JavaScript 工具接受,但 JSON 解析器会拒绝。去掉最后一个属性或数组项后的多余逗号即可。 - JSON 键缺少引号
- 像
name和active这样的键必须用双引号包起来。把{ name: "Ada" }改成{ "name": "Ada" }。 - 单引号
- JSON 字符串只能用双引号。把
'Ada'改成"Ada",同时小心字符串内部的撇号。 - Unexpected token
- 解析器在严格 JSON 语法不允许的位置遇到了一个字符。可能是逗号、斜杠、单引号、大写的布尔值,或文档结尾后的多余文本。
- Python 字面量
- Python 用
True、False和None;JSON 用true、false和null。 - 注释
- 注释在 JavaScript 和 JSONC 里很常见,但不属于合法 JSON。在把数据交给 JSON 解析器之前,去掉
//行注释和/* 块注释 */。 - Markdown 代码围栏
- LLM 回复经常把 JSON 包在
```json围栏里。在解析或发往 API 之前,先把围栏标记去掉。
各工具相关问题
- JSON Fix —— 怎么修复无效的 JSON?
- 把破损的 JSON 粘贴到 JSON Fix,点击 Repair & Format。它会一次性修复尾随逗号、单引号、未加引号的键、Python 字面量、注释和 Markdown 代码围栏。
- JSON Validate —— 校验和解析 JSON 有什么区别?
- 解析是把 JSON 变成可用的值;校验只是确认它能被解析。成功的
JSON.parse本身就是一次校验 —— 详见 JSON Validator。 - JSON Viewer —— 为什么树视图是空的?
- 树视图只能从可解析的 JSON 构建。先用 JSON Fix 修复常见错误,再把清理过的结果加载到 JSON Viewer。
- JSON Diff —— 为什么排序前后报为完全相同?
- JSON 对象在规范上是无序的。JSON Diff 在比较前会先归一化键名,所以只显示真正的值差异。
- JSON to TypeScript —— 生成的类型会在运行时校验吗?
- 不会。JSON to TypeScript 生成的是编译期接口。运行时校验请配合 Zod,或用 JSON Schema 来描述结构。
- JSON Minify —— 压缩能省多少?
- 在 HTTP 压缩之前通常能省 15–50%。如果你的服务器已经发送
Content-Encoding: gzip或br,再用 minify 的边际收益就很小了。 - JSON Stringify —— 怎么解码被两次序列化的 JSON 字符串?
- 在 JSON Stringify 里点击 Unstringify;如果输入以转义引号开头,也可以连续调两次
JSON.parse。 - JSON ⇄ CSV —— 嵌套对象怎么表示?
- 每个嵌套的对象或数组都会以 JSON 文本写入单元格,保持转换可逆。详见 JSON to CSV。
- JSON ⇄ XML —— 怎么把一个值变成 XML 属性?
- 在键名前加
@(例如@id);元素文本放在#text;数组会变成重复元素。详见 JSON to XML。 - YAML —— 为什么我的 YAML 解析不过?
- 几乎总是缩进问题 —— 一个 tab 字符(YAML 禁止 tab)或同级缩进对不齐。用 YAML 格式化器 跑一遍,会暴露并规范化这两个问题。
- Base64 —— Base64 和 Base64url 有什么区别?
- 标准 Base64 用
+和/,并以=作填充;URL 安全的 Base64url 把它们替换成-和_,并去掉填充,这样值在 URL 和 JWT 里也安全。详见 Base64。 - URL Decode —— 为什么
+没被解码成空格? - 在查询字符串里,空格可能写成
+(表单编码)或%20。decodeURIComponent不会把+转成空格 —— 如果是表单编码数据,先自己替换一下。详见 URL Decode。 - JWT Decode —— 会校验签名吗?
- 不会。JWT Decode 只读取 claim,不检查签名。一定要在服务端校验,并把库配置成你预期的算法(绝不接受
alg: none)。
我应该看哪篇错误文章?
如果你手上有完整的错误信息,可以直接跳到对应文章:
- "Unexpected token < in JSON at position 0" → fetch 返回的是 HTML
- "Unexpected token u in JSON at position 0" → 你把
undefined拿去解析了 - "Unexpected token o in JSON at position 1" → 对象被 stringify 成
[object Object] - "Unexpected end of JSON input" → 结构被截断或未闭合
- "Unexpected non-whitespace character after JSON data" → 完整值之后还有额外数据(可能是 NDJSON?)
- "Unterminated string in JSON" → 字符串开了但没关
- "Bad escaped character in JSON" → 无效的反斜杠转义(如
\x、Windows 路径) - "Bad control character in string literal in JSON" → 字符串里有原始 tab/换行/控制字节
- "Expected double-quoted property name…" → 尾随逗号
- "[object Object] is not valid JSON" → 对象在解析前被 stringify 了
- 不确定是哪一个? → 从总览文章开始:如何修复 JSON.parse Unexpected Token 错误
本地处理如何保护隐私
修复、校验、格式 化、压缩和复制操作都在你的浏览器标签页里运行。工具不需要上传端点来处理你的 JSON。这对包含私有标识符的 API 样本、Webhook 负载、内部配置片段或调试输出尤其重要。粘贴到任何网站之前你仍然应该去掉机密,但本工具的核心 JSON 工作流是「本地优先」设计的。
本站可能会在页面周围使用托管日志、统计分析等脚本,具体见隐私政策。这些系统不应收到你粘贴到编辑器里用于修复的内容。如果数据包含凭据、访问令牌、客户记录或生产环境机密,请在调试前用安全占位符替换。
JSON 是什么、为什么这么严格
JSON 代表 JavaScript Object Notation,但现代 JSON 已与语言无关。Python、Go、Java、PHP、Ruby、Rust、数据库、消息队列、日志系统和浏览器代码都能读同一份 JSON 文档,因为它的语法被刻意做得很小。这种严格性是有用的:JSON 解析器不会执行函数、构造器、日期、注释或表达式 —— 它只接受数据。
代价是:从 JavaScript 对象字面量、Python 字典、TypeScript 配置或 Markdown 答复里拷出来的文本看起来很像 JSON,却仍然非法。修复功能帮你把这些「近似 JSON」转成严格解析器能接受的数据。
使用修复后的 JSON 之前
修复成功只代表文本能被转成合法的 JSON 语法,并不代表数据对你的接口或应用是正确的。在把修复后的 JSON 投入生产之前,检查必填字段、未知键、值类型、数组长度、日期格式、枚举值、null 处理,以及标识符应当是字符串还是数字。
如果数据控制权限、计费、数据删除或面向客户的行为,修复后请与已知良好样本或 schema 对比。做 API 工作时,先校验语法,再校验业务契约。
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 中的尾随逗号
- 修复 JSON 中的单引号
- 修复 JSON 中未加引号的键
- 修复 LLM 输出的 JSON
- 修复 JSON 解析错误:Expected Property Name
- JSON 与 JavaScript 对象字面量的区别
- 在发起 API 请求前校验 JSON
- JSON 格式化器 vs JSON 修复工具
- 修复 JSON Unexpected Token 错误
- JSON 转 JavaScript 对象转换器