Cómo convertir XML a JSON
- Pega XML, arrastra un archivo
.xmlal editor o cárgalo desde una URL. El JSON aparece mientras escribes. - Ajusta el prefijo de atributos y la clave de texto, y decide si quieres usar siempre arrays, convertir números y booleanos o ignorar los prefijos de espacio de nombres.
- Copia el JSON o descárgalo como archivo
.json.
Cómo se convierte XML a JSON
| XML | JSON |
|---|---|
<name>Ada</name> | "name": "Ada" |
<price>9.90</price> | "price": 9.90 – se conservan los dígitos exactos |
<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]]> | el texto "a < b" |
<soap:Body> con Ignorar prefijos de espacio de nombres | "Body" |
Por qué es importante “Usar siempre arrays”
Un elemento que aparece una vez se convierte en un valor único, pero si aparece dos veces se convierte en un array. El código que lee el JSON tiene que manejar entonces ambas formas, un error clásico cuando una lista a veces contiene un solo elemento. Marca Usar siempre arrays para los elementos hijos para obtener arrays en todas partes: la estructura es predecible a cambio de algunos corchetes de más.
XML a JSON en código
- Python:
xmltodict.parse(text)(paquete xmltodict) - JavaScript:
new XMLParser({ ignoreAttributes: false }).parse(text)(paquete fast-xml-parser) - C#:
JsonConvert.SerializeXmlNode(doc)(Newtonsoft.Json) - Línea de comandos:
yq -p xml -o json file.xml
Preguntas frecuentes
¿La conversión es sin pérdidas?
Se conservan los nombres de los elementos, los atributos y el texto, y los números mantienen sus dígitos exactos. Los comentarios, las instrucciones de procesamiento y la posición del texto entre elementos hijos (contenido mixto) no se pueden representar en JSON.
¿Puedo volver a convertir JSON a XML?
Sí, con el conversor de JSON a XML de nuestro sitio hermano JSON Formatter, que usa las mismas convenciones @ y #text.
¿Qué pasa con los espacios de nombres?
Los nombres con prefijo, como soap:Body, se mantienen como claves por defecto, y las declaraciones xmlns aparecen como atributos. Marca Ignorar prefijos de espacio de nombres para obtener nombres simples como Body sin las declaraciones.
¿Por qué un valor es una cadena y no un número?
Valores como 007 o 1,000 no son números decimales simples, así que se quedan como cadenas para evitar pérdidas de datos. Desmarca Convertir números y true/false para mantener todos los valores como cadenas.