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