Procesamiento de JSON en 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

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



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos basado en la sintaxis de objetos de JavaScript. En el entorno Node.js, trabajar con JSON es una tarea cotidiana: desde archivos de configuración hasta solicitudes de API. En este artículo, analizaremos en detalle todos los aspectos del procesamiento de JSON, incluyendo análisis, serialización, validación y trabajo con archivos grandes.



Métodos básicos: JSON.parse() y JSON.stringify()



Los dos métodos principales para trabajar con JSON están integrados directamente en JavaScript. Están disponibles globalmente y no requieren la instalación de bibliotecas adicionales.



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



El método JSON.parse() toma una cadena JSON y devuelve el objeto JavaScript correspondiente. Si la cadena contiene JSON no válido, se lanzará una excepción SyntaxError.



const jsonString = '{"name": "Анна", "age": 28, "isStudent": false}';const user = JSON.parse(jsonString);console.log(user.name); // "Анна"console.log(user.age);  // 28


Como segundo parámetro opcional, se puede pasar una función reviver que permite modificar los valores durante el análisis:



const json = '{"year": "2024", "price": "1500.50"}';const data = JSON.parse(json, (key, value) => {  if (key === 'price') return parseFloat(value);  if (key === 'year') return parseInt(value);  return value;});console.log(typeof data.price); // "number"


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



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



const user = {  name: "Иван",  age: 32,  skills: ["JS", "Node", "Python"]};

// Sin formatoconsole.log(JSON.stringify(user));// {"name":"Иван","age":32,"skills":["JS","Node","Python"]}

// Con formato (2 espacios)console.log(JSON.stringify(user, null, 2));/*{ "name": "Иван", "age": 32, "skills": [ "JS", "Node", "Python" ]}*/


El segundo argumento puede ser un array de claves para filtrar:



console.log(JSON.stringify(user, ['name', 'age']));// {"name":"Иван","age":32}


Trabajo con archivos JSON en Node.js



En Node.js, a menudo es necesario leer y escribir archivos JSON. Para ello se utilizan los módulos fs (file system).



Lectura de un archivo JSON



const fs = require('fs');

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

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


Escritura de un archivo JSON



const fs = require('fs');

const settings = { theme: 'dark', language: 'ru', fontSize: 14};

// Escritura síncronafs.writeFileSync('settings.json', JSON.stringify(settings, null, 2));

// Escritura asíncronafs.writeFile('settings.json', JSON.stringify(settings, null, 2), (err) => { if (err) console.error('Error al escribir:', err); else console.log('Archivo guardado');});


Validación de JSON



Antes de usar los datos, siempre vale la pena verificar su validez. La forma más simple es envolver JSON.parse() en un try-catch. Para una validación más compleja de la estructura, se pueden usar bibliotecas.



Verificación con try-catch



function safeJsonParse(str) {  try {    return { data: JSON.parse(str), error: null };  } catch (e) {    return { data: null, error: e.message };  }}

Recommendations