Saltar para o conteúdo
4all.tools

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

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 &amp; 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: &amp;lt; vira o texto &lt;. 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.