Trabajo con JSON en PHP: análisis y serialización de datos

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

Trabajar con JSON en PHP: Una Guía Completa para el Análisis y la Serialización



JSON (Notación de Objetos JavaScript) es un formato ligero de intercambio de datos ampliamente utilizado en el desarrollo web. PHP proporciona potentes funciones integradas para trabajar con JSON, permitiendo una fácil conversión entre estructuras de PHP y cadenas JSON. En este artículo, examinaremos a fondo cómo realizar el análisis (decodificación) y la serialización (codificación) de JSON en PHP, así como veremos errores típicos y formas de manejarlos.



¿Qué es JSON y por qué se necesita en PHP?



JSON es un formato de texto basado en la sintaxis de JavaScript. Se utiliza para transferir datos estructurados entre un servidor y un cliente (por ejemplo, en APIs REST). En PHP, JSON es indispensable cuando:



  • Se intercambian datos con APIs externas (por ejemplo, servicios meteorológicos, sistemas de pago)
  • Se almacenan archivos de configuración
  • Se serializan datos para caché
  • Se trabaja con web sockets y solicitudes AJAX


PHP tiene soporte para trabajar con JSON desde la versión 5.2.0. Todas las funciones necesarias están integradas en el núcleo — no se requieren extensiones adicionales.



Serialización de Datos a JSON (json_encode)



La función json_encode() convierte valores de PHP (arrays, objetos, cadenas, números) en una cadena JSON. Veamos un ejemplo básico:



<?php// Array asociativo$user = [    'name' => 'Ivan Petrov',    'age' => 28,    'email' => 'ivan@example.com',    'is_active' => true,    'hobbies' => ['programming', 'chess', 'running']];

// Codificar a JSON$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>


Resultado:



{    "name": "Ivan Petrov",    "age": 28,    "email": "ivan@example.com",    "is_active": true,    "hobbies": [        "programming",        "chess",        "running"    ]}


Indicadores importantes de json_encode



  • JSON_UNESCAPED_UNICODE — preserva caracteres cirílicos (sin este indicador, los caracteres rusos se escaparán como \\uXXXX)
  • JSON_PRETTY_PRINT — formatea la salida con sangrías para facilitar la lectura
  • JSON_NUMERIC_CHECK — convierte cadenas numéricas a números
  • JSON_FORCE_OBJECT — fuerza la creación de un objeto, incluso si se pasa un array vacío


Análisis de JSON en PHP (json_decode)



La función json_decode() realiza la transformación inversa — de una cadena JSON a un valor de PHP. Por defecto, devuelve un objeto. Para obtener un array asociativo, pasa el segundo parámetro true:



<?php$jsonString = '{"name":"Ivan Petrov","age":28,"email":"ivan@example.com","is_active":true}';

// Decodificar a objeto$userObject = json_decode($jsonString);echo $userObject->name; // Ivan Petrov

// Decodificar a array asociativo$userArray = json_decode($jsonString, true);echo $userArray['name']; // Ivan Petrov?>


Profundidad de anidamiento



El tercer parámetro de json_decode() — depth — limita la profundidad de recursión. Por defecto, es 512. Esto protege contra ataques como el "ataque de mil millones de risas":



<?php$deepJson = '{"a":{"b":{"c":{"d":"test"}}}}';$data = json_decode($deepJson, true, 3); // Error si la profundidad es mayor a 3?>


Manejo de errores al trabajar con JSON



Al analizar JSON inválido, json_decode() devuelve null. Para obtener información detallada del error, usa json_last_error() y json_last_error_msg():



<?php$badJson = '{"name": "Ivan", age: 28}'; // Error: la clave age no está entre comillas

$data = json_decode($badJson, true);

if (json_last_error() !== JSON_ERROR_NONE) {

Blogs

Book Recommendations