Quand je fais:
import sys, json;
import requests
headers = {'Content-Type': 'application/json',
'X-Parse-Application-Id': '...',
'X-Parse-REST-API-Key': '...'}
data = json.load(sys.stdin)
for station in data["data"]:
print station
res = requests.post('https://api.parse.com/1/classes/test4', data=station, headers=headers)
Je reçois
{u'city': u'London',
...
}
Et ce n'est pas un Json valide car lorsque j'essaie de POST sur Parse.com, je reçois
{"code":107,"error":"invalid JSON"}
et tout validateur JSON me donne Error:Strings should be wrapped in double quotes.
Comment faire un JSON valide du data
?
print
affichera simplement la représentation python de l'objet que vous passez (que vous avez désérialisé avec json.load
). Essaye ça:
import sys, json;
data = json.load(sys.stdin)
for station in data["data"]:
print(json.dumps(station))
json.dumps
sérialise un objet python en json.
Vous avez mal compris ce que json.load
fait: il désérialise à partir de JSON, c'est-à-dire qu'il crée Python objets à partir de chaînes JSON.
Mais je ne peux pas vraiment comprendre ce que vous faites; si vous avez déjà transmis JSON depuis stdin, pourquoi essayez-vous de le convertir? Passez-le directement à votre API.