0

JSON - Abfrage

Kann mir jemand bei folgendem Problem helfen:
Ich möchte bestimmte Wetterdaten einer Stadt in NINOX einbinden.

Dazu habe ich bei OPENWEATHERMAP die folgende API-Abrage erstellt ...

https://api.openweathermap.org/data/2.5/weather?q=Wien&appid=eaafc088e0a69da1e8449a8522485598

... diese gibt folgendes aus:

{"coord":{"lon":16.3721,"lat":48.2085},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":288.46,"feels_like":287.85,"temp_min":286.23,"temp_max":289.99,"pressure":1025,"humidity":69},"visibility":10000,"wind":{"speed":0.45,"deg":325,"gust":1.34},"clouds":{"all":0},"dt":1630959467,"sys":{"type":2,"id":2037452,"country":"AT","sunrise":1630901955,"sunset":1630949213},"timezone":7200,"id":2761369,"name":"Vienna","cod":200}

Möchte ich jetzt z.B. das Ergebnis der "weather" "description" ausgeben, in diesem Fall "clear sky", dann habe ich es mit folgendem Code versucht, der jedoch nicht funktioniert - wo habe ich den Fehler gemacht?

let response := http("GET", "https://api.openweathermap.org/data/2.5/weather?q=Wien&appid=eaafc088e0a69da1e8449a8522485598");
alert(response.result.weather.description);
void

Vielen Dank für Eure Hilfe!

3 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    erstmal fehlt text() - da die Anfrage ein Array ausgibt... und zweitens ist weather ebenfalls ein Array, aus dem Du dir über first() oder über item(array,index) den Wert herausholst...

     

    let response := http("GET", "https://api.openweathermap.org/data/2.5/weather?q=Wien&appid=eaafc088e0a69da1e8449a8522485598");
    alert(text(response.result.item(weather, 0).description))

     

    sollte funktionieren...

    LG

    Tobias

    • Sean
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    Es tut mir leid, mich einzumischen. Die Anfrage gibt JSON zurück, bei dem es sich um eine Zeichenfolge handelt. https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON

     

    Sie können alert(response.result) verwenden, um den gesamten JSON-String anzuzeigen. Es stimmt, dass die Informationen im Abschnitt "Wetter" als Array strukturiert sind und Sie die Funktion item() verwenden müssen, um einzelne Elemente im Array anzuzeigen, aber Sie können item() nicht verwenden, um "temp" anzuzeigen für Beispiel. Sie würden alert(response.result.main.temp) verwenden.

     

    Grüße
    Sean

    • Josef_Koenig
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Tobias,
    Deine Lösung funktioniert perfekt! Vielen Dank! Da habe ich sehr viel gelernt !!!

    Liebe Grüße 
    Josef