Что можно использовать вместо аст модуля? - PullRequest
0 голосов
/ 21 декабря 2010

В моем проекте я оцениваю данные 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 голосов
/ 21 декабря 2010

Не используйте ast.literal_eval, это не то, что нужно для работы.Используйте simplejson.load(r) (или стандартный модуль json вместо simplejson в новых версиях).

ast.literal_eval предназначен для оценки литералов Python.JSON в основном такой же, но не полностью (true / false / null вместо True / False / None).

...