Python处理json字符串为什么不建议使用eval()

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python处理json字符串为什么不建议使用eval()脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、前言

最近发现一些小伙伴使用eval来处理json,而且为了能够将json成功转为字典而不报错,还写了如下的赋值操作 (因为json中空为null,假为false,真为true与Python的表达不一样,如果不进行下面代码的赋值,用eval转换就会报错)F1a;

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字符串转换,它们的耗时对比如下:

Python处理json字符串为什么不建议使用eval()


如果没有并发执行的情况下,使用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方法,只是这样可以少写一点代码。


脚本宝典总结

以上是脚本宝典为你收集整理的Python处理json字符串为什么不建议使用eval()全部内容,希望文章能够帮你解决Python处理json字符串为什么不建议使用eval()所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。