Seite 1 von 1
API Response auswerten
Verfasst: Dienstag 12. Januar 2016, 10:44
von sa_ve
Hallo Zusammen
Über eine API Anfrage erhalte ich folgende Antwort.
{
"power": 0,
"relay": false
}
Wie kann ich nun die Werte in eine Variable schreiben?
power = 0
relay = false
Ich habe es über Directories versucht, aber leider ohne Erfolg.
Code: Alles auswählen
import urllib2
url = "http://192.168.xxx.xxx/report"
response = urllib2.urlopen(url).read(1000)
print response["power"]
print response["relay"]
power = response["power"]
relay = response["relay"]
Grüsse
Re: API Response auswerten
Verfasst: Dienstag 12. Januar 2016, 10:50
von Dav1d
Fast richtig, das was du zurückbekommst ist JSON:
Code: Alles auswählen
import urllib2
from contextlib import closing
import json
url = "http://192.168.xxx.xxx/report"
with closing(urllib2.urlopen(url)) as response:
j = json.load(response)
print j["power"]
print j["relay"]
power = j["power"]
relay = j["relay"]
Re: API Response auswerten
Verfasst: Mittwoch 13. Januar 2016, 17:55
von sa_ve
Vielen Dank. Aber leider komme ich nicht mehr weiter. Wie kann ich den Wert nachher auswerten?
Code: Alles auswählen
import urllib2
from contextlib import closing
import json
n = 0
while n <= 5:
n = n + 1
url = "http://192.168.xxx.xxx/report"
with closing(urllib2.urlopen(url)) as response:
j = json.load(response)
relay = j["relay"]
power = j["power"]
if j["relay"] == "False":
url = "http://192.168.xxx.xxx/relay?state=1"
urllib2.urlopen(url).read(1000)
print relay
print power
else:
print "bereits AN"
break
Re: API Response auswerten
Verfasst: Mittwoch 13. Januar 2016, 18:53
von Sirius3
@sa_ve: Du solltest immer mit 4 Leerzeichen pro Ebene einrücken. So wie jetzt ist es einfach zu schlecht lesbar. Statt einer while-Schleife ist eine for-Schleife hier besser. "relay" ist ein Boolean, mit einem String zu vergleichen, macht keinen Sinn, und statt explizit auf False zu vergleichen ist "not" besser. Und welchen Wert möchtest Du wie auswerten?
Code: Alles auswählen
import urllib2
from contextlib import closing
import json
for _ in range(6):
url = "http://192.168.xxx.xxx/report"
with closing(urllib2.urlopen(url)) as response:
response = json.load(response)
if not response['relay']:
url = "http://192.168.xxx.xxx/relay?state=1"
was_soll_das = urllib2.urlopen(url).read(1000)
print response
else:
print "bereits AN"
break
Re: API Response auswerten
Verfasst: Mittwoch 13. Januar 2016, 19:00
von BlackJack
Ich wollte nur mal so nebenbei die `requests`-Bibliothek ins Gespräch bringen. Die hat eine schönere API als das `urllib`/`urllib2`-Gespann aus der Standardbibliothek.