Tema 16

Manejo de JSON y Consumo de APIs en PHP

Aprende a serializar y deserializar datos JSON en PHP con json_encode y json_decode para construir y consumir APIs web modernas.

¿Por qué JSON es el Estándar de la Web?

JSON (JavaScript Object Notation) es el formato de intercambio de datos ligero, legible y universal por excelencia. Permite que aplicaciones backend escritas en PHP se comuniquen de forma transparente con clientes frontend (React, Vue, aplicaciones móviles o microservicios).

Las Dos Funciones Esenciales de PHP

1. json_encode($datos, $banderas)

Convierte arrays u objetos de PHP en una cadena de texto en formato JSON:

  • JSON_PRETTY_PRINT: Formatea el JSON con sangrías legibles.
  • JSON_UNESCAPED_UNICODE: Mantiene acentos y caracteres especiales sin codificarlos en secuencias unicode como \u00e1.
  • JSON_THROW_ON_ERROR: Lanza una excepción si los datos no pueden serializarse.

2. json_decode($cadenaJson, $asoc)

Convierte una cadena JSON en estructuras utilizables en PHP:

  • Si el segundo argumento es true, retorna un array asociativo (práctica recomendada en PHP moderno).
  • Si es false o se omite, retorna un objeto genérico de tipo stdClass.

⚡ Ejemplo de Creación y Consumo de un Payload JSON

Serializa un catálogo de cursos hacia JSON con banderas de formato y luego deserialízalo para consumirlo:

index.html
Solo lectura
<!DOCTYPE html>
<html>
<body>

<h2>JSON en PHP 8.3: Generación y Lectura de APIs</h2>

<?php
// 1. Estructura de datos en PHP (simulando respuesta de base de datos)
$academiaData = [
    "plataforma" => "Kilopolis Academia",
    "version"    => "2.0",
    "timestamp"  => time(),
    "cursos"     => [
        [
            "id"       => 101,
            "titulo"   => "Bootcamp Fullstack: PHP 8.3 & JS Moderno",
            "cupos"    => 25,
            "precio"   => 249.99,
            "activo"   => true
        ],
        [
            "id"       => 102,
            "titulo"   => "Arquitectura de Software y Microservicios",
            "cupos"    => 15,
            "precio"   => 299.00,
            "activo"   => false
        ]
    ]
];

// 2. Serializar a formato JSON (Codificación)
$jsonOutput = json_encode(
    $academiaData, 
    JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
);

echo "<h4>1. Payload JSON generado con json_encode():</h4>";
echo "<pre style='background:#0f172a; color:#38bdf8; padding:12px; border-radius:6px; font-family:monospace; font-size:0.85rem; overflow:auto;'>";
echo htmlspecialchars($jsonOutput, ENT_QUOTES, 'UTF-8');
echo "</pre>";

// 3. Simulación de consumo: deserializamos la cadena JSON a array asociativo
echo "<hr>";
echo "<h4>2. Datos recuperados y procesados con json_decode(\$json, true):</h4>";

$recuperado = json_decode($jsonOutput, true);

echo "<p>Plataforma origen: <strong>{$recuperado['plataforma']}</strong> (Versión {$recuperado['version']})</p>";
echo "<table border='1' cellpadding='8' cellspacing='0' style='border-collapse:collapse; width:100%; max-width:550px;'>";
echo "<tr style='background:#f1f5f9;'><th>ID</th><th>Título del Curso</th><th>Precio</th><th>Estado</th></tr>";

foreach ($recuperado['cursos'] as $item) {
    $badge = $item['activo'] 
        ? "<span style='color:#16a34a; font-weight:bold;'>Activo</span>" 
        : "<span style='color:#dc2626; font-weight:bold;'>Cerrado</span>";

    echo "<tr>";
    echo "<td>#{$item['id']}</td>";
    echo "<td><strong>{$item['titulo']}</strong></td>";
    echo "<td>\${$item['precio']} USD</td>";
    echo "<td>{$badge}</td>";
    echo "</tr>";
}
echo "</table>";
?>

</body>
</html>
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de PHP y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.