对象的序列化与反序列化
之前我们学会了把零散的文本、二进制存盘读取,但真实开发里哪有单独存「变量名」的场景? 比如要存一份AI训练的配置列表、和前端交互的用户数据,甚至跨语言(Python→Java→Go)的微服务通信——异构系统间必须用通用的、无损还原的「数据桥接器」,而JSON就是目前最火的那个。
1. JSON 是什么:从JS语法到全球“数据通行证”
JSON 的全称是 JavaScript Object Notation,最初确实只是 JS 里写对象的简化语法糖,但架不住它太“好用”:
- ✅ 纯文本:随便用记事本打开、改
- ✅ 结构紧凑:比冗长的XML少N多标签
- ✅ 跨语言全支持:不管是前端、后端、移动端还是嵌入式,主流语言都有内置/成熟的解析库
如今它已经彻底取代 XML,成了API对接、配置文件的事实标准。
JS ↔ Python 数据无缝映射表
JSON 的结构和 Python 字典/列表简直是「失散多年的孪生兄弟」,支持无限层嵌套,但为了跨语言兼容,它的数据类型比 Python 要少一些,对应关系如下:
表 1:JSON → Python 反序列化默认映射
2. 核心工具:Python 内置 json 模块
不用安装任何三方库!Python 自带的 json 模块,就能搞定 内存对象 ↔ JSON(字符串/文件) 的双向转换,核心就4个函数,记牢即可:
实战演示:序列化“道满的业务配置”
我们用一个带嵌套结构、中文、布尔值、数组的复杂字典来练手:
实战演示:反序列化还原配置
刚才我们存了配置,现在读回来验证:
3. 加餐1:海量数据下的性能优化
处理 百万级以上的JSON数据(比如爬虫爬取的商品信息、AI批量推理的结果)时,Python 内置的 json 模块速度会有点慢——此时可以用Python生态里的「闪电解析器」ujson。
第一步:pip 配置国内镜像(必做!否则下载慢死)
pip 是 Python 的官方包管理工具,默认从国外的 PyPI 下载,国内经常卡成狗。我们可以换成清华/阿里的镜像:
第二步:安装和使用 ujson
安装后,代码只需要改一行导入语句,完全兼容内置 json 的4个核心函数:
pip 常用命令速查
4. 加餐2:实战调用公开JSON API
现在99%的公开/商业网络API,都是基于 HTTP/HTTPS 协议返回JSON数据的。Python 内置的 urllib 有点繁琐,我们用第三方库requests(号称“最优雅的HTTP库”)来练手。
第一步:安装 requests
第二步:调用公开天气/新闻API(示例)
这里用天聚数行的免费国内新闻API(需要去官网申请一个100次/天的免费密钥,替换代码里的 YOUR_API_KEY):
5. 总结
今天我们只学了3件核心事,但足够应付90%的JSON场景:
- JSON的定位:全球通用的“数据桥接器”,跨语言、纯文本、紧凑
- Python内置json模块的4个函数:
dumps/dump(序列化)、loads/load(反序列化) - 两个常用的小工具:
ujson(高性能)、requests(HTTP API对接)
最后再强调两个避坑点:
- 写JSON文件时必须指定encoding='utf-8',否则中文必乱码
- JSON的键只能是双引号包裹的字符串,Python的单引号/整数键都会在序列化时自动转,但别在JSON字符串里写单引号!

