La mayoría de los archivos CSV llegan desordenados. Tienen celdas vacías donde deberían estar valores nulos, citación inconsistente y ninguna esquema forzado. Convertir eso a JSON limpio no es un cambio de formato — es un problema de limpieza de datos.
Esta guía cubre cuándo hacer la transición, qué ocurre durante la conversión y cómo manejar correctamente los casos extremos — ya sea con un rápido Convertidor CSV a JSON o un script personalizado.
CSV vs JSON: El verdadero equilibrio
El CSV es compacto, universalmente legible y fácil de importar en hojas de cálculo. Para datos planos en formato tabular — exportaciones de bases de datos, pipelines de análisis, registros financieros — sigue siendo el formato adecuado. Si tus datos se ajustan a filas y columnas sin anidación, el CSV es suficiente.
El JSON se vuelve la mejor opción cuando:
- Tu datos tienen anidación o jerarquía (un usuario con múltiples direcciones)
- Necesitas información explícita de tipo (el número 42 frente a la cadena “42”)
- Estás enviando datos a una API o a una aplicación en JavaScript
- Quieres que los valores nulos se representen explícitamente, no solo como una celda vacía
El equilibrio no es sobre cuál formato es “mejor”. Es sobre si la estructura de tus datos supera lo que puede representar el CSV.
Los problemas que crea el CSV
Antes de convertir, necesitas entender qué está mal.
No hay estándar para valores nulos. Una celda vacía en CSV podría significar un valor nulo, cero, una cadena vacía o datos faltantes. No hay forma de saberlo desde el archivo. Una columna vacía podría significar “desconocido” en un sistema y “0” en otro. age Citación inconsistente.
Los valores que contienen comas deben estar entre comillas dobles ( ), pero no todos los exportadores siguen la especificación. Encontrarás comas sin comillas, comillas mal coincidentes y celdas que abren una comilla pero nunca la cierran."Portland, OR"Problemas de codificación.
Los archivos CSV llegan a menudo con un BOM UTF-8, caracteres Windows-1252 o una mezcla de ambos. Las comillas inteligentes, los guiones largos y los caracteres acentuados generan errores en los parsers que esperan ASCII limpio. No hay información de tipo.
Cada valor en CSV es una cadena. El número 42, el valor booleano true y la fecha 2024-01-01 se almacenan todos como texto. Convertirlos directamente a JSON te da un documento lleno de cadenas donde esperabas números y valores booleanos. Cómo convertir correctamente
Los mecanismos son sencillos: cada fila del CSV se convierte en un objeto JSON, con los encabezados como claves. El problema es todo lo que ocurre antes y después de esa conversión.
Coerción de tipos.
Una columna llena de enteros debería convertirse en números JSON. Una columna con valores “true”/“false” debería convertirse en valores booleanos. Pero una columna de código postal que parece un entero (90210) debería mantenerse como cadena — convertirla destruye los ceros iniciales. Manejo de valores nulos.
Las celdas vacías necesitan una decisión: convertirlas a , omitir completamente la clave o usar un valor predeterminado. Elige una opción y mantén la consistencia. nullFalta de campos.
Si una fila tiene menos columnas que los encabezados, el analizador debe manejarlo con gracia — ya sea rellenándolo con o omitiendo la fila. null Aquí hay un fragmento en Python que maneja los tres casos:
encoding elimina el BOM si está presente.
import csv
import json
def coerce_value(value):
if value == '':
return None
try:
return int(value)
except ValueError:
pass
try:
return float(value)
except ValueError:
pass
if value.lower() in ('true', 'false'):
return value.lower() == 'true'
return value
def csv_to_json(csv_path, json_path):
with open(csv_path, encoding='utf-8-sig') as f: # utf-8-sig strips BOM
reader = csv.DictReader(f)
rows = []
for row in reader:
rows.append({k: coerce_value(v) for k, v in row.items() if k})
with open(json_path, 'w', encoding='utf-8') as f:
json.dump(rows, f, indent=2, ensure_ascii=False)
csv_to_json('input.csv', 'output.json')
El utf-8-sig intenta la coerción numérica en orden: entero primero, luego decimal, luego booleano, luego cadena. El coerce_value filtro elimina columnas falsas causadas por comas en el encabezado. if k JSON anidado desde CSV plano
El CSV no puede representar anidación directamente, pero existen dos estrategias comunes.
Notación de clave con punto.
Algunas exportaciones de CSV usan encabezados como . Un paso de post-procesamiento divide por el punto y construye objetos anidados: address.city y address.zipAgrupación y anidación.
def unflatten(row):
result = {}
for key, value in row.items():
parts = key.split('.')
d = result
for part in parts[:-1]:
d = d.setdefault(part, {})
d[parts[-1]] = value
return result
Si varias filas representan hijos de un mismo padre (líneas de pedido bajo un pedido), agrúpalas por el ID del padre y construye el array anidado después de la conversión. Ninguna de estas estrategias pertenece a un paso rápido de conversión — si estás haciendo esto, estás escribiendo un script de transformación, no simplemente cambiando formatos. ¿Qué herramienta usar?
Para un CSV limpio y bien estructurado que solo necesita un cambio de formato: usa un convertidor en línea
. Pega, convierte, listo. Sin configuración, sin dependencias. Convertidor CSV a JSONPara un CSV con problemas conocidos — problemas de codificación, citación inconsistente, coerción de tipos o valores nulos — escribe un script. El fragmento en Python anterior maneja la mayoría de los casos reales. pandas es una opción también (
), pero hace sus propias decisiones de coerción que pueden no coincidir con lo que deseas.pd.read_csv() + df.to_json()Para líneas en el terminal,
Miller ) es la ruta más rápida: (mlrMiller maneja correctamente la citación, la codificación y los campos faltantes desde el principio. Es la ruta más rápida para pasar de un CSV problemático a JSON limpio sin escribir código alguno.
mlr --icsv --ojson cat input.csv > output.json
Casos extremos del CSV y cómo manejarlos
Problema del CSV
| Qué obtiene el JSON | Cómo manejarlo | Celda vacía |
|---|---|---|
| o clave ausente | null Decide desde el inicio; mantén la consistencia en todas las filas | Cadena que parece numérica (código postal) |
| Pierde ceros iniciales si se coerciona | Mantén como cadena; coerciona solo columnas que controlas | Coma al final del encabezado |
| Clave vacía | en cada fila "" Filtrar con | al construir objetos if k BOM UTF-8 al inicio del archivo |
| Error de análisis o | en la primera clave Abrir con | Línea con comillas dentro de una celda encoding='utf-8-sig' |
| Rompe los analizadores básicos por líneas | Usar un analizador real de CSV, no | en una columna booleana split(',') |
"true"/"false" cadena, no | "true" booleano true Coerción explícita después de comparación en minúsculas | El cambio de formato es fácil. Los datos no lo son. |
Un convertidor CSV a JSON maneja la parte estructural en segundos. Lo que lleva tiempo es entender qué hay realmente en tu archivo — los valores nulos, los trucos de codificación, las columnas que parecen números pero no lo son. Escribe explícitamente la coerción de tipos y el manejo de valores nulos en lugar de confiar en una herramienta para adivinar, y evitarás los errores downstream que surgen de datos incorrectos silenciosamente.
CSV a JSON: Cuándo convertir y cómo mantener tus datos limpios 2
Instalar extensiones
Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas
恵 ¡El marcador ha llegado!
Marcador es una forma divertida de llevar un registro de tus juegos, todos los datos se almacenan en tu navegador. ¡Próximamente habrá más funciones!
Herramientas clave
Ver todo Los recién llegados
Ver todoActualizar: Nuestro última herramienta se agregó el 25 abr. 2026
