Cómo convertir CSV a JSON (y viceversa): guía para desarrolladores
Por qué necesitas convertir entre CSV y JSON?
CSV (Comma-Separated Values) y JSON (JavaScript Object Notation) son los dos formatos de intercambio de datos más utilizados en el mundo. Aunque ambos representan datos estructurados, cada uno tiene ventajas en contextos diferentes, y la necesidad de convertir entre ellos surge constantemente en flujos de trabajo reales:
structura: CSV vs JSON
SV
nombre,edad,ciudad
Ana,28,Madrid
Pedro,35,Barcelona
Laura,42,Valencia
Cada línea es un registro. La primera línea (opcional) define los nombres de columna. Los valores se separan por comas (o punto y coma, tabulador, etc.).
SON equivalente
[
{ "nombre": "Ana", "edad": "28", "ciudad": "Madrid" },
{ "nombre": "Pedro", "edad": "35", "ciudad": "Barcelona" },
{ "nombre": "Laura", "edad": "42", "ciudad": "Valencia" }
]
Un array de objetos donde cada fila del CSV es un objeto y cada columna es una clave.
étodo 1: herramientas online
La forma más rápida si necesitas una conversión puntual. Nuestro conversor CSV a JSON y conversor JSON a CSV funcionan directamente en tu navegador: pega los datos, obtén el resultado. Sin servidores, sin uploads, privacidad total.
Ventajas de las herramientas online:
étodo 2: JavaScript (navegador o Node.js)
SV a JSON
function csvToJson(csv, separator = ',') {
const lines = csv.trim().split('\n');
const headers = lines[0].split(separator).map(h => h.trim());
return lines.slice(1).map(line => {
const values = line.split(separator);
return headers.reduce((obj, header, i) => {
obj[header] = values[i]?.trim() ?? '';
return obj;
}, {});
});
}
// Uso
const csv = `nombre,edad,ciudad
Ana,28,Madrid
Pedro,35,Barcelona`;
const json = csvToJson(csv);
console.log(JSON.stringify(json, null, 2));
SON a CSV
function jsonToCsv(data, separator = ',') {
if (!data.length) return '';
const headers = Object.keys(data[0]);
const rows = data.map(obj =>
headers.map(h => {
const val = String(obj[h] ?? '');
// Escapar valores con comas o comillas
return val.includes(separator) || val.includes('"')
? `"${val.replace(/"/g, '""')}"`
: val;
}).join(separator)
);
return [headers.join(separator), ...rows].join('\n');
}
étodo 3: Python
Python tiene soporte nativo excelente para ambos formatos:
SV a JSON
import csv
import json
with open('datos.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
data = list(reader)
with open('datos.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
SON a CSV
import csv
import json
with open('datos.json', 'r', encoding='utf-8') as f:
data = json.load(f)
with open('datos.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
on pandas (para datasets grandes)
import pandas as pd
# CSV a JSON
df = pd.read_csv('datos.csv')
df.to_json('datos.json', orient='records', force_ascii=False, indent=2)
# JSON a CSV
df = pd.read_json('datos.json')
df.to_csv('datos.csv', index=False, encoding='utf-8')
étodo 4: línea de comandos
on jq (procesador JSON de terminal)
# JSON a CSV con jq
jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' datos.json > datos.csv
# Instalar jq:
# macOS: brew install jq
# Linux: apt install jq / yum install jq
# Windows: choco install jq
on Miller (mlr)
# CSV a JSON
mlr --icsv --ojson cat datos.csv > datos.json
# JSON a CSV
mlr --ijson --ocsv cat datos.json > datos.csv
roblemas comunes en la conversión
. Valores con comas
Si un campo CSV contiene comas, debe estar envuelto en comillas dobles:
nombre,direccion
Ana,"Calle Mayor, 15"
. Comillas dentro de valores
Las comillas dobles dentro de un campo entrecomillado se escapan duplicándolas:
titulo
"Libro ""El Quijote"""
. Encoding y caracteres especiales
CSV no tiene un estándar universal para encoding. Asume UTF-8, pero archivos de Excel en español suelen usar Windows-1252. Si ves caracteres extraños (ñ, á), es un problema de encoding.
. Tipos de datos
CSV es puro texto: "28" y 28 son iguales. Al convertir a JSON, debes decidir si los valores numéricos deben ser strings o números. Nuestro conversor detecta automáticamente números y booleanos.
. Separador incorrecto
No todo CSV usa comas. En España y otros países europeos, el separador estándar de Excel es punto y coma (;) porque la coma se usa como separador decimal.
onclusión
Convertir entre CSV y JSON es una tarea cotidiana en desarrollo. Para conversiones puntuales, usa nuestros conversores online (CSV a JSON, JSON a CSV) que funcionan al instante en tu navegador. Para automatización, JavaScript y Python ofrecen soluciones elegantes con pocas líneas de código.