JSON 零基础到资深全体系教程

核心定位 :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种类型组合:

  1. 字符串string:文本内容,双引号包裹

  2. 数字number:整数、小数,不区分int/float

  3. 布尔boolean:true / false(全小写)

  4. 空值null:必须小写,空数据统一用null

  5. 对象object:{} 键值对结构,存储结构化数据

  6. 数组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结构化输出解析

  • 跨语言、跨系统数据同步

七、资深开发者专属极简口诀

键必双引、尾无逗号、不写注释、类型合规;

结构扁平、命名统一、空值归一、动态数组;

解析必捕错、上线必校验、大库提性能、传输必压缩;

业务看场景、架构看选型、数据保安全、规范定统一。

相关推荐
wgego2 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
机建狂魔3 小时前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
山峰哥3 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
乐观的Terry3 小时前
11、发布系统-用户认证与权限体系
java·spring boot·spring·spring cloud·mybatis
前端开发张小七3 小时前
Java 学习笔记 · 第二课:面向对象核心(封装、继承、多态)及接口与异常
java·后端·程序员
wangjialelele3 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
孙启超4 小时前
【AI应用开发】LangChain 中 Chain 和 Agent 核心区别?
java·人工智能·langchain·llm·rag·ai应用开发·agent loop
leoZ2314 小时前
实战复盘:用 Claude Code 从零搭一个 GitHub PR 统计工具
java·人工智能·python·深度学习·自然语言处理·github·llama
William Dawson4 小时前
【踩坑实录|Hive1\.2\.1数据服务接口5大疑难问题调试与全方位优化方案】
java·hive·spring boot