Pular para o conteúdo principal

JSON vs XML

Escolha JSON para payloads de API e para tudo que um navegador ou aplicativo móvel consome: menor, tipado e parseado universalmente. Escolha XML para dados com formato de documento, integração corporativa e interfaces que exigem namespaces ou validação estrita via XSD. Nenhum dos dois está obsoleto: o JSON domina a transmissão, o XML domina documentos, e os conversores desta página fazem a ponte nas duas direções.

Só local

JSON vs XML: explicação

Durante quinze anos, o XML foi a resposta padrão para praticamente toda questão envolvendo dados — serviços SOAP, feeds RSS, documentos do Office, configuração de build. Depois, o JSON tomou a camada de API quase por completo, e os dois formatos vivem desde então em uma divisão de trabalho confortável. O enquadramento de rivalidade esconde a história real: eles foram feitos para trabalhos diferentes. O XML descende do SGML e é uma linguagem de marcação para documentos; o JSON é um formato de intercâmbio de dados cuja gramática cabe em um cartão de índice. A maior parte da decepção com qualquer um deles vem de pedir que um faça o trabalho do outro.

As diferenças do dia a dia são concretas. O XML marca cada valor com uma tag de abertura e uma de fechamento, o que praticamente dobra a marcação por campo; o JSON envolve os valores entre aspas e vírgulas. O XML é tipado como string — tudo é texto até que um schema diga o contrário — enquanto o JSON declara números, booleanos e null na própria sintaxe. O XML tem atributos, namespaces e conteúdo misto; o JSON tem chaves, arrays e nada disso. Cada uma dessas decisões se propaga para schemas, ferramentas e tamanho do payload.

Esta página mantém a comparação onde ela morde de verdade: sintaxe e o imposto das tags, tipagem, schemas e namespaces, tamanho e streaming. Quando você precisar cruzar de um para o outro, há conversores nas duas direções neste site — e, como tudo por aqui, eles fazem o parse e a emissão inteiramente no seu navegador.

Precisa entregar um payload JSON a um sistema que só entende XML? O conversor de JSON para XML mapeia chaves e arrays para elementos no seu navegador — nada é enviado.

Herdou um feed legado ou uma resposta SOAP? O conversor de XML para JSON reconstrói tudo como JSON localmente, antes que seu código precise tocar em uma tag.

Origens: uma linguagem de marcação versus um formato de dados

O ancestral do XML é o SGML, e seu objetivo de design era marcar documentos: prosa que mistura parágrafos, ênfase e estrutura. É por isso que o XML, sozinho entre os dois, suporta conteúdo misto — texto com marcação inline como <title>Learning <em>XML</em></title> — e por isso ganhou atributos, referências a entidades e um modelo de processamento pesado. O JSON foi extraído dos literais de objeto do JavaScript por volta de 2001 com um único propósito: mover dados estruturados entre programas com a menor gramática possível. No JSON não há conteúdo misto, nem maquinaria de entidades, nem árvore de documento — objetos, arrays e quatro tipos escalares são o universo inteiro.

Sintaxe: o imposto das tags, atributos e o array que falta

Todo elemento XML abre e fecha, então um valor simples custa duas tags: <price>19.99</price>. O XML oferece uma grafia alternativa — <price currency="EUR">19.99</price> — e a escolha entre atributo e elemento gera debate há duas décadas sem uma resposta universal. O JSON tem exatamente uma grafia para um par chave/valor e uma para uma lista. O mais importante: o JSON tem arrays nativos; o XML não tem tipo de array algum. Uma lista é expressa repetindo um elemento, o que significa que toda ferramenta de JSON para XML precisa concordar com uma convenção para nomear e agrupar itens repetidos.

AspectoJSONXML
GramáticaUma página (RFC 8259)XML 1.0 mais namespaces, infoset e maquinaria de DTD
ContêineresObjetos e arraysElementos; arrays são elementos repetidos
TipagemNúmeros, booleanos e null são nativosTodos os valores são texto até que um schema os tipifique
AtributosNenhum — uma grafia por parAtributo ou elemento, uma escolha permanente
NamespacesNenhum; apenas convenções de prefixoMecanismo xmlns embutido para vocabulários combinados
ComentáriosNenhum, removidos por designSim, <!-- --> em qualquer ponto da árvore
Linguagem de schemaJSON SchemaXSD, DTD, Relax NG
Conteúdo mistoNão é expressávelNativo — texto intercalado com marcação

Schemas e namespaces: onde o XML ainda se justifica

O XSD é a vantagem discreta do XML nas empresas: uma linguagem de schema madura, com tipos derivados, restrições de cardinalidade, facetas de padrão e duas décadas de ferramentas capazes de validar um documento e relatar com precisão qual elemento violou qual regra. O JSON Schema persegue o mesmo objetivo com outra forma — é expressivo, suporta lógica condicional e se tornou a linguagem de contrato de facto para APIs modernas — mas sua longa história de rascunhos faz as ferramentas variarem mais no que aceitam. Os dois ecossistemas podem ser estritos; o do XML é simplesmente mais antigo.

Os namespaces são o outro trunfo duradouro do XML. Uma página XHTML pode incorporar SVG e MathML sem colisões de chaves porque cada vocabulário carrega seu próprio URI. O JSON não tem mecanismo equivalente — colisões de nomes são evitadas por convenção, ou por designs em camadas, como o JSON-LD, que anexam contexto explicitamente.

Tamanho, streaming e quando escolher cada um

Para os mesmos dados, payloads XML costumam ser maiores: só as tags de fechamento praticamente dobram a marcação dos elementos, e estilos cheios de atributos acrescentam mais ainda. Os dois formatos comprimem bem com gzip — a redundância do XML é altamente compressível — mas a sobrecarga base raramente desaparece por completo. Em streaming, o ecossistema de parsers do XML é mais profundo: os parsers push SAX e StAX foram projetados para documentos grandes demais para a memória, e toda plataforma traz um. Existem parsers de streaming para JSON, e são excelentes, mas o parse do documento inteiro continua sendo o padrão comum.

Escolha JSON para tudo que um par de programas troca: APIs web e móveis, logs estruturados, payloads entre serviços. Escolha XML quando uma especificação exigir — stacks SOAP, pipelines de publicação, formatos do Office, muitos padrões de saúde e finanças — ou quando você precisar de validação XSD e namespaces na transmissão. A orientação se inverte com clareza: JSON que vaza para um pipeline de documentos geralmente quer ser XML, e uma API da era SOAP que passa a expor JSON limpo é uma vitória de migração, não uma traição.

Perguntas frequentes

O JSON está substituindo o XML?

Ele desalojou o XML de um território, não de todos. O JSON hoje domina a camada de API — REST, mobile, navegador — enquanto o XML segue firme onde documentos ou padrões dominam: arquivos do Office e EPUB, gráficos SVG, empresas movidas a SOAP e especificações de publicação, saúde e finanças que o exigem. Aprender os dois continua valendo a pena; converter entre eles é rotina.

Por que o XML é maior que o JSON para os mesmos dados?

Dois motivos estruturais. Todo elemento precisa de uma tag de fechamento, então cada valor paga a marcação duas vezes, e o XML não tem array nativo — listas viram elementos repetidos com tags próprias. A compressão estreita a diferença porque tags repetidas comprimem extremamente bem com gzip, mas os tamanhos brutos divergem o suficiente para que as APIs da era móvel tenham padronizado o JSON.

Ao converter XML ou JSON aqui, meus dados são enviados?

Não. Os dois conversores fazem o parse e a emissão dentro da aba do seu navegador, sem servidor envolvido — não existe endpoint de envio, e a Content-Security-Policy do site restringe o acesso de rede a ele mesmo. Abra o painel Network do DevTools durante a conversão e você não verá nenhuma requisição de saída carregando seu payload.

Valores XML devem ficar em atributos ou em elementos filhos?

Uma regra que funciona: atributos para metadados sobre o elemento — identificadores, tipos, unidades, idioma — e elementos filhos para conteúdo, sobretudo tudo que for longo, ordenado, repetido ou já marcado. Atributos não podem se repetir, não comportam estrutura e ficam invisíveis para conteúdo misto, razão pela qual qualquer lista de coisas precisa ser elementos.

A validação XSD é mais forte que a do JSON Schema?

Mais forte em maturidade, não em princípio. O XSD tem vinte anos de ferramentas estáveis, tipos derivados e regras estritas de sequenciamento das quais as empresas dependem. O JSON Schema é expressivo — condições, propriedades com padrão, definições reutilizáveis — e dominante nos contratos de APIs modernas. Escolha aquele com que sua cadeia de ferramentas já valida; trocar de formato não elimina a necessidade de um schema.

Como arrays JSON viram elementos XML?

Como o XML não tem tipo de array, os conversores mapeiam um array para elementos filhos repetidos sob um wrapper ou para irmãos que compartilham o mesmo nome — a convenção varia conforme a ferramenta e importa muito em conversões de ida e volta. Os conversores deste site documentam o mapeamento exato que usam, então um documento que passa pelas duas direções continua previsível.

Onde posso ler os padrões citados aqui?

  • RFC 8259 — O formato de intercâmbio de dados JavaScript Object Notation (JSON)
  • XML 1.0 — Linguagem de marcação extensível (XML) 1.0