En este módulo, aprenderemos a trabajar con dos formatos de datos muy comunes en el desarrollo web: JSON (JavaScript Object Notation) y XML (eXtensible Markup Language). Ambos formatos son ampliamente utilizados para el intercambio de datos entre servidores y aplicaciones web.

JSON (JavaScript Object Notation)

¿Qué es JSON?

JSON es un formato de texto ligero para el intercambio de datos. Es fácil de leer y escribir para los humanos y fácil de analizar y generar para las máquinas. JSON se basa en una colección de pares clave/valor y es una alternativa popular a XML.

Sintaxis de JSON

La sintaxis de JSON es muy similar a la de los objetos en JavaScript. Aquí hay un ejemplo básico:

{
    "nombre": "Juan",
    "edad": 30,
    "casado": true,
    "hijos": ["Ana", "Luis"],
    "direccion": {
        "calle": "Calle Falsa 123",
        "ciudad": "Springfield"
    }
}

Trabajando con JSON en PHP

Convertir JSON a un Array o un Objeto PHP

Para convertir una cadena JSON en una estructura de datos PHP, utilizamos la función json_decode().

$json = '{"nombre": "Juan", "edad": 30, "casado": true, "hijos": ["Ana", "Luis"], "direccion": {"calle": "Calle Falsa 123", "ciudad": "Springfield"}}';

$data = json_decode($json, true); // Convertir a un array asociativo
print_r($data);

Convertir un Array o un Objeto PHP a JSON

Para convertir una estructura de datos PHP en una cadena JSON, utilizamos la función json_encode().

$data = [
    "nombre" => "Juan",
    "edad" => 30,
    "casado" => true,
    "hijos" => ["Ana", "Luis"],
    "direccion" => [
        "calle" => "Calle Falsa 123",
        "ciudad" => "Springfield"
    ]
];

$json = json_encode($data);
echo $json;

Ejercicio Práctico con JSON

Ejercicio: Escribe un script PHP que convierta un array asociativo en una cadena JSON y luego convierta esa cadena JSON de nuevo en un array asociativo.

Solución:

<?php
// Array asociativo
$data = [
    "nombre" => "Juan",
    "edad" => 30,
    "casado" => true,
    "hijos" => ["Ana", "Luis"],
    "direccion" => [
        "calle" => "Calle Falsa 123",
        "ciudad" => "Springfield"
    ]
];

// Convertir el array a JSON
$json = json_encode($data);
echo "JSON: " . $json . "\n";

// Convertir el JSON de nuevo a un array asociativo
$dataArray = json_decode($json, true);
print_r($dataArray);
?>

XML (eXtensible Markup Language)

¿Qué es XML?

XML es un lenguaje de marcado que define un conjunto de reglas para codificar documentos en un formato que es legible tanto para humanos como para máquinas. XML es extensible, lo que significa que puedes definir tus propias etiquetas.

Sintaxis de XML

La sintaxis de XML es similar a la de HTML, pero es más estricta. Aquí hay un ejemplo básico:

<persona>
    <nombre>Juan</nombre>
    <edad>30</edad>
    <casado>true</casado>
    <hijos>
        <hijo>Ana</hijo>
        <hijo>Luis</hijo>
    </hijos>
    <direccion>
        <calle>Calle Falsa 123</calle>
        <ciudad>Springfield</ciudad>
    </direccion>
</persona>

Trabajando con XML en PHP

Cargar y Analizar XML

Para cargar y analizar un documento XML en PHP, podemos usar la clase SimpleXMLElement.

$xmlString = '<persona>
    <nombre>Juan</nombre>
    <edad>30</edad>
    <casado>true</casado>
    <hijos>
        <hijo>Ana</hijo>
        <hijo>Luis</hijo>
    </hijos>
    <direccion>
        <calle>Calle Falsa 123</calle>
        <ciudad>Springfield</ciudad>
    </direccion>
</persona>';

$xml = new SimpleXMLElement($xmlString);
echo "Nombre: " . $xml->nombre . "\n";
echo "Edad: " . $xml->edad . "\n";

Convertir un Array PHP a XML

Para convertir un array PHP a XML, podemos usar una función personalizada.

function arrayToXml($data, &$xmlData) {
    foreach($data as $key => $value) {
        if(is_array($value)) {
            if(is_numeric($key)){
                $key = 'item'.$key; // Dealing with <0/>..<n/> issues
            }
            $subnode = $xmlData->addChild($key);
            arrayToXml($value, $subnode);
        } else {
            $xmlData->addChild("$key",htmlspecialchars("$value"));
        }
     }
}

$data = [
    "nombre" => "Juan",
    "edad" => 30,
    "casado" => true,
    "hijos" => ["Ana", "Luis"],
    "direccion" => [
        "calle" => "Calle Falsa 123",
        "ciudad" => "Springfield"
    ]
];

$xmlData = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
arrayToXml($data, $xmlData);
echo $xmlData->asXML();

Ejercicio Práctico con XML

Ejercicio: Escribe un script PHP que convierta un array asociativo en un documento XML y luego cargue y analice ese documento XML.

Solución:

<?php
function arrayToXml($data, &$xmlData) {
    foreach($data as $key => $value) {
        if(is_array($value)) {
            if(is_numeric($key)){
                $key = 'item'.$key; // Dealing with <0/>..<n/> issues
            }
            $subnode = $xmlData->addChild($key);
            arrayToXml($value, $subnode);
        } else {
            $xmlData->addChild("$key",htmlspecialchars("$value"));
        }
     }
}

$data = [
    "nombre" => "Juan",
    "edad" => 30,
    "casado" => true,
    "hijos" => ["Ana", "Luis"],
    "direccion" => [
        "calle" => "Calle Falsa 123",
        "ciudad" => "Springfield"
    ]
];

// Convertir el array a XML
$xmlData = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
arrayToXml($data, $xmlData);
$xmlString = $xmlData->asXML();
echo "XML: " . $xmlString . "\n";

// Cargar y analizar el XML
$xml = new SimpleXMLElement($xmlString);
echo "Nombre: " . $xml->nombre . "\n";
echo "Edad: " . $xml->edad . "\n";
?>

Conclusión

En esta sección, hemos aprendido a trabajar con JSON y XML en PHP. Hemos visto cómo convertir datos entre estos formatos y estructuras de datos PHP, y hemos practicado con ejemplos y ejercicios. Estos conocimientos son fundamentales para el intercambio de datos en aplicaciones web modernas. En el próximo módulo, exploraremos cómo PHP puede interactuar con servicios web y APIs, utilizando estos formatos de datos.

Curso de Programación en PHP

Módulo 1: Introducción a PHP

Módulo 2: Estructuras de Control

Módulo 3: Funciones

Módulo 4: Arrays

Módulo 5: Trabajando con Formularios

Módulo 6: Trabajando con Archivos

Módulo 7: Programación Orientada a Objetos (POO)

Módulo 8: Trabajando con Bases de Datos

Módulo 9: Técnicas Avanzadas de PHP

Módulo 10: Frameworks de PHP y Mejores Prácticas

Módulo 11: Proyecto: Construyendo una Aplicación Web

© Copyright 2024. Todos los derechos reservados