JSON en JavaScript: Qué es y cómo usarlo con ejemplos prácticos

Aprende qué es JSON y cómo usarlo en JavaScript. Descubre cómo leer, crear y manipular datos con ejemplos simples para principiantes.
¿Qué es JSON y para qué sirve en programación?
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que es fácil de leer y escribir para los humanos, y fácil de parsear y generar para las máquinas. Se utiliza comúnmente para transmitir datos entre un servidor y una aplicación web, así como para almacenar configuraciones y datos estructurados.
Diferencias entre JSON y JavaScript
Aunque JSON se deriva de la sintaxis de objetos de JavaScript, hay diferencias clave entre ambos:
-
Sintaxis: JSON utiliza comillas dobles para las claves y los valores de cadena, mientras que en JavaScript se pueden usar comillas simples o dobles.
-
Tipos de datos: JSON admite un conjunto limitado de tipos de datos: cadenas, números, objetos, arrays, booleanos y nulos. JavaScript tiene tipos de datos adicionales como funciones, símbolos y
undefined
. -
Estructura: JSON es estrictamente un formato de datos, mientras que JavaScript es un lenguaje de programación completo.
Sintaxis básica de JSON: claves y valores
La sintaxis de JSON se basa en pares clave-valor. Una clave es una cadena que identifica un valor, y el valor puede ser de varios tipos de datos. Aquí hay un ejemplo básico de un objeto JSON:
{
"nombre": "Juan",
"edad": 30,
"esEstudiante": false,
"cursos": ["Matemáticas", "Física"],
"direccion": {
"calle": "Calle Falsa 123",
"ciudad": "Springfield"
}
}
Tipos de datos admitidos en JSON
JSON admite los siguientes tipos de datos:
-
Cadenas (Strings): Deben estar entre comillas dobles. Ejemplo:
"Hola, mundo!"
-
Números (Numbers): Pueden ser enteros o decimales. Ejemplo:
42
,3.14
-
Objetos (Objects): Colecciones de pares clave-valor encerradas entre llaves
{}
. Ejemplo:{"clave": "valor"}
-
Arrays: Listas ordenadas de valores encerradas entre corchetes
[]
. Ejemplo:["manzana", "banana", "naranja"]
-
Booleanos (Booleans): Valores
true
ofalse
. -
Nulo (Null): Representa la ausencia de valor. Ejemplo:
null
Crear un objeto JSON en JavaScript
Para crear un objeto JSON en JavaScript, puedes definir un objeto utilizando la sintaxis de objetos de JavaScript y luego convertirlo a una cadena JSON usando JSON.stringify()
. Aquí tienes un ejemplo:
const persona = {
nombre: "Ana",
edad: 25,
esEstudiante: true,
cursos: ["Historia", "Literatura"],
direccion: {
calle: "Avenida Siempre Viva 742",
ciudad: "Springfield",
},
};
const personaJSON = JSON.stringify(persona);
console.log(personaJSON);
Resultado:
{
"nombre": "Ana",
"edad": 25,
"esEstudiante": true,
"cursos": ["Historia", "Literatura"],
"direccion": { "calle": "Avenida Siempre Viva 742", "ciudad": "Springfield" }
}
Leer y parsear datos JSON en JavaScript
Para leer y parsear datos JSON en JavaScript, puedes usar el método JSON.parse()
, que convierte una cadena JSON en un objeto JavaScript. Aquí tienes un ejemplo:
const personaJSON =
'{"nombre":"Ana","edad":25,"esEstudiante":true,"cursos":["Historia","Literatura"],"direccion":{"calle":"Avenida Siempre Viva 742","ciudad":"Springfield"}}';
const persona = JSON.parse(personaJSON);
console.log(persona.nombre); // Ana
console.log(persona.edad); // 25
console.log(persona.direccion.ciudad); // Springfield
Manipular datos JSON en JavaScript
Una vez que has parseado una cadena JSON en un objeto JavaScript, puedes manipular los datos como lo harías con cualquier otro objeto. Aquí tienes algunos ejemplos:
const personaJSON =
'{"nombre":"Ana","edad":25,"esEstudiante":true,"cursos":["Historia","Literatura"],"direccion":{"calle":"Avenida Siempre Viva 742","ciudad":"Springfield"}}';
const persona = JSON.parse(personaJSON);
// Agregar un nuevo curso
persona.cursos.push("Matemáticas");
// Actualizar la edad
persona.edad = 26;
// Eliminar la propiedad esEstudiante
delete persona.esEstudiante;
console.log(persona);
Ejemplo: almacenar datos con JSON en Local Storage
Local Storage es una API del navegador que permite almacenar datos de manera persistente en el navegador del usuario. Puedes usar JSON para almacenar objetos complejos en Local Storage. Aquí tienes un ejemplo:
// Crear un objeto JavaScript
const usuario = {
nombre: "Carlos",
edad: 28,
preferencias: {
tema: "oscuro",
idioma: "español",
},
};
// Convertir el objeto a una cadena JSON y almacenarlo en Local Storage
localStorage.setItem("usuario", JSON.stringify(usuario));
// Recuperar la cadena JSON de Local Storage y parsearla a un objeto JavaScript
const usuarioGuardado = JSON.parse(localStorage.getItem("usuario"));
console.log(usuarioGuardado.nombre); // Carlos
console.log(usuarioGuardado.preferencias.tema); // oscuro
Leer datos JSON desde un archivo externo
Puedes leer datos JSON desde un archivo externo utilizando la función fetch()
en JavaScript. Aquí tienes un ejemplo de cómo hacerlo:
fetch("datos.json")
.then((response) => response.json())
.then((data) => {
console.log(data);
// Manipular los datos JSON aquí
})
.catch((error) => console.error("Error al cargar el archivo JSON:", error));
Uso de JSON en APIs y peticiones HTTP
JSON es el formato de datos más comúnmente utilizado en las APIs y las peticiones HTTP debido a su simplicidad y facilidad de uso. Cuando haces una petición a una API, los datos suelen ser enviados y recibidos en formato JSON.
Aquí tienes un ejemplo de cómo hacer una petición GET a una API que devuelve datos en formato JSON:
fetch("https://api.example.com/usuarios")
.then((response) => response.json())
.then((data) => {
console.log(data);
// Manipular los datos JSON aquí
})
.catch((error) =>
console.error("Error al hacer la petición a la API:", error)
);
Convirtiendo entre JSON y otros formatos de datos
JSON es un formato de datos muy versátil y se puede convertir fácilmente a otros formatos de datos como XML, CSV, etc. Existen bibliotecas y herramientas que facilitan estas conversiones. Aquí tienes un ejemplo simple de cómo convertir un objeto JSON a CSV utilizando JavaScript:
function jsonToCsv(json) {
const keys = Object.keys(json[0]);
const csv = [
keys.join(","), // encabezados
...json.map((row) =>
keys.map((key) => JSON.stringify(row[key], replacer)).join(",")
),
].join("\n");
return csv;
}
const data = [
{ nombre: "Ana", edad: 25, ciudad: "Springfield" },
{ nombre: "Carlos", edad: 28, ciudad: "Shelbyville" },
];
const csvData = jsonToCsv(data);
console.log(csvData);
Manejo de errores al convertir JSON
Al trabajar con JSON, es importante manejar posibles errores que puedan surgir durante la conversión entre cadenas JSON y objetos JavaScript. Aquí tienes un ejemplo de cómo manejar errores al parsear una cadena JSON:
const jsonString = '{"nombre":"Ana","edad":25,"esEstudiante":true}'; // Cadena JSON válida
try {
const persona = JSON.parse(jsonString);
console.log(persona);
} catch (error) {
console.error("Error al parsear JSON:", error);
}
Diferencia entre XML y JSON en el intercambio de datos
XML (eXtensible Markup Language) y JSON (JavaScript Object Notation) son dos formatos populares para el intercambio de datos. Aquí hay algunas diferencias clave entre ambos:
-
Sintaxis: XML utiliza una sintaxis basada en etiquetas, mientras que JSON utiliza una sintaxis basada en pares clave-valor.
-
Legibilidad: JSON es generalmente más fácil de leer y escribir para los humanos debido a su simplicidad, mientras que XML puede ser más verboso.
-
Tamaño: JSON suele ser más compacto que XML, lo que puede resultar en tiempos de transferencia más rápidos.
-
Soporte en JavaScript: JSON es nativo de JavaScript, lo que facilita su uso en aplicaciones web, mientras que XML requiere un análisis adicional.
Buenas prácticas al trabajar con JSON en JavaScript
-
Validar JSON: Siempre valida las cadenas JSON antes de parsearlas para evitar errores.
-
Manejar errores: Usa bloques
try-catch
para manejar errores al parsear JSON. -
Usar JSON.stringify con cuidado: Al convertir objetos a JSON, asegúrate de que no contengan funciones o propiedades circulares.
-
Mantener la estructura simple: Evita estructuras JSON demasiado complejas para facilitar su manejo y comprensión.
Conclusión
JSON es una herramienta esencial en el desarrollo web moderno, facilitando el intercambio y almacenamiento de datos de manera eficiente. Su simplicidad y compatibilidad con JavaScript lo convierten en una opción popular para trabajar con datos estructurados. Al dominar el uso de JSON, podrás mejorar tus habilidades en la manipulación de datos y la interacción con APIs, lo que es fundamental para cualquier desarrollador web.
-
Métodos de array en JavaScript: Métodos de array en JavaScript: Guía con ejemplos y ejercicios.
-
Local Storage en JavaScript: Local Storage en JavaScript: Guía completa para principiantes
-
Más sobre JSON: Introducing JSON
💻 Prueba este ejercicio básico sobre Local Storage y datos JSON en JavaScript: