Nao existe uma unica maneira correta de transformar JSON em XML. Os dois formatos nao modelam dados da mesma forma: XML tem atributos, conteudo misto e sem tipo de array nativo, nenhum dos quais JSON tem um equivalente. Esta ferramenta escolhe um mapeamento e o declara na pagina, em vez de fingir que existe um natural.
Usando o conversor JSON para XML
Escolha uma direcao e, ao escrever XML, um nome para o elemento raiz, ja que JSON nao tem nada que nomeie um documento como um elemento raiz XML faz. Convertendo
{"items":[{"name":"A & B <co>"},{"name":"C"}],"note":null}
com a raiz definida como catalog produz:
<catalog>
<items>
<name>A & B <co></name>
</items>
<items>
<name>C</name>
</items>
<note/>
</catalog>
Um membro objeto se torna um elemento filho, um array se torna elementos
irmãos repetidos que compartilham a chave do array como seu nome, e
caracteres que nao sao legais dentro de texto XML, como & e <, sao
escapados.
Atributos, texto e valores vazios
Uma chave com prefixo @ se torna um atributo XML ao escrever, e uma
chave #text se torna texto ao lado de elementos filhos. Nem @ nem #
e um caractere legal para iniciar o nome de um elemento XML, entao uma
chave JSON nunca pode colidir com nenhuma convencao por acidente.
null, um objeto vazio, um array vazio e uma string vazia todos se tornam
um elemento vazio, porque XML tem exatamente uma forma para nada e nao
pode distinguir entre eles. Ler <note/> de volta retorna null para
todos os quatro, o que a pagina declara claramente em vez de deixar voce
descobrir.
Por que o leitor retorna cada valor como string
XML nao registra nenhuma informacao de tipo. Um numero em um documento XML e apenas digitos no que diz respeito ao formato, e adivinhar que deveria se tornar um numero JSON e exatamente o tipo de adivinha que transforma um CEP em um inteiro com seu zero a esquerda perdido. A leitura de volta permanece sem perda ao recusar adivinhar.
O que um nome de elemento repetido significa ao voltar
Um nome de elemento repetido sob o mesmo pai se torna um array JSON ao voltar, e um nome de membro que nao e um nome legal de elemento XML para a conversao e nomeia a chave ofensiva, em vez de silenciosamente altera-lo em algo que parece uma tag valida.