JSON ⇄ XML conversor
JSON ⇄ XML
Converte entre JSON e XML com tratamento configurável de atributos, arrays e nós de texto.
Converte XML em JSON e de volta. Não existe um mapeamento canônico entre os dois — XML tem atributos, conteúdo misto ordenado e namespaces, e JSON não tem nada disso —, então esta página deixa suas escolhas explícitas e permite mudá-las em vez de esconder uma convenção.
Um atributo fica como `@id`.
Onde vai o texto do próprio elemento.
XML
JSON
@name e o texto do próprio elemento vai para #text, enquanto irmãos repetidos viram um array. É nesse último ponto que a ida e volta pode perder informação: uma lista que por acaso tem um só elemento volta como um objeto único, a menos que “sempre usar arrays” esteja ligado.Entrada
215 caracteres
Saída
399 caracteres
Como usar
Escolha a direção
Os dois lados mantêm entradas separadas, então alternar de um para o outro não perde o que você tinha colado.
Defina o prefixo de atributo e a chave de texto
`@` e `#text` são a convenção mais difundida (fast-xml-parser, xml2js e outros os usam), mas se o JSON que você precisa produzir usa outra coisa, mude aqui em vez de pós-processar.
Ligue “sempre usar arrays” se o JSON vai para código
Esta é a parte com perda do mapeamento: um `<item>` vira um objeto, dois viram um array, e o código que consome tem de lidar com os dois casos. Forçar arrays deixa a forma estável ao custo de alguma verbosidade.
Perguntas frequentes
A ida e volta me devolve o meu XML?
Estruturalmente, normalmente sim; byte a byte, não. Comentários, instruções de processamento e a distinção entre `<a/>` e `<a></a>` não sobrevivem, e conteúdo misto — texto e elementos intercalados — não pode ser representado em JSON de um jeito que preserve a ordem.
Por que `12` é uma string?
Porque XML não tem tipos: todo valor em um documento é texto, e só um esquema diz o contrário. A opção Converter tipos vai adivinhar números e booleanos, mas é um palpite: um código de produto `0123` vira 123, e uma string de versão `1.10` vira 1.1.
O que acontece com os namespaces?
Os prefixos são mantidos como parte do nome do elemento — `soap:Body` vira a chave `soap:Body` — e as declarações `xmlns` passam como atributos comuns. Nada é resolvido para um URI de namespace, então dois documentos que usam prefixos diferentes para o mesmo namespace produzem JSON diferente.
Posso dar a ele uma resposta SOAP?
Sim, e essa é uma das razões comuns de estar aqui. O envelope, o corpo e o payload passam todos como objetos aninhados; as chaves `@` são onde os atributos do SOAP vão parar.
Pode receber de
Formatador e validador de XML
XML Formatter & Validator
Indenta XML e informa a linha e a coluna da primeira falha de boa formação.
Testador de XPath
XPath Tester
Avalia um XPath ou seletor CSS contra XML ou HTML e lista cada nó encontrado.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
Formatador e validador de YAML
YAML Formatter & Validator
Reindenta YAML de forma consistente, valida e aponta os erros de tabulação e âncora que quebram os parsers.
Em seguida
Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
Testador de JSONPath
JSONPath Tester
Executa uma expressão JSONPath contra um documento e destaca os nós encontrados enquanto você digita.
Formatador e validador de XML
XML Formatter & Validator
Indenta XML e informa a linha e a coluna da primeira falha de boa formação.
Testador de XPath
XPath Tester
Avalia um XPath ou seletor CSS contra XML ou HTML e lista cada nó encontrado.
Codificar e decodificar Base64
Base64 Encoder & Decoder
Codifica e decodifica Base64 e Base64URL para texto ou arquivos, tratando UTF-8 corretamente.
curl para código
curl to Code
Converte um comando curl em fetch, axios, Python requests, Go, PHP ou PowerShell.