JSON ou YAML
Resumo: JSON delimita com chaves e YAML com indentação: máquinas ficam com JSON, humanos editando configuração ficam com YAML. Comentários, âncoras e estrutura de múltiplos documentos não sobrevivem.

Resumo da ópera: use JSON para dados de máquina para máquina e YAML para configuração editada por humanos; prefira YAML quando precisar de comentários, texto multilinha ou âncoras, e JSON quando toda linguagem precisar analisar o mesmo payload sem ambiguidade.
Lado a lado
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
A mesma estrutura. O YAML descarta a pontuação e ganha um lugar para comentário.
Onde eles diferem
| JSON | YAML | |
|---|---|---|
| Estrutura | Chaves e vírgulas | Indentação |
| Comentários | Nenhum | Sim |
| Strings | Aspas duplas, escape obrigatório | Geralmente sem aspas |
| Texto multilinha | Escapes \n ou arrays |
Escalares em bloco ` |
| Reuso | Nenhum | Âncoras & e aliases * |
| Múltiplos documentos | Envolva em um array | Separadores --- |
| Velocidade de análise | Rápida | Mais lenta, regras de indentação |
| Ambiguidade | Muito baixa | no analisado como booleano, indentação desalinhada |
Essa última linha é o custo real do YAML. No YAML 1.1, country: NO produz o booleano false, e version: 1.0 pode virar float. O JSON não tem tipagem implícita nenhuma.
Escolhendo
JSON: corpos de requisição e resposta, mensagens de serviço a serviço, colunas JSON em bancos de dados, qualquer coisa que precise ser analisada de forma idêntica em toda linguagem.
YAML: ecossistemas onde ele é o padrão (Kubernetes, Ansible, GitHub Actions, Docker Compose); configuração que precisa de explicação; arquivos dominados por texto longo, como certificados, scripts ou SQL.
O que a conversão perde
YAML → JSON: todos os comentários, o reuso por âncoras (expandido em duplicatas), todos os documentos exceto o primeiro, e a grafia original de datas e booleanos.
JSON → YAML: a distinção string/número enfraquece, então "8080" e 8080 precisam ambos de aspas explícitas para se manterem seguros.
Converta para migrações e inspeção pontual. Não mantenha o mesmo arquivo em dois formatos como visões paralelas.
Perguntas frequentes
Como devo decidir entre JSON e YAML?
Comece por quem lê e mantém o arquivo: use JSON quando um programa o gera, ele cruza fronteiras de linguagem e precisa ser analisado de forma previsível; use YAML quando um humano o edita e precisa de explicações de campo ou texto multilinha longo. Eles se convertem entre si, mas não mantenha a mesma configuração em ambos os formatos a longo prazo.
Por que o YAML produz mais ambiguidade de tipos?
O YAML tem tipagem implícita, então valores como NO, on ou 1.0 podem virar booleanos, datas ou números. O JSON tem apenas tipos explícitos: uma string precisa de aspas, o que torna a análise mais previsível entre linguagens.
Comentários e âncoras devem sobreviver ao converter YAML para JSON?
Não. Comentários, âncoras e múltiplos documentos do YAML não podem ser representados em JSON; as âncoras são expandidas em conteúdo duplicado. Se precisar preservá-los, use uma biblioteca YAML com Document API em vez de uma ida e volta por objeto.