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) à l'aide de Python, j'essaie de boucler les données et de renvoyer toutes les valeurs comme: < / p> Cependant, chaque fois que j'essaie de l'exécuter, je reçois p> pourquoi ne puis-je pas utiliser les indices de la liste comme str? Il existe de nombreux exemples qui utilisent str. p> p>
5 Réponses :
Les "factures" dans le JSON sont une liste d'objets (par exemple Vous devez utiliser un entier Pour accéder à un élément d'une liste, vous pouvez donc dire; p> pour accéder à la première facture, par exemple. P> Toutefois, votre code est un peu confus dans votre boucle, la variable Les variables "nom" et "type" ne contiendront que les détails de chaque facture pendant le bloc de boucle. P> Vous pouvez nichez des boucles pour boucler à travers tous les résultats p> "factures": [ code> - le support d'ouverture est carré qui implique une liste).
facture code> 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 P>
Parfait! La seule modification que je devais faire était d'ajouter un deux points à la pour code> dans le deuxième exemple sur la façon de nichement des boucles.
facture code> est un objet JSON qui n'a pas
résultats code> ou
factures code> comme index de chaîne. Essayez ce qui suit:
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 Code> désère la chaîne JSON dans un dictionnaire Python.
dans les données JSON résultats code> 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.
Aussi dans votre code, nom est égal à:
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)
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é.
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] code>).