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

 更新时间:2021年10月20日 09:33:32   作者:曲鸟  
本文主要介绍了Python处理json字符串为什么不建议使用eval(),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、前言

最近发现一些小伙伴使用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方法,只是这样可以少写一点代码。

到此这篇关于浅谈Python处理json字符串为什么不建议使用eval()的文章就介绍到这了,更多相关Python处理json字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pyv8学习python和javascript变量进行交互

    pyv8学习python和javascript变量进行交互

    这篇文章主要介绍了pyv8学习python和javascript变量进行交互,python取得javascript里面的值、javascript取得python里面的值、python和javascript里面的函数交互
    2013-12-12
  • Python-Selenium自动化爬虫

    Python-Selenium自动化爬虫

    本文介绍Python-Selenium自动化爬虫,Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,xiamian neir 需要的朋友可以参考下
    2022-01-01
  • python数据结构之链表详解

    python数据结构之链表详解

    这篇文章主要为大家详细介绍了python数据结构之链表的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • python 文件查找及内容匹配方法

    python 文件查找及内容匹配方法

    今天小编就为大家分享一篇python 文件查找及内容匹配方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python设计tcp数据包协议类的例子

    python设计tcp数据包协议类的例子

    今天小编就为大家分享一篇python设计tcp数据包协议类的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python实现简单加密解密机制

    python实现简单加密解密机制

    这篇文章主要为大家详细介绍了python实现简单加密解密机制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • python得到单词模式的示例

    python得到单词模式的示例

    今天小编就为大家分享一篇python得到单词模式的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Django 简单实现分页与搜索功能的示例代码

    Django 简单实现分页与搜索功能的示例代码

    这篇文章主要介绍了Django 简单实现分页与搜索功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python类定义的讲解

    python类定义的讲解

    python是怎么定义类的,看了下面的文章大家就会了,不用多说,开始学习。
    2013-11-11
  • 利用Python实现端口扫描器的全过程

    利用Python实现端口扫描器的全过程

    这篇文章主要给大家介绍了关于如何利用Python实现端口扫描器的相关资料,用来检测目标服务器上有哪些端口开放,本文适用于有 Python和计算机网络语言基础的用户,需要的朋友可以参考下
    2021-08-08

最新评论