JSON para XML

Cole um documento JSON e receba de volta o equivalente em XML com o nome do elemento raiz que você escolher, uma estratégia consistente para arrays (elementos repetidos ou um wrapper), declaração XML opcional e indentação organizada. Útil quando um sistema legado exige XML e seus dados de origem estão em JSON.

Como converter JSON para XML

  1. 1

    Cole JSON

    Objeto ou array no nível superior. Você dará um nome ao elemento raiz.

  2. 2

    Nomeie a raiz

    XML requer um único elemento raiz. O padrão é `<root>`; dê um nome significativo como `<users>` ou `<response>`.

  3. 3

    Escolha a estratégia de array

    "Elementos repetidos" (cada item do array se torna um irmão `<item>`) ou "wrapper" (o array vai dentro de um elemento wrapper nomeado).

  4. 4

    Copie o XML

    Declaração XML opcional, indentação adequada e valores escapados para `<`, `>`, `&` e aspas.

Exemplo: elementos repetidos

Entrada:

{ "users": [ { "name": "Alice" }, { "name": "Bob" } ] }

Saída:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <users>
    <name>Alice</name>
  </users>
  <users>
    <name>Bob</name>
  </users>
</root>

Exemplo: wrapper de array

Mesma entrada com a estratégia “envolver arrays em <item>”:

<root>
  <users>
    <item>
      <name>Alice</name>
    </item>
    <item>
      <name>Bob</name>
    </item>
  </users>
</root>

Mapeamento de tipos

JSON XML
string conteúdo de texto, escapado
integer / decimal conteúdo de texto (sem anotação de tipo XML)
boolean true / false como texto
null elemento vazio (<foo/>) ou omitido
array elementos repetidos ou wrapper + itens
object elemento aninhado com elementos filhos

Atributos vs elementos

XML distingue atributos (<user id="1">) de elementos filhos (<user><id>1</id></user>). O conversor usa elementos por padrão, eles são sem perda para round-tripping. Se seu XML downstream requer atributos, use uma convenção de prefixo de chave:

  • A chave JSON @id se torna um atributo XML id="..." no elemento pai.
  • A chave JSON #text se torna o conteúdo de texto do elemento pai.

Essas convenções vêm dos mapeamentos BadgerFish e Parker, os dois padrões mais comuns de JSON para XML.

Regras de escape

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • " -> &quot; (em valores de atributos)
  • ' -> &apos; (opcional)
  • Bytes em UTF-8 são preservados, declarados no prólogo XML.

Erros comuns

  • Array JSON no nível raiz. XML precisa de um único elemento raiz. O conversor envolve um array em <root> (ou qualquer nome que você escolher).
  • Chaves numéricas. JSON {"1": "a"} é legal; nomes de elementos XML não podem começar com um dígito. O conversor prefixa dígitos com um sublinhado (_1) ou permite que você defina um mapeamento personalizado.
  • Arrays mistos. [1, "dois", { "x": true }] não tem um mapeamento limpo. Geralmente isso significa que o JSON precisa de normalização antes da conversão.
  • Documentos enormes. XML é verboso, um JSON de 10 MB pode se tornar um XML de 20-30 MB. Considere a conversão em streaming para cargas muito grandes.

Perguntas frequentes

Por especificação, o XML exige uma única raiz. Se o seu JSON for um array ou tiver várias chaves de nível superior, o conversor envolve tudo em um elemento raiz que você pode nomear (padrão <root>).

Sim. Use a convenção de prefixo @ em suas chaves JSON (por exemplo, "@id": 1) e essas chaves se tornam atributos. Outras chaves permanecem como elementos filhos. Isso corresponde ao mapeamento BadgerFish.

Duas estratégias: elementos irmãos repetidos (cada item recebe a chave pai como sua tag), ou um wrapper com elementos <item> dentro. Escolha o que melhor se adapta ao esquema XML que você está visando.

Não. O conversor emite a declaração XML (<?xml version="1.0"?>) mas não um DOCTYPE. Para XML que precisa de uma referência DTD ou XSD, adicione manualmente após a conversão.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas