Si has dedicado algo de tiempo al desarrollo web, a las APIs o a los archivos de configuración, seguro que te has topado con JSON. Aparece en todas partes, desde las respuestas que tu navegador recibe al cargar un feed de Twitter hasta los archivos de configuración de VS Code. Pero ¿qué es exactamente y por qué se convirtió en el formato predeterminado para mover datos por internet?
Esta guía recorre JSON desde cero. No se necesitan conocimientos previos.
Qué significa JSON
JSON es la abreviatura de JavaScript Object Notation (notación de objetos de JavaScript). Douglas Crockford popularizó el formato a principios de la década de 2000, basándose en un subconjunto de la sintaxis de objetos literales de JavaScript. A pesar del nombre, JSON es independiente del lenguaje. Puedes leer y escribir JSON en Python, Java, Go, Ruby, C#, PHP y prácticamente cualquier otro lenguaje de programación en uso hoy en día.
La idea clave detrás de JSON era la simplicidad. En aquel momento, XML era el formato dominante para el intercambio de datos, y resultaba muy extenso. JSON ofreció una alternativa más ligera que las personas podían leer sin esforzar la vista y que las máquinas podían analizar sin mucho esfuerzo.
Un primer vistazo a JSON
Aquí tienes un documento JSON mínimo:
{
"name": "Alice",
"age": 30,
"isStudent": false
}
Eso es todo. Las llaves envuelven el objeto, las claves son cadenas entre comillas dobles y los valores van después de dos puntos. Las comas separan cada par clave-valor. Si alguna vez has escrito un objeto de JavaScript, esto te resultará familiar, pero hay algunas diferencias importantes que veremos en breve.
Los seis tipos de datos
JSON admite exactamente seis tipos de valores. Ni más, ni menos.
Strings
Las cadenas (strings) van entre comillas dobles. No se permiten las comillas simples, lo que confunde a quienes vienen de Python o JavaScript, donde las comillas simples funcionan sin problema.
{
"greeting": "Hello, world!",
"emoji": "Totally valid ✔"
}
Puedes incluir caracteres especiales mediante secuencias de escape con barra invertida: \" para una comilla literal, \\ para una barra invertida, \n para un salto de línea y \t para una tabulación.
Numbers
Los números pueden ser enteros o de punto flotante. JSON no distingue entre ambos. Se permite la notación científica.
{
"temperature": 22.5,
"population": 7900000000,
"planckConstant": 6.626e-34
}
Algo a tener en cuenta: JSON no admite NaN, Infinity ni ceros a la izquierda como 007. Estos provocarán un error de análisis.
Booleans
Solo true y false, en minúsculas. No True, ni TRUE, ni 1.
{
"isActive": true,
"isDeleted": false
}
Null
El valor null representa la ausencia intencionada de un valor. De nuevo, solo en minúsculas.
{
"middleName": null
}
Objects
Los objetos son colecciones de pares clave-valor envueltos entre llaves. Las claves deben ser cadenas. Los valores pueden ser cualquiera de los seis tipos, incluidos otros objetos.
{
"user": {
"id": 42,
"profile": {
"bio": "Likes coffee",
"location": "Tokyo"
}
}
}
Los objetos pueden anidarse tanto como necesites, aunque un JSON muy anidado se vuelve difícil de leer. Un JSON Formatter ayuda cuando estás frente a un muro de datos anidados.
Arrays
Los arrays son listas ordenadas de valores envueltas entre corchetes. Los valores no tienen que ser del mismo tipo, aunque en la práctica normalmente lo son.
{
"colors": ["red", "green", "blue"],
"matrix": [[1, 2], [3, 4]],
"mixed": [42, "hello", null, true]
}
Los arrays y los objetos pueden combinarse libremente. Un array de objetos es uno de los patrones más comunes que verás en JSON del mundo real:
{
"employees": [
{ "name": "Alice", "role": "Engineer" },
{ "name": "Bob", "role": "Designer" }
]
}
Dónde aparece JSON en la práctica
Respuestas de API
Este es el caso más importante. Cuando tu navegador o aplicación móvil se comunica con un servidor, la respuesta casi siempre es JSON. Si abres las herramientas de desarrollo de tu navegador y miras la pestaña de red, verás JSON yendo y viniendo constantemente.
Una respuesta de API típica podría verse así:
{
"status": "ok",
"data": {
"userId": 1,
"posts": [
{
"id": 101,
"title": "First Post",
"published": true
}
]
}
}
Las APIs REST, las APIs GraphQL, las cargas útiles de webhooks: todas usan JSON de forma predeterminada. El formato es tan dominante que muchas personas desarrolladoras nunca han tenido que lidiar con APIs basadas en XML.
Archivos de configuración
package.json en proyectos de Node.js, tsconfig.json para TypeScript, settings.json en VS Code, .eslintrc.json para ESLint: la lista sigue. JSON se convirtió en una opción natural para los archivos de configuración porque todos los lenguajes ya traían un parser de JSON incorporado.
Dicho esto, JSON tiene una limitación notable para la configuración: no admite comentarios. Esta es una de las razones por las que existen formatos como YAML y JSONC (JSON con comentarios). Si tienes curiosidad sobre cómo se compara YAML, echa un vistazo a YAML vs JSON: cómo elegir el formato adecuado.
Almacenamiento e intercambio de datos
Muchas bases de datos NoSQL, como MongoDB y CouchDB, almacenan documentos en JSON o en un formato binario similar a JSON (BSON). Las consultas y respuestas de Elasticsearch son JSON. Las herramientas de agregación de logs a menudo trabajan con líneas de log en formato JSON porque son fáciles de analizar de forma programática.
Cuando dos sistemas necesitan intercambiar datos, JSON es la opción predeterminada a menos que haya una razón específica para usar otra cosa. Es lo bastante legible para depurar, lo bastante compacto para la transferencia por red y tiene soporte universal.
Conversión de hojas de cálculo y datos tabulares
Si trabajas con datos que nacen en una hoja de cálculo, exportados como CSV, es posible que necesites convertirlos a JSON para usarlos en una API o aplicación. Las estructuras son bastante diferentes, así que entender ambos formatos ayuda. Consulta Qué es CSV para ver más de cerca el lado de CSV.
Reglas que pillan a la gente por sorpresa
JSON parece simple, y lo es, pero hay algunas reglas que provocan errores si lo escribes a mano.
No se permiten comas finales
Esto es JavaScript válido, pero JSON inválido:
{
"a": 1,
"b": 2,
}
Esa coma después de "b": 2 provocará un error de análisis. Cualquier parser de JSON la rechazará.
Las claves deben ser cadenas entre comillas dobles
En JavaScript, puedes escribir { name: "Alice" } sin entrecomillar la clave. JSON requiere { "name": "Alice" }. Las comillas simples tampoco funcionan.
Sin comentarios
No existe sintaxis de comentarios en JSON. Ni //, ni /* */, ni #. Si necesitas añadir notas a un archivo JSON, o bien usas un formato diferente o añades una clave ficticia como "_comment", aunque eso es más un apaño que una solución real.
El documento debe tener una sola raíz
Un documento JSON debe ser un único valor en el nivel superior. Normalmente es un objeto o un array, pero técnicamente una cadena, un número, un booleano o null sueltos también son JSON válido.
Lo que no puedes hacer es tener dos objetos en el nivel superior:
{ "a": 1 }
{ "b": 2 }
Eso no es JSON válido. Si necesitas varios objetos, envuélvelos en un array.
Para profundizar en estas reglas con más ejemplos, consulta la guía de sintaxis de JSON.
Trabajar con JSON en código
Todos los lenguajes principales tienen soporte para JSON, ya sea incorporado o en la biblioteca estándar.
En JavaScript y TypeScript:
// Parse a JSON string into an object
const data = JSON.parse('{"name": "Alice", "age": 30}');
// Convert an object to a JSON string
const json = JSON.stringify(data, null, 2);
Los argumentos null, 2 de stringify añaden indentación, lo que hace que la salida sea legible para las personas. Sin ellos, obtienes una sola línea comprimida, lo cual está bien para la transferencia por red pero es terrible para leer.
En Python:
import json
data = json.loads('{"name": "Alice", "age": 30}')
text = json.dumps(data, indent=2)
El patrón es el mismo en todas partes: analizar una cadena para convertirla en una estructura de datos nativa, manipularla y volver a serializarla en una cadena.
Formatear y validar JSON
Cuando recibes un bloque de JSON minificado de una respuesta de API o un archivo de log, puede resultar casi imposible de leer. Un formateador añade indentación y saltos de línea para que de verdad puedas ver la estructura.
Puedes hacerlo en código, como se mostró arriba, o usar una herramienta como el JSON Formatter para pegar JSON sin procesar y obtener al instante una versión limpia e indentada. También detecta errores de sintaxis, lo cual resulta útil cuando estás depurando una respuesta mal formada.
Para consejos sobre cómo mantener tu JSON limpio y legible, consulta los consejos para formatear JSON.
JSON frente a otros formatos
JSON no es el único formato de datos que existe, y no siempre es la mejor opción.
YAML es más amigable para las personas en el caso de los archivos de configuración porque admite comentarios y usa indentación en lugar de llaves. Los manifiestos de Kubernetes, los workflows de GitHub Actions y los archivos de Docker Compose usan YAML. La contrapartida es que las reglas de indentación de YAML pueden ser quisquillosas, y tiene algunos comportamientos sorprendentes en torno a la coerción de tipos.
XML es más extenso, pero admite atributos, espacios de nombres y esquemas. Sigue siendo común en sistemas empresariales, APIs SOAP y algunos formatos de documento.
CSV es excelente para datos tabulares, pero no tiene concepto de anidamiento ni de tipos de datos. Todo es una cadena a menos que la aplicación que lo consume decida lo contrario.
Protocol Buffers y MessagePack son formatos binarios más eficientes que JSON para la transferencia por red, pero no son legibles para las personas.
Para la mayoría de las tareas de desarrollo web, JSON da en el punto justo entre legibilidad, simplicidad y soporte universal.
Referencia rápida
Aquí tienes un documento JSON completo que muestra todos los tipos de datos:
{
"string": "Hello",
"number": 42,
"float": 3.14,
"boolean": true,
"nullValue": null,
"array": [1, 2, 3],
"object": {
"nested": "value"
}
}
Eso cubre los seis tipos. Si puedes leer esto, puedes leer cualquier documento JSON: el resto es solo composición.
Próximos pasos
Ahora que entiendes lo básico, aquí tienes algunos caminos a seguir:
- Lee la guía de sintaxis de JSON para una referencia exhaustiva sobre cómo escribir JSON correcto, incluyendo cada tipo de dato y los patrones de anidamiento comunes.
- Prueba el JSON Formatter para pegar JSON del mundo real y verlo correctamente indentado.
- Explora YAML vs JSON si estás decidiendo qué formato usar para un archivo de configuración.
- Consulta los consejos para formatear JSON para obtener recomendaciones prácticas sobre cómo mantener tu JSON limpio en producción.
JSON es una de esas tecnologías que recompensan el entender los fundamentos. La sintaxis es lo bastante pequeña como para aprenderla en una tarde, y ese conocimiento da frutos cada vez que depuras una respuesta de API, editas un archivo de configuración o construyes una canalización de datos.

