Ir para o conteúdo principal

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

JSON e XML comparados nas propriedades que os separam.
PropriedadeJSONXML
Guardado comoTexto puro, legível em qualquer editorTexto puro, legível em qualquer editor
O que consegue guardarValores aninhados dentro de valoresValores aninhados dentro de valores
Números continuam númerosSimNão
ComentáriosNãoSim
Vários em um arquivo sóNãoNão
Publicado20011998

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.

A publicidade neste site

A publicidade paga este site. Os anúncios podem guardar cookies para escolher o que lhe mostrar e para não se repetirem. Os seus ficheiros não têm nada a ver com isso: nunca saem do navegador, seja qual for o botão que carregar, e todas as ferramentas funcionam nos dois casos.

O que isto abrange