文章目录
- [simplejson:Python JSON 处理的备用引擎](#simplejson:Python JSON 处理的备用引擎)
-
- [1、 项目定位](#1、 项目定位)
- [2、 RawJSON 用法](#2、 RawJSON 用法)
- [3、 性能与安装](#3、 性能与安装)
- [4、 适用场景](#4、 适用场景)
simplejson:Python JSON 处理的备用引擎
simplejson 在 GitHub 上积累了 1,712 Star。
这是一个纯 Python 编写的 JSON 编解码库,没有外部依赖,同时带有一个可选的 C 扩展来提升速度。从 Python 2.6 开始,它就是内置 json 模块的外部维护版本,现在仍保持更新,支持到 Python 3.14。

1、 项目定位
simplejson 的核心任务是把 Python 对象转成 JSON 字符串,或者反过来。它覆盖了标准 JSON 规范的全部功能,同时提供了比内置模块更丰富的定制选项。
编码器可以通过 default 参数处理标准 JSON 不支持的类型,有点类似于 pickle 的工作方式,但输出格式仍是标准 JSON。解码器则支持 object_hook 和 object_pairs_hook,在解析完成后对结构进行修改。这两个接口在实现 JSON-RPC 这类协议时很有用,因为这类协议的数据类型比 JSON 本身更丰富。

2、 RawJSON 用法
simplejson 有一个标准库没有的特性:RawJSON。它允许将已经编码好的 JSON 字符串直接嵌入输出,跳过重复编码的过程。
代码示例:
from simplejson import dumps, RawJSON
payload = {
"status": "ok",
"data": RawJSON('{"a": 1, "b": 2}')
}
print(dumps(payload))
# Output: {"status": "ok", "data": {"a": 1, "b": 2}}
这个机制在拼接多个 JSON 来源的场景里能节省计算开销。但它绕过了序列化校验,只在内容完全可信时才建议使用。
3、 性能与安装
simplejson 的代码是纯 Python 实现,安装没有门槛,pip 直接装就行。C 扩展是可选的,编译之后编码解码速度会明显提升。如果环境不支持编译,不装扩展也能正常使用。
测试覆盖了 Python 3.14 的自由线程构建,向后兼容到 Python 3.8。对于需要维护老系统的人,还有一个遗留的 Python 2.7 wheel 可以安装。甚至还有一个基于更老版本的分支支持 Python 2.2,不过那个分支已经无人维护,只作为最后的备用方案存在。
4、 适用场景
日常使用 Python 内置 json 模块就够了。以下情况可以考虑切到 simplejson:
- 需要序列化自定义对象类型
- 解码阶段要对数据结构做后处理
- 有 RawJSON 拼接需求
- 能通过 C 扩展换取速度提升
- 维护 Python 2.7 遗留代码
这个项目不是新奇玩具,而是一个经过长期验证的工具库。它在标准库之外提供了一层扩展能力,同时保持了接口的熟悉度。对于 JSON 处理需求复杂一些的项目,simplejson 是个务实的选择。
力,同时保持了接口的熟悉度。对于 JSON 处理需求复杂一些的项目,simplejson 是个务实的选择。