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

JSON en Node.js: Guía Completa para el Procesamiento de Datos



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, archivos de configuración y almacenamiento de información estructurada. En el entorno de Node.js, trabajar con JSON es una parte integral de prácticamente cualquier aplicación. En este artículo, analizaremos en detalle todos los aspectos del procesamiento de JSON: desde el análisis básico hasta el procesamiento avanzado por flujos.



1. Fundamentos: Análisis y Serialización



En Node.js, se utilizan dos métodos globales para trabajar con JSON: JSON.parse() y JSON.stringify(). Están disponibles sin necesidad de importar módulos adicionales.



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

El método JSON.parse() toma una cadena JSON y devuelve el objeto JavaScript correspondiente. Es importante que la cadena sea estrictamente un JSON válido.



const jsonString = '{"name": "Alice", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);console.log(user.name); // Aliceconsole.log(typeof user); // object


El método también admite un segundo argumento: una función "reviver" que permite transformar los valores durante el análisis:



const data = '{"date": "2025-01-15T10:00:00Z"}';const parsed = JSON.parse(data, (key, value) => {    if (key === 'date') return new Date(value);    return value;});console.log(parsed.date instanceof Date); // true


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

El método JSON.stringify() realiza la conversión inversa: transforma un objeto JavaScript en una cadena JSON.



const user = {    name: 'Bob',    age: 25,    hobbies: ['coding', 'reading']};const json = JSON.stringify(user);console.log(json); // {"name":"Bob","age":25,"hobbies":["coding","reading"]}


El método acepta tres argumentos: el valor, una función de reemplazo (replacer) y la cantidad de espacios para el formato (space):



const obj = { a: 1, b: 2, c: 3 };// Salida formateada con sangríaconsole.log(JSON.stringify(obj, null, 2));// {//   "a": 1,//   "b": 2,//   "c": 3// }

// Filtrado de claves con replacerconst filtered = JSON.stringify(obj, ['a', 'c'], 2);console.log(filtered);// {// "a": 1,// "c": 3// }


2. Lectura y Escritura de Archivos JSON



En aplicaciones reales, los datos JSON a menudo se almacenan en archivos. Para trabajar con el sistema de archivos se utiliza el módulo incorporado fs.



Lectura y escritura síncronas

const fs = require('fs');const path = require('path');

const filePath = path.join(__dirname, 'config.json');

// Lecturaconst rawData = fs.readFileSync(filePath, 'utf-8');const config = JSON.parse(rawData);console.log(config.port);

// Escrituraconst newConfig = { port: 3000, host: 'localhost' };fs.writeFileSync(filePath, JSON.stringify(newConfig, null, 2));


Lectura y escritura asíncronas (método recomendado)

const fs = require('fs').promises;

async function readConfig() { try { const data = await fs.readFile('config.json', 'utf-8'); return JSON.parse(data); } catch (err) { console.error('Error al leer el archivo:', err); throw err; }}

async function writeConfig(config) { await fs.writeFile('config.json', JSON.stringify(config, null, 2));}

// Uso(async () => { const config = await readConfig(); config.port = 4000; await writeConfig(config);})();


3. Validación de JSON



A veces es necesario verificar si una cadena es un JSON válido sin lanzar una excepción. La forma más confiable es envolver JSON.parse() en un bloque try-catch:




                
    
    

Recommendations