Converta JSON e XML localmente
Converta JSON para XML ou XML para JSON no navegador. Trabalhe com atributos e elementos repetidos e confira o que muda na conversão.
Espaço de trabalho da ferramenta
Use @attributes para atributos string e #text para texto de folhas. Arrays geram elementos repetidos. Nomes ASCII; sem namespaces ou conteúdo misto. Ler explicação completa do modelo
Cole texto ou escolha um arquivo local UTF-8. Pressione Converter para processar.
Pronto para receber entrada.
Web Workers indisponíveis. Não é possível converter aqui; a entrada continua local.
Erros e avisos de conversão
Alguns detalhes foram omitidos; o erro causal foi preservado.
Cópia e download usam a saída completa atual.
Modelo e subconjunto aceito
Usar a única propriedade raiz exige objeto JSON com uma propriedade: seu nome será a raiz XML. Envolver com nome raiz adiciona a raiz escolhida ao conteúdo. Array raiz usa o nome do item; arrays de propriedade repetem seu nome. Arrays devem ser não vazios e sem aninhamento direto. @attributes é objeto de valores string; #text é string permitida só sem filhos, inclusive vazia ou whitespace. Atributos XML retornam em @attributes; folha com atributos inclui #text. Filhos contíguos de mesmo nome viram arrays; grupos intercalados são rejeitados para manter a ordem. Uma folha XML vazia sem atributos retorna string JSON vazia; com atributos mantém #text="" dentro de um objeto. Números e booleanos perdem tipo; null, objetos vazios e arrays singleton perdem intenção. Subconjunto de dados XML 1.0: nomes ASCII de 1–64 caracteres, sem prefixo xml, namespaces, DTD ou instruções de processamento. Só entidades predefinidas e referências numéricas são decodificadas uma vez. Comentários, delimitadores CDATA, declaração e whitespace de apresentação são omitidos com avisos. Espaços de folhas mantidos; finais de linha XML e whitespace literal de atributos são normalizados. Sem inferência de tipos ou reparação automática.
Texto e atributos XML continuam strings, incluindo 00123. A raiz é mantida; tipos JSON não são inferidos.
XML perde tipos JSON e intenção de arrays de um item. Sem round-trip universal: null e objeto vazio podem ser o mesmo elemento vazio. XML → JSON mantém strings e a raiz real.
Limites
Entrada: 1.000.000 unidades UTF-16 / 2.000.000 bytes UTF-8. Arquivo: 2.000.000 bytes. Profundidade JSON/XML: 100/40. Saída: 2.000.000 unidades UTF-16 / 4.000.000 bytes UTF-8.
Processamento local. Documentos não são enviados, registrados ou persistidos.
Converta um catálogo de JSON para XML
Cole JSON ou carregue um arquivo local .json, escolha JSON → XML e pressione Converter. Neste exemplo, a única propriedade da raiz se torna o elemento XML catalog. Os dois itens viram elementos item, e @attributes fornece seus atributos.
{"catalog":{"@attributes":{"id":"00123"},"item":[{"@attributes":{"code":"a"},"#text":"uno & dos"},{"@attributes":{"code":"b"},"#text":"tres"}]}}
<catalog id="00123"><item code="a">uno & dos</item><item code="b">tres</item></catalog>
A opção padrão Usar a única propriedade raiz exige um objeto com uma propriedade comum. Para outras entradas, escolha Envolver com nome raiz: ela acrescenta um elemento ao redor dos dados, chamado inicialmente root. Em um array raiz, cada elemento usa o nome padrão item; essa opção não renomeia arrays dentro de propriedades. A saída pode ser compacta ou usar indentação de 2 ou 4 espaços.
Use @attributes para um objeto cujos valores sejam strings. Use #text para o texto de um elemento sem filhos; seu valor também precisa ser uma string, mesmo vazia. Arrays repetem o nome da propriedade. Arrays vazios ou aninhados diretamente em outros arrays não são aceitos.
Converta XML para JSON
Escolha XML → JSON, cole XML ou abra um arquivo .xml e converta. A raiz XML é mantida como propriedade JSON. Os atributos aparecem em @attributes.
Texto e atributos continuam sendo strings: 00123 mantém os zeros iniciais, e true não vira booleano. Um elemento sem atributos nem filhos vira uma string. Se tiver atributos, mas não filhos, também inclui #text, mesmo quando o texto está vazio.
Elementos consecutivos com o mesmo nome formam um array. Uma sequência a/b/a é rejeitada porque agrupar os dois elementos a mudaria sua ordem.
O que pode mudar na ida e volta
Confira os avisos antes de usar o resultado. XML não preserva todas as diferenças do JSON:
| Entrada JSON | Depois de converter para XML e voltar |
|---|---|
| Número ou booleano | Uma string com seu texto |
null ou objeto vazio {} |
Uma string vazia |
| Array de um elemento | Um valor sem o array ao redor |
Objeto contendo apenas #text |
Uma string |
Números como 9007199254740993, 1.2300 e -0 mantêm sua escrita no XML, embora percam o tipo numérico do JSON. Números fora do intervalo finito aceito são rejeitados.
Um objeto @attributes: {} vazio é omitido com aviso; um atributo vazio como id="" é mantido. Um array raiz volta dentro da propriedade que representa a raiz XML, não como array na raiz do JSON.
XML aceito pela ferramenta
A ferramenta converte dados XML 1.0 com um único elemento raiz. Os nomes devem ter de 1 a 64 caracteres ASCII, começar com letra ou sublinhado e continuar com letras, dígitos, sublinhados, hífens ou pontos. Nomes que começam com xml, sintaxe de namespaces e nomes inseguros relacionados a protótipos são rejeitados. As chaves não são renomeadas automaticamente.
Namespaces, DTD/DOCTYPE, declarações ENTITY, instruções de processamento e texto misturado com elementos filhos não são aceitos. As tags de fechamento precisam corresponder às de abertura, os atributos devem ser distintos e as chaves JSON não podem estar duplicadas.
As cinco entidades XML predefinidas e referências numéricas válidas são decodificadas uma vez: &lt; vira o texto <. O texto de CDATA é mantido; seus delimitadores, os comentários e a declaração XML são omitidos com aviso. Quebras de linha XML viram LF. Tabulações e quebras literais em atributos viram espaços; referências numéricas preservam esses caracteres. Espaços de formatação entre filhos são omitidos, enquanto espaços no texto de elementos sem filhos são mantidos.
Arquivos, limites e downloads
Os arquivos precisam usar UTF-8. Um BOM inicial é removido com aviso; um segundo é rejeitado. Copiar e baixar incluem o resultado completo, mesmo quando a prévia termina em 50.000 unidades UTF-16. Se a área de transferência falhar, use a cópia manual.
| Limite | Máximo |
|---|---|
| Arquivo / entrada em UTF-8 | 2.000.000 bytes |
| Comprimento da entrada | 1.000.000 unidades UTF-16 |
| Saída | 2.000.000 unidades UTF-16 / 4.000.000 bytes |
| Profundidade do JSON de entrada / XML | 100 / 40 |
| Tempo de conversão | 8 segundos |
Documentos complexos podem atingir outros limites de processamento antes desses máximos. Erros, cancelamento e limites excedidos não geram saída parcial.
Os downloads são converted.xml ou converted.json, em UTF-8 sem BOM. XML sai sem declaração e termina com LF. JSON usa a indentação escolhida, sem quebra de linha final.
A conversão usa um Worker local e requer JavaScript. Os documentos não são enviados nem armazenados no navegador. Depois de mudar a entrada, o modo ou as opções, converta novamente para obter um resultado que possa exportar.