Procesamiento JSON en PHP: Guía completa para trabajar con JSON

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 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 de facto para la comunicación entre cliente y servidor, así como entre diferentes servicios web. En PHP, el trabajo con JSON está implementado de forma nativa y no requiere la instalación de extensiones adicionales, lo que lo convierte en uno de los lenguajes más convenientes para analizar y generar datos JSON. En este artículo, analizaremos en detalle todos los aspectos del procesamiento JSON en PHP: desde funciones básicas hasta técnicas avanzadas y manejo de errores.



Funciones principales de PHP para trabajar con JSON



PHP proporciona dos funciones clave para trabajar con JSON:



  • json_encode($value, $options = 0, $depth = 512) — convierte un valor de PHP (array, objeto, cadena, número) en una cadena JSON.
  • json_decode($json, $associative = false, $depth = 512, $options = 0) — decodifica una cadena JSON de vuelta a un valor de PHP. Si el parámetro $associative se establece en true, devuelve un array asociativo; de lo contrario, devuelve un objeto stdClass.


Veamos un ejemplo sencillo:



<?php// Creamos un array asociativo$data = [    "name" => "Iván",    "age" => 30,    "city" => "Moscú",    "skills" => ["PHP", "JavaScript", "Python"]];

// Codificamos a JSON$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $json;// Salida:// {// "name": "Iván",// "age": 30,// "city": "Moscú",// "skills": ["PHP", "JavaScript", "Python"]// }

// Decodificamos de vuelta a un array$decoded = json_decode($json, true);echo $decoded['name']; // Iván?>


Opciones importantes de json_encode



La función json_encode admite múltiples banderas que modifican el comportamiento de la codificación. Las más útiles son:



  • JSON_UNESCAPED_UNICODE — no escapa caracteres Unicode (cirílico, emojis). Sin esta bandera, las letras rusas se convertirán en \\uXXXX.
  • JSON_PRETTY_PRINT — formatea la salida con sangrías y saltos de línea para facilitar la lectura.
  • JSON_NUMERIC_CHECK — convierte cadenas numéricas en números.
  • JSON_FORCE_OBJECT — fuerza la creación de un objeto en lugar de un array, incluso si el array está vacío o es indexado.
  • JSON_PRESERVE_ZERO_FRACTION — conserva la parte fraccionaria para números enteros (por ejemplo, 10.0).


Ejemplo de combinación de opciones:



<?php$data = ['product' => 'Libro', 'price' => '1500.50', 'count' => 5];echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);// {"product":"Libro","price":1500.5,"count":5}?>


Manejo de estructuras anidadas y objetos complejos



PHP permite trabajar con estructuras JSON profundamente anidadas. Veamos un ejemplo de análisis de una respuesta compleja de una API:



<?php// Supongamos que esta es una respuesta de una API externa$apiResponse = '{    "status": "success",    "data": {        "users": [            {"id": 1, "name": "Ana", "roles": ["admin", "editor"]},            {"id": 2, "name": "Pedro", "roles": ["user"]}        ],        "pagination": {            "page": 1,            "totalPages": 3        }    }}';

$parsed = json_decode($apiResponse, true);

// Obtenemos los nombres de todos los usuarios$names = array_column($parsed['data']['users'], 'name');print_r($names); // Array ( [0] => Ana [1] => Pedro )

// Verificamos si algún usuario tiene el rol adminforeach ($parsed['data']['users'] as $user) { if (in_array('admin', $user['roles'])) { echo "{$user['name']} tiene permisos de administrador"; }}?>


Manejo de errores JSON



Uno de los problemas más comunes es un JSON incorrecto. PHP proporciona funciones para diagnosticar errores:



  • json_last_error() — devuelve

Recommendations