YAML vs JSON: qual formato de config?
YAML é um formato de configuração amigável a humanos que suporta comentários e anchors; JSON é um formato de troca de dados estrito e ubíquo sem comentários.
YAML usa indentação e suporta comentários, anchors e strings multilinha, o que o torna popular para configuração (workflows de CI, Kubernetes, Compose). JSON é mais estrito, não tem comentários e é a língua franca para APIs e troca entre máquinas. YAML favorece a autoria humana; JSON favorece parsing inequívoco por máquina. Note que YAML é um superset de JSON, então JSON é YAML válido.
| YAML | JSON | |
|---|---|---|
| Legibilidade | Alta (indentação) | Moderada (chaves) |
| Comentários | Sim | Não |
| Reuso | Anchors / aliases | Nenhum |
| Rigor | Mais frouxo, armadilhas | Estrito, previsível |
| Melhor para | Config, workflows de CI | APIs, troca de dados |
Caso de uso e armadilhas
YAML combina com configuração editada à mão onde comentários e estrutura ajudam a legibilidade, mas fique atento às armadilhas: espaço em branco significativo, o problema da Noruega (no parseado como false) e erros de tab. JSON combina com payloads de API e dados gerados onde rigor e parsing universal importam. Muitas ferramentas aceitam ambos.
No CI
Faça lint do YAML (yamllint) e valide contra schemas para pegar armadilhas de indentação e tipo cedo; JSON valida contra JSON Schema. Ambos rodam em managed runners, onde runners mais rápidos encurtam os passos de lint e validação de schema.
O veredito
Configuração escrita por humanos com comentários e reuso: YAML, ficando atento a armadilhas de espaço em branco e tipagem. Troca entre máquinas e payloads de API que precisam de parsing estrito e inequívoco: JSON. Config tende ao YAML; troca de dados tende ao JSON.