100 % local — seus dados nunca saem do seu navegador

JSON para XML — XML válido, pronto para colar

Converta JSON em XML. Uma só raiz, nomes de tag tornados válidos e indentação à sua escolha — pronto para um corpo SOAP ou um arquivo de configuração.

Instantâneo Privado Zero cookies
Indentação

Entrada JSON

Saída XML

O que esta ferramenta faz

As chaves viram elementos, os valores viram o conteúdo deles:

{ "usuario": { "nome": "Ada", "porta": 8080, "ativo": true } }
<usuario>
  <nome>Ada</nome>
  <porta>8080</porta>
  <ativo>true</ativo>
</usuario>

Um documento com várias chaves na raiz é embrulhado em <root>, porque o XML admite exatamente um elemento raiz. Um array na raiz vira elementos <item> repetidos dentro dele.

Aqui os tipos deixam de existir

Olhe de novo para essa saída. 8080 e true agora são texto, e nada no documento diz que algum dia foram outra coisa.

Não é uma limitação da conversão: é o que o XML é. Um documento XML carrega estrutura e texto. Os tipos vêm de um esquema — XSD, DTD, RELAX NG — que vive fora do documento e que esta conversão não tem como inventar.

A consequência prática merece ser dita sem rodeios: reconverter vai lhe dar strings. {"port": 8080} volta como {"port": "8080"}, a menos que quem o leia decida outra coisa — ou seja, adivinhe, e erre num número de versão como 1.10 ou num CEP como 01234.

Se você precisa de uma ida e volta que preserve tipos, o XML não é o destino certo. Se precisa de XML, conte com uma volta com perda.

As chaves são reparadas, não emitidas quebradas

Um nome de elemento XML não pode ter espaço nem começar por dígito:

chaveelemento
user name<user_name>
2nd<_2nd>

E quando duas chaves são reparadas para o mesmo nome, a segunda vira user_name_1. Fundi-las faria um valor sumir em silêncio, que é o que esta ferramenta mais se esforça para evitar.

Atributos, e a ida e volta

Uma chave escrita "@_id" vira atributo, "#text" vira o texto do elemento:

{ "usuario": { "@_id": "1", "#text": "Ada" } }
<usuario id="1">Ada</usuario>

É a mesma convenção que o sentido XML para JSON emite, então um documento convertido a partir de XML reconverte para a mesma forma — com os tipos agora strings, como acima.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Por que meu número voltou como string?
Porque o XML não tem tipos. `{"port": 8080}` vira `<port>8080</port>`, e um documento XML não consegue dizer se isso é um número ou o texto «8080». Reconverter devolve uma string, a menos que algo — um esquema, ou um conversor que adivinha — decida outra coisa. A informação se perde no passo para XML, não na volta.
O que acontece com uma chave que não é nome de elemento válido?
Ela é reparada: `user name` vira `<user_name>`, `2nd` vira `<_2nd>`. E se duas chaves forem reparadas para o mesmo nome, a segunda ganha um sufixo — `user_name_1` — em vez de sobrescrever a primeira: um valor que some sem dizer nada é pior que um nome feio.
Posso produzir atributos em vez de elementos?
Pode. Uma chave chamada `"@_id"` vira o atributo `id`, e uma chave `"#text"` vira o texto do elemento. É a convenção que o sentido XML para JSON produz, então um documento que passou por lá reconverte para a mesma forma.

Conversores relacionados