Invierte en tu educación con el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12d

17h

11m

10s

1

Como manejar datos tipo JsonData y conseguir latitud y longitud

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.

Primero que todo, entendamos que es un archivo en formato json:

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:
objeto.png

Arreglo:
bloque.png

¿Como navegar por un archivo JSON?

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:
json-01.png

Si quiero acceder al valor de edición en el segundo objeto dentro de libro seria:

biblioteca["libro"][1]["edición"];
  1. Digamos que el nombre de este elemento es biblioteca.
  2. Como el primer elemento que encontramos dentro de biblioteca es un objeto, solo debemos escribir el valor de la key a la que queremos acceder: biblioteca[“libro”].
  3. Libro tiene como valor un arreglo de objetos, el cual esta delimitado por corchetes ([ ]). Entonces especificamos la posición del objeto al que queremos acceder empezando desde el 0. Como es el segundo: biblioteca[“libro”][1].
  4. Ahora dentro del objeto repetimos el paso 1 y especificamos la Key: biblioteca[“libro”][1][“edición”].
  5. El valor devuelto es seguna.

¿Como almaceno el valor de latitud y longitud?

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í:
json_02.png

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 💚

Escribe tu comentario
+ 2