¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Leer, escribir y validar JSON

Después de esta lección: Puedo leer, escribir y comprobar un registro en JSON.

Lección de 60 min7 comandosLaboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

JSON es el idioma común de las APIs

JSON, de «JavaScript Object Notation», es un texto que escribe datos con llaves, corchetes y comillas. Casi todas las APIs web lo usan para enviar y recibir datos.

Saber leerlo y comprobarlo evita el fallo más habitual: un dato que llega con otro tipo, o que no llega.

Al terminar esta lección

Nota

Puedo leer, escribir y comprobar un registro en JSON.

Palabras clave

PalabraQué significaEjemplo
Objetoun grupo de pares nombre y valor entre llaves{"copies": 3}
Arrayuna lista de valores entre corchetes[1, 2, 3]
Tipola clase de un valor: texto, número, verdadero o falso, o null
Campoun par nombre y valor dentro de un objeto
Validarcomprobar que los datos cumplen las reglas

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

Un objeto JSON tiene pares nombre y valor

Un objeto va entre llaves. Cada campo es un nombre entre comillas dobles, dos puntos y un valor. Los campos se separan con comas.

Un array va entre corchetes y separa sus valores con comas. Un array puede tener objetos dentro, y así se envía una lista de filas.

Un libro en JSON

Código: bash
{
  "id": 1,
  "title": "Redes de computadores",
  "copies": 3,
  "status": "disponible",
  "author": null
}

Ejemplo resuelto: los tipos de JSON

TipoCómo se escribeEjemplo
TextoEntre comillas dobles"disponible"
NúmeroSin comillas3
Verdadero o falsotrue o false, sin comillastrue
Nadanull, sin comillasnull
ListaEntre corchetes[1, 2]
ObjetoEntre llaves{"copies": 3}

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

Un error frecuente

Advertencia

Mucha gente cree que "3" y 3 son el mismo valor. Con comillas es un texto, y sin comillas es un número. Una API que espera un número rechaza el texto, y una suma con textos no suma. Comprueba el tipo, no solo que el campo exista.

La API recibe y devuelve JSON

En el laboratorio, la API de la biblioteca envía las filas como un array de objetos. Al crear una fila, envías tú un objeto.

Primero prepara la tabla books. Después pide un libro y mira cómo llega.

Dar a psql la contraseña

Comando
export PGPASSWORD=shop

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crear la tabla de libros

Comando
psql -h db -U shop -q -c "drop table if exists books; create table books (id serial primary key, title text not null, copies int not null default 1, status text not null default 'disponible'); insert into books (title, copies, status) values ('Redes de computadores', 3, 'disponible'), ('Algoritmos y estructuras', 0, 'prestado'), ('Sistemas operativos', 2, 'disponible'), ('Ingenieria del software', 1, 'disponible'); notify pgrst, 'reload schema'"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir solo dos campos

Comando
curl -s -w "\n" "http://api:3000/books?id=eq.1&select=title,copies"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Validar es comprobar tres cosas

Una API que valida comprueba que el campo existe, que tiene el tipo correcto y que su valor cumple la regla. Por ejemplo, copies debe existir, ser un número entero y no ser negativo.

Si algo falla, responde con un error y no guarda nada. Mira los tres fallos con la tabla de libros.

Un JSON mal escrito

Comando
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"title":"Redes seguras",}' "http://api:3000/books"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un número escrito como texto

Comando
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"title":"Redes seguras","copies":"muchas"}' "http://api:3000/books"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Falta el campo title

Comando
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"copies":1}' "http://api:3000/books"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un libro correcto

Comando
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"title":"Redes seguras","copies":1}' "http://api:3000/books"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.