浅谈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字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python实现俄罗斯方块躲闪小游戏

    基于Python实现俄罗斯方块躲闪小游戏

    这篇文章主要为大家详细介绍了如何基于Python实现有趣的俄罗斯方块躲闪小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-04-04
  • 详解python os.walk()方法的使用

    详解python os.walk()方法的使用

    今天给大家带来的是关于Python的相关知识,文章围绕python os.walk()方法的使用展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • unittest+coverage单元测试代码覆盖操作实例详解

    unittest+coverage单元测试代码覆盖操作实例详解

    这篇文章主要为大家详细介绍了unittest+coverage单元测试代码覆盖操作的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python判断Abundant Number的方法

    Python判断Abundant Number的方法

    这篇文章主要介绍了Python判断Abundant Number的方法,实例分析了Python针对盈数的判断技巧,需要的朋友可以参考下
    2015-06-06
  • Python 虚拟机字典dict内存优化方法解析

    Python 虚拟机字典dict内存优化方法解析

    这篇文章主要为大家介绍了Python 虚拟机字典dict内存优化方法解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python轻松实现批量邮件自动化详解

    Python轻松实现批量邮件自动化详解

    在日常工作和生活中,我们经常需要发送邮件,手动发送邮件不仅繁琐,而且容易出错,下面我们就来看看如何使用Python实现批量邮件自动化操作吧
    2025-02-02
  • Python实现身份证号码验证的示例代码

    Python实现身份证号码验证的示例代码

    本文主要介绍了Python实现身份证号码验证的示例代码,当用户输入身份证号,按下检查按钮,即可判断身份证号是否正确,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python类的定义继承调用比较方法技巧

    Python类的定义继承调用比较方法技巧

    这篇文章主要介绍了Python类的定义继承调用比较方法技巧,文章首先通过类的约束展开详情围绕主题介绍相关内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Pandas分组函数groupby的用法详解

    Pandas分组函数groupby的用法详解

    在数据分析时,经常需要将数据分成不同的群组,pandas中的groupby()函数可以完美地完成各种分组操作,本文就来介绍一下Pandas分组函数groupby的用法,感兴趣的可以了解一下
    2024-01-01
  • 基于python3实现socket文件传输和校验

    基于python3实现socket文件传输和校验

    这篇文章主要为大家详细介绍了基于python3实现socket文件传输和校验,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论