Conversor JSON ↔ XML
JSONConverte entre JSON e XML. Objetos aninhados são envelopados sob um elemento raiz configurável.
Nesta página
O que é um conversor JSON ↔ XML?#
JSON e XML são duas formas diferentes de escrever dados estruturados, e não são intercambiáveis ao nível da sintaxe — um usa chavetas e parêntesis, o outro usa tags com sinais de menor/maior. Um conversor entre eles não “comprime” nem “codifica”; reexprime a mesma árvore de valores na outra notação, de modo a que um sistema que só fala XML consiga consumir dados que chegaram em JSON, e vice-versa.
O mapeamento é sobretudo mecânico, mas tem dois aspetos difíceis bem conhecidos. Primeiro, o XML exige exatamente um elemento raiz que envolva tudo, enquanto o JSON aceita tranquilamente que o nível de topo seja um objeto ou array solto — pelo que ir de JSON para XML significa sempre escolher um nome para esse invólucro exterior. Segundo, os elementos XML podem ter atributos (<a id="7">), para os quais o JSON não tem equivalente nativo; a convenção comum é colocá-los sob chaves com prefixo @, e qualquer texto que viva ao lado de atributos sob uma chave #text.
Esta página converte em ambas as direções no navegador: JSON para XML (envolvendo o seu valor num elemento raiz que nomeia), e XML para JSON (desempacotando os atributos para chaves @ e, por padrão, removendo a raiz exterior para que recupere o valor interior).
Como usar#
- Escolha a direção com o interruptor JSON → XML / XML → JSON no canto superior esquerdo da barra de ferramentas.
- Escreva ou cole no painel Entrada à esquerda.
- JSON → XML espera JSON válido. Qualquer valor de topo é envolvido sob o elemento raiz.
- XML → JSON espera um documento XML bem formado. O elemento exterior único é desempacotado automaticamente, pelo que obtém o seu conteúdo interior como JSON.
- No modo JSON → XML, defina o campo Elemento raiz (por padrão
root) para nomear a tag invólucro — por exemplouser,feed,response. O XML obriga a uma única raiz, pelo que este nome é sempre necessário. - O resultado aparece em tempo real no painel Saída. Clique em Copiar para o recolher.
- Exemplo carrega um pequeno documento adequado à direção atual; Limpar repõe ambos os painéis.
Principais funcionalidades#
- Ambas as direções, uma ferramenta. Um único interruptor alterna entre JSON-para-XML e XML-para-JSON, com o painel de entrada reencaminhado automaticamente.
- Elemento raiz configurável. Como o XML não pode existir sem um único elemento exterior, é quem nomeia o invólucro; o conversor trata do envolvimento para qualquer forma de topo JSON.
- Declaração XML correta. A saída JSON-para-XML começa com o prólogo padrão
<?xml version="1.0" encoding="UTF-8"?>e é embelezada com indentação de dois espaços. - Atributos fazem a viagem completa. O XML-para-JSON preserva os atributos dos elementos sob chaves com prefixo
@, e o texto que se encontra ao lado de atributos é mantido sob#text, pelo que nada é silenciosamente descartado. - Análise com noção de números. O XML é todo texto; o analisador coerciona os valores de elemento com aspeto numérico de volta para números JSON (pelo que
<age>36</age>se torna36, não"36").
Exemplo prático#
JSON → XML#
Com a direção definida como JSON → XML e a raiz nomeada root, carregue em Exemplo:
{
"name": "Ada",
"age": 36,
"skills": ["math", "logic"]
}
O conversor envolve tudo sob <root> e expande o array da forma que o XML precisa — cada entrada torna-se o seu próprio elemento com a mesma tag:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>Ada</name>
<age>36</age>
<skills>math</skills>
<skills>logic</skills>
</root>
Altere o campo Elemento raiz para person e o invólucro passa a ser <person> / </person> — a estrutura interior permanece intacta.
XML → JSON#
Mude para XML → JSON e carregue em Exemplo:
<?xml version="1.0"?>
<root><name>Ada</name><age>36</age></root>
O <root> exterior é removido, e os elementos interiores tornam-se propriedades JSON, com 36 reconhecido como número:
{
"name": "Ada",
"age": 36
}
Os atributos também são preservados. Um elemento como <a id="7">label</a> produz { "@id": "7", "#text": "label" } — o atributo vive sob @id, o texto sob #text, e nenhum se perde.
FAQ#
Porque é que o meu array JSON se transforma em elementos XML repetidos em vez de um invólucro com itens dentro?#
É assim que o XML representa uma lista: não existe construção de “array”, pelo que cada entrada tem de ser o seu próprio elemento com o mesmo nome de tag. Um array JSON ["math", "logic"] sob a chave skills torna-se portanto dois elementos <skills> irmãos, não um único <skills> que contenha filhos. Este é o mapeamento padrão e amigo de esquemas — os consumidores XML contam com isso.
Em XML → JSON, para onde foi o meu elemento exterior?#
O conversor desempacota a raiz única automaticamente. O XML força exatamente um elemento de topo, mas em JSON esse invólucro é normalmente redundante — <root><name>Ada</name></root> não transporta em root nenhuma informação de que o JSON precise. Removê-lo dá-lhe diretamente o valor interior significativo. Se mesmo assim precisar de manter a raiz, guarde-a como um elemento normal e aceda-lhe pelo nome.
Porque é que 36 é um número na saída e não uma string?#
O XML não tem um tipo de número separado — tudo entre as tags é texto. O analisador aplica coerção numérica, pelo que um elemento cujo texto pareça um número (36, 3.14) regressa como número JSON. Isso é conveniente para dados típicos, mas também significa que um valor como um código de produto <code>007</code> perderá os zeros à esquerda — guarde esses valores como atributos ou aceite-os como strings.
Consegue converter qualquer documento XML?#
XML bem formado, sim, incluindo namespaces nas tags, atributos, elementos de autofechamento e declarações. Não resolve DTDs, não valida contra um esquema nem vai buscar entidades externas — o processamento é local e só de texto, o que também significa que é seguro colar documentos em que não confia totalmente.