Data Tools

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.

6 min de leitura

Visualização de dados em um monitor

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 / sessionStorage do 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, .xlsx sã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.