JSON vs XML vs YAML: como escolher o formato de dados certo
JSON, XML e YAML conseguem descrever exatamente os mesmos dados — um registro de usuário, um arquivo de configuração, um payload de API — mas cada um otimiza para coisas diferentes. Escolher o errado para uma tarefa costuma aparecer depois, na forma de diffs de configuração ilegíveis ou de um parser que não expressa o que você precisa. Este guia compara os três lado a lado e dá uma regra prática concreta para cada um.
Os mesmos dados, de três maneiras
Aqui está um pequeno objeto representado nos três formatos. Compará-los lado a lado é a forma mais rápida de enxergar o que cada formato realmente troca.
{
"user": {
"name": "Ada Lovelace",
"roles": ["admin", "editor"],
"active": true
}
}user:
name: Ada Lovelace
roles:
- admin
- editor
active: true<user active="true">
<name>Ada Lovelace</name>
<roles>
<role>admin</role>
<role>editor</role>
</roles>
</user>Três campos, três quantidades muito diferentes de pontuação. Essa diferença é a história toda: o JSON é o mais amigável para máquinas, o YAML é o mais amigável para escrever à mão, e o XML é o mais expressivo quando o próprio documento precisa de estrutura que vai além de simples dados chave/valor.
Onde o JSON vence
O JSON é o padrão por um motivo: ele mapeia diretamente para as estruturas de dados que toda linguagem mainstream já possui (objetos/dicts e arrays/lists), então a análise converte para tipos nativos sem nenhuma ambiguidade. Ele não tem comentários, nem múltiplas formas de escrever o mesmo valor, nem sensibilidade a espaços em branco — o que parece limitador, mas é exatamente o que o torna rápido de analisar e seguro de gerar programaticamente.
Use JSON para qualquer comunicação máquina-a-máquina: payloads de APIs REST e GraphQL, dados passados entre serviços, qualquer coisa armazenada em um banco de documentos (MongoDB, o JSONB do PostgreSQL) e qualquer configuração que seja principalmente lida e escrita por código, e não editada à mão.
Onde o YAML vence
O YAML é um superconjunto estrito do modelo de dados do JSON com uma sintaxe muito mais amigável para humanos: sem colchetes de fechamento para contar, comentários com # e indentação em vez de pontuação. Isso é exatamente o que você quer para arquivos que uma pessoa edita diretamente e relê num diff — pipelines de CI (GitHub Actions, GitLab CI), manifests do Kubernetes e configuração de aplicação.
A contrapartida é que a flexibilidade do YAML também é sua maior armadilha: erros de indentação produzem silenciosamente uma estrutura diferente em vez de um erro de análise, e valores sem aspas como `no`, `yes`, `on` e datas podem ser convertidos automaticamente para booleanos ou timestamps que você não pretendia (o infame 'problema da Noruega', em que o código de país NO vira o booleano false). Coloque aspas nas strings sempre que houver qualquer ambiguidade.
Onde o XML vence
O XML parece um legado pesado ao lado do JSON, mas faz coisas que nem JSON nem YAML conseguem: atributos alongside o conteúdo do elemento, conteúdo misto (texto e elementos intercalados, como o HTML), namespaces para combinar vocabulários de fontes diferentes e validação madura por schema (XSD) mais transformação (XSLT) — ferramentas que antecedem o JSON em uma década.
É por isso que o XML persiste em domínios centrados em documentos — APIs SOAP, SVG, DOCX/XLSX (que são arquivos ZIP cheios de XML) e sistemas corporativos (bancos, saúde, governo) com pipelines validados por XSD que ninguém vai reescrever. Se seus dados são genuinamente em formato de documento (pense 'um parágrafo com um trecho em negrito no meio') em vez de registros, o XML muitas vezes ainda é a melhor escolha.
Convertendo entre formatos
Como os três descrevem o mesmo modelo de dados objeto/array/string/número/booleano/null (os atributos e o conteúdo misto do XML são a única coisa que não mapeia de forma limpa), converter entre JSON, YAML e XML costuma ser mecânico para qualquer dado em formato de registro. As ferramentas JSON to YAML, YAML to JSON, JSON to XML e XML to JSON do JSONForge fazem a conversão no navegador — útil quando você está migrando o formato de um arquivo de configuração ou precisa entregar um export em JSON para um colega que só usa YAML.
FAQ
- YAML é apenas JSON com sintaxe diferente?
- Quase — o YAML 1.2 é um superconjunto do JSON, ou seja, qualquer documento JSON válido também é YAML válido. Mas o YAML adiciona recursos que o JSON não tem (comentários, anchors/referências, arquivos multi-documento) e suas próprias peculiaridades de análise (conversão implícita de tipos), então o inverso não é verdadeiro: nem todo YAML é JSON válido.
- Por que Kubernetes e ferramentas de CI usam YAML em vez de JSON?
- Porque esses arquivos são escritos e revisados à mão constantemente. A ausência de colchetes e o suporte a comentários tornam o YAML muito mais agradável de ler e de comparar num pull request do que o JSON equivalente, mesmo que o JSON fosse analisado de forma idêntica.
- Por que o XML ainda existe se o JSON é mais simples?
- O XML suporta coisas que o JSON estruturalmente não consegue: atributos em elementos, conteúdo misto de texto/elementos, namespaces e validação de schema via XSD. Formatos construídos sobre XML — SVG, DOCX, XLSX, SOAP — dependem exatamente desses recursos, e é por isso que o XML não desapareceu mesmo com o JSON tendo vencido nas APIs REST típicas.
- O que é o 'problema da Noruega' do YAML?
- No YAML, `NO` sem aspas (o código de país da Noruega) é analisado como o booleano `false`, porque o YAML converte automaticamente `no`/`yes`/`on`/`off` sem aspas em booleanos. É uma pegadinha bem conhecida — sempre coloque aspas em códigos de país, strings de versão e qualquer coisa que pareça um booleano ou número mas deva ser uma string literal.
Experimente estas ferramentas
JSON to YAML →
Convert JSON to YAML and back, with type inference and clean formatting.
YAML to JSON →
Convert YAML configs — CI pipelines, Kubernetes manifests, OpenAPI specs — into JSON, with precise parse errors.
JSON to XML →
Convert JSON to XML and back, with automatic root-element wrapping.
XML to JSON →
Convert XML — SOAP responses, RSS feeds, legacy exports — into JSON, keeping attributes and reporting parse errors.
Artigos relacionados
O que é JSON? Um guia completo para iniciantes →
JSON (JavaScript Object Notation) é um formato leve de troca de dados, fácil de ler por humanos e de analisar por máquinas. Aprenda a sintaxe, os tipos de dados e a estrutura que sustentam as APIs modernas.
A história do JSON: de 2000 a padrão da indústria →
Acompanhe o JSON desde a ideia de Douglas Crockford em 2001, passando pela adoção pelo Yahoo, até se tornar o padrão ECMA-404 que sustenta 90% das APIs modernas.
O guia completo do JSON Schema (Draft 7) →
O JSON Schema é o padrão para descrever e validar a estrutura de JSON. Aprenda as palavras-chave essenciais, construa um schema real de API e aplique as melhores práticas.