Conversor JSON para XML
Cole JSON e obtenha XML instantaneamente. Converte objetos, arrays e atributos @_ no navegador — nenhum dado enviado. Grátis, privado, sem cadastro.
Opções · 2 espaços · JSON → XML
O que é a Conversão JSON para XML e Como Funciona?
JSON (JavaScript Object Notation) e XML (Extensible Markup Language) são ambos formatos de dados estruturados, mas têm modelos fundamentalmente diferentes: JSON é uma árvore de objetos, arrays, strings, números, booleanos e valores null sem conceito de atributos ou restrições de raiz de documento; XML é uma árvore de elementos que podem carregar atributos e conteúdo de texto, e o documento deve ter exatamente um elemento raiz. A conversão de JSON para XML requer um conjunto de convenções para preencher essa lacuna.
Esta ferramenta usa a convenção mais amplamente adotada — a mesma usada pelo fast-xml-parser (Node.js), xmltodict (Python) e JAXB (Java) — aplicada em sentido inverso:
**1. Normalização de elemento raiz.** A diferença mais importante entre JSON e XML é a restrição de raiz. JSON não tem conceito de raiz; o XML requer exatamente uma. O conversor lida com quatro casos automaticamente. Um objeto de chave única usa essa chave como raiz XML: { "config": {...} } →
**2. Prefixo @_ → atributos XML.** Chaves JSON prefixadas com @_ tornam-se atributos XML no elemento envolvente. { "element": { "@_id": "42", "@_class": "primary" } } produz
**3. #text → conteúdo de texto do elemento.** Quando um elemento precisa tanto de atributos quanto de conteúdo de texto, o texto é armazenado sob a chave #text: { "price": { "@_currency": "USD", "#text": "29.99" } } →
**4. Arrays → elementos irmãos repetidos com o mesmo nome.** O XML permite múltiplos elementos filhos com o mesmo nome; o JSON usa arrays para listas ordenadas. Um array JSON sob uma chave produz elementos filhos repetidos que reutilizam o nome da chave: { "items": ["a", "b"] } produz
**5. Simétrico com XML para JSON.** As convenções @_ e #text usadas aqui são exatamente as mesmas convenções usadas pelo Conversor XML para JSON complementar. Isso significa que um round-trip JSON → XML → JSON preserva atributos, conteúdo de texto e estrutura de elemento — desde que o JSON de entrada siga as convenções @_/#text.
**Quando converter JSON para XML?** Os cenários mais comuns são: (1) enviar dados para um serviço web SOAP ou baseado em XML legado que requer um corpo de requisição XML; (2) gerar arquivos de configuração XML (Spring, Maven, Ant, recursos Android) a partir de dados JSON; (3) produzir XML de sitemap.xml ou feed RSS a partir de dados de conteúdo JSON; (4) interoperar com sistemas corporativos (ERP, CRM, EDI) que consomem XML; (5) gerar SVG ou outros formatos gráficos baseados em XML programaticamente a partir de dados JSON. Para formatar e validar o XML resultante, use o Formatador XML.
// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';
const data = {
catalog: {
product: {
'@_id': 'P01',
'@_category': 'electronics',
name: 'Wireless Headphones',
price: {
'@_currency': 'USD',
'#text': '79.99'
}
}
}
};
const builder = new XMLBuilder({
attributeNamePrefix: '@_', // @_ keys become XML attributes
textNodeName: '#text', // #text key becomes element text content
ignoreAttributes: false, // process @_ attribute keys
format: true, // pretty-print with indentation
indentBy: ' ', // 2-space indent
});
const xml = builder.build(data);
console.log(xml);
// <catalog>
// <product id="P01" category="electronics">
// <name>Wireless Headphones</name>
// <price currency="USD">79.99</price>
// </product>
// </catalog> Recursos Principais
Conversão ao Vivo
A saída XML é atualizada instantaneamente conforme você digita ou cola JSON — sem necessidade de botão Converter. Entradas grandes (>200KB) mudam automaticamente para o modo manual para manter o navegador responsivo.
Normalização Automática de Raiz
O XML requer exatamente um elemento raiz. Objetos de chave única usam sua chave como raiz; objetos de múltiplas chaves envolvem em
Convenção de Atributo @_ e #text
Chaves prefixadas com @_ tornam-se atributos XML; a chave #text torna-se conteúdo de texto do elemento. Isso corresponde à convenção do fast-xml-parser e xmltodict, tornando a saída simétrica com o Conversor XML para JSON complementar.
Array para Elementos Repetidos
Arrays JSON sob uma chave produzem elementos filhos repetidos que reutilizam o nome da chave — sem singularização. { "items": [1, 2, 3] } produz três irmãos
Privacidade 100% Baseada no Navegador
Toda a conversão é executada localmente no seu navegador usando JavaScript. Seu JSON — incluindo credenciais, configurações internas e payloads sensíveis — nunca é enviado a nenhum servidor, nunca é registrado e nunca é armazenado.
Round-Trip Simétrico com XML para JSON
As convenções @_ e #text são compartilhadas com o Conversor XML para JSON complementar. Um round-trip JSON → XML → JSON preserva fielmente atributos, conteúdo de texto e estrutura aninhada.
Exemplos
Objeto de Resposta de API
{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}} Um objeto JSON de chave única onde a chave de nível superior torna-se o elemento raiz XML. O objeto address aninhado produz um elemento filho
com filhosArray de Nível Superior
[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}] Quando toda a entrada é um array JSON (não envolvido em um objeto), o conversor produz
Objeto com Atributos e Conteúdo de Texto
{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}} Chaves prefixadas com @_ tornam-se atributos XML no elemento: @_id torna-se id="P01" e @_category torna-se category="electronics" no elemento
Como Usar
- 1
Cole seu JSON
Insira ou cole seus dados JSON no campo de entrada acima. Você também pode clicar em 'Carregar exemplo' para experimentar uma amostra — um objeto de resposta de API, um payload de array ou um objeto usando atributos @_ e #text.
- 2
Veja a Saída XML ao Vivo
O XML aparece instantaneamente no painel de saída. Objetos de chave única usam sua chave como raiz; objetos de múltiplas chaves envolvem em
; chaves com prefixo @_ tornam-se atributos; arrays tornam-se elementos filhos repetidos. Ajuste a indentação (2 ou 4 espaços) conforme necessário. - 3
Copie ou Baixe
Clique em Copiar para pegar o XML para a área de transferência ou em Baixar para salvá-lo como arquivo .xml. Para validar ou reformatar o resultado, cole-o no Formatador XML.
Armadilhas Comuns de Conversão
Objeto de Múltiplas Chaves Recebe Wrapper Inesperado
Se o seu JSON de nível superior tem múltiplas chaves, a saída as envolve todas em
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema // Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response> Array de Nível Superior Recebe Wrapper
Um array JSON de nível superior não tem nome de elemento, então é envolvido como
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic // Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag Chaves de Atributo sem o Prefixo @_
Para produzir um atributo XML, a chave JSON deve ser prefixada com @_. Sem o prefixo, a chave é tratada como um elemento filho, não como um atributo.
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag> ← id is a child element // Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag> ← id is an attribute Elemento com Atributos e Texto — #text Ausente
Se você quiser que um elemento tenha tanto atributos XML quanto conteúdo de texto, você deve usar a chave #text para o texto. Sem ela, o texto não tem onde ir e o elemento ficará vazio ou produzirá um erro.
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content // Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price> ← text content Chaves JSON com Caracteres Inválidos para XML
Nomes de elementos XML não podem começar com um dígito ou conter espaços, dois pontos (exceto para prefixos de namespace) ou a maioria dos caracteres especiais. Se suas chaves JSON contiverem esses caracteres, o XML de saída será malformado. Renomeie as chaves problemáticas antes de converter ou sanitize-as em uma etapa de pós-processamento.
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem> ← invalid XML // Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem> ← valid XML Caracteres Especiais em Valores Não Escapados
O conteúdo de texto XML não deve conter os caracteres brutos <, >, &, ou " — eles devem ser escapados como <, >, & e ". O conversor escapa automaticamente esses caracteres no conteúdo de texto do elemento e nos valores de atributo. Se o processamento downstream duplicar o escape, verifique se o seu parser XML está consumindo bytes XML brutos em vez de escapar novamente conteúdo já escapado.
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' & role = 'admin'</query>
// If double-processed: &amp; — consumer is re-escaping // Converter output is correct — consume it as XML, not as a raw string // <query>name = 'Alice' & role = 'admin'</query> // XML parser decodes to: name = 'Alice' & role = 'admin'
Casos de Uso Comuns
- Chamando Serviços Web SOAP e XML Legados
- Construa o payload JSON na sua aplicação, converta para XML e faça POST no endpoint SOAP. Isso evita a construção manual de strings XML e permite que você trabalhe com os dados em uma estrutura JSON nativa até o momento em que precisar serializá-los para o serviço legado.
- Gerando Arquivos de Configuração XML
- Spring, Maven, Ant, Tomcat e Android usam formatos de configuração XML. Gere ou transforme dados de configuração como JSON — mais fácil de comparar e controlar versão — depois converta para XML para implantação.
- Produzindo XML de Sitemap e Feed RSS
- Sistemas de gerenciamento de conteúdo e geradores de sites estáticos frequentemente armazenam metadados de página como JSON. Converta esses metadados para XML de sitemap.xml ou feed RSS para enviar a mecanismos de busca ou sindicalizar conteúdo para leitores de feed.
- Integração de Dados Corporativos (EDI / ERP / CRM)
- Sistemas ERP (SAP, Oracle), plataformas CRM e redes EDI comumente trocam dados em XML. Converta exportações JSON de APIs REST modernas para XML para alimentar esses sistemas sem construir um serializador XML personalizado.
- Arquivos de Recursos Android
- Recursos de string Android, restrições de layout e entradas de manifesto são todos XML. Gere ou atualize arquivos de recursos programaticamente a partir de fontes de dados JSON e converta para o formato XML exigido pelo sistema de build Android.
- Geração de SVG e Gráficos Vetoriais
- SVG é XML. Construa a estrutura SVG como dados JSON — caminhos, formas, cores, transformações — depois converta para XML para produzir arquivos SVG válidos para web, impressão ou ferramentas de edição vetorial.
Detalhes Técnicos
- Análise JSON Compatível com RFC 8259
- A entrada JSON é analisada usando o JSON.parse() nativo do navegador, que é totalmente compatível com RFC 8259. Ele fornece mensagens de erro de sintaxe precisas com informações de posição de melhor esforço (linha e coluna) e lida com todos os tipos de dados JSON: strings, números, booleanos, null, arrays e objetos.
- Serializador JSON para XML Recursivo Personalizado
- Após a análise, um serializador recursivo personalizado percorre a árvore JSON. Chaves de objeto que começam com @_ são emitidas como atributos XML no elemento pai. A chave #text é emitida como conteúdo de texto do elemento. Chaves de objeto simples tornam-se elementos filhos. Valores de array produzem elementos irmãos repetidos com o mesmo nome. Caracteres especiais (<, >, &, ", ') no conteúdo de texto e valores de atributo são escapados para suas referências de entidade XML.
- Normalização de Raiz
- Como o XML requer exatamente um elemento raiz, o serializador aplica normalização de raiz antes de construir o documento: objetos de chave única usam a chave como raiz; objetos de múltiplas chaves e arrays de nível superior recebem um wrapper sintético
. Isso garante que a saída seja sempre XML bem formado independentemente da forma da entrada. - 100% Baseado no Navegador — Sem Upload, Sem Servidor
- Todo o processamento é executado no mecanismo JavaScript do seu navegador. Nenhum dado é transmitido pela rede em nenhum momento. Entradas maiores que 200KB mudam automaticamente do modo ao vivo para o modo manual (exigindo um clique explícito em Converter) para manter o navegador responsivo durante a serialização pesada.
Melhores Práticas
- Controle o Elemento Raiz com um Objeto de Chave Única
- A maneira mais limpa de produzir XML significativo é garantir que o seu JSON de nível superior seja um objeto de chave única cuja chave seja o nome do elemento raiz desejado. Envolver dados de múltiplas chaves sob uma chave nomeada lhe dá uma raiz semanticamente significativa em vez do wrapper genérico
. - Use @_ e #text para XML com Muitos Atributos
- Se o seu esquema XML alvo usa muitos atributos (comum em arquivos de configuração, SVG e envelopes SOAP), reformule seu JSON para usar chaves com prefixo @_ e #text antes de converter. O XML resultante corresponderá ao esquema alvo exatamente sem pós-processamento.
- Envolva Arrays em Objetos Nomeados para Nomes de Tag Significativos
- Um array de nível superior produz o padrão genérico
, onde- ...
- é um nome literal fixo. Envolver o array sob uma chave nomeada — { "products": [...] } — produz elementos
repetidos (o nome da chave é reutilizado para cada elemento do array) sob um wrapper . Isso lhe dá um nome de tag com significado no domínio e é quase sempre preferível para XML que será analisado ou validado por um esquema. - Valide a Saída com o Formatador XML
- Após a conversão, cole a saída XML no Formatador XML para validar a boa formação, verificar a indentação e identificar quaisquer problemas estruturais antes de enviar o XML para um serviço downstream ou fazer commit no controle de versão.
- Sanitize as Chaves JSON Antes de Converter
- Nomes de elementos XML devem começar com uma letra ou sublinhado e não podem conter espaços ou a maioria dos caracteres especiais. Se suas chaves JSON vierem de uma fonte externa (nome de coluna de banco de dados, nome de campo de API ou entrada do usuário), audite-as para validade de nome XML antes de converter para evitar saída malformada.
Perguntas Frequentes
Meus dados JSON são enviados a um servidor ao usar esta ferramenta?
Como a ferramenta decide qual é o elemento raiz XML?
Por que um objeto JSON com múltiplas chaves é envolvido em ?
Como um array JSON de nível superior converte para XML?
Como converter chaves JSON para atributos XML?
Para que serve a chave #text?
A indentação afeta a estrutura XML?
Como um array JSON aninhado dentro de um objeto converte para XML?
Como converter XML de volta para JSON?
Posso validar ou formatar a saída XML?
Existe um limite de tamanho de arquivo para a entrada JSON?
Quais tipos JSON são suportados?
Ferramentas relacionadas
Ver todas as ferramentas →Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Conversor CSV para JSON
Codificação e Formatação
Converta CSV para JSON no navegador. RFC 4180, inferência de tipos, cabeçalho, seguro para inteiros grandes. 100% privado, sem upload.
JSON Diff (Comparar)
Codificação e Formatação
Compare dois arquivos JSON instantaneamente no navegador. Destaque lado a lado, saída JSON Patch (RFC 6902), ignore campos ruidosos como timestamps e IDs. 100% privado, sem upload.
Formatador e Validador JSON
Codificação e Formatação
Formate, valide e embeleze JSON instantaneamente no seu navegador. Ferramenta online gratuita com validação de sintaxe, detecção de erros, minificação e cópia com um clique. 100% privado — seus dados nunca saem do seu dispositivo.
Validador JSON Schema
Codificação e Formatação
Valide JSON contra qualquer JSON Schema instantaneamente no navegador. Suporta Draft 2020-12, 2019-09 e Draft-07 com mensagens de erro com caminho preciso. 100% privado — sem upload, sem conta, gratuito.
Conversor JSON para CSV
Codificação e Formatação
Converta JSON para CSV no navegador. Presets RFC 4180, Excel-EU, TSV, Pipe. Achatar aninhados ou stringify. 100% privado, sem upload.