JSON IV – Ejemplo práctico de uso de JSON con OpenWeatherMap.
Buenas Geeks!, en este tutorial, último de la serie JSON, vamos a crear un ejemplo práctico de uso de JSON.
Antes de empezar, te recomiendo que si no lo has hecho ya, visites los anteriores tutoriales sobre JSON. Puedes ver un índice de los tutoriales a continuación:
- ¿Qué es y para qué sirve JSON?.
- Creación de un JSON a partir de una consulta en MySQL.
- Gestionar JSON en PHP.
- Ejemplo práctico de uso de JSON con OpenWeatherMap.
Para ver un ejemplo de uso de JSON vamos a usar la API de OpenWeatherMap, esta API proporciona información general sobre el tiempo (temperatura, localización, etc) en función de una localización.
Para usar esta API debemos incluir el nombre del lugar donde queremos obtener el tiempo al final del siguiente enlace:
http://api.openweathermap.org/data/2.5/weather?q=bigastro
En mi caso buscaremos la información del tiempo de mi pueblo natal Bigastro. si usamos como ejemplo mi pueblo natal obtendremos un JSON como este:
{"coord":{"lon":-0.9,"lat":38.06},"sys":{"message":0.0991,"country":"Spain","sunrise":1392619830,"sunset":1392659075},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"base":"cmc stations","main":{"temp":288.15,"pressure":1012,"humidity":72,"temp_min":288.15,"temp_max":288.15},"wind":{"speed":5.1,"deg":60},"rain":{"3h":0},"clouds":{"all":20},"dt":1392661800,"id":2513076,"name":"Bigastro","cod":200}
Usando el visualizador JSONViewer, el cual hemos usado en anteriores tutoriales, obtenemos la siguiente información:
A modo de ejemplo vamos a crear una aplicación en PHP que lea el JSON obtenido a partir del servicio web de OpenWeatherMap, seguidamente, vamos a extraer la información útil de este JSON. Los datos que obtendremos serán los siguientes:
- Ciudad
- Latitud
- Longitud
- Temperatura
- Temperatura Máx
- Temperatura Mín
- Presión
- Humedad
- Velocidad del viento
- Estado del cielo
- Descripción del estado del cielo
A continuación vamos a realizar un script/app en PHP que lea el JSON generado por la API de OpenWeatherMap y muestre la información útil por pantalla.
En primer lugar, crearemos un formulario donde introduzcamos la ciudad donde queremos obtener los datos del tiempo:
Ciudad
Este formulario envía los datos de un input a así misma mediante el método GET. Estos datos son procesado por PHP, en primer lugar veremos que los datos del input no vienen vacíos, para esto escribimos las siguiente sentencia en PHP:
if($_GET["c"]==null) die();
Seguidamente si el campo no esta vacio, vamos a obtener el JSON que genera la API de OpenWeatherMap gracias a la función file_get_contents, el contenido de este JSON lo vamos a almacenar en la variable $html:
$html = file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=".$_GET["c"]);
Una vez que hemos obtenido todo el código html, es decir el JSON crudo que nos envia la API de OpenWeatherMap vamos a decodificar el JSON con la función json_decode:
$json = json_decode($html);
Una vez que tenemos almacenado en la variable $json toda la información del JSON obtenido de la API vamos a extraer la información útil de el, para ello vamos a almacenar en variables con nombres orientativos la información del JSON:
$ciudad = $json->name; $lat = $json->coord->lat; $lon = $json->coord->lon; $temp = $json->main->temp; $tempmax = $json->main->temp_max; $tempmin = $json->main->temp_min; $presion = $json->main->pressure; $humedad = $json->main->humidity; $vel_viento = $json->main->temp; $estado_cielo = $json->weather[0]->main; $descripcion = $json->weather[0]->description;
Lo último que quedaría sería mostrar la información como queramos, en mi caso no he hecho un gran estilo, tan sólo he mostrado la información con echos. El código que he realizado para esta parte es el siguiente:
echo "
Ciudad: ".$ciudad." [lat = ".$lat. ", lon = ".$lon. " ]
"; echo "Estado del cielo: ".$estado_cielo."
"; echo "Descripción: ".$descripcion."
"; echo "
"; echo "Temperatura: ".$temp." K [Máx: ".$tempmax."K, Mín: ".$tempmin."K]
"; echo "Presión: ".$presion."
"; echo "Humedad: ".$humedad."
"; echo "
";
Una captura de lo que generaría mi ciudad natal llamada Bigastro se muestra a continuación:
Y esto es todo, para terminar, voy a escribir todo el código seguido para los más perezosos:
Ciudad
Hay que tener en cuenta que el objetivo de JSON no es sólo proporcionar información con PHP, sino proporcionarla a todas las plataformas que queramos como por ejemplo Android, Java, Python..., Usando como base este ejemplo podríamos hacer una aplicación en Android que busque el lugar donde te encuentras automáticamente y muestre la información del tiempo.
Podéis descargar el código en el siguiente repositorio de github.
Y esto es todo, espero que os haya gustado esta serie de tutoriales sobre JSON y repetir que si tenéis alguna duda, comentarla en el mismo tutorial e intentare responder lo más pronto posible.
Un saludo @alex_esquiva!