一、先搞懂:JSON到底是什么?
JSON 的全称是 JavaScript Object Notation(JavaScript 对象表示法)。本质上,它是一种轻量级、跨语言、易读易写的数据交换格式,核心作用是在不同系统、不同语言之间传递结构化数据,就像软件开发中的"通用翻译官"。
举个最直观的例子:你打开一个APP查看个人信息,前端页面要显示你的昵称、年龄、地址,这些数据其实是后端服务器通过接口,以JSON格式传给前端的。前端拿到JSON后,就能轻松解析出需要的信息,渲染到页面上------这个过程,就是JSON最常用的场景。
二、核心基础:JSON的语法规则(必记,避坑关键)
JSON的语法非常简单,但严格且不容出错------多一个逗号、少一个引号,都会导致解析失败(这也是很多新手常踩的坑)。记住以下4条核心规则,就能避开90%的语法错误:
1. 两大核心结构:对象和数组
JSON的数据结构只有两种,所有复杂的JSON都由这两种结构嵌套组成:
- 对象(Object):用 {} 包裹,以"键值对(key: value)"的形式存储数据,键和值之间用冒号 : 分隔,多个键值对之间用逗号 , 分隔。
html
注意:键(key)必须用双引号包裹(单引号、无引号都不合法),比如 "username": "张三" 是正确的,而 username: "张三"、'username': "张三" 都会报错。
- 数组(Array):用 [] 包裹,存储一组有序的值,值之间用逗号 , 分隔。数组里的值可以是任意JSON支持的数据类型,甚至可以是对象或另一个数组(嵌套结构)。
2. 六种JSON支持的数据类型
JSON的值(value)只能是以下六种类型,不支持函数、日期对象、undefined等JavaScript特有类型,这也是它能跨语言兼容的关键:
| 数据类型 | 示例 | 说明 |
|---|---|---|
| 字符串(String) | "name": "李四" | 必须用双引号包裹,支持转义字符(如\n、\t) |
| 数字(Number) | "age": 28、"price": 3.14 | 不区分整数、浮点数,支持科学计数法(如1.23e4) |
| 布尔值(Boolean) | "isVip": true | 只有两个值:true(小写)、false(小写) |
| 空值(Null) | "extInfo": null | 表示空值,必须写小写null(Null、NULL都不合法) |
| 对象(Object) | "address": {"province": "北京", "city": "海淀"} | 嵌套对象,实现复杂数据结构 |
| 数组(Array) | "hobbies": ["篮球", "编程", "旅行"] | 存储多个有序值,可嵌套对象/数组 |
3. 其他关键规则
-
末尾无多余逗号:对象或数组的最后一个键值对/元素后面,不能加逗号(比如 { "name": "张三", "age": 28, } 会报错);
-
不支持注释:JSON中不能写//单行注释、/多行注释/,这和JavaScript、Python不同,添加注释会导致解析失败;
-
区分大小写:true/false/null必须是小写,Key的大小写也敏感(比如"Name"和"name"是两个不同的键)。
4. 一个完整的JSON示例(含所有类型)
结合上面的知识点,看一个贴近实际开发的完整示例,直观感受JSON的结构:
javascript
{
"userId": 1001,
"username": "张三",
"age": 28,
"isVip": true,
"address": {
"province": "北京",
"city": "北京市",
"detail": "海淀区中关村"
},
"hobbies": ["篮球", "编程", "旅行"],
"lastLoginTime": "2026-02-10 08:30:00",
"extInfo": null
}
这个JSON描述了一个用户的完整信息,包含了所有6种数据类型,结构清晰,无论是人还是机器,都能快速读懂。
三、实战必备:JSON的解析与生成(前后端通用)
学习JSON,最终目的是在开发中使用它------核心操作就两个:将JSON字符串解析为编程语言的对象(解析)、将编程语言的对象转为JSON字符串(生成)。下面以最常用的JavaScript,演示基础操作(其他语言逻辑类似,大同小异)。
1. JavaScript中操作JSON(前端高频)
JavaScript内置了JSON全局对象,无需引入任何依赖,直接使用两个核心方法:
-
JSON.parse():将JSON字符串解析为JavaScript对象(常用场景:前端接收后端接口返回的JSON数据);
-
JSON.stringify():将JavaScript对象转为JSON字符串(常用场景:前端向后端发送数据,如提交表单、请求接口)。
代码示例:
javascript
// 1. JSON字符串 → JavaScript对象(解析)
const jsonStr = '{"username": "张三", "age": 28, "isVip": true}';
const userObj = JSON.parse(jsonStr);
console.log(userObj.username); // 输出:张三(可直接访问对象属性)
// 2. JavaScript对象 → JSON字符串(生成)
const userObj2 = {
username: "李四",
age: 30,
hobbies: ["读书", "跑步"]
};
const jsonStr2 = JSON.stringify(userObj2);
console.log(jsonStr2); // 输出:{"username":"李四","age":30,"hobbies":["读书","跑步"]}
四、实际应用场景:JSON到底用在哪些地方?
JSON的优势的是简洁、跨语言、易解析,这让它几乎渗透到软件开发的各个环节,以下是3个最高频的应用场景,也是你学习后马上能用到的:
前后端数据交互(最核心场景)
这是JSON最常用的地方。无论是前端通过AJAX异步请求数据,还是通过Vue、React等框架调用接口,后端返回的数据格式几乎都是JSON。比如后端接口返回的"接口响应体",通常会包含状态码、提示信息、核心数据,格式如下:
javascript
{
"code": 200, // 状态码:200表示成功,404表示资源不存在,500表示服务器错误
"message": "success", // 提示信息
"data": [ // 核心数据(数组,包含多个用户信息)
{"id": 1, "name": "张三", "age": 28},
{"id": 2, "name": "李四", "age": 30}
]
}
前端拿到这个JSON后,解析code判断请求是否成功,再提取data中的数据渲染页面,整个流程高效且简洁。
五、新手避坑指南:常见错误及解决方案
刚开始使用JSON时,很容易因为一些细节出错,整理了4个最常见的错误,帮你快速避坑:
-
错误1:键用单引号或无引号 → 解决方案:所有键必须用双引号包裹;
-
错误2:末尾多写逗号 → 解决方案:删除对象/数组最后一个元素后面的逗号;
-
错误3:值使用undefined、函数、日期对象 → 解决方案:替换为JSON支持的六种类型(如日期转为字符串);
-
错误4:Python中JSON显示中文乱码 → 解决方案:json.dumps()添加ensure_ascii=False参数。
六、总结:为什么JSON能成为行业首选?
回顾全文,JSON之所以能取代XML,成为现代软件开发中最主流的数据交换格式,核心原因就3点:
-
轻量级:相比XML的繁琐标签,JSON体积更小,网络传输速度更快,尤其适合移动端和网络环境较差的场景;
-
跨语言:几乎所有主流编程语言都支持JSON解析和生成,无需额外适配;
-
易读易写:语法简单直观,无论是人还是机器,都能快速理解和处理,开发效率更高。