Python高性能JSON库orjson详解:从基础序列化到高级选项配置

江屿
江屿
发布时间:2026-10-12| 2人浏览过
原创

本文深入解析Python第三方库orjson,其在基准测试中性能远超原生json及ujson等库。文章详细演示了dumps与loads的基础用法,并重点介绍OPT_INDENT_2、OPT_SERIALIZE_NUMPY等高级Option配置,以及如何通过default参数处理dataclass和datetime对象,帮助开发者实现高效、灵活的数据转换。

1 简介

在Python日常开发,尤其是Web应用构建中,JSON格式常被用于数据存储与交换。然而,Python内置的json库在性能上表现平平,功能也较为单一,仅能勉强满足轻量级场景的需求。

本文重点介绍一款第三方JSON库orjson。在多项公开基准测试中,orjson凭借数倍乃至数十倍的性能优势,显著优于json、ujson、rapidjson及simplejson等其他Python库,同时具备丰富的扩展功能。接下来我们将详细探讨其常用方法。

2 orjson常用方法

orjson兼容Python 3.7至3.10的所有64位版本。本文演示所用orjson版本为3.7.0,用户可通过执行pip install -U orjson命令完成安装。随后,我们将对orjson的核心功能进行演示。

2.1 序列化

与原生json库类似,orjson提供dumps()函数将Python对象序列化为JSON数据。不同之处在于,orjson序列化后的结果类型为bytes而非str。以下示例对比了包含一千万个简单字典元素的列表在orjson与json库中的序列化耗时,结果显示orjson具有明显速度优势。

2.2 反序列化

将JSON数据还原为Python对象的过程称为反序列化,可通过orjson.loads()实现。该函数接受bytes或str等常见类型。在前述序列化示例基础上,我们补充反序列化的操作演示。

2.3 丰富的option选项

在orjson的序列化操作中,可通过option参数配置多种额外功能,常用选项包括:

  • OPT_INDENT_2

设置option=orjson.OPT_INDENT_2可为序列化后的JSON结果添加两空格缩进,实现美化效果,从而弥补其原生不支持indent参数的不足。

  • OPT_OMIT_MICROSECONDS

使用orjson.dumps()可直接将Python标准库中的datetime或time对象转换为字符串,这是原生json库无法直接实现的。若配置option=orjson.OPT_OMIT_MICROSECONDS,则可省略转换结果中毫秒部分的显示。

  • OPT_NON_STR_KEYS

当待序列化对象包含非字符串类型的键时,orjson默认会抛出TypeError。此时配置option=orjson.OPT_NON_STR_KEYS可强制将这些键转换为字符串类型。

OPT_SERIALIZE_NUMPY

orjson的重要特性之一是能兼容转换包含numpy数据结构的复杂对象为JSON数组,配合option=orjson.OPT_SERIALIZE_NUMPY即可实现这一功能。

  • OPT_SERIALIZE_UUID

除了自动处理numpy对象,orjson还支持UUID对象的转换。在orjson 3.0之前的版本中,需配合option=orjson.OPT_SERIALIZE_UUID使用;而本文演示的3.X版本已内置支持,无需额外配置参数。

  • OPT_SORT_KEYS

通过设置option=orjson.OPT_SORT_KEYS,可对序列化后的结果按键名自动进行排序。

  • 组合多种option

若序列化操作需同时启用多种option功能,可使用竖线运算符(|)组合多个option参数。

2.4 针对dataclass、datetime添加自定义处理策略

当序列化对象涉及dataclass自定义数据结构时,可结合orjson.OPT_PASSTHROUGH_DATACLASS,并通过传入自定义处理函数至default参数,实现更灵活的数据转换逻辑。例如,利用此特性可对原始数据进行脱敏处理。

同理,针对datetime类型数据,结合OPT_PASSTHROUGH_DATETIME与自定义default函数,可实现日期的自定义格式化转换。

总结

至此,关于Python中高性能JSON库orjson的用法介绍完毕。如需了解更多Python JSON库相关技巧,欢迎查阅本站往期文章或继续浏览后续内容。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。