"YAML es fácil de leer para los humanos, pero ¿por qué el trono del intercambio de datos es de JSON?"
"¿Dónde es fuerte YAML y por qué JSON tenía que ganar?"
🔥 1. El inicio de la guerra de formatos de datos
Hace mucho tiempo, los programadores necesitaban una forma de almacenar y transferir datos.
Al principio, XML ocupaba el trono.
<person>
<name>Alice</name>
<age>25</age>
<skills>
<skill>Python</skill>
<skill>Django</skill>
</skills>
</person>
Pero XML era demasiado verboroso y pesado, y difícil de leer.
Así que surgieron JSON y YAML.
🤖 2. JSON: Asentando el trono del intercambio de datos
En 2001, Douglas Crockford presentó JSON, inspirado en la forma de representar objetos en JavaScript.
"¡Un formato de intercambio de datos simple, ligero y que es fácil de entender por las máquinas!"
El objetivo de JSON era claro:
✅ Una estructura que puede ser leída por humanos pero es leída mejor por computadoras
✅ Optimizado para la transmisión de datos entre navegador y servidor
✅ Compatible de manera natural con lenguajes orientados a objetos (JavaScript, Python, etc.)
Ejemplo de JSON:
{
"name": "Alice",
"age": 25,
"skills": ["Python", "Django"]
}
- Podía expresar estructuras de datos con solo
{}
y[]
, - Se popularizó rápidamente porque JavaScript en la web podía manejar JSON directamente.
- En particular, se convirtió en el estándar de formato de datos en REST APIs, lo que le otorgó el trono.
🧐 3. YAML: Un formato de datos fácil de entender para humanos
Sin embargo, había quienes deseaban un formato más amigable para los humanos que JSON.
"¿No sería mejor expresar estructuras de datos sin llaves y comillas innecesarias?"
Así que en 2001, apareció YAML (Ain’t Markup Language).
name: Alice
age: 25
skills:
- Python
- Django
Características de YAML:
✅ Fácil de leer por humanos (¡limpio sin llaves ni comillas!)
✅ Soporta comentarios (se pueden usar #
)
✅ Es conveniente para archivos de configuración
Por eso, YAML se estableció como el rey de los archivos de configuración.
Se usa como formato básico en Kubernetes, Docker, Ansible, CI/CD, GitHub Actions.
Sin embargo, en el mercado del intercambio de datos, YAML no pudo superar a JSON.
¿Por qué? 🤔
🤯 4. ¿Por qué YAML no pudo superar a JSON?
Si YAML es fácil de leer para humanos, podría haber sido más popular que JSON...
Pero la realidad fue diferente.
✅ Razones por las que JSON ganó:
1. ¿Sintaxis demasiado libre?
- JSON tiene una estructura clara con {}
y []
, pero,
- YAML expresa la estructura mediante indentación, lo que puede llevar a más errores.
- ¡Un solo espacio mal puesto puede causar errores! (especialmente el problema de Tab vs Space
en YAML 🤯)
- La velocidad de análisis es lenta
- JSON puede ser analizado rápidamente, pero
- YAML, al ser más flexible, tiene más cosas que analizar, lo que lo hace más lento.
-
Es ineficiente al procesar grandes cantidades de datos en comparación con JSON.
-
YAML tiene problemas de seguridad
- YAML puede incluir código ejecutable (
!python/object
), lo que conlleva riesgos de seguridad (RCE, ejecución remota de código). -
JSON es solo datos, ¡por lo que es seguro!
-
No es compatible de manera nativa en los navegadores
- JSON es la estructura de objeto base de JavaScript, pero
- YAML requiere librerías adicionales.
En definitiva, JSON fue elegido como el estándar para la web y el intercambio de datos.
🚀 5. Pero YAML ha conquistado el trono de los archivos de configuración!
Sin embargo, eso no significa que YAML haya desaparecido. Si JSON se convirtió en el estándar para el intercambio de datos, YAML se convirtió en el estándar para los archivos de configuración.
🔥 Razones por las que YAML es poderoso:
- Soporte para comentarios (#) → facilita la escritura de archivos de configuración
- Fácil de leer y modificar
- Usado como formato clave en DevOps, como en Kubernetes, Docker, Ansible
Ejemplos de uso real:
- docker-compose.yml
- kubernetes.yml
- github-actions.yml
- ansible-playbook.yml
Sin embargo, hay precauciones que tomar al usar YAML para el intercambio de datos. Particularmente en el Django Rest Framework (DRF), se puede configurar la serialización en YAMLRenderer, pero la configuración predeterminada sigue siendo JSONRenderer.
from rest_framework.renderers import JSONRenderer, YAMLRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
class ExampleView(APIView):
renderer_classes = [JSONRenderer, YAMLRenderer]
def get(self, request):
data = {"message": "¡Hola, YAML!"}
return Response(data)
¡Pero la mayoría de las APIs usan JSON por defecto! Porque YAML no se usa ampliamente debido a problemas de velocidad de análisis y seguridad.
🎯 6. Conclusión: JSON vs YAML, ¿quién es mejor?
✅ Cuando elegir JSON:
- API web, intercambio de datos (¡velocidad y estabilidad son importantes!)
- Almacenamiento de datos en NoSQL
- Cuando se usa directamente en el navegador
✅ Cuando elegir YAML:
- Archivos de configuración (Kubernetes, Docker, CI/CD)
- Redacción de documentos fáciles de leer
- Trabajos relacionados con DevOps
Resumen en una línea:
🚀 "JSON es el rey del intercambio de datos, YAML es el rey de los archivos de configuración!"
Add a New Comment