Cuándo conviene YAML sobre JSON
JSON es excelente para datos que viajan entre máquinas: estricto, rápido de parsear, soportado nativamente. YAML brilla en otro escenario: configuración que un humano va a editar a mano. Un manifest de Kubernetes con cien claves y cinco niveles de anidamiento se vuelve ilegible en JSON con tantas llaves y comas. En YAML, el mismo contenido se lee fluido, sin ruido visual.
Casos típicos
- Kubernetes. Toda la documentación de Kubernetes usa YAML para los manifests. Aunque
kubectlacepta JSON, nadie escribe JSON a mano para esto. - GitHub Actions. Los workflows en .github/workflows/*.yml son YAML. Si tenés un JSON con la definición, hay que convertir.
- Docker Compose. docker-compose.yml es exclusivamente YAML.
- Ansible. Playbooks de Ansible son YAML por convención.
- Editar configs largas en producción. Cuando hay que tocar un archivo de 500 líneas, YAML es más amable.
Cómo se serializa cada tipo
- Strings simples. Sin comillas si no contienen caracteres especiales.
- Strings con riesgo. Entre comillas dobles si contienen
:,#, empiezan con espacio, o se confunden con booleanos/números. - Numbers. Tal cual, sin comillas.
- Booleans.
trueofalseen minúscula. - Null.
null. - Arrays. Lista con guiones, un elemento por línea.
- Objetos. Clave seguida de dos puntos, con la jerarquía marcada por indentación.
Reglas de comillas en YAML
YAML interpreta agresivamente: muchos strings se vuelven booleanos o números si no se les pone comillas. Estos casos siempre se quotan:
- Strings que coinciden con booleanos: "yes", "no", "true", "false", "on", "off".
- Strings que parecen números: "123", "3.14", "1e5".
- Strings que empiezan con guion (se confundirían con un item de lista): "-foo".
- Strings que contienen
:,#,&,*,!,|,>,%,@,`. - Strings con espacios iniciales o finales.
Indentación: la causa de la mayoría de bugs
YAML usa solo espacios (no tabs) y la cantidad debe ser consistente dentro de cada nivel. La convención más común es 2 espacios. Si dentro del mismo archivo mezclás 2 y 4, podés terminar con jerarquías que se interpretan distinto a lo que pensás. El conversor de Genfy emite siempre indentación de 2 espacios, alineada con la convención de Kubernetes y GitHub.
YAML que rompe
Algunos errores comunes que vas a notar al editar el YAML resultante:
- Olvidar el espacio después del dos puntos.
name:Genfyes inválido;name: Genfyfunciona. - Indentar con tabs. Los editores modernos avisan, pero si pasás archivos entre sistemas, revisalo.
- Strings ambiguos. El famoso problema "NO" para Norway. Si dudás, quotalo.