Procesamiento 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 de facto para la comunicación entre servidor y cliente. En PHP, el trabajo con JSON está implementado de forma nativa a través de la extensión json, disponible desde PHP 5.2.0. En este artículo, analizaremos en detalle las funciones principales, el manejo de errores, el trabajo con estructuras anidadas y las mejores prácticas.



Funciones principales para trabajar con JSON



PHP proporciona dos funciones clave:



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


Ejemplo: codificar un array a JSON



<?php$data = [    'name' => 'Alice',    'age' => 30,    'is_student' => false,    'skills' => ['PHP', 'JavaScript', 'Python']];

$json = json_encode($data, JSON_PRETTY_PRINT);echo $json;?>


Resultado de la ejecución:



{    "name": "Alice",    "age": 30,    "is_student": false,    "skills": [        "PHP",        "JavaScript",        "Python"    ]}


Ejemplo: decodificar JSON a un array



<?php$jsonString = '{"name":"Bob","age":25,"is_active":true}';

// El segundo parámetro true — devuelve un array asociativo$array = json_decode($jsonString, true);print_r($array);?>


Resultado:



Array(    [name] => Bob    [age] => 25    [is_active] => 1)


Banderas para ajuste fino



Las funciones json_encode() y json_decode() admiten un segundo parámetro: una máscara de bits de banderas. Veamos las más útiles:



  • JSON_PRETTY_PRINT — formatea la salida con sangrías (para legibilidad).
  • JSON_UNESCAPED_UNICODE — no escapa caracteres Unicode (útil para cirílico).
  • JSON_FORCE_OBJECT — fuerza la conversión de un array asociativo a un objeto.
  • JSON_NUMERIC_CHECK — convierte cadenas que contienen números al tipo numérico.


Ejemplo con cirílico y formato



<?php$data = [    'name' => 'Алексей',    'city' => 'Москва'];

echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>


Resultado:



{    "name": "Алексей",    "city": "Москва"}


Manejo de errores al trabajar con JSON



Si la cadena de entrada no es un JSON válido, json_decode() devolverá null. Para conocer la causa exacta del error, use las funciones json_last_error() y json_last_error_msg().



<?php$invalidJson = '{name: "Alice"}'; // JSON no válido (claves sin comillas)

$result = json_decode($invalidJson);if (json_last_error() !== JSON_ERROR_NONE) { echo 'Error: ' . json_last_error_msg();} else { print_r($result);}?>


Salida:



Error: Syntax error


Lista completa de constantes de error:



  • JSON_ERROR_NONE — no hay errores.
  • JSON_ERROR_DEPTH — se ha superado la profundidad máxima de la pila.
  • JSON_ERROR_STATE_MISMATCH — JSON incorrecto (desajuste de corchetes).
  • JSON_ERROR_SYNTAX — error de sintaxis.
  • JSON_ERROR_UTF8 — codificación UTF-8 incorrecta.


Trabajo con estructuras anidadas



JSON a menudo contiene objetos y arrays anidados. PHP permite procesar fácilmente estos datos mediante recursividad o bucles.



<?php$complexJson = '{    "users": [        {"name": "Alice"                    

Recommendations