Converter JSON em XML

Funciona no seu dispositivo · Seu arquivo nunca sai do seu dispositivo.

Cole ou solte um JSON e receba um documento XML com a declaração no topo e um elemento por chave. Um documento com uma única chave no topo usa essa chave como elemento raiz; qualquer outro vai dentro de <root>. Uma lista vira elementos repetidos com o nome da chave — "itens": [..] dá vários elementos <itens> — e uma lista no topo do documento vira elementos <item> dentro de <root>.

Chaves que começam com @ viram atributos, e uma chave "#text" vira o texto do elemento — o formato que a ferramenta de XML para JSON grava, então um documento convertido lá volta aqui como o mesmo XML. Todo outro valor é texto dentro do seu elemento, null vira um elemento vazio, e o documento é indentado com dois espaços por nível. Chaves que o XML não aceita como nome — começando com dígito, com espaços ou símbolos — são corrigidas com sublinhados, então o resultado sempre é lido sem erro.

O texto é escapado corretamente (&, <, > e, nos atributos, aspas e quebras de linha); caracteres de controle, que o XML 1.0 não consegue guardar de jeito nenhum, são removidos. A codificação é UTF-8, e você vê as primeiras 200 linhas antes de baixar. Nada é enviado.

Como Converter JSON em XML

  1. Solte um arquivo JSON, ou cole o JSON na caixa.
  2. Clique em «Converter para XML».
  3. Confira a prévia e baixe o .xml.

Formatos suportados e limites

Entrada
JSON (.json) — arquivo ou texto colado
Saída
XML 1.0, UTF-8, declaração no topo, indentado
Raiz
A única chave do topo, senão <root>; uma lista no topo vira elementos <item>
Listas
Elementos repetidos com o nome da chave
Onde roda
No seu navegador — sem enviar nada

Não serve para: Seguir um esquema XML específico (SOAP, RSS, NF-e, um padrão de fatura) — os nomes dos elementos vêm das suas chaves JSON, não de um esquema.

Como as suas chaves viram nomes de elemento

Uma chave que começa com @ vira atributo, e uma chave "#text" vira o texto do elemento, então {"item": {"@id": 3, "#text": "A"}} dá <item id="3">A</item>. Quando o documento tem uma única chave no topo, essa chave é o elemento raiz; senão, tudo vai dentro de <root>.

Um caractere que o XML não aceita num nome vira sublinhado, e um nome que começa com um caractere que não pode vir primeiro, como um dígito, ganha um sublinhado na frente: "1o lugar" vira <_1o_lugar>. Os dois-pontos só ficam quando o prefixo está declarado mais acima, como em "@xmlns:soap"; um "soap:Body" não declarado vira <soap_Body>, porque nenhum leitor que entende namespaces o leria de outro jeito. Letras de qualquer escrita são aceitas, então uma chave como "اسم" ou "名前" fica como está.

Como os valores ficam

Todo valor é escrito como texto, e os números exatamente como estão no JSON: 1.0 continua 1.0, e 12345678901234567890 mantém todos os dígitos. null e um objeto vazio viram um elemento vazio, como <note/>, e uma lista vazia não escreve nada, então o XML não distingue esses três.

Caracteres de controle — códigos abaixo de 32, exceto tabulação, avanço de linha e retorno de carro — não podem ser escritos em XML 1.0 de jeito nenhum, nem como número, tipo &#1;, então são removidos. Um retorno de carro é escrito como &#13; para o leitor mantê-lo. Em valores de atributo, aspas, tabulações e quebras de linha também são escritas como referências, porque senão o leitor as transformaria em espaços.

Listas de listas perdem o agrupamento

Elementos repetidos só conseguem expressar um nível de lista. "m": [[1, 2], [3]] vira três elementos <m> com 1, 2 e 3, e a informação de que 1 e 2 andavam juntos se perde. Uma lista no topo se comporta do mesmo jeito: [1, [3, 4]] dá três elementos <item>. Se o agrupamento importa, envolva antes cada lista interna num objeto: [{"values": [1, 2]}, {"values": [3]}] dá dois elementos <item>, cada um com o seu próprio <values>.

Indo de XML para JSON e voltando

Um documento que passou por /xml-to-json volta com os mesmos elementos, atributos, prefixos de namespace e texto, sem nenhum envoltório extra. O que o JSON nunca guardou não volta: comentários e o DOCTYPE, a posição do texto entre elementos filhos e a ordem entre elementos de nomes diferentes, que voltam agrupados por nome. Se a detecção de tipos estava ligada em /xml-to-json, um valor como TRUE volta como true; desligue a detecção lá para uma ida e volta palavra por palavra.

Perguntas frequentes

Meus arquivos são enviados para algum servidor?
Não. A conversão acontece inteiramente no seu navegador, com a capacidade do seu próprio aparelho. O arquivo não sai do seu computador nem do seu celular, e, depois que você usa a ferramenta uma vez, ela continua funcionando sem internet (as de vídeo, de reconhecimento de texto e de remoção de fundo baixam o motor deste site no primeiro uso).
Como as listas são representadas?
Como elementos repetidos. {"itens": [1, 2]} vira <itens>1</itens><itens>2</itens>. Uma lista no topo do documento vira elementos <item> dentro de <root>. Uma lista vazia não gera elemento nenhum.
E chaves com espaços ou dígitos?
Nomes de elemento XML não podem começar com dígito nem ter espaços. Essas chaves são corrigidas: "1o lugar" vira _1o_lugar, "preco unitario" vira preco_unitario. O resto fica como está.
Posso ter atributos em vez de elementos filhos?
Sim: coloque @ na frente da chave. {"item": {"@id": 3, "nome": "A"}} dá <item id="3"><nome>A</nome></item>. É o formato que a ferramenta de XML para JSON grava, então a ida e volta devolve o mesmo documento.

Ferramentas relacionadas

Mais em Planilhas e dados

Esta página em outros idiomas: English · العربية · Deutsch · Français · Español · Русский · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা