Procesamiento de JSON en PHP: funciones, ejemplos y mejores prácticas

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

Procesamiento de JSON en PHP: guía completa



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se ha convertido en el estándar para la comunicación entre cliente y servidor. En PHP, el trabajo con JSON se implementa de forma nativa a través de las funciones integradas json_encode() y json_decode(). En este artículo, analizaremos en detalle todos los aspectos del procesamiento de JSON en PHP: desde operaciones básicas hasta técnicas avanzadas y manejo de errores.



Funciones principales para trabajar con JSON en PHP



PHP proporciona dos herramientas clave para el procesamiento de JSON:



  • json_encode() — convierte un valor de PHP (array, objeto, cadena) en una cadena JSON.
  • json_decode() — decodifica una cadena JSON de vuelta a un valor de PHP.


Ejemplo de uso básico de json_encode()



<?php// Datos originales: array asociativo$data = [    'name' => 'Iván',    'age' => 30,    'skills' => ['PHP', 'JavaScript', 'Python']];

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


Resultado de la ejecución:



{    "name": "Iván",    "age": 30,    "skills": [        "PHP",        "JavaScript",        "Python"    ]}


La bandera JSON_UNESCAPED_UNICODE conserva los caracteres cirílicos sin escapar, y JSON_PRETTY_PRINT formatea la salida con sangrías para facilitar la lectura.



Ejemplo de decodificación de JSON en PHP



<?php$jsonString = '{"name":"Ana","age":25,"city":"Moscú"}';

// Decodificamos a un array asociativo (segundo argumento true)$array = json_decode($jsonString, true);echo $array['name']; // Anaecho $array['city']; // Moscú

// Decodificamos a un objeto (por defecto)$object = json_decode($jsonString);echo $object->name; // Ana?>


Manejo de errores al trabajar con JSON



Al trabajar con datos externos, es importante verificar la validez del JSON. Para ello, use json_last_error() y json_last_error_msg():



<?php$invalidJson = '{name: "Error"}'; // JSON no válido (sin comillas en la clave)

$decoded = json_decode($invalidJson);

if (json_last_error() !== JSON_ERROR_NONE) { $errorMsg = json_last_error_msg(); echo "Error de decodificación de JSON: $errorMsg"; // Salida: Error de decodificación de JSON: Syntax error}?>


Trabajo con estructuras anidadas



JSON es ideal para datos jerárquicos complejos. Veamos un ejemplo con arrays y objetos anidados:



<?php$complexData = [    'users' => [        [            'id' => 1,            'name' => 'Pedro',            'orders' => [                ['product' => 'Portátil', 'price' => 75000],                ['product' => 'Ratón', 'price' => 1500]            ]        ],        [            'id' => 2,            'name' => 'María',            'orders' => []        ]    ],    'total_orders' => 2];

$json = json_encode($complexData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);file_put_contents('data.json', $json); // Guardamos en un archivo

// Leemos de vuelta$jsonFromFile = file_get_contents('data.json');$restoredData = json_decode($jsonFromFile, true);

// Acceso a datos anidadosecho $restoredData['users'][0]['orders'][0]['product']; // Portátil?>


Opciones avanzadas de json_encode()



PHP admite múltiples banderas para un ajuste fino de la codificación:



  • JSON_FORCE_OBJECT — codifica forzosamente un array como objeto.
  • JSON_NUMERIC_CHECK — convierte cadenas numéricas en números.
  • JSON_UNESCAPED_SLASHES — no escapa las barras inclinadas.
  • JSON_THROW_ON_ERROR — lanza una excepción en caso de error (

Recommendations