Conversor de CSV a JSON

Convierte CSV a JSON o JSON a CSV, con detección del delimitador, manejo de cabeceras y conversión de tipos sin pérdida.

CSV
JSON

La salida aparecerá aquí

Qué hace esta herramienta

CSV es lo que te entregan las hojas de cálculo, las exportaciones de bases de datos y los paneles de analítica; JSON es lo que quieren las API y el código. Esta herramienta convierte entre ambos en las dos direcciones, en tu navegador. Pega CSV y obtienes un array JSON — objetos con las claves de la fila de cabecera, o arrays simples cuando los datos no la tienen. Cambia de dirección y un array JSON se convierte en CSV, con cada valor entrecomillado exactamente lo justo.

El trabajo ocurre en tu dispositivo, y eso importa aquí: CSV es el formato al que se exportan listas de clientes, facturas y extractos de analítica. Nada de eso se sube a ninguna parte.

Por qué no basta con dividir por comas

La forma evidente de leer CSV — dividir cada línea por comas — se rompe con archivos reales, porque el formato tiene un mecanismo de escape. Un campo entre comillas dobles puede contener el delimitador, una comilla literal escrita como dos comillas seguidas, e incluso saltos de línea, en cuyo caso un registro abarca varias líneas del archivo. Esta herramienta implementa las reglas reales (RFC 4180) con un analizador carácter a carácter, así que los tres casos llegan intactos.

name,note
Grace,"rear admiral, USN"
Ada,"she said ""hello"""
Alan,"two
lines"

Esos cuatro registros tienen dos campos cada uno, pese a las comas, comillas y el salto de línea de más. Si el entrecomillado está mal formado — un campo abre comillas y nunca las cierra — obtienes la línea y la columna donde empezó la comilla descontrolada, en lugar de una tabla desfigurada en silencio.

El delimitador a menudo no es una coma

Pese al nombre, los valores separados por comas con frecuencia no lo están. En las configuraciones regionales donde la coma es el separador decimal — casi toda Europa continental — Excel exporta con punto y coma, porque allí 1,50 es un número. Las herramientas de bases de datos y de línea de comandos suelen emitir datos separados por tabuladores, y las canalizaciones de registros prefieren barras verticales. Pegar cualquiera de esos en una herramienta que solo entiende comas produce una única columna muy ancha: la frustración más habitual con CSV.

Por eso el delimitador se detecta en vez de suponerse. Se prueba cada candidato y gana el que da el mismo número de columnas en todas las filas — consistencia, no el recuento más alto, porque de lo contrario un archivo lleno de comas decimales parecería separado por comas. El delimitador detectado siempre se muestra, y puedes cambiarlo si la suposición falla.

Cabeceras y forma de la salida

Con «la primera fila es cabecera» activado, esa fila aporta los nombres de las claves y la salida es un array de objetos — la forma que espera casi cualquier API. Desactivado, cada fila se convierte en un array de valores, que es lo que quieres para un archivo que empieza directamente con datos.

  • Una fila con menos campos que la cabecera recibe cadenas vacías en las columnas que faltan, en lugar de claves con valor undefined.
  • Los nombres de cabecera duplicados se hacen únicos (id, id_2, id_3) en vez de sobrescribirse entre sí, lo que descartaría columnas en silencio.
  • Una celda de cabecera vacía pasa a ser column_2, column_3 y así sucesivamente, de modo que ninguna clave sea la cadena vacía.
  • Las líneas en blanco se omiten, como hacen los importadores de hojas de cálculo: un archivo pegado suele terminar con un salto de línea suelto, y una fila de valores vacíos ahí parece un error.

Conversión de tipos que no puede perder datos

Todo campo CSV es texto. Convertir texto que parece numérico en números JSON suele ser lo que quieres, pero también es la forma en que los datos se destruyen sin avisar. Un código postal 01234 se convierte en 1234. Un número de pedido de 20 dígitos se convierte en un decimal redondeado. Un precio escrito 1.50 pierde su cero final.

La regla que se usa aquí evita todo eso sin una lista de casos especiales: un valor se convierte en número solo si al volver a texto reproduce exactamente el original. 42 lo hace, así que se convierte. 01234 no, así que sigue siendo cadena. Tampoco 1.50, +5, 1e5, ni ningún entero más allá del punto en que los decimales pierden precisión. Las cadenas true y false pasan a booleanos; un campo vacío sigue siendo cadena vacía en lugar de convertirse en null, porque CSV no puede expresar la diferencia entre «sin valor» y «valor vacío», e inventar una sería inventar información.

De vuelta a CSV

En la otra dirección, un array de objetos se convierte en una tabla cuyas columnas son la unión de todas las claves, en el orden en que aparecen por primera vez — así las filas con claves distintas siguen alineándose, y una clave ausente produce una celda vacía. Un array de arrays se escribe fila por fila. El entrecomillado se aplica solo donde el formato lo exige: un valor que contiene el delimitador, una comilla o un salto de línea se envuelve, doblando las comillas interiores.

Los valores que CSV no puede representar — un objeto o array anidado — se escriben como JSON dentro de su celda en vez de aplanarse o descartarse, así nada desaparece en una conversión. Null se convierte en una celda vacía.

Preguntas frecuentes

¿Por qué mi archivo salió como una sola columna gigante?
El delimitador no es el que usó la herramienta. Normalmente eso significa un archivo con punto y coma (el estándar de Excel en configuraciones europeas, donde la coma es el separador decimal) o una exportación separada por tabuladores. La detección suele captarlo: mira qué delimitador se muestra y elige otro del desplegable si acertó mal.
¿Por qué mi ID sigue siendo una cadena en el JSON?
Porque convertirlo lo cambiaría. Los números se convierten solo cuando la conversión es exactamente reversible, así que 01234 conserva su cero inicial y los identificadores largos conservan todos sus dígitos. Si realmente los quieres como números, tus datos deben escribirse sin el cero inicial, o puedes convertirlos después donde tú controles la precisión.
¿Qué pasa con las comas y las comillas dentro de un campo?
Se conservan. A la entrada, un campo entrecomillado puede contener comas, comillas dobladas e incluso saltos de línea; a la salida, cualquier valor que contenga el delimitador, una comilla o un salto de línea se entrecomilla y sus comillas interiores se doblan. Un valor sobrevive intacto a CSV → JSON → CSV.
¿Se suben mis datos a algún sitio?
No. El análisis y la conversión se ejecutan por completo en tu navegador, así que las listas de clientes, exportaciones e informes que suelen vivir en CSV nunca salen de tu dispositivo.