orjson,一个有趣的python库

orjson,一个有趣的python库

大家好,我是木木。

今天给大家分享一个有趣的 python 库,orjson

orjson 是一个专注于速度和灵活性的 JSON 库,提供了快速的序列化和反序列化 JSON 数据的功能。

与标准的 Python json 库相比,orjson 大大提升了处理速度,特别是在处理大型数据集或高频率调用场景中表现出色。对于需要高性能 JSON 处理的开发者来说,orjson 提供了一个既简单又高效的解决方案。

orjson,一个有趣的python库
图源网络

特点精简

  1. 高性能
    1. orjson 的性能在多个基准测试中均优于其他 Python JSON 库,特别是在序列化大型数据集时。
  2. 类型支持广泛
    1. 自动处理多种 Python 标准类型,包括 datetime、UUID 等,以及对 numpy 数组的支持,减少了在序列化前手动转换数据类型的需求。
  3. 兼容性强
    1. orjson 生成的 JSON 字符串完全符合 RFC 8259 标准,确保了与其他系统或语言处理 JSON 数据时的兼容性。

最佳实践

安装方法

安装 orjson 也很简单,可以通过 pip 直接安装:

pip install orjson

功能演示

快速序列化

使用 orjson 序列化、指定选项和反序列化的示例:。

>>> import orjson, datetime, numpy
>>> data = {
    "type""job",
    "created_at": datetime.datetime(197011),
    "status""🆗",
    "payload": numpy.array([[12], [34]]),
}
>>> 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': [[12], [34]]}
高效反序列化

使用 orjson 将 JSON 字符串高效地反序列化为 Python 对象。

>>> import orjson
>>> orjson.dumps({"a""b""c": {"d"True}, "e": [12]})
b'{"a":"b","c":{"d":true},"e":[1,2]}'
>>> orjson.dumps(
    {"a""b""c": {"d"True}, "e": [12]},
    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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!