Conversor de JSON e XML

Roda no seu navegador; nada é enviado

Converta JSON para XML ou XML para JSON, com atributos, elementos repetidos e namespaces tratados de forma explícita.

Input · JSON

Output · XML

Converted XML appears here as you type.

Ready
Ln 1, Col 1

JSON e XML em APIs

JSON e XML descrevem dados estruturados como texto. JSON tem objetos, arrays e valores com tipo, como números e booleanos. XML tem elementos aninhados, atributos e texto, e tudo é texto a menos que um schema diga o contrário. Web services SOAP, feeds RSS e Atom e muitos sistemas de bancos, pagamentos e governo ainda usam XML, então apps feitos com JSON muitas vezes precisam traduzir.

Os dois formatos não têm correspondência exata, então este conversor segue uma convenção comum e reversível. Um elemento vira uma chave e o texto dele vira o valor. Atributos viram chaves que começam com @, como @id. Quando um elemento tem atributos ou elementos filhos além de texto, o texto vai para #text. Um elemento que se repete vira um array. Os prefixos de namespace são mantidos como foram escritos, então <soap:Body> vira "soap:Body" e a declaração vira "@xmlns:soap".

XML não tem tipos, então por padrão tudo continua string: <zip>007</zip> dá "007" e <id>7</id> dá "7". Ative Numbers para ler como valores tipados os que estão escritos exatamente como números JSON, além de true e false (007 continua texto). No sentido contrário, o elemento raiz vem da única chave de primeiro nível do JSON, ou de Root name quando há várias.

Como usar esta ferramenta

  1. 1Escolha JSON → XML ou XML → JSON na barra de ferramentas. Cole seus dados no painel Input, arraste um arquivo para ele ou pressione Ctrl+O para abrir um (até 5 MB).
  2. 2Veja o resultado no painel Output; ele atualiza enquanto você digita. As notas acima da saída dizem o que a conversão precisou mudar, como chaves renomeadas ou comentários deixados de fora.
  3. 3Para XML → JSON, escolha Always arrays para que todo elemento filho seja um array (mais simples de ler no código) e Numbers para converter números e booleanos. Para JSON → XML, defina o Root name e se o XML deve começar com uma declaração.
  4. 4Se a entrada for inválida, o painel de saída mostra a linha e a coluna; pressione F8 para colocar o cursor no problema.
  5. 5Swap (Shift+Alt+S) coloca a saída na entrada e inverte a direção, para conferir a ida e volta. Copie o resultado ou baixe com Ctrl+S.

Solução de problemas

Esperava-se </item> para fechar o elemento aberto na linha 3
As tags precisam fechar na ordem inversa em que foram abertas, com o mesmo nome e as mesmas maiúsculas e minúsculas. Verifique se falta a tag de fechamento do elemento citado na mensagem ou se ela está escrita errado.
Um & solto deve ser escrito como &amp;
Em textos e atributos XML, & inicia uma entidade. Escreva &amp; para o e comercial, &lt; para <, ou envolva o texto em <![CDATA[ ... ]]>.
Entidade desconhecida &nbsp;
Só as cinco entidades do XML (&lt; &gt; &amp; &quot; &apos;) e referências de caractere como &#160; são definidas. &nbsp; vem do HTML; use &#160; no lugar.
Um segundo elemento raiz: XML tem exatamente um
Um documento XML precisa ter um único elemento de primeiro nível. Envolva os elementos em um elemento pai.
Chaves renomeadas na saída XML
Nomes XML não podem ter espaços nem a maioria dos sinais de pontuação, nem começar com dígito, então first name vira <first_name> e 2fa vira <_2fa>. A nota lista cada renomeação; mude as chaves no JSON se o XML precisar usar outros nomes.

Perguntas frequentes

Como os arrays de JSON são convertidos para XML?

Cada item vira um elemento com o nome da chave do array, repetido uma vez por item: "tag": ["a", "b"] vira <tag>a</tag><tag>b</tag>. Um array de primeiro nível é envolvido no elemento raiz, com um <item> por entrada. Um array vazio não gera elementos, então não volta na conversão para JSON; as notas avisam quando isso acontece.

O que acontece com comentários, CDATA e instruções de processamento?

Seções CDATA viram texto comum. Comentários e instruções de processamento não têm lugar em JSON e ficam de fora, com uma nota. O DOCTYPE é ignorado, e as entidades que ele declara não são expandidas.

E o conteúdo misto, como `<p>Hello <b>world</b></p>`?

Os elementos filhos viram chaves como de costume e o texto ao redor é reunido em #text. JSON não consegue registrar onde o texto ficava entre os elementos, então essa ordem se perde; o conversor adiciona uma nota quando isso acontece.

A conversão é feita num servidor?

Não. O XML é lido e gerado no seu navegador, e nada do que você cola ou abre é enviado. Para sobreviver a um reload, o que você cola fica no session storage desta aba até você limpar ou fechar a aba. Copy link coloca a entrada no link depois do #, parte que os navegadores nunca enviam a um servidor, mas qualquer pessoa que receber o link consegue ler.