大家好,我是木木。
今天给大家分享一个有趣的 python 库,orjson。
orjson 是一个专注于速度和灵活性的 JSON 库,提供了快速的序列化和反序列化 JSON 数据的功能。
与标准的 Python json 库相比,orjson 大大提升了处理速度,特别是在处理大型数据集或高频率调用场景中表现出色。对于需要高性能 JSON 处理的开发者来说,orjson 提供了一个既简单又高效的解决方案。
特点精简
-
高性能 -
orjson 的性能在多个基准测试中均优于其他 Python JSON 库,特别是在序列化大型数据集时。 -
类型支持广泛 -
自动处理多种 Python 标准类型,包括 datetime、UUID 等,以及对 numpy 数组的支持,减少了在序列化前手动转换数据类型的需求。 -
兼容性强 -
orjson 生成的 JSON 字符串完全符合 RFC 8259 标准,确保了与其他系统或语言处理 JSON 数据时的兼容性。
最佳实践
安装方法
安装 orjson 也很简单,可以通过 pip 直接安装:
pip install orjson
功能演示
快速序列化
使用 orjson 序列化、指定选项和反序列化的示例:。
>>> import orjson, datetime, numpy
>>> data = {
"type": "job",
"created_at": datetime.datetime(1970, 1, 1),
"status": "🆗",
"payload": numpy.array([[1, 2], [3, 4]]),
}
>>> orjson.dumps(data, option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)
b'{"type":"job","created_at":"1970-01-01T00:00:00+00:00","status":"xf0x9fx86x97","payload":[[1,2],[3,4]]}'
>>> orjson.loads(_)
{'type': 'job', 'created_at': '1970-01-01T00:00:00+00:00', 'status': '🆗', 'payload': [[1, 2], [3, 4]]}
高效反序列化
使用 orjson 将 JSON 字符串高效地反序列化为 Python 对象。
>>> import orjson
>>> orjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]})
b'{"a":"b","c":{"d":true},"e":[1,2]}'
>>> orjson.dumps(
{"a": "b", "c": {"d": True}, "e": [1, 2]},
option=orjson.OPT_INDENT_2
)
b'{n "a": "b",n "c": {n "d": truen },n "e": [n 1,n 2n ]n}'
显示的时候,缩进和换行符显示如下:
{
"a": "b",
"c": {
"d": true
},
"e": [
1,
2
]
}
高级功能实践
切片加载功能
Orjson.片段在文档中包含已经序列化的 JSON。这是从缓存、 JSONB 字段或单独的序列化对象中包含 JSON blobs 的一种有效方法,无需首先通过 load ()反序列化 Python 对象。
>>> import orjson
>>> orjson.dumps({"key": "zxc", "data": orjson.Fragment(b'{"a": "b", "c": 1}')})
b'{"key":"zxc","data":{"a": "b", "c": 1}}'
最后我们来看一下各个序列化库的性能
Library | compact (ms) | pretty (ms) | vs. orjson |
---|---|---|---|
orjson | 0.59 | 0.71 | 1 |
ujson | 2.9 | 3.59 | 5 |
rapidjson | 1.81 | 2.8 | 3.9 |
simplejson | 10.43 | 42.13 | 59.1 |
json | 4.16 | 33.42 | 46.9 |
小总结
orjson 是一个非常有趣且功能强大的 JSON 库,它将高性能与广泛的数据类型支持结合在一起,为 Python 开发者提供了一个优秀的序列化工具。
无论是在开发高性能应用还是处理复杂数据结构时,orjson 都能大幅提升工作效率和性能。如果你还在使用标准库或其他 JSON 库,尝试一下 orjson,它可能会给你带来意想不到的惊喜。
原文始发于微信公众号(木木夕咦):orjson,一个有趣的python库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/236275.html