别再怕 JSON!5分钟带你轻松搞懂这个程序员的好帮手
目录
一. JSON 到底是个啥?
二. JSON 长啥样?解剖它的“身体结构”
2.1 键值对 (Key-Value Pair)
2.2 数据类型 (Data Types)
三. JSON 在实际开发中怎么用?
四. 总结一下 JSON 的优点
一. JSON 到底是个啥?
-
全称: JavaScript Object Notation (JavaScript 对象表示法)
-
本质: 一种轻量级的数据交换格式。
-
核心任务: 把数据(比如文字、数字、列表、对象)结构化地组织成一种纯文本的字符串,方便在不同的系统、编程语言、前后端之间传递和存储。
-
特点:
-
人可读: 结构清晰,比 XML 简洁很多 (对比一下 XML 那些复杂的标签就知道了)。
-
机器可解析: 程序可以很容易地“读懂”JSON 字符串里的内容并转换成自己需要的数据结构。
-
语言无关: 虽然名字里有 JavaScript,但几乎所有主流编程语言(Java, Python, C#, PHP, Go...)都内置了处理 JSON 的能力。
-
简单说,JSON 就是一种用特定格式写的文本,专门用来表示和传递结构化的数据。
二. JSON 长啥样?解剖它的“身体结构”
JSON 的基本结构非常简单,主要就两种东西组合而成:
2.1 键值对 (Key-Value Pair)
这是 JSON 的基础单元。想象成你身份证上的信息:
-
"name"
: 这是 键 (Key),相当于信息项的名称(如“姓名”)。必须用英文双引号""
包裹起来。 -
"张三"
: 这是 值 (Value),相当于该信息项的具体内容(如你的名字)。值可以是多种类型(见下文)。 -
中间用 冒号
:
分隔。 -
多个键值对之间用 逗号
,
分隔。{"name": "张三","age": 30,"isStudent": false,"hometown": null }
2.2 数据类型 (Data Types)
JSON 里的值 (
value
) 可以是以下几种基本类型: -
字符串 (String): 用双引号
""
包裹的文本。"Hello World"
,"北京"
-
数字 (Number): 整数或小数。
42
,3.14159
-
布尔值 (Boolean): 表示真或假。
true
,false
-
空值 (Null): 表示一个空值或没有值。
null
-
数组 (Array): 用方括号
[]
包裹的有序的值列表。值可以是任何类型(包括字符串、数字、对象、甚至另一个数组),值之间用逗号分隔。["apple", "banana", "orange"] // 字符串数组 [1, 2, 3, 4, 5] // 数字数组 [true, false, null] // 混合类型数组 [{"name": "A"}, {"name": "B"}] // 对象数组
-
对象 (Object): 用花括号
{}
包裹的无序的键值对集合。这就是 JSON 构建复杂结构的核心!对象里的值也可以是任何类型(字符串、数字、数组、甚至另一个对象)。{"person": {"name": "李四","age": 25,"address": {"city": "上海","street": "浦东大道"},"hobbies": ["读书", "游泳", "编程"]} }
重要规则:
-
键 (Key) 必须用双引号
""
包裹。 单引号不行!不加引号也不行! -
字符串 (String) 也必须用双引号
""
包裹。 -
最后一个键值对后面不能有逗号
,
! (这是新手常犯错误) -
标准 JSON 不支持注释! (虽然有些解析器宽松处理,但为了兼容性最好别写注释)。
三. JSON 在实际开发中怎么用?
JSON 最常见的舞台就是 Web 开发中的前后端交互:
-
前端发送数据给后端 (如:提交表单):
-
前端把用户输入的数据(姓名、年龄等)组织成一个 JSON 对象。
-
通过 HTTP 请求(通常是 POST/PUT)的请求体 (Body) 发送给后端。
-
代码片段 (JavaScript):
let userData = {username: "user123", // 注意:JS对象键可不用引号,但转成JSON字符串时会自动加password: "secretPass" // 实际密码传输必须加密! }; // 使用 JSON.stringify() 把 JS 对象转换成 JSON 字符串 fetch('/api/login', {method: 'POST',headers: { 'Content-Type': 'application/json' }, // 告诉后端我发的是JSONbody: JSON.stringify(userData) // 发送转换后的JSON字符串 });
-
2. 后端发送数据给前端 (如:查询结果):
-
后端从数据库查询到数据。
-
把数据组织成 JSON 对象(或数组)。
-
通过 HTTP 响应的响应体 (Body) 发送给前端。
-
代码片段 (Java with Spring Boot):
@GetMapping("/api/user/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) {User user = userService.findById(id);if (user != null) {// Spring Boot 会自动将 User 对象转换成 JSON 字符串return ResponseEntity.ok(user);} else {return ResponseEntity.notFound().build();} }
前端接收处理 (JavaScript):
fetch('/api/user/123').then(response => response.json()) // 使用 .json() 解析响应体中的 JSON 字符串为 JS 对象.then(data => {console.log(data.name); // 访问解析后的对象属性console.log(data.email);});
其他常见用途:
-
配置文件: 很多软件(如 VS Code 的 settings.json)用 JSON 格式存储配置。
-
NoSQL 数据库: 像 MongoDB 就直接存储类似 JSON 的文档 (BSON)。
-
API 接口: 绝大多数 Web API (如微信支付、地图 API) 都使用 JSON 作为请求和响应的标准格式。
四. 总结一下 JSON 的优点
-
简单: 语法规则少,结构清晰,上手快。
-
轻量: 纯文本格式,相比 XML 冗余信息少,传输效率高。
-
通用: 几乎所有编程语言和平台都支持,是数据交换的“世界语”。
-
灵活: 能通过对象和数组的嵌套表示非常复杂的数据结构。
结语:
JSON 并不神秘,它就是数据沟通的桥梁。掌握了它的基本结构和规则,你就能在 Web 开发、API 调用、数据处理等众多场景中游刃有余了。