JSON III – Gestionar JSON en PHP
En este tercer tutorial vamos a aprender una manera sencilla de gestionar un JSON en PHP. Otra vez, y perdonar por repetirme, siento mucho haber tardado tanto tiempo en realizar este tercer tutorial, pero cuando estás de Erasmus tienes a tu disposición un nuevo mundo que explorar.
Este tutorial es el tercer tutorial de una serie de cuatro tutoriales sobre JSON. Puedes ver los títulos y sus enlaces 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 aprender a gestionar JSON en PHP vamos a dividir el tutorial 3 partes, el índice del tutorial será el siguiente:
- Usar la función json_decode para decodificar un JSON.
- Entender cómo funciona la función json_decode.
- Ejemplos de uso.
Así pues sin más preámbulos vamos a empezar con el primer punto.
Usar la función json_decode para decodificar un JSON.
Partiendo del tutorial anterior y suponiendo que tenemos un JSON generado como este:
[{"0":"1","id_fruta":"1","1":"Manzana","nombre_fruta":"Manzana","2":"100","cantidad":"100"},{"0":"2","id_fruta":"2","1":"Platano","nombre_fruta":"Platano","2":"167","cantidad":"167"},{"0":"3","id_fruta":"3","1":"Pera","nombre_fruta":"Pera","2":"820","cantidad":"820"}]
Vamos a usar la función json_decode sobre este JSON, para ello vamos a suponer que nuestro JSON es un JSONArray, es decir que es un array de datos, así pues, vamos a guardar en un array el resultado de decodificar el JSON.
$json = '[{"0":"1","id_fruta":"1","1":"Manzana","nombre_fruta":"Manzana","2":"100","cantidad":"100"},{"0":"2","id_fruta":"2","1":"Platano","nombre_fruta":"Platano","2":"167","cantidad":"167"},{"0":"3","id_fruta":"3","1":"Pera","nombre_fruta":"Pera","2":"820","cantidad":"820"}]'; $array = json_decode($json);
Entender cómo funciona la función json_decode.
Si nos remontamos al primer tutorial sobre JSON recordaremos que un JSON se compone de JSON Objects y de JSON Arrays. Así pues la función json_decode decodifica el String que le introducimos y separa los JSON Objects y los JSON Arrays de tal forma que una vez que se han separado (virtualmente) se vuelven a componer en un Array que en nuestro caso será la variable de salida $array.
Para observar que se ha generado un Array se puede usar la función “print_r” sobre la variable $array de salida.
print_r($array);
En nuestro ejemplo nos mostrará lo siguiente:
Array ( [0] => stdClass Object ( [0] => 1 [id_fruta] => 1 [1] => Manzana [nombre_fruta] => Manzana [2] => 100 [cantidad] => 100 ) [1] => stdClass Object ( [0] => 2 [id_fruta] => 2 [1] => Platano [nombre_fruta] => Platano [2] => 167 [cantidad] => 167 ) [2] => stdClass Object ( [0] => 3 [id_fruta] => 3 [1] => Pera [nombre_fruta] => Pera [2] => 820 [cantidad] => 820 ) )
Podemos como se han creado una key por cada campo de nuestro JSON, es decir podemos obtener el dato directamente escribiendo el índice del array o el nombre del mismo.
Ejemplos de uso.
A continuación se van a explicar varias maneras de obtener datos de un JSON así como de recorrer un array que contiene los datos de un JSON.
Obtener un dato directamente del Array.
echo $array[0]->nombre_fruta;
Obtenemos “Manzana”;
Recorrer y recuperar valores de un objeto JSON con foreach.
foreach($array as $obj){ $id_fruta = $obj->id_fruta; $nombre_fruta = $obj->nombre_fruta; $cantidad = $obj->cantidad; echo $id_fruta." ".$nombre_fruta." ".$cantidad; echo " "; }
El resultado de este bucle es el siguiente:
1 Manzana 100 2 Plátano 167 3 Pera 820
Recorrer y recuperar valores de un objeto JSON con un bucle for.
for($i=0;$i<count($array);$i++){ $id_fruta="$array[$i]-">id_fruta; $nombre_fruta = $array[$i]->nombre_fruta; $cantidad = $array[$i]->cantidad; echo $id_fruta." ".$nombre_fruta." ".$cantidad; echo " "; }
El resultado es el mismo que tiene el apartado anterior
1 Manzana 100 2 Plátano 167 3 Pera 820
Bueno y esto es todo, hasta hoy hemos visto los principios básicos de un JSON, hemos creado un JSON a partir de una consulta MySQL y hemos gestionado el JSON creado para obtener los datos. En el siguiente tutorial vamos a recopilar todo lo aprendido mediante un ejemplo práctico completo.
Podéis descargar el código en el siguiente repositorio de github.
Si te ha gustado el tutorial, compártelo en tus redes sociales y ayuda a que los conocimientos que compartimos con la comunidad llegue lo más lejos posible. Si tenéis alguna duda podéis contactar conmigo vía twitter(@alex_esquiva) o vía comentarios en el post.
¡Un saludo @alex_esquiva!