CSV a JSON: la conversión plana y sus particularidades
Convertir un archivo CSV a JSON parece sencillo: cada fila se transforma en un objeto, cada columna en una clave y el valor es el texto de la celda. Sin embargo, esta traducción directa tiene tres particularidades que la distinguen de otras conversiones de formato en esta herramienta y que conviene entender para evitar sorpresas.
Primera particularidad: no hay tipos en el origen, todo es texto. CSV almacena toda la información como cadenas. Un precio como 19,99, una cantidad como 42 o una fecha como 2025-04-01 se guardan como texto plano. Al convertirlos a JSON, el resultado no contiene números booleanos ni null –solo cadenas. La herramienta no infiere tipos. Si necesitas que 42 aparezca como número en el JSON, debes convertirlo después de la descarga, por ejemplo con Number(valor) en JavaScript. Lo mismo ocurre con las fechas: el JSON contendrá el texto literal 2025-04-01.
Segunda particularidad: no hay anidamiento posible. CSV es una tabla estrictamente plana. Cada fila tiene el mismo número de columnas. El JSON resultante es un array de objetos planos, todos con las mismas claves. No se pueden crear objetos dentro de objetos ni arrays anidados desde un CSV sin reglas adicionales que esta herramienta no aplica. Si necesitas jerarquías, tendrás que reestructurar el JSON manualmente después.
Tercera particularidad: el delimitador es crítico. A diferencia de la conversión inversa (JSON a CSV), aquí debes indicar si tu archivo usa comas, punto y coma o tabuladores. La herramienta no lo detecta automáticamente. Elegir el delimitador equivocado provoca que todas las columnas se fusionen o se partan incorrectamente.
Cuarta particularidad: las comillas incrustadas y los saltos de línea son frágiles. Las reglas de citado del CSV no se siguen de forma universal. Un campo que contiene una coma (por ejemplo, "Madrid, España") debe ir entre comillas dobles. Si el generador del CSV no respeta esta regla, la herramienta no puede interpretar correctamente el archivo. Además, los saltos de línea dentro de celdas (algo frecuente en exportaciones de hojas de cálculo) solo se preservan si el campo está correctamente entrecomillado. Si no, el salto de línea se interpreta como una nueva fila y la tabla se desestructura.
Delimitadores, comillas y saltos de línea: las reglas del CSV
Para que una conversión CSV a JSON sea exitosa, el archivo de origen debe cumplir unas reglas básicas. Comprenderlas ayuda a diagnosticar errores.
Delimitador de campo. Los tres formatos aceptados son coma (,), punto y coma (;) y tabulador (\t). El más común es la coma, pero en regiones donde la coma se usa como separador decimal (España, por ejemplo) es frecuente usar punto y coma para evitar ambigüedades. La herramienta permite elegir el delimitador explícitamente.
Regla de citado. Los campos que contengan el delimitador, comillas dobles o un salto de línea deben ir encerrados entre comillas dobles. Si dentro del campo hay comillas dobles literales, se duplican: "" representa una comilla. Por ejemplo, un campo que dice Él dijo "hola" se escribe en CSV como "Él dijo ""hola""".
Saltos de línea. Un salto de línea dentro de una celda solo es válido si el campo está entrecomillado. El salto se preserva en el JSON como \n. Sin embargo, muchos exportadores de CSV producen saltos de línea sin entrecomillar, lo que rompe la estructura.
Inconsistencias en el número de columnas. Cada fila debe tener exactamente el mismo número de campos. Si una fila tiene menos columnas que la cabecera (por ejemplo, porque un campo se omitió), la herramienta puede fallar. El mensaje de error para estos casos es: «Este CSV no se pudo analizar».
Tipos de datos: por qué los números y los ceros a la izquierda se conservan como texto
Una de las preguntas más frecuentes al convertir CSV a JSON es: «¿Por qué mi número de teléfono o mi código postal han perdido el cero inicial?». La respuesta está en el sistema de tipos de cada formato.
CSV no tiene tipos. Un valor como 28001 (código postal) se almacena como la cadena de cinco caracteres «28001». El JSON generado por la herramienta también lo trata como cadena: "28001". Hasta aquí, el cero a la izquierda se conserva.
El problema aparece cuando ese JSON se carga en un entorno que realiza tipado automático. Por ejemplo, muchos intérpretes de JavaScript, Python o aplicaciones como Power BI pueden convertir automáticamente cadenas que parecen números en números. Al hacerlo, "28001" se convierte en 28001 y el cero inicial desaparece. La herramienta no realiza ese tipado. El JSON de salida contiene el valor textual exacto del CSV. Si después el cero se pierde, es responsabilidad del consumidor del JSON manejarlo como cadena. Para evitarlo, asegúrate de que el código que procesa el JSON no convierta automáticamente los valores sospechosos.
Lo mismo ocurre con números con decimales, como 3,14. Si tu CSV usa coma decimal, el valor se preserva como cadena "3,14". No se convierte a número. Si necesitas un número con punto decimal, debes convertir el valor en tu aplicación.
Límites y errores: qué esperar cuando falla la conversión
La herramienta verifica varias condiciones antes de generar el JSON. Si se superan los límites o el archivo no es válido, muestra mensajes de error específicos.
| Condición | Mensaje |
|---|---|
| El archivo CSV no se puede analizar (errores de citado, columnas inconsistentes) | «Este CSV no se pudo analizar» |
| El archivo no contiene filas de datos (solo cabecera o vacío) | «Este archivo no tiene filas de tabla» |
| Número de filas supera el máximo permitido | «Esta tabla tiene más de ‹máximo› filas» |
| Número de columnas supera el máximo permitido | «Esta tabla tiene más de ‹máximo› columnas» |
| Tamaño del archivo supera el límite | «Este archivo es demasiado grande. Usa un archivo de menos de ‹máximo›» |
| Tipo de archivo no es CSV, JSON o XLSX | «Elige un archivo CSV, JSON o XLSX» |
| El usuario no ha seleccionado ningún archivo | «Elige primero un archivo» |
| La conversión tarda demasiado (archivo muy grande) | «Esta conversión está tardando demasiado. Prueba con un archivo más pequeño» |
Los límites concretos de filas, columnas y tamaño dependen de la implementación del navegador, pero la herramienta los especifica al usuario en el mensaje de error.
Procesamiento en el navegador: privacidad y velocidad
La conversión se ejecuta completamente en el lado del cliente, dentro del navegador. El archivo nunca se envía a un servidor. Esto tiene implicaciones directas:
- Privacidad: Puedes convertir datos sensibles (direcciones de clientes, información financiera, registros médicos) sin temor a que se almacenen en un servidor externo. El archivo se lee en la memoria del navegador y el JSON se descarga desde allí.
- Velocidad: Para archivos pequeños (menos de unos pocos megabytes) la conversión es casi instantánea. Para archivos grandes, el tiempo depende de la potencia del navegador y la memoria disponible. Si el archivo es demasiado grande o la conversión se alarga, aparece el mensaje de timeout.
- Sin dependencia de red: Una vez cargada la página, no se necesita conexión a internet para la conversión, salvo para descargar el resultado.
Esta arquitectura es especialmente útil para equipos que comparten datos entre una persona técnica que usa hojas de cálculo y un desarrollador que necesita JSON, sin exponer información a terceros.
Preguntas frecuentes
1. ¿Por qué mi archivo CSV no se convierte y recibo el mensaje de que no se pudo analizar?
La causa más común son las comillas mal formadas o inconsistencias en el número de columnas. Revisa si algún campo contiene comillas dobles sin escapar o si una fila tiene menos delimitadores que la cabecera. Prueba a abrir el CSV en un editor de texto plano para inspeccionar la estructura.
2. ¿Los números se convierten a números en el JSON?
No. Todos los valores se mantienen como cadenas de texto. Esto es intencionado para preservar los ceros a la izquierda y evitar la pérdida de precisión. Si necesitas números, debes convertirlos en tu aplicación (por ejemplo, con parseFloat() o Number() en JavaScript).
3. ¿Por qué mi código postal con cero a la izquierda (por ejemplo, 28001) aparece como "28001" en el JSON, pero al cargarlo en mi programa se convierte en 28001?
El JSON que descargas contiene la cadena "28001". El problema está en el software que lee ese JSON. Muchos lenguajes y bibliotecas realizan tipado automático. Para evitarlo, asegúrate de que tu lector de JSON trate los valores como cadenas explícitamente (por ejemplo, usando JSON.parse(texto, reviver) con una función que devuelva el valor original sin conversión).
4. ¿Puedo convertir un JSON de vuelta a CSV con la misma herramienta?
Sí, la herramienta dispone de una página para la conversión inversa. Ten en cuenta que JSON puede contener objetos anidados y arrays; al convertirlos a CSV se aplanan, generando múltiples filas o columnas según la estructura. La página de JSON a CSV tiene sus propias reglas.
5. ¿Qué hago si mi CSV tiene más de 1000 columnas?
La herramienta impone un límite en el número de columnas. Si tu archivo lo supera, recibirás un mensaje de error. Como solución, considera reducir el número de columnas dividiendo el archivo en varios CSV o eliminando columnas innecesarias antes de la conversión.
6. ¿El archivo se sube a algún servidor durante la conversión?
No. Todo el procesamiento se realiza en el navegador. El archivo nunca abandona tu dispositivo. Esto se aplica tanto a la conversión de CSV a JSON como a las demás opciones de la herramienta.