python中eval,和json.loads的区别

一.最近在写接口测试脚本时,发现当读取Excel用例时,有时候要用eval,有时候又要用json.loads,不知道区别,只能换一下就可以用了,不知道其中的原理,特地百度了下。于是就记录了下,以便后续查看。

1、json.loads与eval都能将s转成python中的对象,json.loads将json中的字符串转成unicode(types.UnicodeType),eval转成了str(types.StringType)。

2、json不认单引号,json中的字符串需要用双引号包起来

对于第一点,我的理解是后者就变成了字符串类型,前者不太懂,希望看到我这篇博客的大佬解释下

>>> import json  
>>> s = '{"one":1,"two":2}'  
>>> json.loads(s)  
{u'two': 2, u'one': 1}  
>>> eval(s)  
{'two': 2, 'one': 1}