Utilia

Conversor de JSON para XML

Converte JSON em XML e XML em JSON no teu navegador, com atributos, elementos repetidos e CDATA tratados. Nada é enviado para um servidor.

Conversão

Como usar o conversor de JSON para XML

  1. Escolhe a direção: JSON → XML ou XML → JSON.
  2. Cola os teus dados ou clica em Abrir um ficheiro para carregar um ficheiro .json ou .xml (até 10 MB).
  3. Define as opções: Indentação (2 espaços, 4 espaços, tabulação ou Nenhuma (compacto)) nas duas direções; Elemento raiz e Acrescentar a declaração XML em JSON → XML; Converter números e booleanos em XML → JSON.
  4. Clica em Converter. O resultado também se atualiza enquanto escreves, e os erros indicam a linha e a coluna onde o problema foi encontrado.
  5. Copia ou transfere o resultado. Inverter a direção passa o resultado para a entrada, para confirmares a ida e volta.

Como o JSON corresponde ao XML

O XML e o JSON não têm o mesmo modelo de dados, por isso todos os conversores seguem uma convenção. Esta ferramenta usa a convenção muito difundida da biblioteca fast-xml-parser:

JSON XML
{"title": "Dune"} <title>Dune</title>
{"book": {"@id": "42"}} <book id="42"/>
{"p": {"@lang": "pt", "#text": "Olá"}} <p lang="pt">Olá</p>
{"tag": ["a", "b"]} <tag>a</tag><tag>b</tag>
  • As chaves que começam por @ passam a atributos, e a chave #text guarda o texto de um elemento que também tem atributos.
  • Uma lista passa a um elemento repetido com o mesmo nome.
  • Um documento XML precisa de exatamente um elemento raiz. Se o teu JSON for um objeto com uma única chave cujo valor é um objeto, essa chave passa a ser a raiz. Caso contrário, o valor inteiro é envolvido no elemento indicado em Elemento raiz (root por omissão), e os elementos de uma lista de nível superior passam a elementos <item>.
  • As chaves que não são nomes XML válidos são corrigidas: os espaços e os símbolos passam a _, e um nome que comece por um algarismo recebe um _ no início ("1st place" → <_1st_place>).
  • null e as strings vazias dão um elemento vazio como <note/>. Os caracteres especiais (&, <, >, aspas) são escapados.

Como o XML corresponde ao JSON

  • Os atributos passam a chaves com o prefixo @, e o texto misto passa a #text.
  • Os elementos repetidos passam a uma lista; um elemento que aparece uma só vez passa a um valor simples.
  • As secções CDATA são juntadas ao texto, e as entidades como &amp; são descodificadas. A declaração XML, as instruções de processamento e os comentários são descartados.
  • Com Converter números e booleanos, <price>12.5</price> passa a 12.5 e true passa a um booleano, enquanto os valores com um zero à esquerda, como 007, continuam a ser strings. Desliga a opção para manteres todos os valores como texto.

Antes da conversão, verifica-se se o XML está bem formado: uma etiqueta de fecho em falta, uma etiqueta que não corresponde ou um & por escapar são indicados com a linha e a coluna.

Perguntas frequentes

Os meus dados são enviados para um servidor?

Não. A conversão corre inteiramente no teu navegador. Os teus feeds XML, mensagens SOAP e ficheiros de configuração ficam no teu computador.

Porque é que um elemento passa a lista num ficheiro e a objeto noutro?

O XML não diz se um elemento é uma lista. Quando <tag> aparece duas vezes, passa a uma lista; quando aparece uma vez, é um valor simples. Se o teu código espera uma lista, trata os dois casos, ou acrescenta um segundo elemento nos testes.

Porque é que a ida e volta nem sempre dá um resultado idêntico?

Há informação que não tem equivalente do outro lado: os comentários, a ordem do conteúdo misto ou a diferença entre uma lista com um elemento e um valor simples. Para documentos de dados típicos, converter JSON → XML → JSON devolve a mesma estrutura.

Posso usar namespaces?

Sim. Os nomes com prefixo como soap:Envelope e os atributos como @xmlns:soap são mantidos tal como estão nas duas direções.

A ferramenta valida com um schema XSD?

Não. Verifica se o XML está bem formado, mas não o valida com uma DTD nem com um schema XSD.