A Saída YAML
Converter o JSON de exemplo produz:
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
Como JSON Mapeia para YAML
| JSON | YAML |
|---|---|
{ "key": "value" } | key: value |
{ "key": 42 } | key: 42 |
{ "key": true } | key: true |
{ "key": null } | key: null |
["a", "b"] | - a\n- b |
| Objeto aninhado | Bloco indentado |
Quando Usar YAML
Kubernetes e Helm
Todo recursó Kubernetes é definido em YAML.
Docker Compose
docker-compose.yml usa YAML para definições de serviço, montagens de volume e mapeamentos de porta.
GitHub Actions
Arquivos de workflow em .github/workflows/ são YAML.
Ansible
Playbooks Ansible e arquivos de inventário são YAML.
Quando Usar JSON
package.jsonepackage-lock.json: ferramentas geram e leemtsconfig.json: o compilador TypeScript lê e válida- Respostas de API: todo cliente HTTP e linguagem tem parser JSON
- Intercâmbio de dados entre serviços: sintaxe estrita significa menos supresas de parsing
Pegadinhas do YAML
O Problema da Noruega
YAML 1.1 trata estes valores não entre aspas como booleanos:
# Todos viram booleanos no YAML 1.1
enabled: yes
disabled: no
flag: on
toggled: off
Sempre use aspas em strings que possam ser mal interpretadas:
country: "NO"
status: "off"
Indentação com Tabs
Um único caractere de tabulação em qualquer lugar de um arquivo YAML causa erro de parsing.
Strings Multilinha
YAML tem dois estilos de bloco escalar. O estilo literal (|) preserva novas linhas. O estilo dobrado (>) colapsa novas linhas em espaços.