JSON 是什么?大白话讲解(以及如何修复常见错误)
更新 2026-07-06
JSON 在现代软件中无处不在 —— 配置文件、API 响应、数据库和设置都依赖它。然而一个走位的逗号就能弄坏整个文件,让你盯着一个费解的“Unexpected token”错误。本指南用大白话讲清 JSON 是什么、它的语法究竟如何运作,以及如何诊断并修复你最常遇到的错误。
JSON 是什么
JSON 是 JavaScript Object Notation 的缩写。它是一种轻量、基于文本的格式,用于存储和交换结构化数据。尽管有这个名字,它并不绑定 JavaScript —— 几乎每种编程语言都能读写它,这正是它成为 Web API 默认语言的原因。
JSON 的全部意义在于人和机器都能读。它用几个简单的构件组合来表示数据:
- 对象(Object) —— 用花括号
{ }包裹的键/值对集合。 - 数组(Array) —— 用方括号
[ ]包裹的有序列表。 - 值(Value) —— 字符串、数字、
true、false、null、对象或数组。
这是一个小而完整的例子:
{
"name": "Ada Lovelace",
"active": true,
"age": 36,
"skills": ["math", "logic"],
"address": {
"city": "London",
"postcode": null
}
}让人栽跟头的规则
JSON 长得很像 JavaScript 对象,而这种相似正是大多数错误的来源 —— JSON 更严格。记住这些规则,你就能避开绝大多数错误:
1. 键和字符串需要双引号
每个键都必须是用双引号括起来的字符串,每个文本值也必须用双引号。单引号不是有效的 JSON,尽管在 JavaScript 里没问题。
// 无效
{ 'name': 'Ada' }
// 有效
{ "name": "Ada" }2. 不能有末尾逗号
你不能在对象或数组的最后一项后面留一个逗号。这是最常见的 JSON 错误,因为许多编辑器和语言在别处欣然允许它。
// 无效 —— 最后一个值后有逗号
{ "a": 1, "b": 2, }
// 有效
{ "a": 1, "b": 2 }3. 不能有注释
标准 JSON 没有注释语法。以 // 开头的行或用 /* */ 包裹的块会导致解析错误。如果你需要注释,JSON5 或 YAML 这类格式允许 —— 如果那更合适,看看我们的 YAML 格式化工具。
4. 数字要朴素
数字不加引号,不带前导零或末尾小数点。01、1. 和 .5 都无效;应写作 1、1.0 和 0.5。
常见错误及修复方法
当解析器拒绝你的 JSON 时,它通常会报告一个行号和列号。那个位置指向解析器 放弃 的地方,往往就在真正错误的后面一点。以下是你最常见到的消息及其真正含义:
- "Unexpected token } in JSON" —— 几乎总是闭合花括号或方括号前的末尾逗号。删掉多余的逗号。
- "Unexpected string" / "Expected comma" —— 两个值之间少了逗号,或者你在该放逗号的地方用了换行。
- "Unexpected token ' in JSON" —— 单引号。把它们换成双引号。
- "Unexpected end of JSON input" —— 有个方括号或花括号从未闭合。数一数你的
{和};每个开括号都需要一个匹配的闭括号。 - "Unexpected token o in JSON" —— 一个经典信号,说明你试图解析某个 本来 就已是对象、而非 JSON 字符串的东西。只对文本调用解析器。
锁定确切位置最快的方法,是把文本喂给一个边走边校验的格式化工具。我们的 JSON 格式化与校验工具 会高亮第一个错误的精确行列,一旦 JSON 有效,就把它美化输出,让结构性问题(放错的括号、多嵌套了一层的值)一眼可见。一切都在你的浏览器中运行,所以你可以安全地检查私密或敏感数据。
格式化 vs. 压缩(minify)
处理 JSON 时有两个操作不断出现。格式化(也叫美化或 pretty-print)加入缩进和换行,让密集的一团变得可读 —— 调试时理想。压缩(Minify) 剥掉每一个不必要的空格和换行,产出尽可能小的输出 —— 在通过网络发送或嵌入代码、体积要紧时理想。两种方式的数据完全相同,只有空白改变。
快速清单
在把 JSON 交给程序之前,核对:
- 所有键和字符串值都用双引号。
- 没有末尾逗号。
- 没有注释。
- 每个方括号和花括号都成对。
- 通过校验器且无错误。
把这五点做对,JSON 就成了它被设计成的样子:一个无聊、可预测、就是好用的格式。如果真有东西漏了过去,把它粘进 JSON 格式化工具,让它直接把问题指给你。
更多 数据格式与编码
查看全部 数据格式与编码 指南 →本指南提到的工具