Convertir CSV a JSON y JSON a CSV online: formato CSV, separadores y archivos de Excel
Pega el contenido de un archivo CSV y obtendrás un array JSON con un objeto por fila, con las claves tomadas de la cabecera. Con el botón JSON to CSV haces lo contrario: pegas un array de objetos y recibes una tabla lista para abrir en una hoja de cálculo. El separador se detecta solo, de modo que los CSV que Excel guarda con punto y coma en España y buena parte de Latinoamérica, o los datos con tabuladores copiados de una hoja de cálculo, se convierten sin tocarlos. Si lo prefieres, eliges el separador en el menú Delimiter. Los datos se procesan en tu navegador y no se suben a ningún servidor.
Qué es un archivo CSV
CSV significa comma-separated values, valores separados por comas. Es texto plano: cada línea es un registro y los campos se separan con un delimitador. Nunca hubo un estándar único y estricto, pero la RFC 4180, publicada en 2005, documenta el formato que sigue la mayoría del software: los registros se separan con saltos de línea, los campos con comas, y un campo que contiene una coma, una comilla doble o un salto de línea va entre comillas dobles, con las comillas internas duplicadas.
id,comentario
1,"Dijo ""hola"""
2,"Línea uno
Línea dos"
3,texto
Son tres registros, no cuatro: el salto de línea entre comillas pertenece al comentario del segundo. Partir un CSV con linea.split(',') falla justo en estos casos. El conversor lee carácter a carácter y sabe en todo momento si está dentro de unas comillas, así que el ejemplo anterior da tres objetos con los textos Dijo "hola", Línea uno más salto de línea más Línea dos, y texto. Si falta una comilla de cierre, verás el error Unclosed quote.
De CSV a JSON
La primera línea se interpreta como cabecera y cada línea siguiente se convierte en un objeto con esas claves. Este ejemplo usa punto y coma y decimales con coma, como un CSV exportado desde Excel en español:
nombre;precio;ciudad
Café con leche;"2,50";Madrid
"Tostada; con tomate";3,10;Sevilla
[
{ "nombre": "Café con leche", "precio": "2,50", "ciudad": "Madrid" },
{ "nombre": "Tostada; con tomate", "precio": "3,10", "ciudad": "Sevilla" }
]
Todos los valores salen como texto, porque el formato CSV no tiene tipos: 42, true y 2026-01-01 son solo caracteres. Adivinar tipos convertiría un código postal como 02134 en el número 2134, así que conviene convertir las columnas en tu código, donde sabes qué significa cada una. Las líneas vacías se ignoran, un valor que falta queda como cadena vacía, los espacios al principio y al final de cada celda se recortan y la marca de orden de bytes (BOM) que Excel añade al inicio del archivo se elimina para que no acabe pegada a la primera clave.
De JSON a CSV
Pega un array de objetos. Las columnas son la unión de todas las claves, en el orden en que aparecen por primera vez, así que objetos con campos distintos quedan alineados y un campo ausente deja la celda vacía. Los valores que contienen el separador, una comilla doble o un salto de línea se escriben entre comillas y con las comillas internas duplicadas.
[{ "nombre": "Pérez, Ana", "nota": "dijo \"hola\"" },
{ "nombre": "Luis", "dir": { "ciudad": "Lima" } }]
nombre,nota,dir
"Pérez, Ana","dijo ""hola""",
Luis,,"{""ciudad"":""Lima""}"
Un CSV es plano, así que los objetos y arrays anidados se escriben dentro de la celda como texto JSON, como la columna dir del ejemplo. Si necesitas columnas separadas como dir.ciudad, aplana los datos antes de convertir. La salida usa el separador que elijas en el menú; con la detección automática usa comas.
Punto y coma, tabuladores y Excel
Excel usa el separador de listas del sistema operativo al guardar un CSV. En configuraciones regionales donde la coma es el separador decimal, como España y muchos países de Latinoamérica, ese separador es el punto y coma, por lo que un fichero CSV de Excel suele verse como nombre;precio con 12,50 como número. La detección automática elige el delimitador que divide la línea de cabecera en más columnas, entre coma, punto y coma, tabulador y barra vertical, así que estos archivos funcionan tal cual.
Si la cabecera es de una sola columna o contiene varios delimitadores, la detección puede equivocarse; en ese caso elige el separador a mano. Los valores separados por tabuladores (TSV) son lo que obtienes al copiar celdas de Excel o Google Sheets, y puedes pegarlos directamente.
Al abrir en Excel un CSV en UTF-8, las tildes y la ñ pueden verse como caracteres raros si el archivo no empieza con BOM. Impórtalo desde la pestaña Datos, con la opción de obtener datos desde texto/CSV, y elige UTF-8 como origen del archivo.
Leer y convertir archivos CSV en Python
import csv, json
with open('productos.csv', newline='', encoding='utf-8-sig') as f:
filas = list(csv.DictReader(f, delimiter=';'))
print(json.dumps(filas, ensure_ascii=False, indent=2))
encoding='utf-8-sig' elimina la BOM de Excel, newline='' permite que el módulo csv gestione los saltos de línea entre comillas y ensure_ascii=False mantiene las tildes legibles en el JSON. Para archivos grandes, pandas.read_csv admite sep=';' y decimal=',', con lo que además convierte los decimales con coma a números. En JavaScript, Papa Parse es la biblioteca más usada en ambos sentidos.
Inyección de fórmulas en CSV
Si generas un CSV con datos introducidos por usuarios para que alguien lo abra en una hoja de cálculo, una celda que empieza por =, +, - o @ puede ejecutarse como fórmula. OWASP lo llama CSV injection o formula injection. Si la exportación se va a abrir en Excel o Google Sheets, antepone una comilla simple a esos valores o neutralízalos en el servidor que produce el archivo.
Frequently asked questions
¿Qué es el formato CSV?
Es un formato de texto plano para datos en tabla: cada línea es una fila y los campos se separan con comas, o con punto y coma en muchas configuraciones regionales. Los campos con separadores, comillas o saltos de línea van entre comillas dobles.
¿Cómo convierto un archivo CSV a JSON?
Elige CSV to JSON y pega el contenido del archivo, incluida la línea de cabecera. Cada fila se convierte en un objeto con las claves de la cabecera y el separador se detecta automáticamente.
¿Funciona con los CSV de Excel separados por punto y coma?
Sí. La detección automática reconoce coma, punto y coma, tabulador y barra vertical. También puedes elegir el separador a mano en el menú Delimiter.
¿Por qué los números salen como texto en el JSON?
Porque el CSV no tiene tipos de datos y todo valor es texto. Convertirlos automáticamente estropearía valores como códigos postales con ceros a la izquierda, así que es mejor convertir cada columna en tu código.
¿Qué pasa con el JSON anidado al convertirlo a CSV?
Los objetos y arrays anidados se escriben en una sola celda como texto JSON. Si necesitas cada campo anidado en su propia columna, aplana los datos antes de convertir.
¿Se suben mis datos a algún servidor?
No. La conversión se hace en tu navegador y los datos no se envían ni se guardan en ningún sitio.