JSON vs XML vs YAML: cómo elegir el formato de datos adecuado
JSON, XML y YAML pueden describir exactamente los mismos datos — un registro de usuario, un archivo de configuración, una carga útil de API — pero cada uno optimiza para cosas distintas. Elegir mal para una tarea determinada suele notarse después, en forma de diffs ilegibles de configuración o de un parser que no puede expresar lo que necesitas. Esta guía compara los tres frente a frente y da una regla práctica concreta para cada uno.
Los mismos datos, de tres maneras
Aquí tienes un objeto pequeño representado en los tres formatos. Compararlos lado a lado es la forma más rápida de ver qué sacrifica realmente cada uno.
{
"user": {
"name": "Ada Lovelace",
"roles": ["admin", "editor"],
"active": true
}
}user:
name: Ada Lovelace
roles:
- admin
- editor
active: true<user active="true">
<name>Ada Lovelace</name>
<roles>
<role>admin</role>
<role>editor</role>
</roles>
</user>Los mismos tres campos, con cantidades de puntuación muy distintas. Esa diferencia es toda la historia: JSON es el más amigable para las máquinas, YAML es el más amigable para escribirlo a mano, y XML es el más expresivo cuando el documento en sí necesita estructura más allá de simples datos de clave/valor.
Dónde gana JSON
JSON es el formato predeterminado por una razón: se mapea directamente a las estructuras de datos que ya tiene todo lenguaje mainstream (objetos/dicts y arrays/listas), así que analizarlo hace un round-trip hacia tipos nativos sin ambigüedad alguna. No tiene comentarios, ni múltiples formas de escribir el mismo valor, ni sensibilidad a los espacios en blanco — lo cual suena limitante, pero es exactamente lo que lo hace rápido de analizar y seguro de generar mediante programación.
Usa JSON para cualquier comunicación máquina a máquina: cargas útiles de APIs REST y GraphQL, datos pasados entre servicios, cualquier cosa almacenada en una base de datos de documentos (MongoDB, JSONB de PostgreSQL) y cualquier configuración que se lea y escriba principalmente mediante código en lugar de editarse a mano.
Dónde gana YAML
YAML es un superconjunto estricto del modelo de datos de JSON con una sintaxis mucho más amigable para los humanos: sin llaves de cierre que contar, comentarios con # e indentación en lugar de puntuación. Eso es exactamente lo que quieres para archivos que una persona edita directamente y relee en un diff — pipelines de CI (GitHub Actions, GitLab CI), manifiestos de Kubernetes y configuración de aplicaciones.
El contrapunto es que la flexibilidad de YAML es también su mayor trampa: los errores de indentación producen silenciosamente una estructura distinta en lugar de un error de análisis, y valores sin comillas como `no`, `yes`, `on` y las fechas pueden convertirse automáticamente a booleanos o timestamps que no pretendías (el infame 'problema de Noruega', donde el código de país NO se convierte en el booleano false). Pon comillas a tus cadenas cuando haya cualquier ambigüedad.
Dónde gana XML
XML parece una carga heredada junto a JSON, pero hace cosas que ni JSON ni YAML pueden: atributos junto al contenido del elemento, contenido mixto (texto y elementos intercalados, como HTML), espacios de nombres para combinar vocabularios de distintas fuentes, y validación de esquemas madura (XSD) más herramientas de transformación (XSLT) que preceden a JSON por una década.
Por eso XML persiste en dominios centrados en documentos — APIs SOAP, SVG, DOCX/XLSX (que son archivos ZIP llenos de XML) y sistemas empresariales (banca, sanidad, gobierno) con pipelines existentes validados con XSD que nadie va a reescribir. Si tus datos son genuinamente con forma de documento (piensa en 'un párrafo con un span en negrita en medio') y no de registro, XML suele seguir siendo la mejor opción.
Convertir entre formatos
Como los tres describen el mismo modelo de datos de objeto/array/string/number/boolean/null (los atributos y el contenido mixto de XML son lo único que no se mapea limpiamente), convertir entre JSON, YAML y XML suele ser mecánico para cualquier cosa con forma de registro. Las herramientas JSON to YAML, YAML to JSON, JSON to XML y XML to JSON de JsonForge hacen la conversión en el navegador, lo cual es útil cuando migras el formato de un archivo de configuración o necesitas entregar una exportación en JSON a un compañero que solo usa YAML.
FAQ
- ¿Es YAML simplemente JSON con otra sintaxis?
- Casi — YAML 1.2 es un superconjunto de JSON, lo que significa que cualquier documento JSON válido es también YAML válido. Pero YAML añade características que JSON no tiene (comentarios, anclas/referencias, archivos multidocumento) y sus propias rarezas de análisis (conversión implícita de tipos), así que lo contrario no es cierto: no todo YAML es JSON válido.
- ¿Por qué Kubernetes y las herramientas de CI usan YAML en lugar de JSON?
- Porque esos archivos se escriben y se revisan a mano constantemente. La ausencia de llaves y el soporte de comentarios de YAML lo hacen mucho más agradable de leer y de ver en un pull request que el JSON equivalente, aunque el JSON se analizaría de forma idéntica.
- ¿Por qué XML sigue existiendo si JSON es más simple?
- XML admite cosas que JSON estructuralmente no puede: atributos en los elementos, contenido mixto de texto/elementos, espacios de nombres y validación de esquemas mediante XSD. Los formatos construidos sobre XML — SVG, DOCX, XLSX, SOAP — dependen justo de esas características, por eso XML no ha desaparecido aunque JSON ganara para las APIs REST típicas.
- ¿Qué es el 'problema de Noruega' de YAML?
- En YAML, `NO` sin comillas (el código de país de Noruega) se analiza como el booleano `false`, porque YAML convierte automáticamente a booleanos los `no`/`yes`/`on`/`off` sin comillas. Es un gotcha bien conocido — pon siempre comillas a los códigos de país, las cadenas de versión y cualquier cosa que parezca un booleano o un número pero que deba tratarse como cadena literal.
Prueba estas herramientas
JSON to YAML →
Convert JSON to YAML and back, with type inference and clean formatting.
YAML to JSON →
Convert YAML configs — CI pipelines, Kubernetes manifests, OpenAPI specs — into JSON, with precise parse errors.
JSON to XML →
Convert JSON to XML and back, with automatic root-element wrapping.
XML to JSON →
Convert XML — SOAP responses, RSS feeds, legacy exports — into JSON, keeping attributes and reporting parse errors.
Artículos relacionados
¿Qué es JSON? Una guía completa para principiantes →
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, fácil de leer para los humanos y de analizar para las máquinas. Aprende la sintaxis, los tipos de datos y la estructura que impulsan las APIs modernas.
La historia de JSON: del 2000 al estándar de la industria →
Recorre JSON desde la idea de Douglas Crockford en 2001, pasando por su adopción por Yahoo, hasta convertirse en el estándar ECMA-404 que impulsa el 90 % de las APIs modernas.
La guía completa de JSON Schema (Draft 7) →
JSON Schema es el estándar para describir y validar la estructura de JSON. Aprende las palabras clave principales, crea un esquema de API real y aplica buenas prácticas.