Como converter entre JSON e XML

JSON para XML transforma um objeto ou array JSON em um documento XML; XML para JSON lê um documento XML como JSON. As duas direções rodam na página, então nada do que você cola é enviado, e o resultado aparece no painel abaixo dos botões.

Os dois botões de exemplo carregam o mesmo catálogo pequeno nos dois formatos: convertendo o exemplo JSON você obtém o exemplo XML, e convertendo esse exemplo XML de volta você recebe o exemplo JSON.

  1. Carregue um exemplo com Exemplo XML ou Exemplo JSON, ou cole o seu próprio objeto JSON, array JSON ou documento XML na área de texto.
  2. Clique em JSON para XML ou XML para JSON. A linha de status acima do resultado informa o elemento raiz e a contagem de elementos e atributos, ou explica por que nada foi escrito.
  3. Quando a entrada não pode ser analisada, a mensagem indica o caractere no JSON ou a linha e a coluna no XML, e o resultado anterior é apagado para não deixar nada antigo na tela.
  4. Formatar JSON identa a saída JSON com dois espaços quando está marcado e a deixa em uma linha compacta quando não está; a saída XML é sempre identada. Copiar resultado copia o texto e Limpar esvazia a área de texto.

O que a conversão faz com os seus dados

Como o JSON se torna XML

O documento recebe exatamente um elemento raiz. Uma única chave de nível superior se torna esse elemento — {"user":{"name":"Ann"}} é escrito como <user><name>Ann</name></user> —, enquanto várias chaves, um array de nível superior e uma única chave que contém um array são envolvidos em <root>; itens de array sem nome próprio são escritos como <item>.

Dentro de um elemento, uma chave se torna um elemento filho e um array repete o seu elemento uma vez por item. Uma chave que começa com - vira um atributo e #text vira o texto do elemento, então {"a":{"-x":"1","#text":"hi"}} é escrito como <a x="1">hi</a>, a mesma forma que a direção XML para JSON produz, o que permite encadear as duas direções. null e "" viram <name />.

Os nomes são corrigidos em vez de saírem quebrados: espaço, < ou & em uma chave, ou uma chave que começa com dígito, é escrito com underline, e a linha de status informa quantos nomes foram alterados. Marcação dentro de um valor é escapada, e aspas, quebras de linha e tabulações em um valor de atributo são escritas como &quot;, &#10; e &#9; para o documento continuar bem formado.

Como o XML se torna JSON

Os atributos voltam com o prefixo -, um elemento que só tem texto vira uma string, um elemento com filhos vira um objeto e um nome que aparece mais de uma vez vira um array: <r><i>1</i><i>2</i></r> vira {"r":{"i":["1","2"]}}, enquanto um único <i> continua string. O XML não tem tipos, então os valores chegam como strings: 24.90 em XML é "24.90" em JSON.

Um elemento sem conteúdo vira uma string vazia, o texto dentro de um elemento é mantido exatamente como foi escrito, espaços e quebras de linha incluídos, e a identação entre elementos é ignorada. Comentários são ignorados, seções CDATA são lidas como texto e o texto que divide um elemento com elementos filhos é reunido em uma chave #text.

Privacidade, tamanho e limites

A conversão roda na página: com a rede bloqueada ela continua funcionando e não envia nenhuma requisição, então um documento que não pode sair da sua máquina pode ser convertido aqui. Resultados de até 120.000 caracteres recebem realce de sintaxe e os maiores são mostrados como texto simples: 1.000 linhas (45 KB de JSON para 99 KB de XML) levam cerca de 0,8 segundo com realce, enquanto 5.000 linhas (233 KB para 503 KB, e de volta para 618 KB de JSON) levam cerca de 0,2 segundo no total, medido no Chrome nesta página.

É um conversor de formato, não uma ferramenta de esquema: não há validação XSD nem DTD, não há tratamento de namespaces (dois-pontos em um nome é escrito como underline) e não há inferência de tipos. Um documento aninhado milhares de níveis é recusado com uma mensagem, em vez de deixar um documento pela metade na tela.

Ferramentas recentes: