Convertidor CSV a JSON
Convierta archivos CSV a formato JSON instantáneamente. Suba CSV, personalice el formato de salida y descargue como JSON sin subir datos.
Acerca del Convertidor CSV a JSON
Convertidor CSV a JSON es una herramienta en línea gratuita que convierte archivos CSV (Valores Separados por Comas) a formato JSON (Notación de Objetos JavaScript). Suba un archivo CSV o pegue datos CSV, elija su formato de salida y descargue el archivo JSON convertido, todo procesado localmente en su navegador para privacidad completa.
¿Por qué todos mis valores CSV aparecen como cadenas en la salida JSON?
Porque eso es exactamente lo que son en el archivo de origen: CSV no tiene sistema de tipos, cada celda es texto. El convertidor por defecto produce cadenas para realizar ida y vuelta sin pérdida, pero también ofrece una opción de "inferencia de tipos" que escanea cada columna y convierte celdas a números, booleanos o null cuando toda la columna coincide con un patrón. La inferencia de tipos es conveniente pero arriesgada: una columna de códigos postales donde el 90% de filas son numéricas parecerá números pero perderá ceros iniciales, y una columna donde la cadena "NULL" o "N/A" signifique faltante se convertirá impredeciblemente. Para pipelines de producción prefiere tipos explícitos por columna: lista qué columnas deben ser número, booleano, fecha o cadena y deja que el convertidor aplique solo esas reglas. La RFC 4180 solo describe los bytes en disco, nunca su significado semántico, así que las decisiones de tipo siempre viven por encima del formato.
¿Cómo maneja el convertidor la primera fila — siempre se trata como encabezado?
Por defecto la primera fila se trata como encabezado y cada celda se vuelve una clave JSON. Si tu archivo no tiene fila de encabezados, activa "La primera fila es dato" y el convertidor usará claves genéricas como column_1, column_2 — o puedes pegar una lista de encabezados personalizada. La RFC 4180 hace opcional la fila de encabezados pero la recomienda, y la mayoría de CSVs del mundo real incluyen una. Cuidado con encabezados que contienen espacios, puntos o caracteres especiales: claves como "Customer ID" u "Order.Date" producen JSON válido pero son incómodas de acceder programáticamente. El convertidor ofrece un paso opcional "normalizar encabezados" que pasa claves a minúsculas, reemplaza espacios con guiones bajos y quita caracteres no alfanuméricos, dando identificadores snake_case limpios como customer_id y order_date amigables para todo lenguaje posterior.
¿Puedo producir JSON anidado desde un CSV plano usando encabezados con notación de puntos?
Sí. Si tu fila de encabezados CSV contiene rutas con puntos como user.name, user.address.city y user.address.zip, habilita la opción "Expandir claves anidadas" y el convertidor construirá un objeto anidado por fila: {"user":{"name":"Alice","address":{"city":"Hanoi","zip":"10000"}}}. Los segmentos numéricos se tratan como índices de arreglo, así items.0.sku y items.1.sku se vuelven {"items":[{"sku":"A"},{"sku":"B"}]}. Este es el inverso del aplanamiento con notación de puntos usado por la herramienta JSON-a-CSV, así que los archivos van y vienen exactamente cuando usas ambas. Para formas complejas que no encajan en un esquema de ruta simple — uniones heterogéneas, estructuras recursivas — escribe un script de mapeo personalizado en JavaScript o Python; el convertidor maneja el 80% común de casos, no cada esquema imaginable.
¿Qué forma de salida JSON obtengo — un arreglo de objetos, un objeto con clave por ID, o algo más?
El predeterminado es un arreglo de objetos, uno por fila de datos, que es la forma más universalmente consumida y el formato que MongoDB, Pandas, BigQuery y la mayoría de APIs REST esperan. El convertidor también ofrece dos alternativas. "Objeto con clave por columna" usa el valor de una columna elegida como clave, produciendo {"u_1":{...},"u_2":{...}} — útil cuando necesitas semántica de búsqueda por ID, pero requiere valores únicos en la columna clave. "NDJSON" emite un objeto JSON por línea sin arreglo envolvente, formato correcto para pipelines de streaming (cargas de BigQuery, Spark, ClickHouse) y evita el costo de memoria de almacenar el arreglo completo en cualquier extremo. Elige la forma arreglo para lectura humana e intercambio; elige NDJSON para ETL a escala.

Mi CSV usa puntos y coma como delimitadores y comas como decimales — ¿el convertidor lo maneja?
Sí — y no debes dejar que autodetecte en este caso. Los CSVs exportados por hojas de cálculo en regiones que usan la coma como decimal (la mayoría de Europa, Latinoamérica, Vietnam) típicamente usan el punto y coma como separador de campo para evitar ambigüedad. La autodetección del convertidor intenta elegir el delimitador que da el conteo de columnas más consistente, lo que usualmente capta puntos y coma correctamente, pero siempre debes verificar mirando la vista previa. Si tus celdas numéricas usan coma como separador decimal (1,5 para uno y medio), habilita inferencia de tipos y selecciona la opción "Formato numérico europeo", de lo contrario 1,5 se parseará como la cadena "1,5" en vez del número 1.5. Diferentes locales también discrepan sobre el separador de miles — haz esas reglas explícitas.
¿Cómo maneja el convertidor celdas vacías, valores faltantes y el texto literal "null"?
Por defecto una celda vacía se vuelve el valor JSON null, el texto literal "null" sigue siendo cadena, y una celda solo con espacios también se trata como vacía. Puedes cambiar los tres comportamientos. "Celdas vacías como cadena vacía" produce "" en vez de null — mejor cuando los consumidores verifican tipos estrictamente y rechazan null. "Tratar NA, N/A, NULL como null" parsea esas cadenas centinela comunes como null JSON, útil cuando tu fuente usa una de esas convenciones. Para columnas numéricas, una celda vacía con inferencia de tipos habilitada se vuelve null en vez de 0, lo que previene el error común de sumar valores faltantes como cero. La RFC 4180 no define semántica para campos vacíos, así que debes elegir una convención y mantenerla en todo tu pipeline.
¿Cuál es el CSV más grande que puedo convertir en el navegador sin que se bloquee?
Los límites prácticos son alrededor de 50 MB o 500 000 filas en un navegador de escritorio moderno; el analizador usa un enfoque streaming internamente, pero el JSON resultante debe materializarse en memoria antes de mostrarse o descargarse. Para archivos en el rango de gigabytes, cambia a un convertidor streaming en línea de comandos: mlr --icsv --ojsonl cat input.csv > output.ndjson de Miller emite NDJSON fila por fila y usa memoria constante sin importar el tamaño, COPY (SELECT * FROM read_csv_auto('input.csv')) TO 'out.ndjson' (FORMAT JSON, ARRAY false) de DuckDB es igual de eficiente y añade inferencia de tipos, y los módulos csv + json de Python combinados en un pipeline de generadores procesarán tamaños arbitrarios. Para archivos muy anchos (miles de columnas) prefiere Parquet a JSON — el almacenamiento orientado a columnas comprime mucho mejor y consulta selectivamente sin leer el documento completo.
¿Cómo escapo caracteres especiales o convierto fechas y marcas de tiempo ISO correctamente?
El entrecomillado y escape a nivel CSV siguen la RFC 4180: los campos con delimitador, comillas dobles o saltos de línea deben envolverse en comillas dobles con las comillas internas duplicadas, y el convertidor maneja eso automáticamente en la entrada. Del lado de salida JSON aplican los escapes JSON estándar: \" para comilla doble, \\ para barra invertida, \n \r \t para caracteres de control y \uXXXX para cualquier punto de código Unicode por encima del rango ASCII imprimible. Las fechas no son tipo JSON nativo, así que el convertidor las emite como cadenas ISO 8601 (2026-05-17T00:00:00Z) cuando se habilita la inferencia de tipo fecha — este es el único formato de fecha universalmente interoperable, aceptado por el constructor Date de JavaScript, fromisoformat de Python, Instant.parse de Java y todos los motores SQL principales. Evita formatos específicos de locale como 17/05/2026 en tu salida.
