当前位置: 首页 > 后端技术 > Python

Python中最值得学习的第三方JSON库

时间:2023-03-25 19:47:05 Python

1介绍在我们日常使用Python的过程中,经常会使用json格式来存储一些数据,尤其是在web开发中。但是Python原生的json库性能差,功能少,只能应付简单轻量的json数据存储转换需求。本篇要给大家介绍的第三方json库orjson,碾压json、ujson、rapidjson、simplejson等其他Python库,附加了很多功能,一起来看看它的常用方法吧~2orjson常用方法orjson支持64位Python从3.7到3.10的所有版本。本文演示对应的orjson版本为3.7.0,直接使用pipinstall-Uorjson即可完成安装。下面演示一下orjson中的常用方法:2.1序列化类似于原生的json库,我们可以使用orjson.dumps()将Python对象序列化为JSON数据。注意,稍有不同的是orjson序列化的结果不是str类型而是bytes类型。在下面的示例中,我们序列化了一个包含1000万个简单字典元素的列表。orjson和json库的耗时对比如下:2.2反序列化转换JSON数据创建Python对象的过程称为反序列化。使用orjson.loads()进行操作。可以接受常见类型,例如bytes和str。在前面例子的基础上,我们再增加一个反序列化的例子:2.3丰富的选项Options在orjson的序列化操作中,可以通过参数option来配置很多额外的功能。常用的有:OPT_INDENT_2通过配置option=orjson.OPT_INDENT_2,我们可以给序列化的JSON结果增加2个空格的缩进美化效果,弥补其参数indent的不足:OPT_OMIT_MICROSECONDSorjson.dumps()可以直接转换datetimePython中的datetime、time等标准库中的对象转化为对应的字符串,这对于原生的json库是做不到的。配置option=orjson.OPT_OMIT_MICROSECONDS,可以省略转换结果后缀的毫秒部分:OPT_NON_STR_KEYS当待序列化的对象有非数字key时,orjson默认会抛出TypeError错误,需要配置option=orjson.OPT_NON_STR_KEYS强制将这些键转换为字符类型:OPT_SERIALIZE_NUMPYorjson的一个重要特性是可以将numpy中包含数据结构对象的复杂对象以兼容的方式转换为JSON中的数组,与option=orjson.OPT_SERIALIZE_NUMPY:OPT_SERIALIZE_UUID除外除了自动序列化numpy对象,orjson还支持UUID对象的转换。orjson3.0之前的版本需要option=orjson.OPT_SERIALIZE_UUID,而本文演示的3.X版本不需要额外配置参数:OPT_SORT_KEYS通过配合参数option=orjson.OPT_SORT_KEYS可以将序列化后的结果自动按照key进行排序:combinemultipleoptions当你的序列化操作需要涉及到多个option函数时,可以使用|operatortocombinemultipleoptionparameters:2.4为dataclass和datetime添加自定义处理策略当需要序列化涉及dataclass自定义数据结构的对象时,可以配合orjson.OPT_PASSTHROUGH_DATACLASS,然后将自定义处理函数传入默认参数即可实现更自由的数据转换逻辑,比如下面这个简单的例子,我们可以利用这个特性对原始数据进行脱敏处理:同样,对于datetime类型的数据,我们也可以使用OPT_PASSTHROUGH_DATETIME和自定义默认函数来实现日期自定义格式转换:orjson更多功能请前往官方仓库https://github.com/ijl/orjson了解更多~以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还可以领取海量学习资料,涵盖Python电子书、教程、数据库编程、Django、爬虫、云计算等或者去编程学习网了解更多编程技术知识。