📘 一站式详解:什么是 JSON?


一、🌟 JSON 的定义

JSON(JavaScript Object Notation) 是一种基于文本的、用于结构化数据表示的格式。它来源于 JavaScript,但现在是独立于语言的通用格式

  • 用来表示数据结构:如对象、数组、键值对。
  • 最常用于:前后端数据交互、配置文件、数据存储、API 响应等。

✅ 官方定义(来自 json.org):

“JSON is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.”


二、📦 JSON 的结构和语法

JSON 支持两种基本结构:

1. 对象(Object)

  • {} 包裹
  • 内部是键值对
  • 键必须是字符串,值可以是任意 JSON 支持的数据类型
1
2
3
4
5
{
"name": "Tom",
"age": 20,
"isStudent": true
}

2. 数组(Array)

  • [] 包裹
  • 内部是值的有序集合
1
2
3
4
5
[
"apple",
"banana",
"orange"
]

三、🔤 JSON 支持的数据类型

数据类型 示例 描述
字符串 "Hello" 使用双引号,不能用单引号
数字 100, 3.14 不支持 NaN、Infinity
布尔值 true, false 小写
null null 表示空值
对象 {...} 键值对集合
数组 [...] 值的有序列表

四、🚫 JSON 的语法限制

  • 键必须加双引号,不能省略或用单引号(不同于 JS)。
  • 不能包含函数、undefined、注释
  • 结尾不能多逗号(trailing comma)
  • 必须是 UTF-8 编码的字符串

错误示例(无效的 JSON):

1
2
3
4
{
name: 'Tom', // ❌ 键没有双引号,值是单引号,含注释
age: 18,
}

五、🔁 JSON 在编程语言中的处理

✅ JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// JS 对象
let person = {
name: "Alice",
age: 25
};

// 转成 JSON 字符串
let jsonStr = JSON.stringify(person);
console.log(jsonStr); // '{"name":"Alice","age":25}'

// 从 JSON 字符串解析成对象
let obj = JSON.parse(jsonStr);
console.log(obj.name); // Alice

✅ Python(使用 json 模块)

1
2
3
4
5
import json

data = {"name": "Tom", "age": 18}
json_str = json.dumps(data)
new_data = json.loads(json_str)

几乎所有主流语言(Java、C#、Go、PHP 等)都有 JSON 解析库。


六、📡 JSON 的常见用途

场景 说明
前后端通信 Web 开发中前端从服务器获取或提交数据
Web API 响应格式 RESTful 接口默认使用 JSON
配置文件 比如 package.jsontsconfig.json
本地存储 存储结构化数据到 localStorage、文件系统等
跨平台数据交换 各语言间共享数据

七、📊 JSON 与其他数据格式的比较

格式 可读性 体积 支持结构 支持注释 跨语言兼容
JSON ✅ 好 ✅ 好 ❌ 无 ✅ 强
XML ❌ 差 ✅ 强 ✅ 有 ✅ 强
YAML ✅ 强 ✅ 强 ✅ 有 ✅ 强
CSV ✅ 强 ❌ 差 ❌ 无 ✅ 强

八、🧨 JSON 常见错误

错误 示例
键未加引号 {name: "Tom"}
使用单引号代替双引号 {'name': 'Tom'}
多余的逗号 { "a": 1, }
不支持函数或 undefined { "data": undefined }
JSON 字符串不是合法对象或数组 "Tom"(不是一个对象或数组)❌