Seite 1 von 1

Auswertung einer API mit Json

Verfasst: Dienstag 24. März 2020, 14:23
von bjpl
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

Re: Auswertung einer API mit Json

Verfasst: Donnerstag 26. März 2020, 22:13
von JakobDev
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.

Re: Auswertung einer API mit Json

Verfasst: Donnerstag 26. März 2020, 22:49
von Sirius3
@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.