2016-01-27 5 views
-1

Je déclenche un appel API et la réponse du serveur est au format JSON. la réponse ressemble à ceci:Comment s'affirmer en JSON avec python

{ 
"status": 0, 
"not_passed": 1, 
"why": [ 
    { 
     "code": 229, 
     "reason": "some reason", 
    } 
] 
} 

J'ai besoin d'affirmer deux choses. Statut et de la raison statut BOF J'utilise:

r = requests.get_simple(url=Server.MY_SERVER, params=p) 
data = json.loads(r.content) 
assert data["status"] == 0 

mais il ne fonctionne pas pour la « raison », peut-être parce que la « raison » est plus profond dans la structure imbriquée. Comment puis-je réparer celui-ci?

+2

Montrez-nous le code où vous tentez d'accéder à "raison", et montrez l'erreur qu'il produit, s'il y a une erreur. – Kevin

Répondre

2
assert data['why'][0]['reason'] == 'something' 

Bien sûr, cela suppose que data['why'] existe, est une liste, et contient un dict comme son premier élément.

+0

donc je change le 0 avec 1 si l'élément est le second? –

+0

@GeorgeG. Oui c'est vrai. –