Conversor de JSON para XML

Cole JSON à esquerda, obtenha XML bem formado à direita. Chaves com prefixo @_ se tornam atributos. Sem upload.

  1. Cole JSON na área de texto à esquerda.
  2. Clique em "Converter para XML". Chaves JSON viram elementos; @_chaves viram atributos.
  3. Copie ou baixe o XML formatado.
  4. Envolva seus dados com uma única chave raiz — XML exige um elemento de nível superior.
O que ele faz?

Converte um objeto JSON em XML usando a convenção do fast-xml-parser. Propriedades de objeto viram elementos filhos; propriedades com prefixo `@_` viram atributos no pai; arrays viram elementos irmãos repetidos com a mesma tag. Números, booleanos e strings são emitidos como conteúdo de texto. A saída é indentada para legibilidade.

Exemplo

Entrada JSON:

{
  "root": {
    "@_version": 1,
    "name": "Ada",
    "tags": ["math", "logic"]
  }
}

Saída XML:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

Armadilhas comuns de JSON para XML

XML é mais estrito que JSON quanto à estrutura. Os padrões abaixo cobrem a maior parte das saídas surpreendentes.

  • Sem raiz única. XML requer exatamente um elemento raiz. Objetos JSON com várias chaves de nível superior produzem várias raízes, o que é XML inválido. Envolva seu input em uma única chave: `{"root": {"a":1, "b":2}}`.
  • Array de nível superior. Um array JSON `[{"a":1},{"a":2}]` não tem nome de elemento raiz para usar. Envolva: `{"items": [{"a":1},{"a":2}]}`. Cada entrada do array vira então um elemento `<items>`.
  • Nomes de elementos com espaços ou símbolos. Nomes de elementos XML não podem conter espaços, começar com dígito, nem conter `:`, `/`, `<` etc. Sanitize as chaves JSON antes de converter — substitua espaços por `_`, prefixe dígitos com letra.
  • Atributos vs. elementos. Uma chave JSON `id` vira um elemento filho `<id>1</id>`. Para virar atributo (`<user id="1">`), prefixe com `@_`: `{"user":{"@_id":1}}`. O prefixo é removido na saída.
  • Valores null. JSON `null` vira elemento vazio (`<x/>`). Se precisa omiti-lo totalmente, remova valores null do seu JSON antes de converter.
  • Caracteres especiais no texto. XML escapa `<`, `>`, `&`, `"` e `\'` automaticamente. Sua string JSON `"<b>hi</b>"` vira o texto `&lt;b&gt;hi&lt;/b&gt;`, não elementos aninhados. Use estrutura JSON intermediária se quiser aninhamento real.
Perguntas frequentes

Como obter uma declaração XML `<?xml version="1.0"?>`?

Anteponha você mesmo à saída — o conversor não emite declaração. Para XML UTF-8, a declaração é tecnicamente opcional mas comumente incluída: `<?xml version="1.0" encoding="UTF-8"?>` seguido do seu XML convertido.

Arrays JSON são preservados como elementos repetidos?

Sim. `{"tags":["a","b"]}` vira `<tags>a</tags><tags>b</tags>` — dois irmãos com a mesma tag, que é a representação XML padrão de valor repetido.

Posso ter arrays aninhados estilo JSON em XML?

Não diretamente. XML não tem conceito nativo de array; só irmãos repetidos. Arrays aninhados em JSON viram uma estrutura XML mais plana onde o contexto determina o agrupamento. Round-trip XML → JSON → XML por esta ferramenta preserva o subconjunto round-trippable.

Como datas são tratadas?

JSON não tem tipo Date — datas geralmente já são strings ISO 8601. Estas viram conteúdo de texto do elemento sem alteração. Se seu XML a jusante espera um formato específico, garanta que o JSON use esse formato.

Meu JSON é enviado para algum lugar?

Não. Tudo roda no seu navegador — sua entrada é parseada e convertida por JavaScript nesta página e nunca enviada a servidor.

O round-trip JSON → XML → JSON preservará meus dados?

Para dados estruturados típicos com a convenção de atributo @_, sim — semanticamente. Alguns casos extremos (texto + elementos filhos misturados, ordem de atributos vs. ordem de elementos) podem normalizar. Se equivalência exata byte-a-byte importa, não faça round-trip por XML.