Diferencias entre CSV y JSON: estructura, tipos, Excel y conversión

Los mismos tres registros ocupan 64 bytes en CSV y 135 en JSON, pero el tamaño es lo de menos. Te contamos en qué se diferencian en estructura, tipos, comillas y comportamiento en Excel, y cómo convertir sin perder datos.

9 min de lectura ToolsBasic
Diferencias entre CSV y JSON: estructura, tipos, Excel y conversión

CSV y JSON guardan datos como texto plano, pero están pensados para formas distintas. CSV (valores separados por comas) es una tabla plana: cada línea es un registro, cada columna un campo y la primera línea suele ser la cabecera. JSON es un árbol: objetos y listas pueden anidarse, y cada valor tiene un tipo, ya sea texto, número, booleano o null. En resumen, CSV encaja con hojas de cálculo e importaciones masivas, y JSON con APIs, configuraciones y cualquier dato con niveles.

Si necesitas pasar de uno a otro, convertir CSV a JSON y convertir JSON a CSV lo hacen sin que los datos salgan de tu navegador; lo que pegas no se envía al servidor. Antes de convertir, el formateador JSON valida e indenta el contenido, y comparar textos te enseña qué cambió entre dos exportaciones.

CSV y JSON frente a frente

Estos son los mismos tres registros en los dos formatos. Como tabla:

id,nombre,ciudad
1,Lucía,Sevilla
2,Mateo,Lima
3,Sofía,Bogotá

Como árbol:

[{"id":1,"nombre":"Lucía","ciudad":"Sevilla"},{"id":2,"nombre":"Mateo","ciudad":"Lima"},{"id":3,"nombre":"Sofía","ciudad":"Bogotá"}]

La tabla ocupa 64 bytes; el JSON, 135 sin espacios y 208 con sangría de dos espacios. La diferencia sale de repetir el nombre de cada campo en cada registro, además de comillas y llaves. A cambio, el 1 del JSON es un número, mientras que el 1 de la tabla es solo un carácter que algún programa decidirá después tratar como número.

AspectoCSVJSON
EstructuraPlana: filas y columnasÁrbol: objetos, listas, anidamiento
Tipos de datosNinguno; cada celda es textoTexto, número, true/false, null, objeto, lista
EspecificaciónRFC 4180 (informativo, 2005)RFC 8259 y ECMA-404
SeparadorLa coma en teoría; en la práctica también punto y coma, tabulador o barra verticalSintaxis fija
Codificación de caracteresNo se especifica; cambia de un archivo a otroUTF-8 obligatorio entre sistemas
ComentariosNo tieneNo tiene
Abrir en ExcelDirecto, pero depende de la configuración regionalRequiere importar con Power Query
Procesar línea a líneaFácil, salvo campos con saltos de líneaUn solo documento; para flujos se usa JSON Lines

Tipos de datos: en CSV todo es texto

JSON reconoce seis tipos: texto, número, booleano, null, objeto y lista. CSV no reconoce ninguno. Si una celda es un número, una fecha o un código lo decide el programa que abre el archivo, y muchas veces se equivoca. Las víctimas clásicas en una hoja de cálculo son estas:

  • Ceros a la izquierda que desaparecen. El código postal 08001 de Barcelona se queda en 8001, y un código de producto como 0042 pasa a ser 42.
  • Números largos que se estropean. Excel guarda 15 dígitos significativos: el último dígito de una tarjeta de 16 cifras se convierte en cero y los identificadores largos pasan a notación científica, como 1,23E+15.
  • Códigos que se vuelven fechas. Valores como 1-2 o 3/4 se interpretan como fechas. El problema llegó a ser tan habitual en genética que en 2020 se cambiaron las normas oficiales para nombrar genes humanos y evitar la conversión.
  • Choque de decimales. En configuración española, 1,20 es un número; un sistema configurado en inglés puede leerlo como dos campos o como texto.

Por eso el conversor de CSV a JSON de este sitio no interpreta nada: cada celda sale como texto. 0042 se convierte en "0042" y conserva sus ceros. Si un campo debe ser número o fecha, conviértelo de forma consciente en tu propio código, donde sabes qué significa cada campo.

Excel, el punto y coma y la configuración regional

Cuando alguien dice que todo le aparece en la columna A, el culpable casi siempre es el separador. Al abrir un CSV, Excel usa el separador de listas de la configuración regional del sistema operativo. En los países que usan coma decimal, como España y gran parte de Latinoamérica, ese separador es el punto y coma. El efecto va en las dos direcciones: un archivo separado por comas se queda en una sola columna, y el CSV que guarda un Excel configurado en español en realidad usa punto y coma y se ve roto en un equipo configurado en inglés.

  1. En lugar de abrir el archivo con doble clic, usa la opción de importar desde texto o CSV de la pestaña Datos.
  2. En el origen del archivo, elige 65001: Unicode (UTF-8).
  3. Indica el separador a mano: coma, punto y coma o tabulador.
  4. Si hace falta, en la pantalla de transformación marca como Texto las columnas de códigos, códigos postales o teléfonos para que no pierdan los ceros.
  5. Revisa en la vista previa las tildes, las eñes y el número de columnas, y carga los datos.

La codificación es la segunda trampa. Excel suele leer un archivo UTF-8 sin BOM (marca de orden de bytes) con la página de códigos antigua de Windows, y entonces año aparece como año. Guardar con la opción CSV UTF-8 de Excel añade la BOM y lo soluciona. Hay quien escribe sep=; en la primera línea para indicarle el separador a Excel; es una pista que solo entiende Excel, no forma parte de ningún estándar y el resto de programas la tratará como un dato más.

El conversor de este sitio detecta el separador por sí mismo y admite coma, punto y coma, tabulador y barra vertical, así que un archivo con punto y coma sacado de un Excel en español no necesita ajustes. En sentido contrario, la tabla generada usa comas; si tienes que abrirla en un Excel configurado en español, sigue los pasos de importación anteriores.

Las reglas de comillas del RFC 4180

La mayoría de tablas rotas se deben a separadores o saltos de línea que aparecen dentro de los propios datos. El RFC 4180 lo resuelve con unas pocas reglas:

  • Un campo que contiene el separador, comillas dobles o un salto de línea va entre comillas dobles: "Lápiz, rojo".
  • Las comillas dentro de un campo entrecomillado se escapan duplicándolas: "Dice ""hola""".
  • Un campo entrecomillado puede ocupar varias líneas; ese salto no cierra el registro.
  • Todos los registros deberían tener el mismo número de campos. Se separan con CRLF, y el salto de línea final es opcional.

Con punto y coma, como lo guardaría un Excel en español, un archivo pequeño queda así:

código;nombre;precio;nota
0042;"Lápiz, rojo";1,20;"Dice ""hola"""
0105;Cuaderno;3,75;

El conversor transforma la primera línea de datos en {"código": "0042", "nombre": "Lápiz, rojo", "precio": "1,20", "nota": "Dice \"hola\""}. Los ceros se mantienen, la coma decimal sigue dentro de su campo y la nota vacía del segundo registro llega como texto vacío.

Archivos rotos que te vas a encontrar

  • Comillas sin cerrar: una sola comilla de menos se traga el resto del archivo en un único campo. El conversor se detiene con un error que indica que un campo entrecomillado no está cerrado.
  • Escapar con barra invertida: algunos programas escriben las comillas como \". Eso no es RFC 4180 y desplaza los campos en la mayoría de analizadores.
  • Filas desiguales: un separador de más empuja los valores una columna a la derecha. El conversor coloca las celdas sobrantes bajo nombres generados como column_5, para que el desplazamiento se vea y no pase inadvertido.
  • Cabeceras repetidas: dos columnas con el mismo nombre se pisarían en un objeto JSON, así que el conversor añade _2 a la segunda: precio y precio_2.

Convertir entre CSV y JSON sin perder datos

De tabla a JSON

  1. Pega la tabla en el conversor; el separador se detecta solo.
  2. Comprueba que la primera línea es la cabecera, porque de ahí salen los nombres de los campos.
  3. Revisa el resultado: un objeto por línea y todos los valores como texto.
  4. Si hace falta, valídalo en el formateador JSON y convierte números y fechas en tu propio código.

De JSON a tabla

En este sentido, la gran pregunta es qué pasa con los datos anidados. El conversor aplana los objetos anidados en columnas con nombres unidos por puntos y escribe las listas en una sola celda como texto JSON. Con esta entrada:

[{"id":1,"nombre":"Lucía","direccion":{"ciudad":"Sevilla","cp":"41001"},"etiquetas":["vip","nuevo"]},{"id":2,"nombre":"Mateo","direccion":{"ciudad":"Lima"},"etiquetas":[]}]

La salida es:

id,nombre,direccion.ciudad,direccion.cp,etiquetas
1,Lucía,Sevilla,41001,"[""vip"",""nuevo""]"
2,Mateo,Lima,,[]

Mateo no tiene código postal, así que esa celda queda vacía; el conjunto de columnas es la unión de los campos de todos los registros. La celda de etiquetas va entre comillas según el RFC 4180 porque contiene comas y comillas. Si necesitas una fila por etiqueta, sepáralas en otra tabla antes de convertir; dentro de una única tabla plana no hay forma de hacerlo sin perder información.

Cuál elegir en cada caso

  • Elige CSV cuando los datos son tabulares por naturaleza, se van a abrir en una hoja de cálculo, van a cargarse de forma masiva en una base de datos o son demasiado grandes para tratarlos como un único documento.
  • Elige JSON cuando hay anidamiento (pedidos con sus líneas, usuarios con sus direcciones), cuando los tipos deben conservarse o cuando se trata de la respuesta de una API o de un archivo de configuración.
  • Valora JSON Lines, un objeto independiente por línea, si quieres los tipos de JSON con el procesamiento línea a línea de una tabla. Es habitual en registros y exportaciones grandes.
  • Usa los dos cuando convenga: una tabla para quien trabaja con hojas de cálculo y JSON para el intercambio entre sistemas. En muchos proyectos es el camino con menos fricción.

Preguntas frecuentes

¿Por qué mi CSV se abre en una sola columna en Excel?

El separador que espera Excel no coincide con el del archivo. Con la configuración regional española, Excel espera punto y coma, así que un archivo separado por comas se queda en una columna. Elegir el separador a mano al importar desde texto o CSV lo resuelve.

¿Puedo abrir un archivo JSON directamente en Excel?

Las versiones actuales de Excel para Windows importan JSON con Power Query desde la pestaña Datos, pero las estructuras anidadas requieren pasos extra. Para una lista plana de registros, suele ser más rápido convertirla antes en tabla.

¿Cómo conservo números y fechas?

Como el archivo no lleva tipos, la protección se aplica en el programa que lo abre. Marca como Texto las columnas delicadas al importar y escribe las fechas en formato ISO 8601, como 2026-10-13, que la mayoría de programas interpreta bien sea cual sea la configuración regional.

¿Cuál ocupa menos?

Con datos planos, la tabla, porque los nombres de los campos aparecen una sola vez. En el ejemplo anterior, los mismos registros ocupaban 64 bytes en CSV y 135 en JSON compacto. Una compresión como gzip aprovecha bien los nombres repetidos, así que la diferencia en la red es menor.

Para profundizar en la parte JSON, trabajar con datos JSON sigue donde termina este artículo. Si tus registros necesitan claves únicas, lee qué es un UUID, y para el contenido binario incrustado en formatos de texto, consulta qué es Base64.

Herramientas relacionadas

Catálogo

Artículos del blog