Conversor de JSON para XML
Converta dados JSON para XML. @attributes é restaurado como atributos do elemento, #text como conteúdo de texto, e arrays como elementos irmãos repetidos — o processo inverso do nosso conversor de XML para JSON, tudo direto no navegador.
Como funciona esta conversão de JSON para XML
JSON e XML descrevem ambos dados estruturados, mas não descrevem exatamente as mesmas coisas. O XML possui atributos e conteúdo textual, dois conceitos que não existem em JSON. Por isso, qualquer conversão direta esbarra sempre nas mesmas duas perguntas: como expressar os atributos e como devolver um array à sua forma de elementos repetidos. Esta ferramenta segue a convenção mais difundida e mapeia `@attributes` para os atributos do elemento, `#text` para o conteúdo textual e os arrays para elementos irmãos que partilham o mesmo nome.
Por exemplo, `{"book": {"@attributes": {"id": "1"}, "#text": "Título"}}` torna-se `
Como converter JSON em XML
- Cole o JSON Introduza o JSON que pretende converter, seja um objeto ou um array.
- Coloque em @attributes o que deve ser atributo Reúna dentro de um objeto `@attributes` as chaves que quer obter como atributos do elemento.
- Coloque o conteúdo textual em #text Quando um elemento precisar de ter ao mesmo tempo atributos e corpo, coloque o valor do corpo sob `#text`.
- Confira o resultado e copie Obtém um XML indentado, pronto a colar num ficheiro de configuração ou num pedido de API.
Dicas para aproveitar melhor
- Coloque um objeto sob a chave `@attributes` e cada uma das suas propriedades se tornará um atributo do elemento convertido.
- Use uma chave `#text` para o conteúdo de texto de um elemento que também tenha atributos ou elementos filhos. Um elemento simples sem atributos pode usar diretamente uma string como valor.
- Atribua um array à mesma chave e cada item será gerado como um elemento irmão repetido com esse nome.
- Um valor `null` produz uma tag vazia e autofechada (`
`) sem atributos, texto ou filhos. - Esta ferramenta espera uma entrada no formato produzido pelo nosso "Conversor de XML para JSON" (um objeto cuja chave é o nome do elemento raiz, com exatamente uma chave de nível superior).
Situações em que ajuda
Enviar dados para uma API que só aceita XML
Quando os seus dados estão em JSON mas o destinatário exige XML, algo comum ao integrar com sistemas de gestão antigos.
Migrar um formato de configuração
Serve como primeiro rascunho ao transferir definições escritas em JSON para uma ferramenta baseada em XML.
Pensar a estrutura XML a partir de JSON
Escrever à mão um XML com muitos níveis de aninhamento dá bastante trabalho; montá-lo em JSON e converter depois é muito mais fácil de acompanhar.
Fixar a convenção do seu próprio conversor
Experimentar como `@attributes` e `#text` se refletem ajuda a decidir a especificação de um conversor que esteja a escrever.
Termos da conversão de JSON para XML
- Atributo
- A parte `id="1"` de `
`. O JSON não tem equivalente, por isso esta ferramenta representa-a com a chave especial `@attributes`. - Conteúdo textual (#text)
- O corpo de `
Título `. Use `#text` quando o elemento tiver de levar atributos e corpo ao mesmo tempo. - Referência de entidade (escape)
- Reescrever `&` como `&` e assim por diante. **O ampersand tem de ser convertido primeiro; caso contrário, o `&` de um `<` acabado de criar é escapado uma segunda vez.**
- Elementos irmãos repetidos
- O XML exprime uma lista repetindo elementos com o mesmo nome de etiqueta. Um array de JSON volta a esta forma.
- Elemento raiz
- O XML exige exatamente um elemento no nível superior. Quando o nível superior do seu JSON contém várias chaves, vale a pena ter isso em conta.
Perguntas frequentes
Curiosidade — O que observar ao "devolver" JSON para XML
Converter XML para JSON é um pouco como comprimir informação. O XML pode carregar três tipos de informação — atributos, texto e elementos filhos — enquanto o JSON só tem pares chave-valor simples, então alguma convenção precisa ser adotada na conversão (esta ferramenta segue as mesmas quatro regras: `@attributes`, `#text`, arrays e null). Enquanto essa convenção for seguida, converter JSON de volta para XML é um processo mecânico e bem definido — mas forçar um JSON de estrutura livre que não a segue pode deixar incerto o que deveria ser um atributo e o que deveria ser um elemento, e o resultado pode não corresponder ao esperado.
Na prática, isso surge quando a resposta de uma API XML legada é convertida para JSON para facilitar o processamento em JavaScript, e depois convertida de volta para XML para enviar a outro sistema — por exemplo, remodelando a resposta de uma API SOAP como JSON antes de enviá-la de volta como uma requisição no estilo SOAP. Nesse tipo de ida e volta, manter a convenção de conversão consistente é o mais importante; misturar uma ferramenta que use uma convenção diferente no meio do caminho pode embaralhar a relação entre atributos e texto.
Esta ferramenta exige estritamente exatamente uma chave de nível superior porque isso reflete uma regra do próprio XML — um documento deve ter exatamente um elemento raiz. Se precisar converter um JSON com várias chaves de nível superior, envolva-o antes em uma chave pai comum (por exemplo, `root`), e ele será convertido corretamente em um XML com um único elemento raiz.