FmtDev
Idioma
Back to blog
March 25, 2026

Cómo convertir CSV a JSON: Guía completa para desarrolladores

Aprende a convertir archivos CSV a formato JSON. Comprende las diferencias de estructura, los errores comunes y cómo manejar encabezados, datos anidados y caracteres especiales.

¿Por qué convertir CSV a JSON?

CSV y JSON son dos de los formatos de datos más comunes en el desarrollo de software. Pero sirven para propósitos muy diferentes.

CSV (Comma-Separated Values) son datos tabulares planos — filas y columnas, como una hoja de cálculo. Es simple, compacto y universalmente compatible con Excel, Google Sheets, bases de datos y herramientas de análisis.

JSON (JavaScript Object Notation) son datos estructurados y jerárquicos — objetos con claves y valores, arrays y estructuras anidadas. Es el formato estándar para APIs, archivos de configuración y aplicaciones web modernas.

En algún momento, todo desarrollador necesita convertir entre ellos. Quizás exportaste datos de una base de datos como CSV y necesitas enviarlos a una API que espera JSON. Quizás recibiste una hoja de cálculo de un cliente y necesitas procesarla programáticamente.

Esta guía cubre todo lo que necesitas saber para convertir CSV a JSON correctamente.

La conversión básica

Un archivo CSV simple:

name,age,city
Alice,30,Paris
Bob,25,London
Charlie,35,Berlin

Se convierte en este JSON:

[
  { "name": "Alice", "age": "30", "city": "Paris" },
  { "name": "Bob", "age": "25", "city": "London" },
  { "name": "Charlie", "age": "35", "city": "Berlin" }
]

La primera fila se convierte en las claves (nombres de propiedades). Cada fila siguiente se convierte en un objeto dentro de un array JSON.

Esto parece sencillo, pero los archivos CSV del mundo real rara vez son así de limpios.

Errores comunes

1. Todo es una cadena de texto

Observa que "age": "30" es una cadena, no un número. CSV no tiene sistema de tipos. Cada valor es texto. Al convertir a JSON, debes decidir:

  • ¿Debería "30" convertirse en el número 30?
  • ¿Debería "true" convertirse en el booleano true?
  • ¿Debería "" convertirse en null?

Un convertidor ingenuo mantiene todo como cadenas. Un convertidor inteligente detecta y convierte los tipos automáticamente.

2. Comas dentro de los valores

¿Qué pasa cuando un valor contiene una coma?

name,description,city
Alice,"Loves coding, hiking",Paris

El valor Loves coding, hiking está envuelto en comillas para evitar que la coma sea tratada como delimitador. Tu parser debe manejar correctamente los campos entre comillas, o dividirá esta línea en un número incorrecto de columnas.

3. Saltos de línea dentro de los valores

CSV permite saltos de línea dentro de campos entre comillas:

name,bio
Alice,"Software engineer.
Loves open source."

Esto es CSV válido. La bio abarca dos líneas pero es un solo campo. Muchos parsers simples fallan con esto.

4. Diferentes delimitadores

No todos los archivos "CSV" usan comas. Alternativas comunes:

| Delimitador | Nombre | Común en | |---|---|---| | , | Coma | EE.UU., Reino Unido, la mayoría del software | | ; | Punto y coma | Francia, Alemania, Excel EU | | \t | Tabulación | Archivos TSV, exports de bases de datos | | \| | Pipe | Sistemas legacy |

Si abres un export de Excel europeo esperando comas, obtendrás un resultado incoherente. Siempre verifica el delimitador real antes de parsear.

5. Problemas de codificación

Los archivos CSV pueden estar codificados en:

  • UTF-8 (estándar moderno)
  • UTF-8 con BOM (predeterminado de Excel en Windows)
  • Latin-1 / ISO-8859-1 (archivos europeos antiguos)
  • Windows-1252 (Windows legacy)

Si tu parser asume UTF-8 pero el archivo es Latin-1, los caracteres especiales como é, ñ o ü se corromperán.

6. Columnas faltantes o extras

Los archivos CSV reales a menudo tienen:

  • filas con menos columnas que el encabezado
  • filas con más columnas que el encabezado
  • filas completamente vacías
  • comas finales que crean columnas fantasma

Tu convertidor debe manejar todo esto de forma elegante.

Convertir CSV a JSON en JavaScript

Aquí hay un convertidor básico:

function csvToJson(csv) {
  const lines = csv.trim().split('\n');
  const headers = lines[0].split(',');
  
  return lines.slice(1).map(line => {
    const values = line.split(',');
    const obj = {};
    headers.forEach((header, i) => {
      obj[header.trim()] = values[i]?.trim() || '';
    });
    return obj;
  });
}

Esto funciona para CSV simple pero falla con:

  • campos entre comillas con comas
  • saltos de línea dentro de valores
  • delimitadores de punto y coma
  • problemas de codificación

Para uso en producción, usa una biblioteca de parsing adecuada o una herramienta que maneje estos casos límite.

Convertir CSV a JSON en Python

import csv
import json

with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    data = list(reader)

with open('data.json', 'w') as f:
    json.dump(data, f, indent=2)

El módulo csv.DictReader integrado en Python maneja campos entre comillas, diferentes delimitadores y la mayoría de los casos límite correctamente. Es el enfoque recomendado para desarrolladores Python.

JSON a CSV (Lo inverso)

Convertir JSON a CSV es más complicado porque JSON puede ser anidado:

{
  "name": "Alice",
  "address": {
    "city": "Paris",
    "country": "France"
  }
}

¿Cómo aplanar address.city y address.country en columnas CSV? Enfoques comunes:

  • Notación de puntos: las columnas se convierten en address.city, address.country
  • Aplanamiento: subir los valores anidados al nivel superior
  • Ignorar: saltar los objetos anidados por completo

No hay un estándar universal. Tu enfoque depende de tu caso de uso.

Cuándo usar CSV vs JSON

| Caso de uso | Mejor formato | |---|---| | Datos de hoja de cálculo | CSV | | Peticiones y respuestas de API | JSON | | Exports de base de datos para análisis | CSV | | Archivos de configuración | JSON | | Compartir datos con no-desarrolladores | CSV | | Compartir datos entre servicios | JSON | | Grandes conjuntos de datos (millones de filas) | CSV (tamaño de archivo más pequeño) | | Estructuras anidadas complejas | JSON |

Convertir de forma segura

Al convertir datos sensibles (registros de clientes, datos financieros, datos internos de negocio), ten cuidado con dónde ocurre la conversión.

Muchos convertidores CSV-a-JSON en línea procesan tus datos en sus servidores. Subes un archivo, su servidor lo parsea y devuelve el resultado. Tus datos ahora han sido transmitidos y procesados por un tercero.

Si tu CSV contiene información sensible — nombres, correos electrónicos, cifras financieras, datos internos de negocio — usa un convertidor que funcione completamente en tu navegador. Ningún dato debería salir de tu máquina.

El Convertidor CSV a JSON de FmtDev procesa todo localmente. Tus datos nunca salen de tu navegador.

Puntos clave

  1. CSV es plano, JSON es estructurado — la conversión requiere mapear columnas a claves
  2. Cuidado con las comas dentro de los valores, los problemas de codificación y los diferentes delimitadores
  3. Todos los valores CSV son cadenas — decide cómo manejar la conversión de tipos
  4. El JSON anidado no puede representarse directamente en CSV sin aplanamiento
  5. Siempre verifica el delimitador y la codificación antes de parsear
  6. Para datos sensibles, convierte localmente — nunca subas a herramientas en línea

Artículos Relacionados

Herramienta Asociada

¿Listo para usar la herramienta Formateador JSON y Validador Online (Sin Servidor)? Todo el procesamiento es local.

Abrir Formateador JSON y Validador Online (Sin Servidor)