python中json.loads与eval区别

本文探讨了Python中json.loads和eval函数在转换JSON字符串到对象时的区别。尽管两者都可用于数据转换,但json.loads更适用于JSON数据,它将字符串转化为Unicode,而eval则能执行字符串表达式。值得注意的是,JSON标准要求使用双引号,而eval对此无限制。
摘要由CSDN通过智能技术生成

eval()与json.loads()都是将字json符串转换成json对象

对于普通的数据类型,json.loads()和eval()都可以使用:

import json
str = '{"a":1,"b":2}'
dir = eval(str)
print(type(dir),dir)

dir1 = json.loads(str)
print(type(dir1),dir1)
>>><class 'dict'> {'a': 1, 'b': 2}
>>><class 'dict'> {'a': 1, 'b': 2}

在遇到特殊类型的时候,eval就不管用了。eval通常用来执行一个字符串表达式,并返回表达式的值。比如:

str = '{"a":true,"b":2}'
dir = eval(str)
print(type(dir),dir)
报错:
Traceback (most recent call last):
  File "D:/dongjieware/pycharm/api_test11-6/temp/temp1.py", line 3, in <module>
    dir = eval(str)
  File "<string>", line 1, in <module>
NameError: name 'true' is not defined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值