Artículo de consulta · Programación
JSON: formato, lectura y validación de datos
JSON es un formato de texto para intercambiar datos. Aparece en archivos de configuración y respuestas de APIs. Aunque su sintaxis se parece a la de algunos valores de JavaScript, un texto JSON y un objeto en memoria son cosas distintas.
Qué valores admite
JSON admite objetos, arrays, cadenas, números, booleanos y null. Los nombres de propiedades y las cadenas llevan comillas dobles. No admite comentarios, comas finales, funciones ni undefined. Una fecha suele representarse mediante una cadena que la aplicación interpreta según su contrato.
{
"titulo": "Introducción a HTML",
"publicado": true,
"etiquetas": ["web", "principiante"],
"visitas": 0,
"autor": null
}Del texto a un valor y de vuelta
JSON.parse interpreta una cadena y devuelve el valor representado. JSON.stringify convierte un valor compatible en texto JSON. El tercer argumento de stringify puede añadir sangría para facilitar la lectura.
const texto = '{"titulo":"HTML","visitas":0}';
const articulo = JSON.parse(texto);
console.log(articulo.titulo); // HTML
console.log(JSON.stringify(articulo, null, 2));Sintaxis válida no significa datos correctos
Un texto puede ser JSON válido y contener un valor inesperado. Por ejemplo, "hola" es JSON válido, pero no es un registro de artículo. Después de parsear, comprueba el tipo y los campos que necesita tu programa.
function esArticulo(valor) {
return valor !== null
&& typeof valor === "object"
&& !Array.isArray(valor)
&& typeof valor.titulo === "string"
&& Number.isInteger(valor.visitas)
&& valor.visitas >= 0;
}Errores de lectura
JSON.parse lanza SyntaxError si la sintaxis es inválida. Usa try/catch cuando el texto pueda estar mal formado y presenta un mensaje útil. Evita eval para interpretar datos: ejecutar texto como código no es necesario para leer JSON. La comprobación del ejemplo solo valida dos campos, no un esquema completo.
Práctica
- Prueba esArticulo con el registro del ejemplo: debe devolver true.
- Cambia visitas a "0": la comprobación debe devolver false.
- Prueba null y un array; ninguno cumple el formato esperado.
Referencias
Artículos relacionados
- Fundamentos: variables, condiciones y bucles
- HTML semántico y estructura de una página
- CSS: modelo de caja, Flexbox y Grid
- JavaScript: funciones, parámetros y alcance
- JavaScript: arrays, objetos y transformación de datos
- DOM y eventos: conectar JavaScript con HTML
- Promesas, async/await y peticiones con fetch
- HTTP y APIs web: peticiones, respuestas y estados
- Git: cambios, commits, ramas y repositorios remotos
- Node.js y npm: scripts y dependencias de un proyecto
- Depuración y pruebas: encontrar y comprobar errores
- Formatos de color: HEX, RGB y HSL
- Identificadores UUID
- Valores aleatorios en JavaScript
