UniVerse y UniData ahora pueden trabajar con JSON o XML como objeto, lo que simplifica la creación o el uso de estos formatos. A partir de UniVerse 11.1 y UniData 7.3, los Objetos Dinámicos U2 (UDO) facilitan el trabajo con estos formatos.
Para ayudarnos a crear nuestro ejemplo, usaremos un servicio meteorológico en línea gratuito que nos proporciona datos que podemos analizar. Wunderground tiene una API meteorológica para desarrolladores aquí . Consulta los detalles allí. Puedes obtener una cuenta gratuita y el código API para probar el servicio.
JSON significa Notación de Objetos JavaScript y es una forma independiente del lenguaje de expresar datos, fácil de intercambiar mediante HTTP y comúnmente entendida por muchos lenguajes de software. Si no está familiarizado, probablemente sea mejor que Wikipedia lo explique mejor. Una vez que obtenga su clave API ( ver arriba), puede probar el servicio meteorológico y ver exactamente qué devuelve. A continuación, se muestra un breve fragmento para que pueda ver rápidamente cómo se verá. Es importante que conozca la estructura, ya que su código necesitará saber qué buscar.
{
"respuesta": {
"versión":"0.1",
},
"pronóstico":{
"simpleforecast":
"pronóstico del día": [
{"fecha":{
"época":"1421287200",
"pretty": "19:00 MST del 14 de enero de 2015",
....continuado....
Comencemos obteniendo el JSON del servicio meteorológico:
** IMPORTANTE ** Necesitarás obtener tu propia clave API para llamar al servicio
claveAPI = "0123abcd01234abcd"
ciudad = "CO/Denver"
url = "http://api.wunderground.com/api/":apiKey:"/forecast/q/":ciudad:".json"
método = "GET"
solicitud = ""
st = createRequest(url, método, objRequest)
st = submitRequest(objRequest, 3600, "", encabezados, datos, estado https)
En este punto, si todo salió bien, entonces deberíamos tener datos JSON en el parámetro de datos .
SI UDORead(datos, UDOFORMAT_JSON, RESTMSG) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(RESTMSG, "pronóstico", pronóstico, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(pronóstico, "simpleforecast", simple, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(simple, "pronósticodía", arrDays, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
La función UDORead lee una cadena JSON del primer parámetro y devuelve un objeto UDO en el tercer parámetro si es válido. Observe los parámetros en las siguientes tres llamadas a UDOGetProperty: recorremos el árbol de objetos, desde el objeto pronóstico hasta el objeto simpleforecast y finalmente la matriz forecastday . Una vez que tengamos la matriz forecastday, podemos simplemente recorrer cada elemento y obtener los valores que nos interesen. Simplemente asegúrese de liberar la memoria utilizada por el UDO llamando a UDOFree() al terminar.
BUCLE
GETSTAT = UDOArrayGetNextItem(arrDías, W.UDO, W.TIPO)
MIENTRAS GETSTAT = UDO_SUCCESS HACER
yo = yo + 1
SI UDOGetProperty(W.UDO, "fecha", UDO.FECHA, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(UDO.FECHA, "nombredelmes", F.MES, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(UDO.FECHA, "día", F.DÍA, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(UDO.FECHA, "año", F.AÑO, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(W.UDO, "alto", UDO.ALTO, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(UDO.HIGH, "fahrenheit", HF, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(W.UDO, "bajo", UDO.BAJO, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(UDO.LOW, "fahrenheit", LF, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
SI UDOGetProperty(W.UDO, "condiciones", CONDICIONES, UDOTYPE) NE UDO_SUCCESS ENTONCES GOSUB ERR
IMPRIMIR F.MES:" ":F.DÍA:", ":F.AÑO
IMPRIMIR " Alto: ":HF:" Bajo: ":LF
IMPRIMIR " Condiciones: ":CONDICIONES
IMPRIMIR
REPETIR
SI UDOFree(RESTMSG) NE UDO_SUCCESS ENTONCES GOSUB ERR
Pronóstico del tiempo para Colorado/Denver
6 de enero de 2015
Máxima: 55 Mínima: 15
Condiciones: Parcialmente nublado
7 de enero de 2015
Máximo: 34 Mínimo: 27
Condiciones: Parcialmente nublado
8 de enero de 2015
Máxima: 46 Mínima: 17
Condiciones: Parcialmente nublado
9 de enero de 2015
Máximo: 32 Mínimo: 18
Condiciones: Claro
Si quieres probar este código, puedes descargarlo desde GitHub
Preparación para la facturación electrónica: plazos, requisitos y próximos pasos prácticos
Presentamos Rocket EVA 2.0
Elige el camino correcto para la modernización del código con IA.
