orjson常用方法有哪些,用处是什么
Admin 2022-08-12 群英技术资讯 748 次浏览
大家好,我们在日常使用 Python 的过程中,经常会使用 json 格式存储一些数据,尤其是在 web 开发中。而 Python 原生的 json 库性能差、功能少,只能堪堪应对简单轻量的 json 数据存储转换需求。
而本文我要给大家介绍的第三方 json 库 orjson ,在公开的各项基准性能测试中,以数倍至数十倍的性能优势碾压 json 、 ujson 、 rapidjson 、 simplejson 等其他 Python 库,且具有诸多额外功能,下面我们就来领略其常用方法吧~
orjson 支持 3.7 到 3.10 所有版本64位的 Python ,本文演示对应的 orjson 的版本为 3.7.0 ,直接使用 pip install -U orjson 即可完成安装。下面我们来对 orjson 中的常用方法进行演示:
与原生 json 库类似,我们可以使用 orjson.dumps() 将 Python 对象序列化为 JSON 数据,注意,略有不同的是, orjson 序列化的结果并不是 str 型而是 bytes 型,在下面的例子中,我们对包含一千万个简单字典元素的列表进行序列化, orjson 与 json 库的耗时比较如下:
将 JSON 数据转换为 Python 对象的过程我们称之为反序列化,使用 orjson.loads()
进行操作,可接受 bytes 、 str 型等常见类型,在前面例子的基础上我们添加反序列化的例子:
在 orjson 的序列化操作中,可以通过参数 option 来配置诸多额外功能,常用的有:
通过配置 option=orjson.OPT_INDENT_2
,我们可以为序列化后的 JSON 结果添加2个空格的缩进美化效果,从而弥补其没有参数 indent 的不足:
orjson.dumps()
可以直接将 Python 中 datetime 、 time 等标准库中的日期时间对象转换成相应的字符串,这是原生 json 库做不到的,而通过配置 option=orjson.OPT_OMIT_MICROSECONDS
,可以将转换结果后缀的毫秒部分省略掉:
当需要序列化的对象存在非数值型键时, orjson 默认会抛出 TypeError 错误,这时需要配置 option=orjson.OPT_NON_STR_KEYS
来强制将这些键转换为字符型:
OPT_SERIALIZE_NUMPY
orjson 的一大重要特性是其可以将包含 numpy 中数据结构对象的复杂对象,兼容性地转换为 JSON 中的数组,配合 option=orjson.OPT_SERIALIZE_NUMPY
即可:
除了可以自动序列化 numpy 对象外, orjson 还支持对 UUID 对象进行转换,在 orjson 3.0
之前的版本中,需要配合 option=orjson.OPT_SERIALIZE_UUID
,而本文演示的 3.X
版本则无需额外配置参数:
通过配合参数 option=orjson.OPT_SORT_KEYS
,可以对序列化后的结果自动按照键进行排序:
当你的序列化操作需要涉及多种 option 功能时,则可以使用 | 运算符来组合多个 option 参数即可:
当你需要序列化的对象中涉及到 dataclass 自定义数据结构时,可以配合 orjson.OPT_PASSTHROUGH_DATACLASS
,再通过对 default 参数传入自定义处理函数,来实现更为自由的数据转换逻辑,譬如下面简单的例子中,我们可以利用此特性进行原始数据的脱敏操作:
类似的,针对 datetime 类型数据,我们同样可以配合 OPT_PASSTHROUGH_DATETIME
和自定义 default 函数实现日期自定义格式化转换:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了利用Python制作一个简单的知识竞赛小游戏,可以实现回答问题功能,文中的示例代码介绍详细,感兴趣的同学快跟随小编一起学习吧
python中字符串是不可变的,所以无法直接删除字符串之间的特定字符,下面这篇文章主要给大家介绍了关于使用Python去除字符串中某个字符的多种实现方式比较的相关资料,需要的朋友可以参考下
这篇文章主要介绍了Python matplotlib绘图建立画布及坐标系,建立画布 figsize,它用width和height来控制画布的宽和高,下面来一起俩姐更多内容吧
目录如何查找列表中元素的位置问题描述输入格式python中list()查找方法list五种查找方式函数EXA如何查找列表中元素的位置问题描述给出一个包含n个整数的数列,问整数a在数列
1、什么是描述符? python描述符是一个“绑定行为”的对象属性,在描述符协议中,它可以通过方法重写属性的访问。这些方法有__get__(),__set__(),和__delete__()。如果这些方法中的任何一个被定义在一个对象中,这个对象就是一个描述符。以上为官方定义,纯粹为了装逼使用,一般人看这些定义都有一种问候祖先的冲动!没关系,看完本文,你就会理解什么叫
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008