浅谈Python处理json字符串为什么不建议使用eval()
作者:曲鸟 发布时间:2023-08-17 06:56:34
标签:Python,json字符串
目录
一、前言
二、Json.loads与eval 性能对比
1. eval
2. json.loads
一、前言
最近发现一些小伙伴使用eval来处理json,而且为了能够将json成功转为字典而不报错,还写了如下的赋值操作 (因为json中空为null,假为false,真为true与Python的表达不一样,如果不进行下面代码的赋值,用eval转换就会报错):
null=None
false=False
true=True
其实Python的标准库中有处理json的库,就叫json,比如要把json字符串转为字典的话只需要使用json.loads这个方法就可以了;另外,eval处理json的性能也是远远比不上json库的。
二、Json.loads与eval 性能对比
现在我们创建一个长度为100万的json字符串数据:
test_data = json.dumps({str(i): i for i in range(1000000)})
然后分别通过eval,json.loads来处理,他们的时间对比:
1. eval
执行时间为: 0:00:03.730528
2. json.loads
执行时间为: 0:00:00.466475
执行时间相差了8倍多!
另外在自己的项目中,刚好有需求涉及到100KB+的json字符串转换,它们的耗时对比如下:
如果没有并发执行的情况下,使用json.loads或eval来转换花费的时间差距不是能够感知出来的,但涉及并发执行那就会变得很明显。所以快把你代码中处理json的eval改为json.loads吧!
如果做请求使用的是requests库的话,可以直接使用它的json()方法,例如:
res=requests.get(url='http://qqlykm.cn/api/t/url.php?url=quniao.blog.csdn.net')
res_dict=res.json()
查看源码发现它也是调用python标准库中的json.loads方法,只是这样可以少写一点代码。
来源:https://blog.csdn.net/momoda118/article/details/120764976


猜你喜欢
- 1 自动化测试自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为
- 看代码吧~如果两个dataloader的长度不一样,那就加个:from itertools import cycle仅使用zip,迭代器将在
- 一、 通过runtime包进行多核设置1.NumCPU()获取当前系统的cpu核数2.GOMAXPROCS设置当前程序运行时占用的cpu核数
- 背景编写代码过程中, 通常有主协程和多个子协程进行协作的过程,比如通过 WaitGroup 可以实现当所有子协程完成之后, 主协程再继续执行
- 分支结构的应用场景迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种结构的代码我们称之为顺序结构。然而仅有顺序结构并不能解决所
- MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下
- flatten是numpy.ndarray.flatten的一个函数,其官方文档是这样描述的:ndarray.flatten(order=&
- 问题1:如果日期中有千年以前的情况(没法用格式化函数),如('2010-11-23','1989-3-7',
- 四则运算表达式求值思路说明使用双栈来实现——存放数值的栈 nums 与存放运算符
- 共4个页面:form.asp; chk.asp; num.asp; count.asp,得到一个随即数字。加密解密后成成XBM图片,利用 s
- 就MySQL而言,大多数程序员都不太了解其设计背景,因此当他们尝试创建自己的数据库时,会留下很多漏洞。要想为MySQL数据库进行合适的配置,
- php中-> 、=>、::、$this->四种符号在代码中很常见,使用很广泛。这篇文章主要介绍了php中-> 、=&
- 最近因项目需要用ACCESS做数据库开发WEB项目 看论坛上还许多人问及ACCESS被注入的安全问题 许多人解决的方法仍然是用Replace
- 本文实例讲述了jQuery自适应轮播图插件Swiper用法。分享给大家供大家参考,具体如下:运行效果截图如下:示例代码如下:<!DOC
- 本文实例讲述了Python中xml和json格式相互转换操作。分享给大家供大家参考,具体如下:Python中xml和json格式是可以互转的
- 本文实例讲述了python登录豆瓣并发帖的方法。分享给大家供大家参考。具体如下:这里涉及urllib、urllib2及cookielib常用
- 我就废话不多说了,大家还是看代码吧! import PyPDF2 import repdf_file = open('xxx.pdf
- 阅读上一篇:FrontPage XP设计教程3——网页的布局 FrontPage XP可以保证用户设计网页与不同的浏览器兼容,它所提供的样式
- 后台从数据库取出时间,JSON格式化后再传到gridpanel,这时时间变成了:/Date(32331121223)/这样的格式,那么这时需
- Python 10进制数与16进制数相互转换10进制转为16进制在Python中,我们可以使用内置的hex()函数将10进制数转换为16进制