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:

  1. ¿Qué es y para qué sirve JSON?.
  2. Creación de un JSON a partir de una consulta en MySQL.
  3. Gestionar JSON en PHP.
  4. 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:

  1. Usar la función json_decode para decodificar un JSON.
  2. Entender cómo funciona la función json_decode.
  3. 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!