Auswertung einer API mit Json

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bjpl
User
Beiträge: 1
Registriert: Dienstag 24. März 2020, 13:43

Hallo zusammen,
ich habe jetzt schon geschlagene Stunden versucht es irgendwie zum laufen zu bringen.
Ich habe einen Server der mir über eine API den aktuellen Status anzeigt.
Ich möchte jetzt den Status ("IsActive": "1") mit Python auswerten und dann ausgeben welcher Modus(Name) aktiv ist.
Sprich da wo IsActive =1 ist soll er mir den Namen ausgeben.
Eventuell kann einer von euch mir freundlicher weise weiterhelfen .

Und so sieht die Ausgabe des Servers aus:

Code: Alles auswählen

{
    "states": [
        {
            "State": {
                "Id": "1",
                "Name": "default",
                "Definition": "",
                "IsActive": "0"
            }
        },
        {
            "State": {
                "Id": "2",
                "Name": "Start",
                "Definition": "1:Modect:1",
                "IsActive": "0"
            }
        },
        {
            "State": {
                "Id": "3",
                "Name": "Modect",
                "Definition": "1:Modect:1",
                "IsActive": "1"
            }
        },
        {
            "State": {
                "Id": "4",
                "Name": "Record",
                "Definition": "1:Record:1",
                "IsActive": "0"
            }
        }
    ]
Abrufbar über eine URL
http://IP-Adresse/zm/api/states.json?au ... 319b3b4e4b

Was ich zum laufen bekommen habe ist die Website in Python einlesen.

Code: Alles auswählen

import json
import requests

r = requests.get('http://10.0.0.82/zm/api/states.json?auth=9584615443b29eedca1f6570483a1fe1')
packages_json = r.json()
print(packages_json)
Danke im vorraus
Benutzeravatar
JakobDev
User
Beiträge: 63
Registriert: Mittwoch 17. Juli 2019, 17:20

Hier bitte:

Code: Alles auswählen

import requests

packages_json = requests.get("http://10.0.0.82/zm/api/states.json?auth=9584615443b29eedca1f6570483a1fe1").json()

for i in packages_json["states"]:
    if i["State"]["IsActive"] == "1":
        print(i["State"]["Name"])
Das ganze kommt als normales dict und lässt sich auch dementsprechend behandeln. Generell empfiehlt es sich bei so etwas, erstmal den interaktiven Interpreter zu benutzen. Dort kann man dann das dict in Ruhe "erkunden". Der Import von json wird in diesem Fall nicht benötigt.
Sirius3
User
Beiträge: 17809
Registriert: Sonntag 21. Oktober 2012, 17:20

@JakobDev: `i` ist ein sehr schlechter Name für einen `state`.

Auch `packages_json` ist schon nicht gut, weil erstens sind das ja `states` und keine Pakete, und zweitens, dass der Inhalt mal als json kodiert war, ist hier irrelevant.
Antworten