Introducción: ¿qué es JSON y para qué sirve 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 nombre, JSON es independiente del lenguaje y es compatible con prácticamente todos los lenguajes de programación modernos. En el ecosistema de Node.js y JavaScript del navegador, trabajar con JSON es una de las operaciones más comunes: desde obtener datos de una API hasta guardar configuraciones y transferir información entre el servidor y el cliente.
En este artículo analizaremos dos métodos clave: JSON.parse() (convertir una cadena JSON en un objeto JavaScript) y JSON.stringify() (convertir un objeto JavaScript en una cadena JSON). Aprenderás a manejar errores correctamente, trabajar con estructuras anidadas y utilizar las capacidades avanzadas de estos métodos.
1. Análisis JSON: método JSON.parse()
El método JSON.parse() toma una cadena en formato JSON y la convierte en un objeto, array o valor primitivo de JavaScript. Esta es la operación principal cuando recibes datos de una fuente externa, como una API REST o un archivo.
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); // 30console.log(user.isStudent); // falseTen en cuenta: las claves y los valores de cadena en JSON obligatoriamente deben estar entre comillas dobles. Las comillas simples o la ausencia de comillas en las claves provocarán un error.
Análisis de arrays
JSON puede contener no solo objetos, sino también arrays:
const jsonArray = '[1, 2, 3, "cuatro", true]';const arr = JSON.parse(jsonArray);
console.log(arr[0]); // 1console.log(arr[3]); // "cuatro"Estructuras anidadas
JSON admite anidación ilimitada:
const complexJson = '{"users":[{"id":1,"name":"Iván"},{"id":2,"name":"María"}]}';const data = JSON.parse(complexJson);
console.log(data.users[0].name); // "Iván"console.log(data.users[1].id); // 2Manejo de errores de análisis
Si la cadena contiene JSON no válido, JSON.parse() lanzará una excepción SyntaxError. Siempre usa try/catch al trabajar con datos externos:
const invalidJson = '{"name": "Pedro", age: 25}'; // Error: age sin comillas
try { const obj = JSON.parse(invalidJson); console.log(obj);} catch (error) { console.error('Error de análisis JSON:', error.message); // Salida: Error de análisis JSON: Unexpected token 'a', ...}Uso avanzado: función reviver
El segundo parámetro de JSON.parse() es una función reviver que permite transformar valores durante el análisis. Por ejemplo, se pueden convertir automáticamente cadenas con fechas en objetos Date:
const jsonWithDate = '{"name": "Evento", "date": "2025-03-15T10:00:00.000Z"}';
const event = JSON.parse(jsonWithDate, (key, value) => { if (key === 'date') { return new Date(value); } return value;});
console.log(event.date instanceof Date); // trueconsole.log(event.date.getFullYear()); // 20252. Serialización JSON: método JSON.stringify()
El método JSON.stringify() realiza la operación inversa: convierte un objeto o valor de JavaScript en una cadena JSON. Esto es necesario para enviar datos al servidor, guardarlos en un archivo o registrarlos.
Sintaxis básica
const user = { name: "Olga", age: 28, isAdmin: true, skills: ["JS", "Python", "SQL"]};
const jsonString = JSON.stringify(user);console.log(jsonString);// {"name":"Olga