Cómo convertir CSV a JSON
CSV (Comma-Separated Values) es el formato mas simple para datos tabulares, cada hoja de calculo puede exportarlo. JSON (JavaScript Object Notation) es el formato estandar para API web y aplicaciones modernas. Convertir entre ellos es una de las tareas de datos mas comunes en desarrollo. Un convertidor basado en navegador maneja todo el trabajo localmente sin subir sus datos a un servidor.
Cuando necesita CSV a JSON
- Cargar datos en una aplicacion web: la mayoria de los frameworks JavaScript trabajan con JSON nativamente, no CSV
- Cargas utiles de API: si tiene datos en una hoja de calculo que necesitan ir a un endpoint de API, deben ser JSON
- Importaciones de base de datos: muchas bases de datos NoSQL (MongoDB, Firebase) aceptan JSON directamente
- Archivos de configuracion: convertir una hoja de calculo de configuraciones en un archivo de configuracion JSON
- Analisis de datos: convertir datos exportados a un formato que sus herramientas puedan procesar
- Mutaciones GraphQL: insercion masiva de registros desde una hoja de calculo via un endpoint GraphQL
- Fixtures de prueba: convertir una lista de casos de prueba en una hoja de calculo a JSON para pruebas automatizadas
- Cargas utiles de webhook: cuando un servicio espera JSON pero tiene datos en una hoja de calculo
- Archivos de internacionalizacion (i18n): una hoja de calculo de traduccion con columnas clave/locale se convierte en un catalogo JSON
- Migrar desde sistemas heredados: los sistemas antiguos a menudo exportan CSV; los sistemas nuevos a menudo consumen JSON
- Cargar datos en LLM: JSON estructurado es mas facil para ChatGPT, Claude razonar que CSV
Como CSV se convierte en JSON
Un archivo CSV:
name,age,city
Alice,30,New York
Bob,25,London
Se convierte en un array JSON de objetos:
[
{"name": "Alice", "age": "30", "city": "New York"},
{"name": "Bob", "age": "25", "city": "London"}
]
La primera fila (encabezados) se convierte en las claves. Cada fila siguiente se convierte en un objeto.
Como convertir
- Pegue sus datos CSV: ingrese datos separados por comas con una fila de encabezado.
- Elija su delimitador: seleccione coma, punto y coma, tabulacion o pipe. La herramienta detecta automaticamente en la mayoria de los casos.
- Copiar o descargar: revise la salida JSON y copiela al portapapeles o descarguela como un archivo
.json.
Una breve historia de CSV y JSON
CSV es el formato mas antiguo por decadas. El concepto de texto separado por comas se remonta a las decadas de 1960 y 1970 como una forma de intercambiar datos entre programas mainframe. IBM Fortran (1972) admitia E/S dirigida por lista que producia salida separada por comas. CSV nunca fue estandarizado formalmente hasta el RFC 4180 en 2005, momento en el que ya existian miles de millones de archivos CSV con variaciones sutiles (reglas de comillas, finales de linea, codificacion).
JSON llego mucho mas tarde: Douglas Crockford lo especifico en 2001, RFC formal 4627 en 2006, ECMA-404 en 2013. JSON fue disenado para la web; CSV fue disenado para el procesamiento por lotes de datos en mainframes. Los dos formatos tienen fortalezas diferentes:
| Aspecto | CSV | JSON |
|---|---|---|
| Estructura | Tabla plana (filas + columnas) | Anidada, jerarquica |
| Tipos | Sin tipo (todo es texto) | Tipado (cadena, numero, bool, null, array, objeto) |
| Encabezados | Convencion de primera fila | Nombres de campo por objeto |
| Tamano | Compacto para datos tabulares | Mas verboso, incluye estructura |
| Herramientas | Excel, todas las hojas de calculo | Cada lenguaje de programacion moderno |
| Streaming | Linea por linea facil | Analisis de archivo completo por defecto (pero existe JSON Lines) |
| Especificacion estricta | RFC 4180 (2005), a menudo ignorado | RFC 8259 (2017), estricto |
La conversion CSV a JSON es esencialmente una traduccion de datos planos orientados a filas en notacion de objeto clave-valor. La mayor parte de la dificultad esta en manejar casos limite (valores entrecomillados, delimitadores incrustados, codificaciones no UTF-8) que la especificacion CSV no anticipo.
Manejo de datos CSV complicados
Valores entrecomillados: cuando un valor contiene el caracter delimitador (como una direccion con una coma), debe envolverse en comillas dobles: "New York, NY". Los buenos convertidores manejan esto correctamente.
Valores vacios: las celdas vacias se convierten en cadenas vacias en JSON ("field": ""). Si las necesita como null, puede que necesite post-procesar la salida.
Valores numericos: CSV no tiene tipos de datos. Todo es texto. La salida JSON tendra numeros como cadenas ("30" no 30). Si su aplicacion necesita numeros reales, parseelos despues de la conversion.
Saltos de linea en valores: algunos archivos CSV tienen valores multilinea (entrecomillados). No todos los convertidores manejan esto, pruebe con sus datos especificos.
Comillas escapadas: una comilla dentro de un valor entrecomillado se escapa duplicandola: "Ella dijo ""hola""". La mayoria de los parsers manejan esto correctamente.
Espacios al final: espacios adicionales en encabezados como name ,age, city crean claves desordenadas. Los buenos convertidores recortan por defecto; algunos preservan los espacios literalmente.
Marcas de orden de bytes: un BOM UTF-8 al inicio del archivo puede aparecer como los tres primeros caracteres del primer encabezado. Algunos convertidores quitan BOM; otros no.
Diferentes finales de linea: los archivos CSV de Windows tienen CRLF, Unix tienen LF, los Macs antiguos tenian CR. Los parsers robustos manejan los tres.
Variantes de formato de salida
Los convertidores CSV a JSON a menudo ofrecen varias opciones de salida:
| Salida | Ejemplo | Mejor uso |
|---|---|---|
| Array de objetos | [{"a":1},{"a":2}] | Respuestas API, por defecto |
| Objeto de objetos (con clave por primera columna) | {"id1":{"name":"x"},"id2":{...}} | Tablas de busqueda, registros con clave por ID |
| Array de arrays | [["a","b"],[1,2],[3,4]] | Datos de filas en bruto preservando orden |
| Columnar | {"a":[1,3],"b":[2,4]} | Analisis estadistico (compatible con pandas) |
| JSON Lines (NDJSON) | {"a":1}\n{"a":2} | Streaming, procesamiento de registros |
| Anidado por encabezado | [{"address":{"city":"NY"}}] desde address.city | Datos anidados desde CSV plano |
El predeterminado es array de objetos, que funciona para casi todos los escenarios de API web. JSON Lines es util si tiene millones de filas y necesita procesamiento en streaming.
Inferencia de tipo
Algunos convertidores ofrecen inferencia de tipo:
- Off (predeterminado seguro): cada valor es una cadena. Predecible pero requiere que el codigo receptor lo parsee.
- Auto: detectar numeros, booleanos, null, fechas.
"30"se convierte en30,"true"se convierte entrue,""se convierte ennull. Conveniente pero propenso a errores (un codigo postal como"00525"se convierte en525). - Impulsado por esquema: proporcionar un esquema JSON o sugerencias de tipo de columna; convertir cada columna a su tipo especificado. Lo mejor para datos de produccion.
Para uso interno donde controla los datos, la auto-inferencia ahorra tiempo. Para entrada no confiable, deje los tipos como cadenas y parseelos explicitamente en su codigo.
Errores comunes
- Ceros iniciales perdidos: una columna de numeros de telefono, codigos postales o IDs de producto con ceros iniciales (
00525,09876) se convierte en un numero perdiendo el cero a menos que lo mantenga como cadena. Cite estas columnas o desactive la inferencia de tipo. - Inyeccion de formula de Excel: un valor CSV que comienza con
=(=SUM(...)) originalmente era una formula de hoja de calculo. Convertir a JSON mantiene el texto literal pero si reimporta a una hoja de calculo, la formula se ejecuta. Quite los=,+,-,@iniciales para CSV subidos por el usuario. - Discrepancia de codificacion: un CSV exportado de Excel en Windows a menudo es Windows-1252 o Latin-1, no UTF-8. Los caracteres no ASCII (acentos, emoji) se convierten en mojibake en la conversion. Guarde el CSV como UTF-8 primero.
- Recuento de columnas inconsistente: algunas filas tienen mas o menos campos que el encabezado. Los parsers estrictos fallan; los indulgentes rellenan o truncan. Verifique que sus datos tengan forma consistente.
- Encabezados duplicados:
name, name, agees ambiguo. La mayoria de los convertidores conservan solo el ultimo valor con el nombre duplicado; algunos los hacenname,name_2. Cambielos en la fuente. - Encabezados con puntos o corchetes: una columna
address.citypuede ser interpretada como JSON anidado ({"address":{"city":...}}) por algunos convertidores. Elija el modo de salida correcto. - Caracteres de comilla mixtos: algunas fuentes usan comillas simples o comillas tipograficas (curvas) en lugar de comillas dobles rectas. La mayoria de los convertidores esperan dobles rectas.
- Salto de linea final: un CSV que termina con
\npuede o no producir un objeto vacio adicional. Recorte el espacio al final. - Fila de encabezado faltante: si su CSV no tiene encabezado, el convertidor puede usar la primera fila de datos como claves (incorrecto). Anada encabezados o use salida de array de arrays.
- Archivos muy grandes: un CSV de 100 MB produce un JSON de 200+ MB. La memoria del navegador puede tener dificultades. Para archivos grandes, use JSON Lines (NDJSON) y procese linea por linea.
Consejos
- Verifique sus encabezados: la primera fila debe ser nombres de columna limpios y unicos. Espacios, caracteres especiales o encabezados duplicados crearan claves JSON desordenadas.
- Verifique el delimitador: los CSV europeos a menudo usan punto y coma en lugar de comas (porque las comas se usan como separadores decimales en muchos paises europeos). Si la conversion se ve mal, pruebe con un delimitador diferente.
- Formatee la salida: despues de la conversion, ejecute el JSON a traves de un formateador para hacerlo legible antes de usarlo en su proyecto.
- Verifique los resultados al azar: compare algunas filas de la salida JSON con el CSV original para asegurarse de que el mapeo es correcto, especialmente para archivos con muchas columnas.
- Guarde como UTF-8 desde Excel: en Excel, elija «CSV UTF-8 (delimitado por comas)» en lugar de simplemente «CSV» para evitar problemas de codificacion. Apple Numbers y Google Sheets por defecto UTF-8.
- Use un linter CSV primero para archivos grandes: herramientas como
csvlintocsvkitdetectan filas mal formadas antes de convertir. - Muestree primero, convierta despues: para un CSV de 50.000 filas, convierta las primeras 100 filas como prueba, verifique la forma de salida, luego convierta el resto.
- Conserve los originales: nunca elimine el CSV fuente. Si su JSON se ve mal, necesita el original para reprocesar.
- Para datos profundamente anidados, escriba un pequeno script: una conversion CSV a JSON de una linea encaja en el ~80% de los casos. Para anidamiento complejo (arrays de elementos por fila, campos condicionales), Python con pandas + transformacion personalizada es mas flexible que cualquier convertidor general.
Privacidad y datos confidenciales
El convertidor CSV a JSON se ejecuta completamente en su navegador. Los datos que pega, el procesamiento intermedio y el JSON de salida se quedan todos en su dispositivo. Nada se sube a un servidor, se registra o se comparte con nadie.
Esto importa porque los CSV que convierte a menudo contienen datos sensibles: listas de clientes con direcciones de correo electronico y numeros de telefono, registros de empleados con salarios, transacciones financieras, datos de pipeline de ventas, leads de marketing, analiticas internas de productos, registros medicos exportados de sistemas EHR, calificaciones de estudiantes, historial de pagos. Los convertidores CSV a JSON en la nube registran cada pegado, a veces los retienen para «mejora del servicio», y han estado involucrados en filtraciones de datos reales donde listas de clientes pegadas se filtraron a atacantes monitoreando los registros. Un convertidor basado en navegador tiene exposicion cero: los datos nunca salen de su maquina.
La conversion basada en navegador tambien funciona sin conexion una vez cargada la pagina, util para procesar datos en aviones, en entornos seguros sin acceso a internet, o en cualquier lugar donde no pueda o no deba pegar datos de clientes o financieros en un servicio de terceros.
Preguntas frecuentes
¿Qué pasa con la fila de encabezado?
La primera fila se usa como claves para los objetos JSON. Cada fila siguiente se convierte en un objeto con esas claves. Por ejemplo, un encabezado «name,age» con una fila «Alice,30» se convierte en {"name":"Alice","age":"30"}.
¿Qué delimitadores se admiten?
Coma, punto y coma, tabulación y barra vertical se admiten todos. La herramienta puede detectar automáticamente el delimitador o puedes elegirlo manualmente.
¿Gestiona las comas dentro de los valores?
Sí. Los valores entre comillas dobles (como «New York, NY») se gestionan correctamente, la coma dentro de las comillas se trata como parte del valor, no como un separador.
¿Se envían mis datos a un servidor?
No. Toda la conversión se hace en tu navegador. Tus datos nunca salen de tu dispositivo.