En la sección Web request y eventos aprendimos como hacer solicitudes a una API. Sin embargo, la forma de conseguir el ID del clima actual es diferente ahora del momento en que se grabo el curso, ya que nos solicitan la longitud y latitud de la ubicación de la que queremos conocer el clima😥.
No te preocupes, en este tutorial te voy a enseñar como se maneja un archivo .json para poder almacenar variables como la latitud y longitud y poder conseguir la ID del clima.
Si has trabajado con Javascript antes debes conocer el concepto de objetos, sino, básicamente es una variable en donde se almacenan un conjunto de propiedades, las cuales son una asociación entre una Key (o su nombre) y un valor.
En C# es parecido a lo que conocemos como un Diccionario, en donde para acceder a un valor pasamos como parametro la Key. Pero, a diferencia de un diccionario, los archivos .json pueden tener diferentes bloques dentro de si, las cuales conocemos como arreglos.
Entonces un objeto es un conjunto de Keys que estan dentro de unas llaves ({ }) y tienen sus respectivos valores, y un arreglo es un conjunto de objetos que se encuentren dentro de corchetes ([ ]).
Veamos dos ejemplos para ilustrarlo mejor:
Objeto:
Arreglo:
Como vemos en las imagenes anteriores, pueden haber objetos dentro de una key a las cuales podemos acceder por su indice, es decir, la posición que ocupa dicho objeto . Entonces, ¿como bajar por el archivo hasta conseguir un valor especifico?
Entendámoslo con un ejemplo:
Si quiero acceder al valor de edición en el segundo objeto dentro de libro seria:
biblioteca["libro"][1]["edición"];
Ya sabemos solicitar los datos a la API y almacenarlos en una variable de tipo UnityWebRequest y extraer la información de texto de esta respuesta para almacenarla en un archivo de tipo JsonData.
Ademas aprendimos a bajar en un archivo JSON para ubicar un dato. Estamos listos para recibir y manejar la información para extraer el valor de la latitud y la longitud. Si quieres saber cual es la URL para hacer la solicitud la encuentras aca 👇🏻
https://openweathermap.org/api/geocoding-api
Cuando solicitas esa información la respuesta se ve así:
Como vemos nos entregan un arreglo con un solo objeto, por lo tanto lo primero que debemos hacer es ingresar a ese objeto con su indice, y luego entrar a cada Key:
JsonDataJSONPlcData = JsonMapper.ToObject(coordinates.downloadHandler.text);
latitude = (JSONPlcData[0]["lat"]);
longitude = (JSONPlcData[0]["lon"]);
Pero hay un problema, el valor que se nos devuelve es de tipo JsonData, asi que debemos hacer un parse (convertirlo a string)
JsonDataJSONPlcData = JsonMapper.ToObject(coordinates.downloadHandler.text);
latitude = (JSONPlcData[0]["lat"]).ToString();
longitude = (JSONPlcData[0]["lon"]).ToString();
Ahora que tenemos el valor de la latitud y longitud podemos ingresarla dentro de la solicitud del clima de esta manera:
weather = UnityWebRequest.Get($"https://api.openweathermap.org/data/2.5/weather?lat={latitude}&lon={longitude}&appid=3c2ae7c17a0b314ccf98c8ce21bab4e4");
Y pues, el resto es historia 😁. Espero que te haya servido mucho este tutorial, muchas gracias por llegar hasta aqui!!
Nunca pares de aprender 💚