可以用什么替代ast模块?
在我的项目中,我需要处理一些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 个回答
3
不要使用 ast.literal_eval
,这根本不是解决这个问题的正确方法。应该使用 simplejson.load(r)
(或者在新版本中用标准的 json 模块代替 simplejson)。
ast.literal_eval 是用来处理 Python 中的字面量的。虽然 JSON 和 Python 的字面量大部分是相似的,但并不完全一样(比如 JSON 用 true/false/null,而 Python 用 True/False/None)。