Trabajo con JSON en JavaScript: análisis y serialización de datos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a JSON y su rol en JavaScript



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, basado en la sintaxis de objetos de JavaScript. A pesar de su origen, JSON se ha convertido en un estándar universal para la transmisión de datos estructurados entre el servidor y el cliente, así como para el almacenamiento de configuraciones y el intercambio de información en arquitecturas de microservicios.



En el entorno de Node.js, trabajar con JSON es una tarea cotidiana: desde la lectura de archivos de configuración hasta el procesamiento de respuestas de REST API. En este artículo, analizaremos en detalle dos métodos clave — JSON.parse() y JSON.stringify(), así como los errores típicos y las mejores prácticas.



1. Análisis de JSON: método JSON.parse()



El método JSON.parse() convierte una cadena en formato JSON en un objeto de JavaScript. Esto es necesario cuando recibes datos del servidor, de un archivo o de una fuente externa.



Sintaxis básica



const jsonString = '{"name": "Ana", "age": 30, "isStudent": false}';const user = JSON.parse(jsonString);console.log(user.name); // "Ana"console.log(user.age);  // 30


Uso avanzado: función reviver



El segundo argumento de JSON.parse() puede ser una función transformadora (reviver), que permite modificar los valores durante el análisis. Esto es útil para convertir fechas en formato string a objetos Date o para la validación de datos.



const jsonData = '{"date": "2024-01-15T10:30:00.000Z", "value": 42}';const parsed = JSON.parse(jsonData, (key, value) => {  if (key === 'date') {    return new Date(value);  }  return value;});console.log(parsed.date instanceof Date); // trueconsole.log(parsed.date.toLocaleDateString()); // "15/01/2024"


Manejo de errores de análisis



Un JSON incorrecto provocará una excepción SyntaxError. Siempre envuelve la llamada a JSON.parse() en un bloque try...catch:



function safeParse(jsonString) {  try {    return { data: JSON.parse(jsonString), error: null };  } catch (error) {    console.error('Error de análisis JSON:', error.message);    return { data: null, error: error.message };  }}

const result = safeParse('{"name": "Error"}');console.log(result.data.name); // "Error"


2. Serialización a JSON: método JSON.stringify()



El método JSON.stringify() realiza la tarea inversa: convierte un objeto de JavaScript en una cadena JSON. Esto se utiliza al enviar datos al servidor, guardar el estado o registrar información.



Sintaxis básica



const user = {  name: 'Iván',  age: 25,  skills: ['JavaScript', 'Node.js']};

const jsonString = JSON.stringify(user);console.log(jsonString);// {"name":"Iván","age":25,"skills":["JavaScript","Node.js"]}


Parámetros de formato



El tercer argumento de JSON.stringify() permite establecer sangrías para una salida legible. Esto es especialmente útil al escribir en archivos o durante la depuración.



const config = {  server: { port: 3000, host: 'localhost' },  database: { host: 'db.example.com', port: 5432 }};

// Salida compactaconsole.log(JSON.stringify(config));

// Salida legible con sangría de 2 espaciosconsole.log(JSON.stringify(config, null, 2));// {// "server": {// "port": 3000,// "host": "localhost"// },// ...// }


Filtrado de propiedades con replacer



El segundo argumento es un array o una función que determina qué propiedades incluir en la cadena resultante.



const user = {  id: 1,  name: 'María',  email: 'maria@example.com',  password: 'secret123',  role: 'admin'};

// Excluimos datos confidencialesconst safeUser = JSON.stringify(user, ['id', 'name', 'email', 'role']);console.log(safeUser);// {"id":1,"name":"María","email":"maria@example.com","role":"admin"}

Blogs

Book Recommendations