Leer un JSON desde una url externa con PHP

Mas tarde o más temprano todos los programadores tienen que toparse con los webservices y lo más básico es esto, leer un JSON desde una url externa con PHP.

Hago esta entrada por que en mis nuevas funciones me he encontrado con los webservices de frente y nunca antes los había tocado, de modo que tras investigar un poquito he querido hacer este minitutorial para entender como leer un JSON desde una url externa con PHP.

Si estas trabajando en un servidor local, te aconsejo que antes de nada actualices tu xampp para poder acceder a urls externas.

Una vez tenemos esto ya podemos entrar en faena…

El JSON

El JSON es el protagonista de toda esta historia, sin él no podríamos hacer nada para ello debe de estar bien formado y debemos de saber donde se encuentra.

En este caso este es nuestro json:

[
{
 "nombre": "Paco",
 "apellidos": "Perez",
 "nota": "7,62"
},
{
 "nombre": "María",
 "apellidos": "Gómez",
 "nota": "8,3"
},
{
 "nombre": "Mateo",
 "apellidos": "Asensio",
 "nota": "6,02"
}
]

Como podemos ver es algo muy sencillo, solo para probar, y en el tenemos tres objetos (alumnos), con tres atributos; nombre, apellido y nota.

Ahora viene la magia, vamos a ver como leer un JSON des una urla externa con PHP.

Para ello vamos a ver el siguiente código:

$data = file_get_contents("http://localhost/pruebas/leer/alumnos.json");
$notas = json_decode($data, true);

foreach ($notas as $nota)
{
    $nombre = "";
    $apellidos = "";
    $nota_final = "";
    foreach ($nota as $key => $value){
    	switch ($key) {
    		case 'nombre':
    			$nombre = $value;
    			break;
    		case 'apellidos':
    			$apellidos = $value;
    			break;
    		case 'nota':
    			$nota_final = $value;
    			break;
    	}
    }
    echo "<p>Alumno: " . $nombre . " " . $apellidos . " -> " . $nota_final . "</p>";
    echo "<h4>Aquí vendría el código de lo que queramos hacer con ese alumno...</h4>";
}
echo "<p>Codigo fuera del bucle</p>";

Aquí recogemos el JSON desde la url donde se encuentre en la línea 1 y lo convertimos en un array en la línea 2.

Una vez lo tenemos convertido en un array, tan solo hay que recorrerlo, en este caso al ser bidimensional he optado por hacerlo por dos bucles que van guardando las variables con las que vamos a trabajar. Esto se podría cambiar por objetos por ejemplo, pero para ser un ejemplo no he querido complicarlo.

Como se puede observar la lectura de un JSON desde PHP es muy sencilla y prácticamente tan solo hacen falta dos líneas para que nuestro lenguaje de servidor lo convierta en algo que el entiende perfectamente.