Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Una API que responde JSON

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

Cuándo llega mi autobús

Una aplicación del móvil enseña cuándo llega tu autobús. No la ha escrito el ayuntamiento entero: pide los datos a un servidor.

Ese servidor no contesta con una página bonita. Contesta con datos, en un formato que cualquier programa entiende.

Hoy haces que tu PHP conteste así.

Palabras clave

PalabraQué significaEjemplo
APIUna puerta de un servidor por la que otros programas piden datos.buses.php?line=L1
JSONUn formato de texto para datos. Lo entienden casi todos los lenguajes.{"line":"L1","minutes":4}
json_encodeConvierte un array de PHP en texto JSON.json_encode($bus)
json_decodeConvierte un texto JSON en un array de PHP.json_decode($text, true)
Código de estadoUn número que dice cómo fue la petición: 200 bien, 404 no existe.404
CabeceraUna línea de información que viaja antes del contenido de la respuesta.Content-Type

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

JSON es texto con una forma fija

Un JSON usa llaves y comillas. Cada dato tiene un nombre y un valor: "line":"L1".

Una lista va entre corchetes. Un objeto, entre llaves.

No tienes que escribirlo a mano. PHP lo hace con json_encode.

Pruébalo: de array a JSON

Código: php
<?php
// Un array con nombre se convierte en un objeto JSON.
$bus = ["line" => "L1", "minutes" => 4, "express" => false];
echo json_encode($bus) . "\n";

// Cambia los minutos por 9 y pon express en true.

Ejemplo resuelto: de PHP a JSON

En PHPEn JSONCómo se llama en JSON
["L1", "L7"]["L1","L7"]Una lista
["line" => "L1"]{"line":"L1"}Un objeto
44Un número
"Café""Caf\u00e9"Un texto, con la é como código
truetrueVerdadero
nullnullNada
[][]Una lista vacía

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: una lista y las tildes

Código: php
<?php
// Una lista de arrays se convierte en una lista de objetos.
$buses = [
    ["line" => "L1", "minutes" => 4],
    ["line" => "L7", "minutes" => 12],
];
echo json_encode($buses) . "\n";

// Las tildes salen como códigos, salvo que lo pidas.
echo json_encode("Café") . "\n";
echo json_encode("Café", JSON_UNESCAPED_UNICODE) . "\n";

Y al revés: json_decode

Otras veces eres tú quien recibe un JSON, de otra API. Lo conviertes en un array con json_decode.

Pon true como segundo dato. Si no, PHP te da un objeto en lugar de un array.

Si el texto no es un JSON válido, devuelve null. Compruébalo siempre.

Pruébalo: de JSON a array

Código: php
<?php
// json_decode con true devuelve un array con nombre.
$text = '{"line":"L1","minutes":4}';
$bus = json_decode($text, true);
echo $bus["line"] . " llega en " . $bus["minutes"] . " minutos\n";

// Añade otro campo al texto y léelo.

Repaso rápido: JSON

Inténtalo

Repaso rápido: JSON

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

9 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.