JSON significa JavaScript Object Notation, un nombre engañoso: hoy tiene poco que ver con JavaScript y lo usa absolutamente todo. Es una manera de escribir datos estructurados en texto plano, y es lo que recibes cuando pides a un servicio que exporte tu cuenta, cuando una app guarda sus ajustes y cuando un programa envía datos a otro.
Un ejemplo pequeño contiene casi todo lo que el formato sabe hacer:
{
"name": "Widget",
"price": 4.50,
"inStock": true,
"tags": ["small", "blue"],
"discount": null
}
Las llaves contienen un objeto, un conjunto de valores con nombre. Los corchetes contienen un array, una lista ordenada. Y ese es todo el sistema de tipos: objetos, arrays, cadenas, números, true/false y null. Seis cosas.
Objetos y arrays pueden contenerse mutuamente a cualquier profundidad, y así describe JSON estructuras complicadas con un vocabulario tan pequeño.
'name' no vale. Cada cadena y cada clave necesitan comillas dobles.name: "Widget" no vale; "name": "Widget" sí.// ni /* */. Es la ausencia más criticada de la historia del formato, y fue deliberada: los comentarios invitan a poner significado donde los analizadores no miran.La prohibición de comentarios tiene un apaño universal: añade una clave corriente como "_comment" con tu nota como valor. No es un comentario — los programas lo leerán como dato — pero es donde todo el mundo pone explicaciones en un archivo de configuración.
JSON no tiene forma de recuperarse de un error de sintaxis. No hay límites de registro como las líneas de un CSV, así que un analizador que encuentra algo inesperado no puede saltarse la parte mala y seguir: falla el archivo entero.
Peor aún, el número de línea que informa es donde el analizador se dio cuenta, no donde te equivocaste. Olvida una llave de cierre cerca del principio y el error aparece al final del archivo, porque es el primer punto en que la estructura se volvió imposible. Olvida una coma y el mensaje suele señalar la línea siguiente a la que hay que arreglar.
Así que cuando un error de JSON nombre una línea, mira la estructura por encima de ella, no la línea en sí. Un validador, o un editor que resalte paréntesis emparejados, encuentra esto mucho más rápido que leer.
Lo primero es el peso. En XML un valor va envuelto en una etiqueta de apertura y otra de cierre; en JSON es un nombre, dos puntos y el valor. En un archivo grande eso es una diferencia considerable de tamaño y legibilidad.
Lo segundo importa más: los seis tipos de JSON corresponden directamente a las estructuras de datos que ya tiene cualquier lenguaje de programación. Un objeto es un diccionario, un array una lista, un número un número. XML exige interpretación: todo es texto hasta que algo decide qué significa.
Lo que JSON entrega a cambio es todo lo relativo a documentos: sin comentarios, sin atributos, sin espacios de nombres y sin forma de representar texto con marcado dentro. Por eso los datos viajan en JSON y los documentos siguen en XML.
Un array plano de objetos se convierte limpiamente. Una lista de registros con los mismos campos es una tabla: una fila por objeto, una columna por clave.
Los datos anidados no. Si cada registro contiene un array de otros objetos — un pedido con varias líneas, un usuario con varias direcciones — no hay forma honesta de meter eso en una cuadrícula. La conversión o lo aplana en columnas llamadas items.0.name, items.1.name, o descarta el anidamiento.
No es una limitación del conversor. Una hoja de cálculo es un rectángulo y JSON es un árbol, y los árboles no caben en rectángulos. Cuando los datos están realmente anidados, lo útil suele ser extraer como lista plana la parte que de verdad necesitas, en vez de convertir toda la estructura.
Una exportación grande a menudo no es un documento JSON sino un archivo con un objeto JSON completo por línea, conocido como JSONL o NDJSON.
La razón es práctica: un único array gigante hay que leerlo entero en memoria antes de hacer nada, y no se puede añadir sin reescribir el archivo. Un objeto por línea se procesa línea a línea y se amplía indefinidamente.
Si un archivo lleva .jsonl o .ndjson, o se abre como muchas líneas que empiezan por {, es eso — y dárselo a un analizador JSON normal fallará, porque el archivo en conjunto no es JSON válido.
Todo lo cierto sobre Markdown en este punto lo es aquí. JSON abre en cualquier editor, sobrevive a la desaparición de cualquier software, se busca con herramientas corrientes y se compara línea a línea entre versiones.
El único paso práctico es formatearlo antes de leerlo. El JSON exportado suele llegar como una única línea enorme. Cualquier formateador o editor decente lo reindenta en algo legible sin cambiar los datos.
"_comment" cuando necesites dejar una nota