JSON, YAML, CSV: Cuándo usar cada uno y cómo convertir entre ellos
Descargas un conjunto de datos y está en CSV. Tu API devuelve JSON. Tu archivo de configuración está en YAML. Un compañero te envía un archivo JSON y te pide que lo pases a hoja de cálculo. Otro compañero te da un archivo de configuración YAML y necesitas convertirlo a JSON para otra herramienta.
La conversión de formatos de datos es una de esas tareas que parece trivial hasta que la estás haciendo. Entender cuándo usar cada formato, y cómo pasar de uno a otro, ahorra tiempo real.
Los tres formatos de un vistazo
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Qué es: Un formato de texto para datos estructurados que admite objetos (pares clave-valor), arrays (listas ordenadas), cadenas de texto, números, booleanos y null.
Fortalezas: Legible por máquinas, ampliamente soportado en todos los lenguajes de programación, maneja datos anidados de forma natural, su sintaxis estricta evita ambigüedades.
Debilidades: Verboso (muchas llaves, corchetes y comillas), no tan legible como YAML, no admite comentarios.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Qué es: Un formato de serialización de datos fácil de leer que usa indentación en lugar de llaves y corchetes. Es un superconjunto de JSON, lo que significa que un JSON válido también es YAML válido.
Fortalezas: Extremadamente legible, admite comentarios, menos ruido visual, ideal para archivos de configuración.
Debilidades: Sensible a la indentación (fácil de romper con un espaciado incorrecto), algunos comportamientos de análisis sorprendentes, más lento de analizar que JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Qué es: Un formato de texto plano donde cada línea es una fila y los valores dentro de una fila están separados por comas (o a veces por punto y coma o tabulaciones).
Fortalezas: Universal (todas las hojas de cálculo, bases de datos y herramientas de datos lo soportan), compacto para datos tabulares, fácil de leer y crear.
Debilidades: No admite datos anidados, no tiene tipos de datos (todo es texto), no hay estándar para caracteres especiales, limitado a tablas planas.
¿Sabías que? YAML es técnicamente un superconjunto de JSON. Esto significa que cualquier documento JSON válido es automáticamente un documento YAML válido. Puedes pegar JSON en un analizador YAML y funcionará. Lo contrario no es cierto: las funcionalidades de YAML (comentarios, anclas, cadenas multilínea) no tienen equivalente en JSON.
Cuándo usar cada uno
| Caso de uso | Mejor formato | Por qué |
|---|---|---|
| Solicitudes y respuestas de API | JSON | Estándar de la industria, todos los lenguajes tienen soporte nativo |
| Archivos de configuración | YAML | Legible para humanos, admite comentarios para documentación |
| Datos de hojas de cálculo | CSV | Se abre directamente en Excel, Google Sheets, etc. |
| Exportaciones de bases de datos | CSV | Los datos tabulares planos se mapean directamente a filas y columnas |
| Datos anidados complejos | JSON o YAML | CSV no puede representar anidamiento |
| Intercambio de datos entre sistemas | JSON | Análisis sin ambigüedades, especificación estricta |
| Configuración editada por humanos | YAML | Más fácil de leer y editar a mano |
| Listas de datos simples | CSV | Ligero, sin sobrecarga |
Convertir entre formatos
JSON a YAML
Esta es la conversión de configuración más común. Tienes un archivo de configuración JSON de una herramienta y necesitas YAML para otra. La conversión es directa porque YAML admite todo lo que JSON admite.
{"server": {"host": "0.0.0.0", "port": 8080}}
Se convierte en:
server:
host: 0.0.0.0
port: 8080
YAML a JSON
Pasar de YAML a JSON también es simple, pero pierdes los comentarios (JSON no los admite) y el resultado es más verboso.
JSON a CSV
Esto funciona bien para arrays JSON planos (arrays de objetos con las mismas claves). Cada objeto se convierte en una fila, y cada clave se convierte en un encabezado de columna.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Se convierte en:
name,age
Alice,30
Bob,25
Advertencia La conversión de JSON a CSV falla cuando el JSON contiene objetos o arrays anidados. CSV es plano: no tiene forma de representar un array de "skills" o un objeto "address" anidado. Los datos anidados deben aplanarse (address.city, address.country como columnas separadas) o serializarse como cadena de texto dentro de una celda CSV.
CSV a JSON
Cada fila se convierte en un objeto, con los encabezados de columna como claves. Esto funciona limpiamente para datos tabulares simples.
CSV a YAML
Menos común, pero sigue la misma lógica: cada fila se convierte en un mapeo YAML, y el archivo completo se convierte en una secuencia YAML.
Problemas comunes
Problemas de codificación en CSV
Los archivos CSV pueden usar diferentes codificaciones de caracteres (UTF-8, Latin-1, Windows-1252). Si abres un CSV y ves caracteres ilegibles como "München" en lugar de "München", es un problema de codificación. Usa siempre UTF-8 cuando sea posible.
Confusión con el delimitador CSV
No todos los CSV usan comas. Los CSV europeos suelen usar punto y coma porque las comas se usan como separadores decimales en muchos formatos numéricos europeos. Los valores separados por tabulaciones (TSV) son otra variante común.
Errores de indentación en YAML
YAML usa indentación (espacios, nunca tabulaciones) para definir la estructura. Una indentación inconsistente, o mezclar tabulaciones y espacios, produce errores de análisis o interpretaciones erróneas silenciosas. Usa exactamente 2 espacios por nivel de indentación y configura tu editor para insertar espacios en lugar de tabulaciones.
Advertencia En YAML, la cadena no se interpreta como el booleano false, y yes se interpreta como true. La cadena 1.0 se interpreta como número. Si quieres las cadenas literales "no", "yes" o "1.0", debes entrecomillarlas: "no", "yes", "1.0". Este es uno de los problemas más conocidos de YAML.
Comas finales en JSON
JSON no permite comas finales. Esto es válido en JavaScript pero no en JSON:
{"name": "Alice", "age": 30,} // JSON no válido: coma final
Rendimiento con archivos grandes
Para conjuntos de datos muy grandes (millones de filas), CSV es más eficiente que JSON o YAML porque tiene una sobrecarga mínima por registro. JSON añade llaves y comillas por cada valor, lo que aumenta significativamente el tamaño del archivo en datos tabulares grandes.
Herramientas prácticas para la conversión
Para conversiones rápidas y puntuales, las herramientas basadas en navegador son la opción más rápida. Pegas o subes tus datos, seleccionas el formato de destino y obtienes el resultado inmediatamente.
Consejo Convierte entre formatos JSON, YAML y CSV al instante: Cómo convertir formatos de datos. Pega tus datos, elige el formato de destino y copia o descarga el resultado.
Para trabajar específicamente con JSON, un formateador que valide y organice tu JSON es invaluable:
- JSON Formatter — validar, formatear y minificar JSON
- JSON to CSV Converter — convertir arrays JSON a CSV
- YAML-JSON Converter — convertir entre YAML y JSON
- CSV Viewer — visualizar y explorar archivos CSV
Convierte tus datos ahora:
Todas las herramientas son gratuitas y funcionan directamente en tu navegador.