"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 🤯)

  1. La velocidad de análisis es lenta
  2. JSON puede ser analizado rápidamente, pero
  3. YAML, al ser más flexible, tiene más cosas que analizar, lo que lo hace más lento.
  4. Es ineficiente al procesar grandes cantidades de datos en comparación con JSON.

  5. YAML tiene problemas de seguridad

  6. YAML puede incluir código ejecutable (!python/object), lo que conlleva riesgos de seguridad (RCE, ejecución remota de código).
  7. JSON es solo datos, ¡por lo que es seguro!

  8. No es compatible de manera nativa en los navegadores

  9. JSON es la estructura de objeto base de JavaScript, pero
  10. 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.

JSON vs YAML Batalla Medieval


🎯 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!"