JSON 教程

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于 API 接口、配置文件和数据存储。本教程介绍 JSON 的核心语法与常见用法,帮助你在编写、阅读与调试 JSON 时更有把握。

JSON 是什么?

JSON 基于 JavaScript 的对象字面量语法,但它是纯文本格式,与具体编程语言无关。几乎所有主流语言都内置了 JSON 的解析与生成能力。

它的设计目标是让人类可读、让机器易解析。一条合法的 JSON 文本,顶层只能是单个对象 {...} 或单个数组 [...],不能同时并列多个值。

基本语法规则

键名必须用双引号包裹,不能使用单引号。

字符串值也必须使用双引号;反斜杠 \ 用于转义特殊字符(如 "、\、\n)。

对象中键值对之间、数组元素之间用逗号分隔,最后一个元素后面不能有尾随逗号。

不支持注释(// 或 /* */),也不支持 undefined、NaN、Infinity 等 JavaScript 专有值。

数字可以是整数或浮点数,不允许前导零(如 007),也不允许十六进制写法。布尔值 true 和 false 必须小写。

六种数据类型

JSON 只支持以下六种类型:字符串(string)、数字(number)、布尔值(boolean)、null、对象(object)和数组(array)。下面是一个包含各类型的简单示例:

{
  "name": "Alice",
  "age": 30,
  "active": true,
  "score": null
}

字符串与转义

字符串是最常用的类型,必须用双引号包裹。若内容包含换行、引号或反斜杠,需用 \ 转义。JSON 使用 UTF-8 编码,可直接写入中文及其他 Unicode 字符;保存为 .json 文件时建议使用 UTF-8(无 BOM)。

常见转义序列:\n(换行)、\t(制表符)、\\(反斜杠)、\"(双引号)、\uXXXX(Unicode 码点)。示例:

{
  "message": "Hello\nWorld",
  "quote": "He said \"Hi\"",
  "path": "C:\\Users\\data",
  "emoji": "你好 🎉",
  "unicode": "\u0041"
}

数字、布尔值与 null

数字支持整数、小数、负数及科学计数法(如 1.5e10)。布尔值只有 true 和 false。null 表示空值,与 undefined 不同——JSON 中没有 undefined。

示例:

{
  "count": 42,
  "price": 19.99,
  "negative": -1,
  "scientific": 1.5e10,
  "flag": true,
  "disabled": false,
  "empty": null
}

空数组、空对象与空字符串

[] 表示空数组,{} 表示空对象,"" 表示空字符串。API 响应中常见「无数据」用 null、空数组或空对象表示,含义略有不同,需结合业务理解。

{
  "tags": [],
  "meta": {},
  "note": ""
}

对象(Object)

对象由花括号 {} 包裹,内部是零个或多个「键: 值」对。键必须是字符串,值可以是任意 JSON 类型。对象常用于表示一条记录或配置项。

{
  "user": {
    "id": 1001,
    "email": "alice@example.com"
  }
}

数组(Array)

数组由方括号 [] 包裹,元素按顺序排列,索引从 0 开始。元素可以是任意 JSON 类型,同一数组内也可以混用不同类型。

除了作为对象属性,数组本身也可以作为 JSON 的顶层结构,例如接口返回列表数据:

对象内的数组
{
  "tags": ["json", "tutorial", "web"],
  "scores": [95, 88, 72]
}
顶层数组
[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob" }
]

嵌套结构

实际应用中,JSON 经常多层嵌套:对象里包含数组,数组里再包含对象。API 响应体、package.json、CI 配置等都是典型场景。

{
  "project": "QyCreate JSON",
  "version": 1,
  "features": ["format", "validate", "minify"],
  "settings": {
    "indent": 2,
    "theme": "light"
  },
  "contributors": [
    { "name": "Alice", "role": "author" },
    { "name": "Bob", "role": "reviewer" }
  ]
}

JSON 与 JavaScript 的区别

JSON 是数据交换格式,不是可执行的 JavaScript 代码。虽然语法相似,但 JSON 更严格:键名必须加双引号,不允许注释、函数、Date 对象或 undefined。

在浏览器或 Node.js 中,通常用 JSON.parse() 将 JSON 字符串转为对象,用 JSON.stringify() 将对象序列化为 JSON 字符串。若需要注释或尾随逗号,那是 JSON5 等扩展格式,不属于标准 JSON。

常见错误与正确写法

新手最容易犯的错误包括:键名未加双引号、使用单引号、数组或对象末尾多了逗号、把 JavaScript 注释写进 JSON 文件。对比如下:

错误示例
{
  name: "Alice",
  "items": [1, 2, 3,],
}
正确示例
{
  "name": "Alice",
  "items": [1, 2, 3]
}

在本工具中实践

打开首页编辑器,将 JSON 粘贴进去,或上传不超过 4 MB 的 .json / .txt 文件。不确定格式是否正确?可点击「加载示例」快速体验。

点击「格式化」可美化缩进(2 空格),便于阅读;点击「压缩」可去除空白,得到最小体积的字符串。格式化后的缩进与高亮可更直观地阅读嵌套结构。

若 JSON 不合法,编辑器会标出错误行号与列号,并给出修改建议。编辑过程中支持撤销与重做,处理完成后可复制到剪贴板或下载为 .json 文件。

所有操作均在浏览器本地完成,数据不会上传到服务器,适合处理含 Token 或敏感信息的接口返回。