Trabajo con JSON en PHP: análisis y serialización en la práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con JSON en PHP: análisis y serialización en la práctica



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se ha convertido en el estándar para las API web y los archivos de configuración. En PHP, el trabajo con JSON está implementado de forma nativa y no requiere la instalación de extensiones adicionales. En este artículo, analizaremos cómo realizar el análisis y la serialización de JSON en PHP con ejemplos reales, y también aprenderemos a manejar errores y trabajar con estructuras anidadas.



¿Qué son la serialización y el análisis de JSON?



Antes de pasar al código, definamos los conceptos clave:



  • Serialización — conversión de una variable PHP (array, objeto) a una cadena JSON.
  • Análisis (deserialización) — proceso inverso: conversión de una cadena JSON a una variable PHP.


PHP proporciona dos funciones principales para estas tareas: json_encode() y json_decode(). Veámoslas en detalle.



Serialización de datos a JSON con json_encode()



La función json_encode() toma un valor PHP (excepto recursos) y devuelve su representación JSON. Veamos un ejemplo básico:



<?php$user = [    'name' => 'Iván Petrov',    'age' => 28,    'email' => 'ivan@example.com',    'is_active' => true];

$json = json_encode($user);echo $json;// Salida: {"name":"Iván Petrov","age":28,"email":"ivan@example.com","is_active":true}?>


Por defecto, json_encode() convierte los arrays asociativos en objetos JSON. Si necesita un array, use la bandera JSON_FORCE_OBJECT:



<?php$numbers = [10, 20, 30];echo json_encode($numbers); // [10,20,30]echo json_encode($numbers, JSON_FORCE_OBJECT); // {"0":10,"1":20,"2":30}?>


Banderas útiles de json_encode()



  • JSON_PRETTY_PRINT — formatea la salida con sangrías para facilitar la lectura.
  • JSON_UNESCAPED_UNICODE — no escapa los caracteres Unicode (letras rusas).
  • JSON_NUMERIC_CHECK — convierte cadenas que contienen números al tipo numérico.


<?php$data = ['product' => 'Libro', 'price' => '1500'];

// Salida bonita con caracteres rusosecho json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);/*{ "product": "Libro", "price": "1500"}*/

// Conversión automática de la cadena '1500' a númeroecho json_encode($data, JSON_NUMERIC_CHECK);// {"product":"Libro","price":1500}?>


Análisis de JSON en PHP con json_decode()



La función json_decode() toma una cadena JSON y la convierte en una variable PHP. El segundo parámetro $associative determina si se devuelve un array asociativo (true) o un objeto (false, por defecto).



<?php$jsonString = '{"name":"María","age":25,"hobbies":["lectura","viajes"]}';

// Análisis a objeto$obj = json_decode($jsonString);echo $obj->name; // Maríaecho $obj->hobbies[0]; // lectura

// Análisis a array asociativo$arr = json_decode($jsonString, true);echo $arr['age']; // 25?>


Trabajo con estructuras anidadas



JSON a menudo contiene objetos y arrays anidados. Veamos un ejemplo con una API del clima:



<?php$weatherJson = '{    "city": "Moscú",    "temperature": {        "current": -5,        "feels_like": -8    },    "forecast": [        {"day": "Lun", "temp": -3},        {"day": "Mar", "temp": -1}    ]}';

$weather = json_decode($weatherJson, true);

echo "Temperatura actual: " . $weather['temperature']['current'] . "°C";echo "Sensación térmica: " . $weather['temperature']['feels_like'] . "°C";

foreach ($weather['forecast'] as $day) { echo "{$day['day']}: {$day['temp']}°C";}?>


Blogs

Book Recommendations