JSON: Lenguaje común para el intercambio de datos
Al finalizar este tema
Conocerás qué es JSON, por qué se utiliza y cómo se maneja en JavaScript.
¿Por qué JSON?
Para que el servidor y el cliente intercambien datos, es necesario que acuerden un formato. Incluso si el servidor está escrito en Python y el cliente en JavaScript, ambos deben utilizar un formato que puedan comprender.
JSON (JavaScript Object Notation) es ese lenguaje común. Al ser un formato basado en texto, se puede leer y escribir en cualquier lenguaje de programación. De hecho, es el formato de datos estándar para las API web.
Estructura de JSON
{
"name": "Alice",
"age": 25,
"isStudent": false,
"scores": [85, 92, 78],
"address": {
"city": "Seoul",
"zip": "06000"
},
"phone": null
}La regla es simple:
- La clave debe estar siempre entre comillas dobles (no se permiten comillas simples)
- El valor solo puede ser una cadena, un número, un booleano, un array, un objeto o null
- No se permiten funciones, valores indefinidos ni comentarios
- No se permite la coma final
Es similar a un objeto de JavaScript, pero más estricto.
JSON.stringify: objeto → cadena
const user = { name: "Alice", age: 25 };
const json = JSON.stringify(user);
console.log(json); // '{"name":"Alice","age":25}'
console.log(typeof json); // "string"Convierte un objeto de JavaScript en una cadena JSON. Este proceso se conoce como serialización. Se utiliza para enviar datos a un servidor.
Para obtener una salida más legible:
console.log(JSON.stringify(user, null, 2));El tercer argumento es el número de espacios para la indentación.
JSON.parse: cadena → objeto
const json = '{"name":"Alice","age":25}';
const user = JSON.parse(json);
console.log(user.name); // "Alice"
console.log(typeof user); // "object"Convierte una cadena JSON en un objeto de JavaScript. Este proceso se conoce como deserialización. Es necesario cuando se utilizan los datos recibidos del servidor.
Si se intenta analizar un JSON con formato incorrecto, se producirá un error:
JSON.parse("not json"); // SyntaxErrorPor lo tanto, es más seguro usar un bloque try-catch al analizar la respuesta de la API.
JSON en las comunicaciones de API
// Enviar datos (POST)
await fetch("/api/users", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "Alice", age: 25 }),
});
// Recibir datos (GET)
const res = await fetch("/api/users/1");
const user = await res.json(); // Hace JSON.parse automáticamentefetch de res.json() llama automáticamente a JSON.parse. Al enviar, debe convertirse directamente a JSON.stringify.
Esencial
JSON es un formato de intercambio de datos basado en texto y el estándar de facto para las API web. Convierte objetos en cadenas con
JSON.stringifyy cadenas en objetos conJSON.parse. Las claves deben estar entre comillas dobles; no se permiten funciones ni valoresundefined.