Volver al blog
guide 2026-06-14

JSON, YAML, XML, CSV — round-tripping con un solo toolbox (2026)

JSON, YAML, XML, CSV — round-tripping con un solo toolbox

Si eres developer en 2026, probablemente has abierto 30 pestañas de navegador este mes llamadas algo como "json to yaml online" o "csv to xml converter free". Cada proyecto, cada pipeline CI, cada data drop entre equipos necesita al menos un salto de formato-a-formato: el equipo de analytics exporta CSV, el equipo de plataforma espera YAML, la integración del partner corre en XML y tú sigues pegándolos con scripts Python puntuales que funcionan genial hasta que el nombre de alguien contiene una coma y un emoji unicode.

Esta guía explica los cuatro formatos canónicos de intercambio de datos que cada developer backend necesita leer y escribir con fluidez, por qué existe cada uno y cómo usar el developer toolbox de Ai2Done para hacer round-trip entre ellos con seguridad — incluyendo el JSON formatter, XML formatter, YAML formatter y convertidores como CSV to Excel, XML to JSON y XML to CSV — todos corriendo 100 % en tu navegador.

TL;DR

  • JSON es el default moderno — úsalo a menos que tengas una razón para no.
  • YAML es JSON con comentarios y menos puntuación — úsalo para archivos config que los humanos leerán y editarán.
  • XML es el formato que tus integraciones enterprise aún demandan — úsalo cuando el otro lado no transigirá.
  • CSV es el formato que los stakeholders de negocio realmente abrirán — úsalo para analytics, exports y cualquier cosa destinada a Excel.
  • Round-tripping (JSON → YAML → JSON) es casi siempre lossless. CSV ↔ JSON no es lossless cuando tu JSON tiene estructuras anidadas — aplana o denormaliza deliberadamente.

Por qué esto es más difícil de lo que parece

Un ingeniero ingenuo piensa "la conversión de formato de datos es solo JSON.parse y JSON.stringify con sintaxis diferente". En la práctica cada formato tiene trampas sutiles que muerden durante uso real en producción:

JSON no tiene comentarios, no tiene trailing commas, no undefined, no tipo Date, no Map y no BigInt. Los números por encima de 2^53 silenciosamente pierden precisión en JavaScript. Las strings deben ser UTF-8 (sin \r\n line breaks sin escapar). Un número sorprendente de archivos "JSON" escritos por Java o .NET no son del todo JSON válido porque vienen como JSON-con-comentarios o JSON-con-trailing-commas.

YAML es famosamente sobreflexible — la spec es de 80 páginas, el shorthand booleano yes/no/on/off silenciosamente parsea el código de país de Noruega "NO" como false, y los errores de indentación producen parses salvajemente diferentes entre librerías. Un documento YAML que carga correctamente en Ruby puede cargar diferente en Python o Go por diferencias YAML 1.1 vs YAML 1.2 vs custom-style.

XML es verboso pero inequívoco. Su complicación real son namespaces (la tontería del prefijo xmlns:) y atributos vs elementos hijo — diferentes escritores XML representan los mismos datos lógicos de formas completamente diferentes. También está la elección de CDATA vs entity-escaping para caracteres especiales, que puede romper consumidores esperando uno u otro.

CSV es el peor de todos porque no hay spec real. Diferentes herramientas usan diferentes reglas de quoting, diferentes caracteres de escape y diferente manejo de line breaks dentro de celdas. Microsoft Excel escribe "CSV" que abre incorrectamente en Google Sheets y viceversa. Los mismatches de encoding UTF-8 vs Windows-1252 convierten "Pokémon" en "Pokémon" en aproximadamente el 30 % de los exports CSV del mundo real.

Un buen convertidor de formato hace dos cosas no-obvias: (1) tolera entrada no-estricta de herramientas del mundo real y (2) emite salida estricta que las herramientas downstream aceptarán fiablemente. La mayoría de los convertidores online no hace ninguna.

Método 1: Ai2Done format tools (lado del navegador)

El format hub de Ai2Done tiene herramientas individuales para cada formato más varios pares de conversión. El flujo para cualquier conversión:

  1. Abre la herramienta — p. ej. JSON Formatter o XML to JSON.
  2. Pega tu entrada (o suelta un archivo) en el panel izquierdo.
  3. La salida aparece instantáneamente en el panel derecho — el formateo y la conversión suceden mientras tecleas, localmente en tu navegador.
  4. Copia o descarga el resultado. Para archivos, la herramienta produce un solo documento de salida o un ZIP si la entrada contenía múltiples documentos.

Flujos comunes que nuestros usuarios encuentran:

  • JSON → YAML: abre JSON formatter, pega JSON, la salida YAML aparece en el panel "Convert to". Reverso con YAML formatter.
  • CSV → JSON: pega CSV, la herramienta detecta el delimitador (coma, tab, semicolon, pipe) y quotes automáticamente. La primera fila se trata como headers a menos que desmarques.
  • XML → JSON: pega XML, la herramienta maneja namespaces prefijando keys con el alias del namespace. Los atributos se convierten en keys @attr, el contenido de texto se convierte en #text.
  • XML → CSV: con la herramienta XML to CSV, la herramienta aplana elementos que se repiten en filas (eliges qué tipo de elemento es el límite de "fila").
  • CSV → Excel: con CSV to Excel, la herramienta produce un .xlsx real (no un CSV renombrado), respetando la codificación UTF-8 para que el chino, japonés y emoji hagan round-trip correctamente.

Todo corre en tu navegador. El parsing JSON, YAML y XML usa librerías probadas en batalla (ajv para validación JSON Schema, js-yaml para YAML, fast-xml-parser para XML) compiladas en un solo bundle de ~150 KB.

Método 2: jq + yq + xmlstarlet en línea de comandos

Para developers que viven en la terminal, el stack canónico es:

# JSON
cat data.json | jq '.'

# YAML
cat data.yaml | yq '.'                   # yq de mikefarah en Go
yq -o=json '.' data.yaml > data.json     # YAML → JSON

# XML
xmlstarlet sel -t -c '/' data.xml         # pretty-print

# CSV → JSON
csvkit:  csvjson data.csv > data.json
mlr (Miller): mlr --c2j cat data.csv

Las ventajas: scripteable, componible en pipelines, sin pestaña de navegador necesaria. Las desventajas: cada herramienta tiene su propio DSL para aprender, ninguna maneja los cuatro formatos, y acabas escribiendo un pequeño Makefile o justfile de conversiones puntuales por proyecto.

Esta es la elección correcta cuando tienes conversión repetida y automatizada (un cron job nocturno que tira de un CSV desde un servidor FTP y empuja JSON a una API). Es overkill para una tarea de martes-tarde de "necesito este CSV como JSON para pegarlo en Postman".

Método 3: Pandas (cuando los datos son el punto)

Si tu tarea de conversión es realmente una tarea de transformación de datos disfrazada de conversión de formato — pivotar las filas, descartar columnas, filtrar, deduplicar, luego output — echa mano de pandas:

import pandas as pd
df = pd.read_csv('input.csv')
df = df[df['status'] == 'active']
df = df.drop_duplicates(subset='email')
df.to_json('output.json', orient='records', force_ascii=False)

Pandas lee/escribe CSV, Excel, JSON, Parquet, SQL y una docena de otros. Es la respuesta correcta cuando tu CSV tiene 500K filas y necesitas hacer algo analítico antes de escribir la salida. Para un archivo de datos de 50 filas que querías convertido en 5 segundos, es overkill masivo — pip install pandas solo tarda 30 segundos.

Cómo construimos las herramientas de formato (deep-dive técnico)

El toolbox de formato de Ai2Done está construido alrededor de una representación intermedia canónica compartida — una vez que cualquier entrada se parsea (JSON, YAML, XML, CSV), se convierte en un árbol de objeto JavaScript plano. Todas las conversiones se vuelven luego "serializa el árbol al formato X". Esto significa que solo necesitamos N parsers y N serializers, no N² convertidores.

Los retos de ingeniería interesantes:

  • El problema de atributos vs hijos de XML. Usamos el prefijo convencional @attr para atributos y #text para contenido de texto, luego ofrecemos un "round-tripping mode" en la UI que preserva esto lossless. Puedes convertir XML → JSON → XML y obtener el mismo XML de vuelta (módulo whitespace).
  • Inferencia de header CSV. Olfateamos las primeras 5 filas: si la fila 1 tiene valores todo-texto y la fila 2+ tiene valores numéricos, la fila 1 es headers. Si no está claro preguntamos. Esto coge ~95 % de los archivos CSV reales correctamente sin configuración.
  • Seguridad YAML. Usamos el safeLoad de js-yaml para evitar el infame exploit de ejecución de código YAML 1.1 !!python/object que persiguió a la librería YAML de Ruby durante años. Ningún YAML provisto por usuario puede ejecutar código en tu navegador.
  • BigInt y números de alta precisión. Los parsers JSON en JavaScript silenciosamente pierden precisión para enteros por encima de Number.MAX_SAFE_INTEGER. Nuestro parser los detecta (enteros de 15+ dígitos, notación científica pasada 17 sig figs) y ofrece preservarlos como strings con un marcador "_bigint:..." — opt-in, porque a la mayoría de los usuarios no les importa.
  • Manejo de BOM UTF-8. El "CSV con BOM" exportado por Excel que rompe el 30 % de los convertidores online funciona bien aquí — detectamos y quitamos el byte-order mark en entrada, opcionalmente lo re-añadimos en salida si activas "Excel compatibility".

Todo se compila a un solo bundle JS gzipped de ~400 KB que carga en primera visita. Tras eso, todas las conversiones son instantáneas (sub-milisegundo para archivos bajo unos pocos MB).

FAQ

Q: ¿Por qué pierdo datos al convertir JSON anidado a CSV? A: CSV es fundamentalmente una tabla 2D. El JSON anidado ({a: {b: {c: 1}}}) no tiene representación CSV nativa. Nuestra herramienta ofrece dos estrategias: flatten (produce columnas como a.b.c) o explode (una fila por hoja — normalmente no es lo que quieres). Elige deliberadamente; no hay respuesta "correcta".

Q: Mi CSV tiene comas dentro de celdas. ¿Lo manejará el convertidor? A: Sí — seguimos RFC 4180. Las celdas con comas, line breaks o comillas dobles se auto-quotean con "..." y cualquier comilla interna se duplica a "". Esto coincide con Excel, Google Sheets y el módulo csv de Python.

Q: ¿Puedo validar JSON contra un JSON Schema en el navegador? A: Sí, el JSON Formatter tiene una pestaña Schema donde pegas un schema y obtienes errores de validación inline. Usamos ajv por debajo (el validador JSON Schema más rápido en JavaScript).

Q: Mi XML tiene namespaces. ¿El JSON convertido los mantendrá? A: Sí — los elementos con prefijo namespace se convierten en keys JSON como "ns:elementName". Las declaraciones de namespace se mueven a una key @xmlns en el root. Revertir la conversión produce XML equivalente (aunque potencialmente formateado de forma diferente).

Q: ¿Cuál es la diferencia entre YAML 1.1 y YAML 1.2 en tu parser? A: Por defecto vamos a YAML 1.2 (que arregla el problema de Noruega — NO es la string "NO", no el booleano false). Puedes cambiar a modo YAML 1.1 para compatibilidad con configs viejos de Ruby o Symfony que dependen del shorthand booleano legacy.

Q: ¿Puedo convertir en batch 100 archivos CSV a JSON a la vez? A: Sí — suelta los 100 archivos en la herramienta, haz clic en Convert, obtén un ZIP de vuelta. Cada archivo se procesa en su propio Web Worker para que una máquina multicore los procese en paralelo.

Pruébalo ahora

Elige la conversión que necesitas:

Explora el developer toolbox completo.

Lecturas relacionadas


Última actualización 2026-06-14. Todas las herramientas de conversión de formato corren 100 % en tu navegador — tus datos nunca abandonan tu dispositivo. Nunca recopilamos, logueamos ni analizamos el contenido que procesas.