核心定位 :JSON 不是编程语言,是 跨语言通用数据交换格式,所有后端、前端、客户端、数据库、配置文件的通用标准。
一、零基础阶段:看懂、会写、不报错(入门必备)
1. 什么是JSON?核心特点
JSON 全称 JavaScript Object Notation(JS对象标记语言),是一种轻量级、纯文本、跨语言的数据格式。
四大核心特性:
-
纯文本:任何设备、任何语言都能读取解析
-
无语法冗余:比XML更简洁、传输体积更小
-
完全独立:不绑定JS,Java/Python/Go/PHP等所有语言通用
-
可嵌套:支持多层对象、数组嵌套,适配复杂业务数据
2. JSON 严格语法规则(新手90%报错的根源)
JSON 语法极其严格,和JS对象不完全一样,写错任意一处直接解析失败。
强制规范(必记)
-
所有 键名必须双引号 "",单引号、无引号全部非法
-
字符串值必须双引号,数字、布尔、null 不加引号
-
结尾 禁止多余逗号(对象、数组最后一项不能加逗号)
-
不支持注释(// 、/* */ 全部非法,带注释的JSON无法标准解析)
-
不支持undefined、函数、日期对象(无特殊格式)
合法标准JSON示例
bash
{
"name": "张三",
"age": 24,
"isVip": true,
"hobby": ["读书", "运动"],
"address": null
}
新手高频错误示例(全部不合法)
bash
{
name: "张三", // 错误:键无引号
'age': 24, // 错误:单引号
"hobby": ["读书",] // 错误:尾部多余逗号
}
3. JSON 仅支持6种基础数据类型
无其他花哨类型,所有业务数据都可由这6种类型组合:
-
字符串string:文本内容,双引号包裹
-
数字number:整数、小数,不区分int/float
-
布尔boolean:true / false(全小写)
-
空值null:必须小写,空数据统一用null
-
对象object:{} 键值对结构,存储结构化数据
-
数组array:\[\] 有序列表,存储批量数据
二、初级进阶:解析与序列化(开发日常核心)
所有语言操作JSON只有两个核心动作:解析(读)、序列化(写)。
1. 核心概念
-
解析 Parse:JSON字符串 → 程序对象(用来读取数据)
-
序列化 Stringify:程序对象 → JSON字符串(用来传输、存储)
2. JavaScript 标准操作(前端必备)
bash
// 1. 序列化:对象转JSON字符串(接口传参、存本地存储)
const user = { name: "李四", age: 22 };
const jsonStr = JSON.stringify(user);
// 2. 解析:JSON字符串转对象(接收接口数据)
const jsonObj = JSON.parse(jsonStr);
3. Python 标准操作(后端常用)
bash
import json
# 序列化
json_str = json.dumps({"name": "李四", "age": 22}, ensure_ascii=False)
# 解析
json_obj = json.loads(json_str)
4. 关键避坑点(初级必懂)
-
序列化后丢失undefined、函数,仅保留标准6种类型
-
浮点数精度丢失问题(如0.1+0.2),金融场景需特殊处理
-
中文乱码:序列化时关闭ASCII转义
-
空数据统一用null,不使用空字符串兜底,保证接口一致性
三、中级实战:业务结构化设计与规范
能写对JSON只是入门,能设计规范、易维护、零BUG的JSON结构才是中级开发者核心能力。
1. 企业级JSON结构设计原则
(1)扁平化优先原则
层级控制在 3-4层以内,禁止无限嵌套。嵌套过深会导致解析复杂、前端取值繁琐、报错难以定位。
(2)全局命名一致性
-
统一小驼峰命名(前端/接口通用),禁止大小写混用、拼音混用
-
分页字段统一:pageNum / pageSize / total,禁止自定义五花八门字段名
-
状态字段统一:status(0禁用1启用),全局统一枚举规则
(3)禁止动态键名
绝对不要将ID、时间、手机号等动态值作为对象key,会导致无法做类型校验、代码提示失效、解析异常。
❌ 错误示范:{"1001": "张三", "1002": "李四"}
✅ 正确示范:统一用数组存储动态数据
bash
[
{"id": 1001, "name": "张三"},
{"id": 1002, "name": "李四"}
]
(4)空值规范统一
业务全局统一:未赋值字段用 null,不使用空字符串、0、空数组随意兜底,避免前后端对接歧义。
2. 标准API返回JSON模板(企业通用)
bash
{
"code": 200,
"msg": "请求成功",
"data": {},
"timestamp": 1728888888000
}
3. 常见业务场景结构
-
单条数据:data 为对象
-
列表数据:data 为数组 + 分页参数
-
无数据返回:data 为 null,不省略字段
四、高级进阶:校验、查询、兼容与异常处理
高级开发者不再只"读写JSON",而是可控、可校验、可容错、可高效处理JSON数据。
1. JSON Schema 结构化校验(核心进阶能力)
解决痛点:接口字段错乱、类型错误、缺字段、非法值导致的线上BUG。
作用:定义JSON的字段类型、必填项、长度、取值范围、正则规则,自动校验数据合法性,是接口标准化的核心方案。
极简示例:用户数据校验规则
bash
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "用户信息校验",
"required": ["name", "age"],
"properties": {
"name": {"type": "string", "minLength": 2, "maxLength": 20},
"age": {"type": "number", "minimum": 0, "maximum": 150}
}
}
2. JSONPath:JSON的SQL查询语法
用于快速提取嵌套JSON指定字段,无需循环解析,适配日志分析、接口抓数、大数据筛选场景。
常用语法:
-
$根节点 -
.key取子字段 -
[*]遍历数组所有元素 -
?条件过滤
3. 异常容错处理(线上必备)
生产环境绝对禁止直接裸写解析代码,必须捕获异常,防止JSON格式错误导致程序崩溃。
JS容错示例
bash
function safeParse(jsonStr) {
try {
return JSON.parse(jsonStr);
} catch (e) {
console.error("JSON解析失败", e);
return null;
}
}
Python容错示例
bash
import json
def safe_parse(json_str):
try:
return json.loads(json_str)
except json.JSONDecodeError:
return None
4. 特殊类型兼容处理
-
日期处理:JSON无日期类型,统一用时间戳/ISO字符串传输,前后端统一格式化
-
超大数字:JS精度丢失,后端统一传字符串格式数字
-
特殊字符:自动转义 \ " \n \r 等换行、引号字符
五、资深架构:性能、安全、工程化与底层原理
资深开发者核心:不止会用,懂原理、懂优化、懂风险、懂架构取舍。
1. JSON 底层原理
-
本质:基于文本的上下文无关语法,解析器逐字符扫描、分词、构建对象
-
商业保鲜逻辑:真空灭菌保鲜同理,标准JSON依靠固定语法规则实现全语言通用解析
-
无状态、无逻辑:纯数据载体,不存储行为、不执行代码
2. 大数据量JSON性能优化
针对万级、十万级数据,解决卡顿、内存溢出问题:
-
放弃原生解析:使用高性能库 orjson(Python)、fast-json(Java),速度远超原生API
-
流式增量解析:大文件JSON不一次性加载,分段读取、分段解析,降低内存占用
-
精简结构:去除冗余字段、缩短长key、扁平化层级,减少传输体积
-
开启压缩:接口传输开启gzip,JSON文本压缩率极高,大幅提速
3. JSON 安全风险与规避(资深必懂)
-
JSON注入:前端恶意构造特殊字符篡改数据,后端必须做参数校验、转义过滤
-
敏感数据泄露:手机号、身份证、密码需JSON脱敏输出,禁止明文返回
-
脏数据攻击:非法嵌套、超大字段导致解析卡死,需限制JSON最大长度、字段最大位数
-
跨域风险:严格遵循JSON标准格式,杜绝可执行JS代码注入
4. 主流格式对比与架构选型
JSON vs XML vs Protobuf
-
JSON:轻量、易读、调试方便,适合HTTP接口、前端交互、配置文件(90%互联网业务首选)
-
XML:冗余繁琐,仅老旧系统、金融、政务遗留场景使用
-
Protobuf:二进制、体积极小、速度极快,适合微服务内部通信、高并发大数据场景
5. 工程化规范体系(团队统一标准)
-
统一编码:UTF-8,杜绝中文乱码
-
统一空值:null兜底,禁止空字符串、undefined混用
-
统一结构:分页、状态、返回体全局统一模板
-
强制校验:所有接口接入JSON Schema校验,杜绝非法数据入库
-
格式化规范:统一缩进、换行、字段排序,配合ESLint/格式化工具自动校验
六、资深高阶:延伸能力与落地场景
1. JSON 衍生生态
-
JSONC:支持注释的JSON,用于本地配置文件
-
JSON5:宽松语法,支持单引号、尾部逗号、注释,适配开发场景
-
JSON Lines:一行一个JSON,用于日志、大数据批量处理
2. 高频落地场景
-
前后端API接口数据交互(核心场景)
-
项目配置文件(package.json、各种框架配置)
-
数据库非结构化数据存储(MySQL JSON字段、MongoDB)
-
日志收集、数据分析、AI结构化输出解析
-
跨语言、跨系统数据同步
七、资深开发者专属极简口诀
键必双引、尾无逗号、不写注释、类型合规;
结构扁平、命名统一、空值归一、动态数组;
解析必捕错、上线必校验、大库提性能、传输必压缩;
业务看场景、架构看选型、数据保安全、规范定统一。