广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python处理json字符串(使用json.loads而不是eval())
  • 942
分享到

python处理json字符串(使用json.loads而不是eval())

2024-04-02 19:04:59 942人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

eval 跟JSON.loads 是不一样的函数,是有实现不一样功能的地方,但是在某些地方它们两个函数的功能是一样的,在这个时候如果对执行效率有一定要求的话,建议不要用eval,改用

eval 跟JSON.loads 是不一样的函数,是有实现不一样功能的地方,但是在某些地方它们两个函数的功能是一样的,在这个时候如果对执行效率有一定要求的话,建议不要用eval,改用json.loads会有惊喜哦。

一、eval

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

二、json.loads

json.loads 用于解码 JSON 数据。该函数返回 python 字段的数据类型。

json.loads与eval都能将json字符串转成Python中的对象,但在实际工作中发现,在处理json字符串时,json.loads的性能远超eval

三、效率对比

下列代码是通过json.loads和eval方式将103KB大小的json字符串转python字典的耗时对比:


   old_data = Redis_con.get('api-case-version:' + str(version_id))
            if old_data:
                l_start = datetime.datetime.now()
                load_dict = json.loads(old_data)
                l_end = datetime.datetime.now()
                print('json.loads', l_end - l_start)
                e_start = datetime.datetime.now()
                old_dict = eval(old_data)
                e_end = datetime.datetime.now()
                print('eval', e_end - e_start)

耗时对比

耗时相差了13倍多。
在平时的场景下很难遇到处理大JSON字符串的情况,所以使用loads或eval差别可以忽略不计。但在我目前的项目中,是需要取swagger上的所有接口做对比,JSON字符串的大小经常达到1M+,这时使用loads和eval就有了较为明显的性能差异了。

但是使用json.loads有个地方需要注意一下,json.loads对列表没什么要求,但是对字典的格式有一定的要求,key值要保持是双引号的key,单引号的key或者int类型都会报错。

报错内容如下

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

因此字典的话建议储存格式就是要用json.dumps转换成标准的json格式然后再储存成字符串。

另外如果是其他序列化格式的,对json的速度不满意的可以考虑用一下msgpack,使用方式也很简单,但是也是对格式有一定的要求,有很多博主进行过测试,都是比json快几倍以上。这里就不详讲了。

到此这篇关于python处理json字符串(使用json.loads而不是eval())的文章就介绍到这了,更多相关python处理json字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python处理json字符串(使用json.loads而不是eval())

本文链接: https://www.lsjlt.com/news/136308.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作