0
votes

Itérer Json en python

Je tente de tirer des données d'une API qui renvoie des données en tant qu'objet JSON. J'ai l'appel d'API qui renvoie des données qui ressemblent à ceci (raccourci ici pour le bien de Brevity) xxx

à l'aide de Python, j'essaie de boucler les données et de renvoyer toutes les valeurs comme: < / p> xxx

Cependant, chaque fois que j'essaie de l'exécuter, je reçois xxx

pourquoi ne puis-je pas utiliser les indices de la liste comme str? Il existe de nombreux exemples qui utilisent str.


1 commentaires

Un dictionnaire peut être accédé avec des chaînes comme des clés, mais une liste doit utiliser des entiers ou des tranches (E.G.: Certain_list [3: -1] ).


5 Réponses :


4
votes

Les "factures" dans le JSON sont une liste d'objets (par exemple "factures": [ - le support d'ouverture est carré qui implique une liste).

Vous devez utiliser un entier Pour accéder à un élément d'une liste, vous pouvez donc dire; xxx

pour accéder à la première facture, par exemple.

Toutefois, votre code est un peu confus dans votre boucle, la variable facture contiendra les informations pour chaque facture afin de pouvoir faire référence aux clés directement, par ex. Pour boucler sur les factures dans le premier résultat xxx

Les variables "nom" et "type" ne contiendront que les détails de chaque facture pendant le bloc de boucle.

Vous pouvez nichez des boucles pour boucler à travers tous les résultats xxx


1 commentaires

Parfait! La seule modification que je devais faire était d'ajouter un deux points à la pour dans le deuxième exemple sur la façon de nichement des boucles.



0
votes

facture est un objet JSON qui n'a pas résultats ou factures comme index de chaîne. Essayez ce qui suit: xxx


1 commentaires

Ce n'est pas vraiment un objet JSON, c'est un dictionnaire python qui agit beaucoup de la même manière qu'un objet JSON. Charges désère la chaîne JSON dans un dictionnaire Python.



0
votes

dans les données JSON résultats est une liste de dict. Donc, d'abord itérer sur les résultats. Ensuite, pour chaque résultat, intégrez les factures pour récupérer le nom et le type de facture. xxx


0 commentaires

0
votes

Aussi dans votre code, nom est égal à: xxx


0 commentaires

0
votes

Si vous recevez une réponse JSON, veuillez trouver ci-dessous deux méthodes de l'analyse.

Méthode 1: Ceci est quelque chose que vous essayez P>

for bill_dict in resp.get("results", []):  # returns None if "results" field is not found
    for bill in bill_dict.get('bills', []): 
        bill_name = bill.get('title')  # None is assigned to bill_name if key 'title' is not found
        bill_type = bill.get('bill_type')  # None is assigned to bill_name if key 'title' is not found error OR you can assign default value if key is not found Ex: bill.get('bill_type', 'bill type unavailable')

print(bill_name, bill_type)


2 commentaires

Pour la méthode 2: devrait être respechage ("résultats", []) et bill_dict.get ("factures", []) car s'il n'y a pas de résultats ou de factures, vous n'obtiendrez aucun objet non constitué.


Vous êtes absolument correct que j'avais ajouté dans mon code de code, mais vous avez manqué d'ajouter ce point ici, merci d'avoir souligné.