YAML: legible para humanos, exigente para parsers
YAML (acrónimo recursivo de "YAML Ain't Markup Language") nació en 2001 como alternativa a XML para configs. Su gran idea: usar indentación en lugar de llaves o corchetes para denotar jerarquía. El resultado es un formato que se lee como una lista de bullets en lugar de código. Por eso lo usan Kubernetes, Docker Compose, GitHub Actions, GitLab CI, Ansible y casi todas las herramientas devops modernas.
Por qué convertir a JSON
- Procesar en JavaScript. El browser parsea JSON nativamente; YAML requiere una librería externa de varios KB.
- APIs. Casi todas las APIs REST aceptan JSON. Si tu config viene en YAML, hay que convertir.
- Validar con herramientas existentes. JSON Schema es maduro; las equivalentes para YAML son menos comunes.
- Diff entre versiones. Diff de YAML puede ser engañoso por la indentación; diff de JSON minificado es siempre claro.
Casos típicos
- Inspeccionar un manifest de Kubernetes. Lo pasás a JSON para verlo en una API tool o ejecutar jq sobre él.
- Migrar config a un sistema que solo soporta JSON. Mucho legacy aún espera JSON.
- Test snapshots. En testing es más fácil snapshotear estructuras como JSON.
- Pasar a un endpoint REST. Algunas APIs admiten YAML pero la mayoría no.
Limitaciones de este conversor
Soporta la sintaxis más común que cubre el 95% de los casos: scalars (strings, numbers, booleans, null), listas con guiones, mapas anidados con dos puntos, y comentarios con #. No soporta features avanzados de YAML como anchors (&), aliases (*), custom tags (!!str), multi-document streams (---) ni flow style mezclado. Para esos casos, usá una librería completa como js-yaml.
Trampas frecuentes de YAML
- Indentación con tabs. YAML solo permite espacios. Mezclar tabs y espacios rompe el parser.
- Booleanos accidentales. "yes", "no", "on", "off", "y", "n" se interpretan como booleanos. Si querés el string literal, ponelo entre comillas.
- Numbers que parecen strings. "012" se interpreta como octal en YAML 1.1; mejor entre comillas.
- El problema "Norway". El código ISO de Noruega es "NO" y YAML lo convierte a false. Una saga famosa:
countries: [NO, NL]termina con[false, "NL"].
YAML vs JSON: cuál usar
Para configuración que un humano va a editar a mano, YAML es más legible. Para datos que viajan entre máquinas, JSON es más estricto y rápido de parsear. Una buena práctica: escribí configs en YAML, pero compilalas a JSON al hacer build, y serví JSON en producción. Reduce sorpresas con tipos ambiguos y mejora el rendimiento del parser.
Tips de seguridad
YAML tiene una historia complicada con la seguridad porque permite ejecutar código arbitrario via tags si el parser lo soporta (CVE de Ruby psych, Python pyyaml). Si parseás YAML que viene de fuentes no confiables, usá un loader "safe" que solo permita tipos básicos. Este conversor no ejecuta código bajo ninguna circunstancia.