04 - JSON
JSON (*JavaScript Object Notation*) es un formato de texto para intercambiar información estructurada entre aplicaciones. Es el formato estándar de las APIs REST: el cliente envía JSON y recibe JSON.
1. Sintaxis
{
"id": 42,
"title": "Código limpio",
"available": true,
"authors": ["Robert C. Martin"],
"price": null,
"publisher": {
"name": "Anaya",
"country": "ES"
}
}
| Elemento | Sintaxis |
|---|---|
| Objeto | { “clave”: valor } |
| Array | [valor, valor] |
| Clave | Siempre cadena entre comillas dobles |
| Tipos de valor | cadena, número, booleano (true/false), null, objeto, array |
| Separadores | Comas entre pares y entre elementos; sin coma final |
Los valores pueden anidarse: un array de objetos, un objeto dentro de otro.
2. JSON en las APIs
Una petición a una API REST envía y recibe JSON:
POST /api/books
Content-Type: application/json
{ "title": "Código limpio", "authorId": 3 }
HTTP/1.1 201 Created
Content-Type: application/json
{ "id": 42, "title": "Código limpio" }
La cabecera Content-Type: application/json indica el formato del cuerpo.
3. Leer y escribir JSON desde TypeScript
// Parsear: texto JSON -> objeto
const response = await fetch("/api/books/42");
const book = await response.json();
console.log(book.title);
// Serializar: objeto -> texto JSON
const payload = JSON.stringify({ title: "Código limpio", authorId: 3 });
await fetch("/api/books", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: payload,
});
JSON.parse(texto)convierte texto JSON en un objeto de JavaScript.JSON.stringify(objeto)convierte un objeto en texto JSON.response.json()combina ambas: espera el cuerpo y lo parsea.
4. JSON en Java
En el backend, las librerías de Spring convierten automáticamente entre JSON y objetos Java cuando un controlador devuelve un objeto o recibe un @RequestBody; no se escribe el parseo a mano.
JSON no admite comentarios ni fechas como tipo nativo (se representan como texto ISO:
“2026-10-12”). Y una clave debe ser única dentro de su objeto: repetirla es un error común al construir el JSON a mano.