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.
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
- 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).
- 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.
- 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.
- 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.
- 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& - Em textos e atributos XML,
&inicia uma entidade. Escreva&para o e comercial,<para<, ou envolva o texto em<![CDATA[ ... ]]>. - Entidade desconhecida
- Só as cinco entidades do XML (
<>&"') e referências de caractere como são definidas. vem do HTML; use 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 namevira<first_name>e2favira<_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.