orjson:功能丰富的高性能 Python JSON 库

网站建设4年前发布
25 0 0

2023030612113524e4dc25333302de5fb38248c984a55e67bbcc527,首先我们先来了解下orjson的优缺点:,输出为:b'{"id":1,"name":"a","members":[{"id":1,"active":true},{"id":2,"active":false}]}',orjson序列化和反序列化双精度浮点数,不会损失精度。当序列化NaN,Infinity,-Infinity时,会返回null。,orjson可以对整数进行序列化和反序列化。但web浏览器只支持53-bit的整数,当值超过53-bit时会产生JSONEncodeError。,序列化numpy数据需要设置option=orjson.OPT_SERIALIZE_NUMPY。,orjson只处理UTF-8格式的字符串,如果给orjson.dumps()方法传入一个UTF-16的字符串,会产生报错。,orjson可以把uuid.UUID实例序列化为RFC 4122格式。,orjson支持3.7-3.10所有版本64位的Python,注意32位的 Python 无法使用orjson!本文将在3.8.2环境下使用orjson,使用以下命令安装orjson:,我们首先使用orjson序列化一个字典,随后再将结果反序列化:,输出结果为:,dumps( )可以将Python对象序列化为JSON数据,但与原生JSON库不同的是,orjson.dumps( )得到的JSON数据是bytes类型,少了将bytes转换为str的操作,因此,速度会大大加快。下面我们详细介绍下dumps( ):,(1) default 参数,我们先用dumps( )序列化一个Decimal类型的数据:,会得到无法序列化Decimal类型的错误:,这个时候,我们可以创建一个函数,将其作为default参数传递,来对Decimal进行序列化:,结果为:,(2) option参数,结果为:b'[]\n',输出为:b'"2022-06-12T00:00:00"',输出的结果中就没有用户密码了:b'{"id":"3b1","name":"asd"}',输出为:b'{"创建时间":"Thu, 01 Jan 1970 00:00:00 GMT"}',输出为:b'{"a":3,"b":1,"c":2}',loads()可以将JSON数据转换为Python对象,该方法支持多种数据类型,包括:bytes, bytearray, memoryview, 和 str。,我们用orjson, ujson, simplejson, json分别对一个列表进行序列化,该列表中有1000000个元素:,每个库的耗时如下表所示:,由此可以看出,orjson的效率更高。,在日常的开发工作中,我们经常需要将一些数据存储为JSON格式,最常用的就是Python原生的JSON库,但是该库速度较慢, 当数据量过大时,使用不便。而orjson的功能强大,它支持多种类型的数据序列化,开发者还可以根据需要定制化输出, 与其他第三方JSON库相比,效率更高。

© 版权声明

相关文章