Salida YAML
Convertir el JSON de ejemplo produce esta salida:
server:
host: 0.0.0.0
port: 8080
ssl: true
database:
url: postgresql://localhost:5432/myapp
pool_size: 10
timeout: 30
logging:
level: info
format: json
outputs:
- stdout
- file
La estructura anidada se traduce directamente a la jerarquia de indentación de YAML. Los valores enteros y booleanos mantienen su tipo. Los arreglos se convierten en listas YAML con el prefijo - para cada elemento.
Como JSON se Asigna a YAML
YAML y JSON representan el mismo modelo de datos: strings, números, booleanos, null, arreglos y objetos. Las diferencias de sintaxis son cosmeticas pero importantes para la legibilidad.
| JSON | YAML |
|---|---|
{ "key": "value" } | key: value |
{ "key": 42 } | key: 42 |
{ "key": true } | key: true |
{ "key": null } | key: null |
["a", "b"] | - a\n- b |
| Objeto anidado | Bloque indentado |
JSON requiere comillas para todas las claves string y la mayoría de los valores string. YAML permite strings sin comillas a menos que el valor sea ambiguo (números, booleanos, caracteres especiales). El ‘problema noruego’ de YAML surge aquí: el código de país NO se analiza como booleano false por analizadores YAML 1.1. Siempre pon entre comillas los strings que parezcan booleanos o números.
Cuando Usar YAML
YAML aparece donde las personas editan directamente archivos de configuración:
Kubernetes y Helm
Cada recurso de Kubernetes se define en YAML. kubectl apply -f deployment.yaml es el flujo de trabajo estándar. Los archivos de valores de Helm charts son YAML. La jerarquia de indentación se asigna limpiamente a la estructura anidada de spec de Kubernetes.
Docker Compose
docker-compose.yml usa YAML para definiciones de servicios, montajes de volumnes, mapeos de puertos y variables de entorno. El soporte de comentarios es especialmente útil para documentar por qué se eligió un puerto o ruta de volumen específico.