YAML vs JSON: Qual Formato de Dados Deve Utilizar?
Todo o programador acaba por enfrentar esta escolha: YAML ou JSON? A resposta depende do que está a construir, quem vai ler o ficheiro e como será processado.
Ambos os formatos representam dados estruturados, mas fazem compromissos muito diferentes entre legibilidade humana e simplicidade para máquinas.
Comparação Rápida
| Característica | JSON | YAML |
|---|---|---|
| Legibilidade humana | Boa | Excelente |
| Comentários | Não suportados | Suportados |
| Tipos de dados | 6 tipos básicos | Sistema de tipos rico |
| Indentação | Chavetas e parênteses retos | Espaços em branco significativos |
| Velocidade de análise | Rápida | Mais lenta |
| Tamanho do ficheiro | Maior (chavetas, aspas) | Menor |
| Propenso a erros | Menos (delimitadores explícitos) | Mais (erros de indentação) |
Quando Utilizar JSON
O JSON destaca-se na comunicação máquina-a-máquina:
- APIs e serviços web — O formato universal de intercâmbio de dados
- Aplicações JavaScript — Análise nativa com
JSON.parse() - Configuração com ferramentas —
package.json,tsconfig.json - Armazenamento de dados — MongoDB, Elasticsearch, muitas bases de dados utilizam JSON nativamente
Formate e valide o seu JSON com o nosso Formatador JSON e Validador JSON.
Quando Utilizar YAML
O YAML brilha para configuração editada por humanos:
- Docker Compose — Definições de serviço em
docker-compose.yml - Kubernetes — Manifestos de pod, serviço e deployment
- Pipelines CI/CD — GitHub Actions, GitLab CI, CircleCI
- Configuração de aplicações — Ficheiros de definições editados por humanos
Edite e valide YAML com o nosso Editor YAML e Validador YAML.
Comparação de Sintaxe
JSON:
{
"database": {
"host": "localhost",
"port": 5432,
"credentials": {
"username": "admin",
"password": "secret"
}
}
}
YAML:
database:
host: localhost
port: 5432
credentials:
username: admin
password: secret
A versão YAML é mais curta, não tem aspas em torno de strings simples e não tem chavetas. Mas uma indentação errada estraga tudo.
Converter Entre Formatos
Precisa de mudar de formato? O nosso conversor de YAML para JSON trata da conversão instantaneamente. A direção inversa funciona com a mesma facilidade.
Armadilhas Comuns
Armadilhas do YAML
- Erros de indentação — Tabs não são permitidos, apenas espaços
- Coerção de tipo inesperada —
yes,no,on,offtornam-se booleanos - Strings multilinha — Múltiplas sintaxes (
|,>,|-) causam confusão
Armadilhas do JSON
- Sem comentários — Utilize JSONC ou mova metadados para outro local
- Vírgulas finais — Inválidas em JSON rigoroso
- Verboso para configuração — Muitas aspas e chavetas para definições simples
Utilize o nosso Linter YAML para detetar problemas de indentação e sintaxe antes da implementação.
Perguntas Frequentes
Posso utilizar YAML para APIs?
Tecnicamente sim, mas JSON é o padrão. O YAML acrescenta complexidade de análise e ambiguidade que as APIs não necessitam.
O YAML é um superconjunto de JSON?
O YAML 1.2 foi concebido para ser um superconjunto de JSON, o que significa que JSON válido é também YAML válido. Na prática, existem casos limite.
Qual é mais rápido de analisar?
O JSON é significativamente mais rápido de analisar porque a sua gramática é mais simples. Para respostas de API, isto importa. Para ficheiros de configuração carregados uma vez, não importa.
Recursos Relacionados
- Tutorial de Sintaxe YAML — Aprenda YAML do zero
- Boas Práticas de Formatação JSON — Escreva JSON melhor
- Editor YAML — Edite e valide YAML online
- Formatador JSON — Formate e embeleze JSON