Como converter XML em JSON
- Cole o XML, arraste um arquivo
.xmlpara o editor ou carregue-o a partir de uma URL. O JSON aparece enquanto você digita. - Ajuste o prefixo de atributos e a chave de texto e decida se quer sempre usar arrays, converter números e booleanos ou ignorar prefixos de namespace.
- Copie o JSON ou baixe-o como arquivo
.json.
Como o XML é mapeado para JSON
| XML | JSON |
|---|---|
<name>Ada</name> | "name": "Ada" |
<price>9.90</price> | "price": 9.90 – dígitos mantidos exatamente |
<item id="7">Pen</item> | "item": {"@id": 7, "#text": "Pen"} |
<tag>a</tag><tag>b</tag> | "tag": ["a", "b"] |
<note/> | "note": null |
<![CDATA[a < b]]> | o texto "a < b" |
<soap:Body> com Ignorar prefixos de namespace | "Body" |
Por que “Sempre usar arrays” é importante
Um elemento que aparece uma vez vira um valor único, mas quando aparece duas vezes vira um array. O código que lê o JSON precisa então lidar com os dois formatos – um bug clássico quando uma lista às vezes contém só um item. Marque Sempre usar arrays para elementos filhos para ter arrays em todo lugar: a estrutura fica previsível ao custo de alguns colchetes a mais.
XML para JSON no código
- Python:
xmltodict.parse(text)(pacote xmltodict) - JavaScript:
new XMLParser({ ignoreAttributes: false }).parse(text)(pacote fast-xml-parser) - C#:
JsonConvert.SerializeXmlNode(doc)(Newtonsoft.Json) - Linha de comando:
yq -p xml -o json file.xml
Perguntas frequentes
A conversão é sem perdas?
Nomes de elementos, atributos e texto são mantidos, e os números conservam exatamente os mesmos dígitos. Comentários, instruções de processamento e a posição do texto entre elementos filhos (conteúdo misto) não podem ser representados em JSON.
Posso converter JSON de volta para XML?
Sim, com o conversor de JSON para XML do nosso site irmão JSON Formatter, que usa as mesmas convenções @ e #text.
O que acontece com os namespaces?
Nomes com prefixo, como soap:Body, são mantidos como chaves por padrão, e as declarações xmlns aparecem como atributos. Marque Ignorar prefixos de namespace para obter nomes simples como Body, sem as declarações.
Por que um valor vira string em vez de número?
Valores como 007 ou 1,000 não são números decimais simples, então continuam como strings para evitar perda de dados. Desmarque Converter números e true/false para manter todos os valores como strings.