RUNWEBTOOLS
简体中文
数据格式与编码

JSON 是什么?大白话讲解(以及如何修复常见错误)

更新 2026-07-06

JSON 在现代软件中无处不在 —— 配置文件、API 响应、数据库和设置都依赖它。然而一个走位的逗号就能弄坏整个文件,让你盯着一个费解的“Unexpected token”错误。本指南用大白话讲清 JSON 是什么、它的语法究竟如何运作,以及如何诊断并修复你最常遇到的错误。

JSON 是什么

JSON 是 JavaScript Object Notation 的缩写。它是一种轻量、基于文本的格式,用于存储和交换结构化数据。尽管有这个名字,它并不绑定 JavaScript —— 几乎每种编程语言都能读写它,这正是它成为 Web API 默认语言的原因。

JSON 的全部意义在于人和机器都能读。它用几个简单的构件组合来表示数据:

  • 对象(Object) —— 用花括号 { } 包裹的键/值对集合。
  • 数组(Array) —— 用方括号 [ ] 包裹的有序列表。
  • 值(Value) —— 字符串、数字、truefalsenull、对象或数组。

这是一个小而完整的例子:

{
  "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. 数字要朴素

数字不加引号,不带前导零或末尾小数点。011..5 都无效;应写作 11.00.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 格式化工具,让它直接把问题指给你。

更多 数据格式与编码

查看全部 数据格式与编码 指南 →

本指南提到的工具