什么可以用来代替ast模块?

时间:2010-12-21 15:29:43

标签: python json abstract-syntax-tree evaluate python-2.4

在我的项目中,我评估了一个json数据来提取信息。代码如下:

conn = httplib.HTTPConnection(host)
conn.request("GET", "/done_json.php")
r = conn.getresponse()
data = r.read()
tmp = ast.literal_eval(data)
list = []
for a in tmp.keys():
    list.append(tmp[a])

如何将其更改为兼容Python 2.4?


我的json示例:

{'key_64': {'size3': 'CNDCRNCDF3FY09XL7UUBCBCPTYE4H7YBG1I5MILNBW172BMHVI.png', 'id': 'CNDCRNCDF3FY09XL7UUBCBCPTYE4H7YBG1I5MILNBW172BMHVI', 'size2': '', 'size1': 'http://dev.geco.com/site/2/CNDCRNCDF3FY09XL7UUBCBCPTYE4H7YBG1I5MILNBW172BMHVI.png'}, 'key_65': {'size3': 'CNDCRNEHLW2XFFCC90PDE77EEJHJF6RC3R8PEVUACB0C34H330.png', 'id': 'CNDCRNEHLW2XFFCC90PDE77EEJHJF6RC3R8PEVUACB0C34H330' (...)

1 个答案:

答案 0 :(得分:3)

不要使用ast.literal_eval,这对工作来说是错误的。使用simplejson.load(r)(或更新版本中的标准json模块而不是simplejson)。

ast.literal_eval旨在评估Python文字。 JSON大致相同,但不完全相同(true / false / null而不是True / False / None)。