JSON mit U2 Dynamic Objects parsen

Von Michael Byrne

3 Minuten Lesezeit

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.

Wetterdienst

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.

 

Was ist JSON?

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...

Der Code

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

 

Das Ergebnis

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

 

Hol dir den Code

Wenn Sie diesen Code ausprobieren möchten, können Sie ihn von GitHub herunterladen.

Ähnliche Beiträge

Security & Compliance

Bereit für die elektronische Rechnungsstellung: Fristen, Anforderungen und praktische nächste Schritte

1 Minute Lesezeit
Bereit für die elektronische Rechnungsstellung: Fristen, Anforderungen und praktische nächste Schritte
Künstliche Intelligenz (KI)

Wir stellen Rocket EVA 2.0 vor.

6 Minuten Lesezeit
Rocket EVA 2.0 führt gesteuerte KI-Agenten für Mainframe- und Hybrid-IT-Systeme ein und unterstützt Teams dabei, Untersuchungen zu beschleunigen, Fachwissen zu erweitern und [...] anzuwenden.
Anwendungsmodernisierung

Wählen Sie den richtigen Weg für die KI-gestützte Codemodernisierung

3 Minuten Lesezeit
Rocket wurde im Gartner® Magic Quadrant™ für KI-gestützte Codemodernisierungstools als Herausforderer anerkannt.