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

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

20210608161620141.png

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

目录
相关文章
|
13天前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
116 64
|
5天前
|
存储 测试技术 Python
Python 中别再用 ‘+‘ 拼接字符串了!
通过选择合适的字符串拼接方法,可以显著提升 Python 代码的效率和可读性。在实际开发中,根据具体需求和场景选择最佳的方法,避免不必要的性能损失。
26 5
|
9天前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
17 7
|
15天前
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
27 6
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
58 7
|
2月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
50 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
18天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
Python
12.1、python内置函数——eval、exec、compile
内置函数——eval、exec、compile eval() 将字符串类型的代码执行并返回结果 print(eval('1+2+3+4')) exec()将自字符串类型的代码执行 print(exec("1+2+3+4"))exec("print('hello,world')") code = ''' import os print(os.
1119 0