UniVerse und UniData können nun JSON- oder XML-Objekte verarbeiten, was die Erstellung und Verwendung dieser Formate vereinfacht. Ab UniVerse 11.1 und UniData 7.3 unterstützen U2 Dynamic Objects (kurz UDO) die einfache Arbeit mit diesen Formaten.
Um unser Beispiel zu erstellen, verwenden wir einen kostenlosen Online-Wetterdienst, der uns auswertbare Daten liefert. Wunderground bietet hier eine Wetter- API für Entwickler an. Dort finden Sie weitere Informationen. Sie können sich ein kostenloses Konto und den API Code erstellen, um den Dienst zu testen.
JSON steht für JavaScript Object Notation und ist eine sprachunabhängige Methode zur Datendarstellung, die den Datenaustausch über HTTP vereinfacht und von vielen Programmiersprachen verstanden wird. Falls Sie damit nicht vertraut sind, empfiehlt sich eine ausführlichere Erklärung auf Wikipedia . Sobald Sie Ihren API Schlüssel erhalten haben, können Sie den Wetterdienst testen und die zurückgegebenen Daten einsehen. Unten finden Sie einen kurzen Codeausschnitt, der Ihnen einen ersten Eindruck vermittelt. Es ist wichtig, dass Sie die Struktur kennen, damit Ihr Code weiß, wonach er suchen soll.
{
"Antwort": {
"version":"0.1",
},
"Vorhersage":{
"simpleforecast":
"Vorhersagetag": [
{"Datum":{
"epoch":"1421287200",
"pretty": 19:00 Uhr MST am 14. Januar 2015
...Fortsetzung folgt...
Beginnen wir damit, die JSON-Daten vom Wetterdienst abzurufen:
** WICHTIG ** Sie benötigen einen eigenen API Schlüssel, um den Dienst aufrufen zu können.
apiKey = "0123abcd01234abcd"
Stadt = "CO/Denver"
url = "http://api.wunderground.com/api/":apiKey:"/forecast/q/":city:".json"
Methode = "GET"
Anfrage = ""
st = createRequest(url, method, objRequest)
st = submitRequest(objRequest, 3600, "", headers, data, httpstatus)
Wenn an diesem Punkt alles richtig gelaufen ist, sollten wir JSON-Daten im Datenparameter haben.
IF UDORead(data, UDOFORMAT_JSON, RESTMSG) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(RESTMSG, "forecast", forecast, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(forecast, "simpleforecast", simple, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(simple, "forecastday", arrDays, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
Die Funktion `UDORead` liest einen JSON-String aus dem ersten Parameter und gibt, sofern gültig, ein UDO-Objekt im dritten Parameter zurück. Beachten Sie die Parameter der folgenden drei `UDOGetProperty`-Aufrufe: Wir durchlaufen die Objektstruktur vom `forecast`- Objekt über das `simpleforecast`- Objekt bis hin zum `forecastday` -Array. Sobald wir das `forecastday`-Array haben, können wir einfach jedes Element durchlaufen und die gewünschten Werte extrahieren. Vergessen Sie nicht, den vom UDO belegten Speicher mit `UDOFree()` freizugeben, wenn Sie fertig sind.
SCHLEIFE
GETSTAT = UDOArrayGetNextItem(arrDays, W.UDO, W.TYPE)
SOLANGE GETSTAT = UDO_SUCCESS FÜHRE AUS
i = i + 1
IF UDOGetProperty(W.UDO, "date", UDO.DATE, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(UDO.DATE, "monthname", F.MONTH, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(UDO.DATE, "day", F.DAY, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(UDO.DATE, "year", F.YEAR, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(W.UDO, "high", UDO.HIGH, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(UDO.HIGH, "fahrenheit", HF, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(W.UDO, "low", UDO.LOW, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(UDO.LOW, "fahrenheit", LF, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
IF UDOGetProperty(W.UDO, "conditions", CONDITIONS, UDOTYPE) NE UDO_SUCCESS THEN GOSUB ERR
DRUCKEN F.MONAT:" ":F.TAG:", ":F.JAHR
DRUCKEN " Hoch: ":HF:" Niedrig: ":LF
DRUCK " Bedingungen: ":BEDINGUNGEN
DRUCKEN
WIEDERHOLEN
IF UDOFree(RESTMSG) NE UDO_SUCCESS THEN GOSUB ERR
Wettervorhersage für CO/Denver
6. Januar 2015
Höchstwert: 55 Tiefstwert: 15
Bedingungen: Teilweise bewölkt
7. Januar 2015
Höchstwert: 34 Tiefstwert: 27
Bedingungen: Teilweise bewölkt
8. Januar 2015
Höchstwert: 46 Tiefstwert: 17
Bedingungen: Teilweise bewölkt
9. Januar 2015
Höchstwert: 32 Tiefstwert: 18
Bedingungen: Klar
Wenn Sie diesen Code ausprobieren möchten, können Sie ihn von GitHub herunterladen.
Bereit für die elektronische Rechnungsstellung: Fristen, Anforderungen und praktische nächste Schritte
Wir stellen Rocket EVA 2.0 vor.
Wählen Sie den richtigen Weg für die KI-gestützte Codemodernisierung
