Trabajar con JSON en PHP

Trabajar con JSON en PHP

¿Necesitas trabajar con JSON en PHP? Es una alternativa muy empleada en el desarrollo Web actual, especialmente si necesitamos conectarnos con una REST API o si debemos generar datos para intercambiar con otras plataformas.

Vale señalar que JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos. A lo largo de los años ha crecido como una alternativa más ligera a XML para transmitir datos.

En este artículo, veremos cómo trabajar con JSON en PHP. Aprenderemos cómo crear un JSON desde cero, cómo mostrar la información en una página HTML, y cómo consumir datos desde una REST API que devuelve JSON para mostrar los datos en HTML. Para que este artículo sea claro y fácil de seguir, utilizaremos ejemplos prácticos con código detallado.

Crear un JSON en PHP

En PHP podemos crear un JSON utilizando la función json_encode(), que convierte un array o un objeto PHP en un formato JSON.

Supongamos que queremos crear un JSON con una lista de productos. En primer lugar debemos declarar una variable. Luego asignamos los datos como un tipo de Array de PHP. A continuación lo convertimos y finalmente lo mostramos. Esos serían los pasos básicos. Veamos el ejemplo en código PHP:

<?php
// Array de productos en PHP
$productos = [
    ["id" => 1, "nombre" => "Laptop", "precio" => 1200, "stock" => 5],
    ["id" => 2, "nombre" => "Mouse", "precio" => 20, "stock" => 100],
    ["id" => 3, "nombre" => "Teclado", "precio" => 50, "stock" => 30]
];

// Convertir el array a formato JSON
$jsonProductos = json_encode($productos, JSON_PRETTY_PRINT);

// Mostrar el JSON en pantalla
header('Content-Type: application/json');
echo $jsonProductos;
?>

En este código, usamos json_encode() para convertir un array PHP en JSON y la función header() para indicar que el contenido será de tipo application/json. El resultado será un JSON como este:

[
    {
        "id": 1,
        "nombre": "Laptop",
        "precio": 1200,
        "stock": 5
    },
    {
        "id": 2,
        "nombre": "Mouse",
        "precio": 20,
        "stock": 100
    },
    {
        "id": 3,
        "nombre": "Teclado",
        "precio": 50,
        "stock": 30
    }
]

Mostrar el JSON en HTML

Para mostrar la información en HTML, podemos decodificar el JSON usando json_decode() y recorrer los datos para generar el contenido dinámicamente.

En el siguiente ejemplo veremos como se puede mostrar la información mediante una tabla HTML:

<?php
// Decodificar el JSON a un array PHP
$productos = json_decode($jsonProductos, true);
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Lista de Productos</title>
</head>
<body>
    <h1>Lista de Productos</h1>
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nombre</th>
                <th>Precio</th>
                <th>Stock</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($productos as $producto): ?>
                <tr>
                    <td><?php echo $producto['id']; ?></td>
                    <td><?php echo $producto['nombre']; ?></td>
                    <td><?php echo $producto['precio']; ?></td>
                    <td><?php echo $producto['stock']; ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
</body>
</html>

En este código, utilizamos json_decode() para convertir el JSON a un array PHP, y luego usamos un bucle foreach para generar filas de tabla en HTML para cada producto.

Consumir JSON desde una REST API

Mediante PHP podremos consumir datos JSON desde una REST API utilizando funciones como file_get_contents() o la biblioteca cURL. Aquí veremos ambos enfoques.

Supongamos que tenemos una API que devuelve una lista de usuarios en formato JSON desde la URL https://localhost/usuarios.

<?php
// URL de la API
$url = 'https://localhost/usuarios';

// Obtener el contenido de la API
$response = file_get_contents($url);

// Decodificar el JSON a un array PHP
$usuarios = json_decode($response, true);
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Lista de Usuarios</title>
</head>
<body>
    <h1>Usuarios Registrados</h1>
    <ul>
        <?php foreach ($usuarios as $usuario): ?>
            <li><?php echo $usuario['nombre']; ?> (<?php echo $usuario['email']; ?>)</li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

En este código, usamos file_get_contents() para obtener el JSON desde la API, luego lo decodificamos y mostramos los usuarios en una lista HTML.

Otra opción más robusta es usar cURL para hacer peticiones HTTP a una API.

<?php
// Iniciar cURL
$ch = curl_init();

// Configurar la URL y otras opciones
curl_setopt($ch, CURLOPT_URL, 'https://localhost/usuarios');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Ejecutar la petición
$response = curl_exec($ch);

// Verificar si hubo un error
if ($response === false) {
    $error = curl_error($ch);
    echo "Error: $error";
} else {
    // Decodificar el JSON a un array PHP
    $usuarios = json_decode($response, true);
}

// Cerrar cURL
curl_close($ch);
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Lista de Usuarios</title>
</head>
<body>
    <h1>Usuarios Registrados</h1>
    <ul>
        <?php foreach ($usuarios as $usuario): ?>
            <li><?php echo $usuario['nombre']; ?> (<?php echo $usuario['email']; ?>)</li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

En conclusión

Trabajar con JSON en un lenguaje como PHP es sencillo y muy útil para intercambiar datos entre un servidor y un cliente. Podremos generar contenido JSON utilizando json_encode(), mostrarlos en HTML utilizando json_decode(), y consumir JSON desde APIs utilizando funciones como file_get_contents() o cURL. Estos ejemplos nos ayudarán a integrar JSON en nuestros proyectos de forma eficaz.

Para saber más sobre como trabajar con Arrays en PHP podemos consultar la documentación.

Más sobre Diseño y desarrollo Web


Acerca de

Autor de los libros: Webmaster Profesional, HTML5: Comprenda el cambio y Apps HTML5 para móviles. Soy especialista en Desarrollo Web. Realizo proyectos basados en Inteligencia Artificial. Colaboré como autor y editor de contenidos para revistas, colecciones y diversos medios impresos y digitales. Brindo capacitaciones, clases de formación y consultorías sobre lenguajes de programación y herramientas para Desarrollo Web y móvil en modalidad online y presencial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*