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

浅谈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方法,只是这样可以少写一点代码。

来源: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
  • asp之家 网络编程 m.aspxhome.com