浅谈Python处理json字符串为什么不建议使用eval()
作者:曲鸟 时间:2023-08-17 06:56:34
目录
一、前言
二、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
标签:Python,json字符串
0
投稿
猜你喜欢
Centos部署django服务nginx+uwsgi的方法
2022-03-18 07:47:26
Dreamweaver制作网页11种技巧详解
2007-11-05 14:00:00
有关简洁网页设计需知的6点技巧
2012-04-25 20:55:01
python实现整数的二进制循环移位
2022-09-08 23:11:39
dl.dt.dd.ul.li.ol区别及应用
2008-05-24 09:42:00
node.js的事件机制
2024-05-03 15:58:31
基于Python 装饰器装饰类中的方法实例
2023-10-11 04:10:22
如何用Python Beautiful Soup解析HTML内容
2021-04-24 10:20:00
如何使用Typora+MinIO+Python代码打造舒适协作环境
2023-11-12 15:12:10
Python+Tkinter绘制一个数字时钟
2021-08-06 05:24:05
Python实现的十进制小数与二进制小数相互转换功能
2022-02-17 16:24:39
如何解决django-celery启动后迅速关闭
2022-02-07 10:50:25
vue2.0项目集成Cesium的实现方法
2024-06-07 15:22:22
Python文件处理与垃圾回收机制详情
2023-06-14 16:36:17
如何恢复SQL Server 2000损坏的数据库文件
2024-01-16 21:02:54
Python聚类算法之DBSACN实例分析
2021-03-26 00:11:10
返回SQL执行时间的存储过程
2024-01-16 15:22:06
新浪微博文字渐隐效果
2011-04-29 12:33:00
IE下修改<p>标签的innerHTML出错
2007-11-11 10:12:00
解析SQL Server中datetimeset转换datetime类型问题
2024-01-15 13:22:34