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 (
También en la biblioteca
Validación de datos en C# (.NET): bibliotecas y enfoques
NaturalLanguage para Swift: guía completa con ejemplos
Biblioteca estándar de C++: revisión completa de capacidades
Serde para Rust: guía completa con ejemplos