Comment parsingr datatables json de la réponse de l'API en Python?

J'essaye d'écrire un script qui va tirer le statut actuel de nos outils de surveillance et les mettre à jour dans la database MSSQL. Quand j'appelle l'API, j'obtiens une réponse ÉNORME en format json.

{ "hoststatuslist": { "recordcount": "1084", "hoststatus": [ { "@atsortingbutes": { "id": "XXXX" }, "host_id": "XXX", "name": "XXXXX", "display_name": "XXXXXXX", "address": "XXXXXX", "alias": "XXXXXX", "status_text": "XXXXXXXXXXXXXXXXXXXXXXX", etc. }, { "@atsortingbutes": { "id": "XXXX" }, "host_id": "XXX", "name": "XXXXX", "display_name": "XXXXXXX", "address": "XXXXXX", "alias": "XXXXXX", "status_text": "XXXXXXXXXXXXXXXXXXXXXXX", etc. }, etc. ] } } 

Comme vous pouvez le voir, je reçois plus de 1000 objects hôtes avec des attributes. Je veux parsingr la réponse pour pouvoir append / mettre à jour MSSQL. J'essaye d'parsingr les id_hôte, name et status_text pour chaque hôte.

J'ai essayé de faire quelque chose comme ce Python – Parsing JSON Data Set mais je continue d'get des erreurs que l'object de réponse n'a aucun atsortingbut lire ou décoder.

Voici mon code actuel:

 import requests import json response = requests.get('url with API Key') decoded_response = response.read().decode("UTF-8") data = json.loads(decoded_response) jsonData = data["hoststatus"] for host in jsonData: Name = host.get("name") StatusText = host.get("status_text") 

Si quelqu'un a une suggestion de le faire avec une autre langue ou un autre outil, je suis ouvert. J'ai besoin d'appeler environ 20 apis et mettre tous les statuts / autres informations dans une database de sorte que tout se trouve dans un seul endroit.

Toute aide est appréciée.

Comme @ danil-kondratiev dit, vous pouvez utiliser response.json () et vous n'avez pas besoin d'encoder / décoder. Cela fonctionnera-t-il pour vous?

 import requests response = requests.get('url with keys') json_data = response.json() if response and response.status_code == 200 else None if json_data and 'hoststatuslist' in json_data: if 'hoststatus' in json_data['hoststatuslist']: for hoststatus in json_data['hoststatuslist']['hoststatus']: host_name = hoststatus.get('name') status_text = hoststatus.get('status_text') 

Essayer. Demande des documents

 requests.get('https://api.github.com/user', auth=('user', 'pass')) >>>r.status_code 200 >>> r.encoding 'utf-8' >>> r.json() {json}