Quer esteja a configurar uma aplicação web, a trocar dados entre serviços, a analisar uma exportação de folha de cálculo ou a ler uma resposta de API, vai encontrar dados armazenados em formatos de texto estruturado. Os quatro mais comuns são JSON, YAML, CSV e XML.
Cada formato foi concebido com objetivos diferentes, e a escolha correta depende do seu caso de uso. Este artigo explica o que é cada formato, como se apresenta, quando usá-lo e como se comparam entre si.
JSON — JavaScript Object Notation
O JSON tornou-se o formato dominante de intercâmbio de dados na web. Apesar do nome, é independente da linguagem e utilizado em toda a parte.
Exemplo de sintaxe:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Características principais:
- Pares chave-valor com uma sintaxe limpa e legível
- Suporta strings, números, booleanos, arrays, objetos e null
- Não permite comentários no JSON padrão
- Sintaxe rigorosa — vírgulas finais e aspas simples são erros
Casos de uso comuns: APIs REST, ficheiros de configuração (package.json, tsconfig.json), bases de dados NoSQL (MongoDB), troca de dados entre frontend e backend.
Bom saber. A sintaxe rigorosa do JSON é simultaneamente um ponto forte e um ponto fraco. Torna a análise fiável e inequívoca, mas também significa que uma única vírgula em falta ou uma vírgula final a mais vai invalidar todo o ficheiro.
YAML — YAML Ain't Markup Language
O YAML foi concebido para ser o formato de serialização de dados mais legível por humanos possível. Usa indentação em vez de parênteses e é particularmente popular para ficheiros de configuração.
Exemplo de sintaxe:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Características principais:
- Estrutura baseada em indentação (sem parênteses ou chavetas)
- Suporta comentários com
# - Suporta todos os tipos de dados JSON e mais (datas, strings multilinha)
- Sensível a espaços em branco — indentação incorreta invalida o ficheiro
Casos de uso comuns: Ficheiros Docker Compose, manifestos Kubernetes, pipelines CI/CD (GitHub Actions, GitLab CI), playbooks Ansible, configuração Hugo/Jekyll.
O YAML é um superconjunto do JSON, o que significa que qualquer documento JSON válido também é YAML válido. No entanto, a flexibilidade do YAML pode ser uma faca de dois gumes — a sua conversão implícita de tipos (por exemplo, yes interpretado como booleano true, ou 3.10 tornando-se 3.1) já causou muitos bugs subtis.
CSV — Comma-Separated Values
O CSV é o formato de dados estruturados mais simples. Armazena dados tabulares como texto simples, com cada linha sendo uma fila e os valores separados por vírgulas (ou por vezes pontos e vírgula, tabulações ou outros delimitadores).
Exemplo de sintaxe:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Características principais:
- Extremamente simples — apenas texto com delimitadores
- Sem tipos de dados — tudo é uma string
- Sem forma padrão de representar dados aninhados
- Sem padrão universal oficial (RFC 4180 existe mas não é universalmente seguido)
- Os tamanhos de ficheiro são muito pequenos
Casos de uso comuns: Exportações de folhas de cálculo, importações/exportações de bases de dados, análise de dados (pandas, R), troca simples de dados, ficheiros de log.
A simplicidade do CSV é a sua maior força e maior limitação. É perfeito para dados planos e tabulares, mas não consegue representar estruturas hierárquicas. Casos especiais (vírgulas em valores, campos multilinha, problemas de codificação) tornam a análise mais complexa do que parece à primeira vista.
XML — Extensible Markup Language
O XML era o formato dominante de intercâmbio de dados antes do JSON o substituir. Usa uma sintaxe baseada em etiquetas semelhante ao HTML e suporta funcionalidades complexas como esquemas, espaços de nomes e transformações.
Exemplo de sintaxe:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Características principais:
- Estrutura baseada em etiquetas com etiquetas de abertura e fecho
- Suporta atributos, espaços de nomes, esquemas (XSD) e transformações (XSLT)
- Suporta comentários
- Muito verboso comparado com outros formatos
- Padrão extremamente bem definido com validação rigorosa
Casos de uso comuns: Serviços web SOAP, integrações empresariais, formatos de documentos (DOCX, SVG, RSS), ficheiros de configuração em ecossistemas Java/.NET, troca de dados governamentais e financeiros.
O XML é mais verboso que JSON ou YAML, mas as suas capacidades de validação de esquemas tornam-no inestimável em contextos onde a integridade dos dados e os contratos formais entre sistemas são críticos.
Comparação lado a lado
| Característica | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Legibilidade humana | Boa | Excelente | Boa (tabular) | Razoável |
| Verbosidade | Baixa | Baixa | Muito baixa | Alta |
| Comentários | Não | Sim | Não | Sim |
| Dados aninhados | Sim | Sim | Não | Sim |
| Tipos de dados | Básicos | Ricos | Nenhum (tudo strings) | Via esquema |
| Validação de esquema | JSON Schema | Sem padrão | Não | XSD |
| Tamanho de ficheiro | Pequeno | Pequeno | Mínimo | Grande |
| Velocidade de análise | Rápida | Moderada | Rápida | Moderada |
| Domínio principal | APIs Web | Config DevOps | Dados/folhas cálculo | Empresarial |
Quando usar qual
- Escolha JSON quando construir APIs web, armazenar configuração para projetos JavaScript/TypeScript ou trocar dados entre serviços. É a escolha padrão para a maioria das aplicações modernas.
- Escolha YAML quando escrever ficheiros de configuração que humanos vão ler e editar frequentemente. A sua legibilidade e suporte para comentários tornam-no ideal para DevOps e infraestrutura como código.
- Escolha CSV quando trabalhar com dados tabulares, importar/exportar de folhas de cálculo ou bases de dados, ou quando o tamanho do ficheiro deve ser mínimo. Evite-o para qualquer coisa hierárquica.
- Escolha XML quando trabalhar com sistemas empresariais, APIs SOAP ou contextos que requerem validação formal de esquemas. É também a escolha certa quando precisa de marcação orientada a documentos (como SVG ou RSS).
Converter entre formatos
A conversão entre estes formatos é uma tarefa comum. Algumas coisas a ter em conta:
- JSON para YAML (e vice-versa) é geralmente sem perdas, já que o YAML é um superconjunto do JSON.
- CSV para JSON/YAML funciona bem para dados planos, mas requer decisões sobre a estrutura para saída aninhada.
- XML para JSON pode perder informação (atributos, espaços de nomes, ordenação) porque o JSON não tem conceitos equivalentes.
- Qualquer formato para CSV funciona apenas se os dados forem planos ou puderem ser significativamente aplanados.
Dica. Ao converter entre formatos, verifique sempre a saída. As conversões automáticas podem perder dados silenciosamente, especialmente com atributos XML, conversão de tipos YAML ou casos especiais de codificação CSV.
Para saber mais
O ToolK.io disponibiliza ferramentas gratuitas para converter entre JSON, YAML, CSV e XML, formatar e validar os seus dados, e explorar tutoriais relacionados para trabalhar com dados estruturados nos seus projetos.
