YAML
1 tools
Formatos de serialização de dados
A serialização de dados é o processo de converter dados estruturados em um formato que pode ser armazenado ou transmitido e posteriormente reconstruído.
JSON, YAML, TOML e XML são os quatro formatos de serialização baseados em texto dominantes no desenvolvimento de software.
JSON e YAML lado a lado
JSON e YAML representam o mesmo modelo de dados. YAML é um superconjunto estrito de JSON — qualquer documento JSON válido também é YAML válido.
{
"server": {
"host": "localhost",
"port": 8080,
"debug": true
},
"database": {
"url": "postgres://localhost/mydb",
"pool": 10
}
}server: host: localhost port: 8080 debug: true database: url: postgres://localhost/mydb pool: 10
YAML usa recuo em vez de chaves e colchetes, e omite aspas na maioria dos valores de string. Isso o torna mais compacto e legível para arquivos editados por humanos.
Comparação de formatos
| Formato | Legibilidade | Comentários | Arrays | Melhor para |
|---|---|---|---|---|
| JSON | ★★★☆☆ | Sem comentários | Nativo | APIs, troca de dados |
| YAML | ★★★★★ | Sim (#) | Nativo | Arquivos de config, IaC |
| TOML | ★★★★☆ | Sim (#) | Nativo | Config de app (Rust, Python) |
| XML | ★★☆☆☆ | Sim (<!-- -->) | Elementos repetidos | Documentos, SOAP, SVG |
Armadilhas do YAML
O YAML é poderoso mas tem casos extremos bem conhecidos que surpreendem os desenvolvedores:
O valor bare 'NO' é interpretado como booleano false no YAML 1.1. Códigos de país como NO (Noruega), OFF, FALSE, N são todos analisados como false. Sempre coloque strings ambíguas entre aspas.
O YAML usa recuo para definir estrutura. Um espaço extra ou um caractere de tabulação pode mudar completamente o significado do documento. Tabulações são proibidas no YAML — apenas espaços.
Valores que parecem números, booleanos ou null são automaticamente convertidos. Use aspas para valores que você quer manter como strings.
A especificação YAML proíbe explicitamente caracteres de tabulação para recuo. Configure seu editor para usar espaços em arquivos YAML.
O YAML tem dois indicadores de string multilinha: | (bloco literal, preserva quebras de linha) e > (bloco dobrado, converte quebras de linha em espaços).
Âncoras YAML (&) e aliases (*) permitem reutilização de nós, mas podem criar referências circulares que causam loops infinitos em analisadores ingênuos.
Recursos exclusivos do YAML
Comentários
O YAML suporta comentários com o caractere #. Esta é uma das maiores vantagens práticas sobre o JSON para arquivos de configuração.
Âncoras e aliases
O YAML permite definir um nó uma vez com &nome-da-âncora e reutilizá-lo em qualquer lugar com *nome-da-âncora.
Strings multilinha
O YAML suporta escalares de bloco com dois modos: o bloco literal (|) preserva as quebras de linha; o bloco dobrado (>) converte quebras de linha em espaços.
Quando você precisa converter
GitHub Actions, GitLab CI e CircleCI usam YAML nativamente. Ao gerar configurações de pipeline programaticamente, muitas vezes é mais fácil construir um objeto JSON e converter para YAML.
Os recursos do Kubernetes são definidos em YAML, mas algumas ferramentas produzem JSON. Converter entre formatos permite inspecionar respostas de API.
APIs REST retornam JSON. Ao alimentar esses dados em sistemas de configuração baseados em YAML, um conversor une a lacuna.
Migrar de uma ferramenta para outra geralmente significa converter seu formato de configuração.
As ferramentas de JSON Schema são mais maduras. Um padrão comum é criar config em YAML para legibilidade, converter para JSON para validação.
Ferramentas internas podem consumir configurações YAML enquanto APIs externas requerem JSON.
Perguntas frequentes
Sim. O YAML 1.2 é um superconjunto estrito do JSON — qualquer documento JSON válido também é YAML válido.
O YAML suporta comentários, que o JSON não tem. O YAML também é mais compacto para estruturas profundamente aninhadas.
TOML é projetado para arquivos de configuração com uma sintaxe clara, semelhante a INI, com tipos explícitos. É o padrão para Rust (Cargo.toml) e Python (pyproject.toml).
Raramente. O JSON preserva a ordem das chaves na maioria dos analisadores. O YAML suporta âncoras e tags que não têm equivalente em JSON.
JSON.stringify converte valores undefined para null em arrays e os omite de objetos.
Sim. Como o YAML é um superconjunto do JSON, você pode incorporar sintaxe JSON diretamente em um documento YAML.