Ce qui peut être utilisé à la place du module ast?
-
12-10-2019 - |
Question
Dans mon projet, j'évaluer un ensemble de données JSON à l'information d'extrait. Le code est le suivant:
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])
Comment puis-je changer cela est compatible Python 2.4?
Exemple de mon 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' (...)
La solution
Ne pas utiliser ast.literal_eval
, c'est la mauvaise chose pour le travail de toute façon. Utilisez simplejson.load(r)
(ou le module standard JSON au lieu de simplejson dans les versions plus récentes).
ast.literal_eval est conçu pour évaluer littéraux Python. JSON est la plupart du temps la même chose, mais pas tout à fait (vrai / faux / null au lieu de Vrai / Faux / Aucune).