UniVerse e UniData ora possono lavorare con JSON o XML come oggetti, semplificando la creazione o l'utilizzo di questi formati. A partire da UniVerse 11.1 e UniData 7.3, gli U2 Dynamic Objects (UDO in breve) aiutano a lavorare facilmente con questi formati.
Per aiutarci a costruire il nostro esempio, utilizzeremo un servizio meteo online gratuito che ci fornisce alcuni dati che possiamo analizzare. Wunderground ha API meteo per sviluppatori qui, scopri i dettagli lì, puoi ottenere un account gratuito e il codice API che ti permette di testare il servizio.
JSON sta per JavaScript Object Notation ed è un modo indipendente dal linguaggio per esprimere i dati, facile da scambiare tramite HTTP e comunemente compreso da molti linguaggi di programmazione. Probabilmente è meglio lasciare che Wikipedia lo spieghi meglio se non lo si ha familiarità. Una volta ottenuta la chiave API, è possibile testare il servizio meteo e vedere esattamente cosa viene restituito. Di seguito è riportato un breve frammento per darvi una rapida occhiata a come apparirà. È importante conoscere la struttura, perché il codice dovrà sapere cosa cercare.
{
"risposta": {
"versione":"0.1",
},
"previsione":{
"previsione semplice":
"previsionegiorno": [
{"data":{
"epoca":"1421287200",
"pretty": ore 19:00 MST del 14 gennaio 2015,
....continua....
Iniziamo ottenendo il JSON dal servizio meteo:
** IMPORTANTE ** Dovrai ottenere la tua chiave API per chiamare il servizio
apiKey = "0123abcd01234abcd"
città = "CO/Denver"
url = "http://api.wunderground.com/api/":apiKey:"/forecast/q/":city:".json"
metodo = "GET"
richiesta = ""
st = createRequest(url, metodo, objRequest)
st = submitRequest(objRequest, 3600, "", intestazioni, dati, httpstatus)
A questo punto, se tutto è andato per il verso giusto, dovremmo avere dati JSON nel parametro dati .
SE UDORead(dati, UDOFORMAT_JSON, RESTMSG) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(RESTMSG, "previsione", previsione, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(previsione, "simpleforecast", semplice, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(semplice, "forecastday", arrDays, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
La funzione UDORead legge una stringa JSON dal primo parametro e restituisce un oggetto UDO nel terzo parametro, se valido. Notate i parametri nelle successive 3 chiamate a UDOGetProperty: stiamo attraversando l'albero degli oggetti, dall'oggetto forecast all'oggetto simpleforecast fino all'array forecastday . Una volta ottenuto l'array forecastday, possiamo semplicemente scorrere ogni elemento e recuperare i valori che ci interessano. Assicuratevi solo di liberare la memoria utilizzata dall'UDO chiamando UDOFree() al termine.
CICLO CONTINUO
GETSTAT = UDOArrayGetNextItem(arrDays, W.UDO, W.TYPE)
MENTRE GETSTAT = UDO_SUCCESS DO
io = io + 1
SE UDOGetProperty(W.UDO, "data", UDO.DATE, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(UDO.DATE, "monthname", F.MONTH, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(UDO.DATE, "giorno", F.DAY, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(UDO.DATE, "anno", F.YEAR, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(W.UDO, "high", UDO.HIGH, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(UDO.HIGH, "fahrenheit", HF, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(W.UDO, "low", UDO.LOW, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(UDO.LOW, "fahrenheit", LF, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
SE UDOGetProperty(W.UDO, "condizioni", CONDIZIONI, UDOTYPE) NE UDO_SUCCESS ALLORA GOSUB ERR
STAMPA F.MESE:" ":F.GIORNO:", ":F.ANNO
STAMPA " Alto: ":HF:" Basso: ":LF
STAMPA " Condizioni: ":CONDIZIONI
STAMPA
RIPETERE
SE UDOFree(RESTMSG) NE UDO_SUCCESS ALLORA GOSUB ERR
Previsioni del tempo per CO/Denver
6 gennaio 2015
Alto: 55 Basso: 15
Condizioni: Parzialmente nuvoloso
7 gennaio 2015
Alto: 34 Basso: 27
Condizioni: Parzialmente nuvoloso
8 gennaio 2015
Alto: 46 Basso: 17
Condizioni: Parzialmente nuvoloso
9 gennaio 2015
Alto: 32 Basso: 18
Condizioni: sereno
Se vuoi provare questo codice, puoi scaricarlo da GitHub
Pronti per la fatturazione elettronica: scadenze, requisiti e prossimi passi pratici
Vi presentiamo Rocket EVA 2.0
Scegliere il percorso giusto per la modernizzazione del codice potenziata dall'intelligenza artificiale
