XML vs JSON: Entendendo Formatos de Dados para APIs e Arquivos de Configuração
Compare XML e JSON, aprenda quando usar cada um e domine as ferramentas para converter, validar e consultar dados estruturados.
Todo aplicativo que se comunica com o mundo externo troca dados em algum formato estruturado. XML dominou os anos 2000. JSON tomou conta nos anos 2010. Mas o XML não desapareceu — ele alimenta APIs SOAP, feeds RSS, gráficos SVG, layouts Android e inúmeros sistemas corporativos. Entender os dois formatos faz de você um desenvolvedor mais versátil.
JSON em resumo
JSON (JavaScript Object Notation) é a língua franca das APIs web modernas. Ele mapeia diretamente para os tipos de dados encontrados na maioria das linguagens de programação:
{
"user": {
"id": 42,
"name": "Alice Chen",
"roles": ["admin", "editor"],
"active": true,
"score": 98.6,
"avatar": null
}
}
Tipos: string, number, boolean, null, array, object.
JSON é conciso, legível por humanos e facilmente interpretado em qualquer linguagem. É o padrão para APIs REST, arquivos de configuração e armazenamento no navegador.
XML em resumo
XML (eXtensible Markup Language) representa dados como uma árvore de elementos com tags:
<?xml version="1.0" encoding="UTF-8"?>
<user id="42">
<name>Alice Chen</name>
<roles>
<role>admin</role>
<role>editor</role>
</roles>
<active>true</active>
<score>98.6</score>
</user>
XML é verboso, mas expressivo. Suporta atributos (como id="42" acima), namespaces (para misturar vocabulários), comentários, instruções de processamento e schemas para validação rigorosa.
Comparação lado a lado
| Recurso | JSON | XML |
|---|---|---|
| Verbosidade | Compacto | Verboso |
| Tipos de dados | 6 tipos nativos | Tudo é texto |
| Comentários | ❌ Não suportado | ✅ <!-- --> |
| Atributos | ❌ Sem conceito | ✅ Sim |
| Namespaces | ❌ Sem conceito | ✅ Sim |
| Schemas | JSON Schema | XSD, DTD, RelaxNG |
| Linguagem de consulta | JSONPath, jq | XPath, XQuery |
| Transformações XSLT | ❌ | ✅ |
| Legibilidade humana | Alta | Média |
| Complexidade de parsing | Baixa | Maior |
Quando usar JSON
- APIs REST (praticamente universal)
localStorage/sessionStoragedo navegador- Arquivos de configuração (
package.json,tsconfig.json) - Bancos de dados NoSQL orientados a documentos (MongoDB, Firestore)
- Comunicação entre serviços em microsserviços
- Sempre que precisar de uma troca de dados rápida e leve
Quando usar XML
- Serviços web SOAP (financeiro, saúde, governo)
- Feeds RSS e Atom
- Gráficos SVG
- Arquivos de recursos Android (layouts, strings, manifests)
- Formatos de documentos do Office (
.docx,.xlsxsão arquivos ZIP contendo XML) - Quando você precisa de conteúdo misto (texto com marcação inline)
- Sistemas corporativos que ainda não migraram para JSON
Convertendo entre formatos
Converter XML para JSON raramente é um mapeamento 1:1 — XML possui conceitos (atributos, nós de texto, namespaces) que não existem em JSON. Estratégias comuns:
Atributos se tornam propriedades
<user id="42" active="true">Alice</user>
Pode se tornar:
{ "@id": "42", "@active": "true", "#text": "Alice" }
Ou simplificado:
{ "id": 42, "active": true, "name": "Alice" }
A abordagem correta depende do seu caso de uso. Use nosso Conversor de XML para JSON para realizar a conversão com opções para tratamento de atributos.
Validando JSON com JSON Schema
JSON Schema permite definir a estrutura esperada de um documento JSON:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["id", "name", "email"],
"properties": {
"id": { "type": "integer", "minimum": 1 },
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"roles": {
"type": "array",
"items": { "type": "string" }
}
}
}
Valide seus documentos JSON contra schemas com nosso Validador de JSON Schema — detecte erros estruturais antes que cheguem à produção.
JSONPath: consultando dados aninhados
JSONPath está para JSON assim como XPath está para XML. Sintaxe de consulta:
$.store.book[*].author — todos os autores
$.store.book[0].title — título do primeiro livro
$.store.book[?(@.price < 10)] — livros abaixo de $10
$..price — todos os valores de preço em qualquer lugar
Equivalentes XPath para XML:
/store/book/author — todos os autores
/store/book[1]/title — título do primeiro livro
/store/book[@price < 10] — livros abaixo de $10
//price — todos os valores de preço em qualquer lugar
Formatação e pretty-printing
Ambos os formatos se tornam ilegíveis quando minificados. Sempre use pretty-print para depuração e revisão humana.
JSON minificado:
{"user":{"id":42,"name":"Alice Chen","roles":["admin","editor"]}}
JSON formatado (indentação de 2 espaços):
{
"user": {
"id": 42,
"name": "Alice Chen",
"roles": [
"admin",
"editor"
]
}
}
Use nosso Formatador de JSON para formatar, minificar e validar JSON instantaneamente. Para comparar dois blocos de JSON, o JSON Diff destaca exatamente o que mudou.
Armadilhas comuns
JSON
- Vírgulas no final — não são válidas em JSON (mas são válidas em JavaScript)
- Aspas simples — JSON exige aspas duplas para strings
- Números como strings —
"42"≠42; seja consistente - Aninhamento profundo — difícil de ler e consultar; simplifique sempre que possível
XML
- Caracteres sem escape —
<,>,&,",'devem ser escapados como entidades - BOM no início — alguns parsers têm problemas com o BOM do UTF-8
- Confusão com namespaces — fácil de errar em documentos com vocabulários mistos
Ambos os formatos são bem compreendidos, bem suportados por ferramentas e vieram para ficar. Saiba quando usar cada um, valide seus dados e suas integrações serão muito mais confiáveis.