JSON vs XML
JSON e XML são ambos muito usados e escolhidos por razões diferentes. Esta página põe-nos frente a frente nas coisas que decidem entre eles, e liga aos conversores para as duas direcções — todos eles a correr no seu navegador, sem que o ficheiro seja alguma vez enviado.
A resposta curta
Ambos guardam dados aninhados e ambos são texto, pelo que qualquer um consegue exprimir quase tudo o que o outro exprime. O JSON fá-lo com muito menos cerimónia: sem etiquetas de fecho, sem decisão entre atributos e elementos, e com uma forma que mapeia directamente nas estruturas de dados de qualquer linguagem moderna. É por isso que desalojou o XML nas APIs quase por completo.
O XML mantém as vantagens da sua idade e da sua ambição. Tem linguagens de esquema a sério, espaços de nomes para misturar vocabulários e uma linguagem de consulta em XPath, e trata documentos — prosa com marcação pelo meio — de uma forma que o JSON não consegue exprimir de todo. Edição, dados públicos e formatos de escritório continuam a assentar nele por essas razões.
Se está a converter XML para JSON, o que há a verificar são os atributos. Cada conversor tem de inventar uma convenção para eles, e as duas mais comuns — pôr um prefixo na chave ou aninhá-los sob um objecto à parte — produzem JSON diferente a partir do mesmo XML. Seja qual for a que a sua ferramenta usa, o resultado já não volta a converter-se no ficheiro de que partiu.
Lado a lado
| Propriedade | JSON | XML |
|---|---|---|
| Guardado como | Texto puro, legível em qualquer editor | Texto puro, legível em qualquer editor |
| O que consegue guardar | Valores aninhados dentro de valores | Valores aninhados dentro de valores |
| Números continuam números | Sim | Não |
| Comentários | Não | Sim |
| Vários em um arquivo só | Não | Não |
| Publicado | 2001 | 1998 |
Onde diferem de facto
- Só JSON sabe que tipo de valor está a guardar. No outro tudo é texto, e é por isso que os zeros à esquerda somem e os números longos se tornam notação científica.
- Só XML tem sintaxe para comentários. Converter para longe dele perde todas as explicações do ficheiro e guarda todos os dados.
- São quase contemporâneos, e é por isso que se sobrepõem tanto.
O que costuma correr mal
- Converter para o formato sem tipos transforma cada valor em texto. Os zeros à esquerda desaparecem, os números longos tornam-se notação científica, e as datas voltam na forma que o programa que as lê adivinhar.
- Os comentários não sobrevivem num formato sem sintaxe para eles. Os dados chegam intactos e toda a explicação desapareceu, o que torna essa direcção de facto de sentido único.
Qual escolher
- Escolha JSON quando
- Escolha JSON para APIs, configuração e dados a circular entre programas, onde menos cerimónia e mapeamento directo para tipos nativos ganham.
- Escolha XML quando
- Escolha XML para documentos, para tudo o que precise de validação por esquema ou espaços de nomes, e onde um sistema existente já o fale.
Converter entre os dois
Perguntas frequentes
- O XML converte-se para JSON sem problemas?
- Nem sempre. O XML distingue atributos de elementos filhos e permite misturar texto e elementos no mesmo nó, e o JSON não tem equivalente para nenhum dos dois. Os conversores adoptam convenções — um prefixo no nome do atributo, por exemplo — e o resultado é JSON válido que já não volta ao XML original.
- Qual é melhor, JSON ou XML?
- Nenhum, em geral — se um fosse simplesmente melhor, o outro teria desaparecido. São bons em coisas diferentes, e a resposta curta acima diz qual em quê. A pergunta útil é o que o ficheiro tem de fazer a seguir: ser editado, ser publicado, ser aberto por outra pessoa, ou caber dentro de um limite de tamanho.
- Converter entre eles perde alguma coisa?
- Depende da direcção. Converter para um formato que guarda tudo não perde nada mas também não recupera nada; converter para um que descarta detalhe perde um pouco de cada vez. A tabela acima diz qual destes dois faz o quê.
- Posso converter de volta depois?
- O ficheiro converte-se de volta, mas se volta inalterado depende da direcção. Entre dois formatos que guardam tudo, uma ida e volta é sem perdas. Onde um dos dois descarta detalhe, esse detalhe desapareceu e a viagem de regresso não o pode inventar.
- Posso usar os dois?
- Numa página web, muitas vezes sim, e normalmente é a resposta certa: sirva o formato moderno mais pequeno e indique um mais antigo como alternativa, para que cada navegador leve o que entende. Para um ficheiro que entrega a uma pessoa, escolha um — aquele que ela consiga abrir.
- Qual é que o meu software suporta?
- A tabela lado a lado acima diz que navegadores leem cada um, que é a parte que mais varia. O suporte em computador é mais difícil de resumir em geral e costuma andar anos atrás dos navegadores, pelo que se o ficheiro vai para outra pessoa, o mais antigo e mais amplamente lido dos dois é a escolha mais segura.
- Converter entre eles é grátis?
- Sim, sem conta e sem limite de quantos ficheiros converte. Todos os conversores ligados a partir desta página correm no seu navegador: o ficheiro é lido do seu dispositivo, convertido por código a correr nele, e devolvido como transferência.
- O meu ficheiro é enviado?
- Não. Aqui não existe servidor de conversão nenhum para onde o enviar, e não há serviço de terceiros envolvido. Pode confirmá-lo você mesmo: abra as ferramentas de programador do navegador, mude para o painel de Rede sem filtro, e faça uma conversão — nenhum pedido leva o seu ficheiro.