Trabajo con JSON en JavaScript: análisis y serialización para principiantes

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 JavaScript

\n

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se ha convertido en el estándar para la comunicación entre cliente y servidor en aplicaciones web. Gracias a su simplicidad y legibilidad, JSON se utiliza en todas partes: desde archivos de configuración hasta solicitudes de API. En este artículo, analizaremos cómo trabajar con JSON en el entorno Node.js, dominaremos el análisis (conversión de cadena a objeto) y la serialización (conversión de objeto a cadena). El material está dirigido a desarrolladores principiantes que ya conocen los fundamentos de JavaScript.

\n\n

¿Qué es JSON y para qué sirve?

\n

JSON es un formato de texto basado en la sintaxis de objetos de JavaScript. Sin embargo, JSON es simplemente una cadena que se puede transmitir a través de la red o almacenar en un archivo. Los tipos de datos principales en JSON son:

\n
    \n
  • Cadenas (entre comillas dobles)
  • \n
  • Números (enteros y de punto flotante)
  • \n
  • Valores booleanos (true/false)
  • \n
  • null
  • \n
  • Arreglos
  • \n
  • Objetos (claves entre comillas dobles)
  • \n
\n

Ejemplo de una cadena JSON válida:

\n
{\n  "name": "Ana",\n  "age": 28,\n  "isStudent": false,\n  "skills": ["JavaScript", "Node.js"],\n  "address": null\n}
\n

A diferencia de un objeto JavaScript normal, JSON requiere una sintaxis estricta: todas las claves y valores de cadena deben ir entre comillas dobles y los comentarios están prohibidos.

\n\n

Análisis de JSON: JSON.parse()

\n

Para convertir una cadena JSON en un objeto JavaScript se utiliza el método JSON.parse(). Esto es necesario cuando se reciben datos del servidor, se lee un archivo o se procesa la entrada del usuario.

\n\n

Ejemplo básico de análisis

\n
const jsonString = '{"name": "Iván", "age": 30}';\nconst user = JSON.parse(jsonString);\nconsole.log(user.name); // Iván\nconsole.log(user.age);  // 30
\n\n

Análisis de un arreglo

\n
const jsonArray = '[1, 2, "tres", true]';\nconst arr = JSON.parse(jsonArray);\nconsole.log(arr[2]); // tres
\n\n

Manejo de errores de análisis

\n

Un JSON no válido generará una excepción SyntaxError. Siempre use try...catch al trabajar con datos no confiables:

\n
try {\n  const invalid = '{"name": "Error}';\n  const result = JSON.parse(invalid);\n} catch (error) {\n  console.error('Error de análisis:', error.message);\n}
\n

También se puede pasar un segundo argumento: una función reviver que permite transformar valores durante el análisis:

\n
const json = '{"date": "2024-01-15", "count": "42"}';\nconst obj = JSON.parse(json, (key, value) => {\n  if (key === 'date') return new Date(value);\n  if (key === 'count') return Number(value);\n  return value;\n});\nconsole.log(obj.date.getFullYear()); // 2024\nconsole.log(typeof obj.count);       // number
\n\n

Serialización JSON: JSON.stringify()

\n

El proceso inverso (convertir un objeto JavaScript en una cadena JSON) se realiza con JSON.stringify(). Esto es necesario para enviar datos al servidor, guardarlos en un archivo o registrarlos.

\n\n

Ejemplo simple de serialización

\n
const user = {\n  name: 'María',\n  age: 25,\n  isAdmin: true\n};\nconst json = JSON.stringify(user);\nconsole.log(json);\n// {"name":"María","age":25,"isAdmin":true}
\n\n

Formato de salida

\n

El método acepta tres parámetros: el valor, una función de reemplazo (o un arreglo de campos) y la cantidad de espacios para la sangría:

\n
const data = {\n  id: 1,\n  title: 'Artículo',\n  tags: ['js', 'json']\n};\n// Con sangría de 2 espacios\nconst prettyJson = JSON.stringify(data, null, 2);\nconsole.log(prettyJson);\n/* Salida:\n{\n  "id": 1,\n  "title": "Artículo",\n  "tags": [\n    "js",\n    "json"\n  ]\n}\n*/
\n\n

Filtrado de campos

\n

El segundo parámetro puede ser un arreglo de claves que se deben incluir en el resultado:

\n
const user = {\n  name: 'Pedro',\n  password: 'secret12                

Blogs

Book Recommendations