Informationen aus API richtig verwenden

  • Hey, hätte mal ne Frage.
    Ich arbeite aktuell an einem privaten Projekt, zu dem Ihr mir hier im Forum auch schon super geholfen habt.

    Für dieses Projekt arbeite ich nun das erste mal mit APIs. (War vorher halt nie nötig ^^)
    Genauer mit der Wetter API von openweathermap.org.

    Wenn ich die API nutze kommt z.B. solch ein String dabei raus

    Spoiler anzeigen
    Code
    {"coord":{"lon":139,"lat":35},"weather":[{"id":804,"main":"Clouds","description":"Bedeckt","icon":"04d"}],"base":"stations","main":{"temp":27.4,"feels_like":31.13,"temp_min":26.65,"temp_max":27.4,"pressure":1010,"humidity":84},"visibility":10000,"wind":{"speed":0.54,"deg":131,"gust":1.2},"clouds":{"all":92},"dt":1659846407,"sys":{"type":2,"id":2019346,"country":"JP","sunrise":1659815850,"sunset":1659865332},"timezone":32400,"id":1851632,"name":"Shuzenji","cod":200}


    Nun hatte ich erst etwas Schwierigkeiten diese ganzen Informationen auseinander zu dröseln.
    Gelöst habe ich das nun so:

    Spoiler anzeigen

    Da ich für mein Projekt nur 5 Daten brauche fische ich auch nur diese raus, da is also längst nicht alles drin was die API hergibt.
    Was mich aber interessiert is, wie Ihr diesen String in brauchbare Informationen aufspaltet.

    Meine Methode funktioniert zwar prima, scheint mir aber recht umständlich.
    Mir gehts einfach darum, zu lernen wie ich das künftig besser machen kann.

    Liebe Grüße
    Micha

  • Diese Strings sind formatierte Datenstrukturen im Format JSON.
    Sie werden öfter in Web-APIs eingesetzt, da sie zum einen relativ kompakt, gut maschinenlesbar und gleichzeitig auch für Menschen gut lesbar sind.

    Wenn man so einen String auswerten möchte, sollte man den String also entsprechend behandeln.

    Für AutoIt gibt es diverse UDFs hierfür.

    Mit >>dieser<< würde man dein Beispiel folgendermaßen umsetzen:

    Der String den du gepostet hast, ist primär platzsparend formatiert - also ohne Zeilenumbrüche und Leerzeichen. Um sich die Struktur der Daten jedoch klarer zu machen, bietet es sich an den JSON-String noch entsprechend formatiert darzustellen (sprich: Zeilenumbrüche und Leerzeichen einzufügen um die Hierarchie erkennbar zu machen). Dafür gibt es etliche Online-Tools wie z.B. >>hier<< oder die Funktion _JSON_Generate() aus der hier verwendeten UDF.

    Meine Methode funktioniert zwar prima, scheint mir aber recht umständlich.

    Die funktioniert halt nur solange, wie der Aufbau des Strings konstant bleibt.
    Wenn mal die Reihenfolge der Werte ändert, ein Wert zwischen drin hinzukommt oder entfernt wird, scheitert der Ansatz, da dieser ja auf Zählen bestimmter Zeichen basiert.

    3 Mal editiert, zuletzt von AspirinJunkie (7. August 2022 um 09:04)

  • Wow, ich dachte mir schon, dass es einfacher geht, aber das is wirklich nice 👍
    Vielen dank, das hat mir auf jeden Fall schon sehr weiter geholfen.
    Spucken solche APIs immer Strings im JSON Format aus?

    Werd mir jetzt erstmal die Struktur von JSON ansehn.

  • Spucken solche APIs immer Strings im JSON Format aus?

    Oft - da JSON halt entsprechende Vorteile hierfür bietet.
    Aber ein Gesetz ist das nicht - jeder kann seine APIs so bauen wie er möchte und auch die Daten so formatieren wie er es für richtig hält.
    Daher kurze Antwort: Nein