2016-11-26 2 views
0

J'essaie d'obtenir des données d'une API de repos et d'enregistrer un fichier JSON dans un fichier txt. Voici ce que je fais:Comment obtenir des données de repos api et enregistrer JSON en fichier txt?

#random rest api 
a = 'https://thiswouldbemyurl.com' 

#urllib3 + poolmanager for requests 
import urllib3 
http = urllib3.PoolManager() 

import json 
r = http.request('GET', a) 
json.loads(r.data.decode('utf-8')) 

with open('data.txt', 'w') as f: 
    json.dump(data, f, ensure_ascii=False) 

Je reçois une erreur déjà avec json.load. Qu'est-ce que je fais mal?

EDIT: Voici comment le JSON ressemble

{ 
    "success":true, 
    "data":[ 
     { 
     "id":26, 
     "name":"A", 
     "comment":"", 
     "start_time_plan":null, 
     "start_time_actual":"2016-09-13 00:00:00", 
     "start_time_delta":null, 
     "start_time_score":null, 
     "start_time_score_achievement":null, 
     "start_time_traffic_light":null, 
     "end_time_plan":null, 
     "end_time_actual":"2016-09-13 00:00:00", 
     "end_time_delta":null, 
     "end_time_score":null, 
     "end_time_score_achievement":null, 
     "end_time_traffic_light":null, 
     "status":0, 
     "measure_schedule_revision_id":63, 
     "responsible_user_id":3, 
     "created_time":"2016-09-13 11:29:14", 
     "created_user_id":3, 
     "modified_time":"2016-09-21 16:33:41", 
     "modified_user_id":3, 
     "model":"Activity" 
     } 
+0

Quelle erreur obtenez-vous? – shazow

+0

Je reçois l'erreur avec 'json.loads'. C'est ça: 'json.decoder.JSONDecodeError: Valeur attendue: ligne 1 colonne 1 (char 0)' – Rachel

+1

On dirait que l'URL que vous téléchargez ne renvoie pas de JSON valide. Appeler 'json.loads (...)' sur quelque chose qui n'est pas JSON ne fonctionnera pas. À l'avenir, veuillez inclure les erreurs dans votre question. :) – shazow

Répondre

1

On dirait que vous essayez de json.load(...) quelque chose qui ne fait JSON.

En regardant l'URL que vous utilisez, https://jsonplaceholder.typicode.com/ renvoie le code HTML plutôt que le format JSON.

Si vous utilisez quelque chose comme https://jsonplaceholder.typicode.com/posts dont renvoie JSON, alors cette erreur particulière devrait disparaître.

+0

Désolé, je viens d'utiliser une URL aléatoire. J'obtiens en effet un JSON (voir edit ci-dessus). Quel pourrait être le problème ici? – Rachel