2013-07-31 2 views
6

Ich habe eine wirklich einfache Frage, aber ich kann es nicht herausfinden, wie es geht. Das Problem, das ich habe ist, dass ich die folgende Nutzlast mit Python und Anfragen senden möchten:Verwenden von Python 'Anfragen' zu senden JSON boolean

{ 'on': true } 

es wie folgt tun:

payload = { 'on':true } 
r = requests.put("http://192.168.2.196/api/newdeveloper/lights/1/state", data = payload) 

nicht funktioniert, weil ich die folgende Fehlermeldung erhalten:

NameError: name 'true' is not defined 

Senden der wahre als 'true' wird nicht von meinem Server akzeptiert, so dass keine ist Möglichkeit. Jemand einen Vorschlag? Vielen Dank!

+3

'true' auf Python ist mit einem Kapital 'T' :) Dinkel – GP89

+2

Uhm, es ist' true' in Python ... – lunaryorn

+0

Ich weiß, dass es wahr ist. Aber wenn ich 'True' dort setze, wird die Nutzlast "{'on': True}" sein. Ich möchte, dass es "{'on': true}" ist. –

Antwort

12

Sie zu json brauchen sie kodieren es in einen String zu erhalten.

import json 
payload = json.dumps({"on":True}) 
1

sollte { 'on': True}, Kapital T

+0

Das funktioniert nicht. Ich möchte, dass die Payload {on: wahr} ist. Dadurch wird die Payload in {'on': True} umgewandelt, was leider nicht funktioniert. –

+0

das ist, weil Sie das Wörterbuch mithilfe von Json dump müssen. Wenn Sie zum Beispiel Payload = {"on": True} haben, tun Sie json.dumps (payload) –

+0

Das Übergeben eines richtigen Boolean-Objekts half uns zB True/False –

Verwandte Themen