Procesamiento de JSON en JavaScript (Node.js): guía completa

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

Trabajo con JSON en Node.js: desde lo básico hasta técnicas avanzadas



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se ha convertido en el estándar de facto para APIs web y archivos de configuración. En Node.js, el trabajo con JSON está integrado a nivel de núcleo, lo que hace que su procesamiento sea rápido y conveniente. En este artículo, analizaremos todos los aspectos del trabajo con JSON: desde el análisis básico hasta el procesamiento de archivos grandes mediante flujos.



Fundamentos: JSON.parse() y JSON.stringify()



Dos métodos globales — JSON.parse() y JSON.stringify() — son la base de todo el trabajo con JSON en JavaScript.



JSON.parse() — conversión de cadena a objeto



El método JSON.parse() toma una cadena en formato JSON y devuelve el objeto JavaScript correspondiente. Si la cadena contiene un error de sintaxis, se lanzará una excepción SyntaxError.



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

console.log(user.name); // "Ana"console.log(user.age); // 30


El segundo parámetro opcional es una función reviver, que permite transformar valores durante el análisis:



const jsonString = '{"date": "2024-01-15T10:30:00Z", "count": "42"}';const obj = JSON.parse(jsonString, (key, value) => {    if (key === 'date') return new Date(value);    if (key === 'count') return parseInt(value, 10);    return value;});

console.log(obj.date instanceof Date); // trueconsole.log(typeof obj.count); // "number"


JSON.stringify() — conversión de objeto a cadena



El método JSON.stringify() hace lo contrario: convierte un objeto JavaScript en una cadena JSON. Acepta tres parámetros: el valor, una función de reemplazo (o un array de claves) y la cantidad de espacios para el formato.



const user = {    name: "Iván",    age: 25,    roles: ["admin", "editor"],    metadata: null};

// Uso básicoconst json = JSON.stringify(user);console.log(json);// {"name":"Iván","age":25,"roles":["admin","editor"],"metadata":null}

// Con formatoconst prettyJson = JSON.stringify(user, null, 2);console.log(prettyJson);/*{ "name": "Iván", "age": 25, "roles": ["admin", "editor"], "metadata": null}*/


La función de reemplazo permite filtrar o transformar valores:



const user = { name: "Pedro", password: "secret123", age: 28 };

const safeJson = JSON.stringify(user, (key, value) => { if (key === 'password') return undefined; // eliminar contraseña return value;});

console.log(safeJson); // {"name":"Pedro","age":28}


Lectura y escritura de archivos JSON en Node.js



En proyectos reales, los datos JSON a menudo se almacenan en archivos. Node.js proporciona el módulo fs (file system) para trabajar con el sistema de archivos.



Lectura de JSON desde un archivo



const fs = require('fs');

// Lectura síncronatry { const data = fs.readFileSync('config.json', 'utf8'); const config = JSON.parse(data); console.log(config.port); // 3000} catch (err) { console.error('Error al leer el archivo:', err.message);}

// Lectura asíncrona (recomendada)fs.readFile('config.json', 'utf8', (err, data) => { if (err) { console.error('Error:', err); return; } const config = JSON.parse(data); console.log(config);});


Escritura de JSON en un archivo



const fs = require('fs');

const settings = { theme: "dark", language: "es", notifications: true};

// Escritura con formatofs.writeFileSync('settings.json', JSON.stringify(settings, null, 2), 'utf8');console.log('Archivo settings.json creado');

// Escritura asíncronafs.writeFile('settings.json', JSON.stringify(settings), (err) => { if (err) throw err;

Recommendations