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
-
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
-
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 Funktionitem()
verwenden müssen, um einzelne Elemente im Array anzuzeigen, aber Sie könnenitem()
nicht verwenden, um "temp" anzuzeigen für Beispiel. Sie würdenalert(response.result.main.temp)
verwenden.Grüße
Sean -
Hallo Tobias,
Deine Lösung funktioniert perfekt! Vielen Dank! Da habe ich sehr viel gelernt !!!
Liebe Grüße
Josef
Content aside
- vor 3 JahrenZuletzt aktiv
- 3Antworten
- 350Ansichten