Leer un JSON desde PHP

5/5 - (1 voto)

Cuando habamos de la programación en php una de las palabras que mas escuchamos es JSON.

Pues en esta entrada voy a explicar que es un JSON y como utilizarlo en PHP.

¿Que es JSON?

Según la wikipedia JSON es https://es.wikipedia.org/wiki/JSON : JavaScript Object Notation, (notación de objeto de JavaScript) es un formato de texto ligero para el intercambio de datos.

En otras palabras es un formato de texto para representar una estructura de datos.

Es muy utilizado debido a su facilidad de parsear en contra de la dificultad que genera los XML.

Un ejemplo de JSON seria el siguiente:

 
{"employees":
 [  
  { "firstName":"John", "lastName":"Doe" },   
  { "firstName":"Anna", "lastName":"Smith" },   
  { "firstName":"Peter", "lastName":"Jones" } 
 ]
}  

En el vemos de manera muy sencilla como estan representados los elementos.

Un de las ventajas de JSON es que se pueden utilizar como origen de datos y representarlos independientemente de si el contenido del JSON es estatico o dinamico.

Para explicarlo mejor podemos utilizar un JSON con el listado de empleados que va cambiando en el tiempo, sin que afecte a nuestro programa.

Para el programa vamos a utlizar el catalago de datos del ayuntamiento de Gijón https://transparencia.gijon.es/page/1808-catalogo-de-datos que los ofrece de manera publica y los hay de todo tipo.

Vamos a utilizar el listado de playas : http://datos.gijon.es/doc/turismo/playas.json

Lo primero que hacemos es cargar el contenido del fichero en una variable.

 $data = @file_get_contents('http://datos.gijon.es/doc/turismo/playas.json'); 

El siguiente paso es decodificar el JSON y para ello usaremos la función
json_decode

 $items = json_decode($data, true); 

Ahora ya podemos acceder a los datos del JSON, para ello accedemos a ellos tratando el fichero como arrays multidimensionales.

Podemos hacer uso de var_dump($items) para ver el contenido del JSON.

Por ejemplo si queremos acceder al nombre de la primera playa lo haremos asi:

 echo $items["directorios"]["directorio"][0]["nombre"]["content"]; 

Para terminar el ejemplo, he recorrido el fichero con un bucle mostrando los elementos en una tabla obteniendo el siguiente resultado.

El codigo utilizado para el ejemplo es el siguiente y lo podeis ver aqui en funcionamiento: http://programacionconphp.com/dev/readJSON/ :

<?php
// index.php
// ubicacion JSON online y local
define('JSON', 'http://datos.gijon.es/doc/turismo/playas.json');
define('JSONlocal', 'playas.json'); 
// leer JSON validamos si el fichero online e accesible y si no abrimos el json local
if($data = @file_get_contents(JSON)){
	$items = json_decode($data, true);
}
else{
	$data = file_get_contents(JSONlocal);
	$items = json_decode($data, true);
}
//lista de items a recorrer
$listaItems = $items["directorios"]["directorio"];
?>

<html>
<h1>Playas de Gijón</h1>

<?php
	//bucle para recorrer los elementos del array
	for ($i = 0; $i<count($listaItems); $i++){
?>
	<table border="1">
		<tr>
			<td>Nombre: </td>
			<td>
				<?php echo $listaItems[$i]["nombre"]["content"]; ?>	
			</td>
		</tr>
		<tr>
			<td>URL: </td>
			<td>
				<?php echo $listaItems[$i]["url"]; ?>
			</td>
		</tr>
		<tr>
			<td>Descripcion: </td>
			<td>
				<?php echo $listaItems[$i]["descripcion"]["content"]; ?>
			</td>
		</tr>
		<tr>
			<td>Direccion: </td>
			<td>
				<?php echo $listaItems[$i]["direccion"][0]; ?>
			</td>
		</tr>
		<tr>
			<td>Foto: </td>
			<td>
				<?php echo '<img src=' . $items['directorios']['directorio'][$i]['foto']['content'] . '/>'; ?>
			</td>
		</tr>
		<tr>
			<td>Localizacion: </td>
			<td>
				<?php echo '<a href="https://www.google.com.br/maps/place/' . 
					$items['directorios']['directorio'][$i]['localizacion']['content'] . '">' . 
					$items['directorios']['directorio'][$i]['localizacion']['content'] . '</a>'; ?>
			</td>
		</tr>
	</table><br />
<?php 
	} //cerramos bucle
?>

</html>

Y esta disponible para su descarga aqui: https://github.com/victorgarciasisi/readJSON/

11 comentarios en «Leer un JSON desde PHP»

    • PHP soporta un operador de control de errores: el signo de arroba (@). Cuando se antepone a una
      expresión en PHP, cualquier mensaje de error que pueden ser generado por esa expresión será ignorado.

      Responder

Deja un comentario