JSON vs XML: diferenças, quando usar cada um e como converter
JSON dominou as APIs modernas, mas XML continua vivo em SOAP, notas fiscais e configuração corporativa. Saber a diferença importa principalmente na hora de converter.
Comparação direta
| JSON | XML | |
|---|---|---|
| Sintaxe | Chaves e colchetes | Tags de abertura e fechamento |
| Atributos | Não existem | Sim |
| Comentários | Não permitidos | Permitidos |
| Tipos | String, número, booleano, nulo, array, objeto | Tudo é texto; o tipo vem do esquema |
| Validação | JSON Schema | XSD, DTD, Relax NG |
| Tamanho | Menor | Maior, pela repetição das tags |
| Consulta | JSONPath, jq | XPath, XQuery |
O mesmo dado nos dois formatos
{
"pedido": {
"id": "7",
"cliente": "Ana",
"itens": [
{ "sku": "A1", "quantidade": 2 },
{ "sku": "B2", "quantidade": 1 }
]
}
}<pedido id="7">
<cliente>Ana</cliente>
<item sku="A1"><quantidade>2</quantidade></item>
<item sku="B2"><quantidade>1</quantidade></item>
</pedido>O que se perde na conversão
A conversão entre os dois não é simétrica, porque cada formato tem algo que o outro não representa.
- XML → JSON: comentários, namespaces e a distinção entre elemento vazio e ausente se perdem
- XML → JSON: atributos precisam de uma convenção, normalmente uma chave prefixada com arroba
- XML → JSON: dois irmãos com o mesmo nome viram array; com um só, o valor fica direto — quem consome precisa tratar os dois casos
- JSON → XML: números e booleanos viram texto, já que XML não tem tipos sem esquema
- JSON → XML: chaves com espaço, hífen inicial ou acento precisam ser ajustadas para virar nome de elemento válido
Quando ainda usar XML
- Integração com webservice SOAP
- Documentos fiscais brasileiros, como NF-e e NFS-e
- Feeds RSS e Atom, e sitemaps
- Configuração de ferramentas Java e .NET, como pom.xml e web.config
- Documentos com marcação mista, em que texto e elementos se intercalam
Perguntas frequentes
- JSON substituiu o XML?
- Em APIs web, praticamente sim. Mas XML continua sendo o formato obrigatório em SOAP, em documentos fiscais e em boa parte da configuração de ecossistemas Java e .NET — não é uma tecnologia em desuso, é uma tecnologia com outro território.
- Por que o JSON convertido tem chaves com arroba?
- É a convenção para representar atributos XML, que não existem em JSON. Um id="7" vira "@id": "7", o que evita colisão com um elemento filho chamado id.