Conversor de XML y JSON
Convierte XML a JSON y JSON a XML en los dos sentidos, con control de los atributos y de la indentación. Todo en tu navegador, sin subir nada.
Qué hace esta herramienta
Convierte XML a JSON y JSON a XML en los dos sentidos, con un botón para invertir que lleva el resultado a la entrada. Todo ocurre en tu navegador.
Es la conversión que hace falta cuando te toca consumir un servicio SOAP desde una aplicación moderna, cuando heredas un feed en XML y tu código habla JSON, o cuando quieres inspeccionar la estructura de un documento con las herramientas a las que estás acostumbrado.
Las dos cosas que XML tiene y JSON no
Aquí está todo lo importante de esta herramienta. La conversión no es simétrica porque los dos formatos no expresan lo mismo, y saberlo evita sorpresas.
Los atributos
En XML, <precio moneda="MXN">100</precio> tiene un atributo y un contenido. En JSON no existe esa distinción: solo hay claves. Si moneda se convirtiera en una clave normal, sería indistinguible de un elemento hijo llamado moneda, y al convertir de vuelta saldría en el sitio equivocado.
La solución es marcarlos con un prefijo, @_ por defecto:
{ "precio": { "@_moneda": "MXN", "#text": 100 } }
Así la vuelta a XML sabe qué era atributo y qué era contenido. Puedes cambiar el prefijo o descartar los atributos por completo en los ajustes.
Uno o muchos
Este es el que muerde de verdad. En XML, un elemento que aparece una vez y otro que aparece tres veces se escriben igual: repitiendo la etiqueta. En JSON hay que decidir entre valor suelto y array.
Con dos <linea> obtienes un array. Con una sola, obtienes un objeto. El mismo esquema produce JSON de formas distintas según cuántos hijos traiga el documento concreto.
Si vas a consumir el resultado por código, esta es la trampa que hay que contemplar: un cliente que espera siempre un array se rompe el día que llega un pedido con una sola línea. La defensa habitual es normalizar en tu propio código, envolviendo en array lo que venga suelto.
Qué se pierde en la ida y vuelta
La estructura y los datos sobreviven al viaje completo. Lo que no:
- Los comentarios. JSON no tiene comentarios donde guardarlos.
- Las secciones CDATA. El contenido se conserva, pero deja de estar marcado como CDATA.
- El orden entre elementos distintos, que en JSON depende del orden de las claves del objeto.
- La declaración
<?xml ... ?>y los espacios de nombres con prefijo, que se aplanan.
Si lo que necesitas es conservar el documento tal cual está escrito, no pases por JSON: usa el formateador de XML, que sí lo respeta todo.
Sobre el motor
La conversión usa fast-xml-parser (licencia MIT) en ambos sentidos. Los errores de sintaxis, tanto del XML como del JSON, se muestran con su línea y columna.
Preguntas frecuentes
¿Por qué aparecen claves con @_ delante?
Porque JSON no distingue un atributo de un elemento hijo: en XML, id="7" y un elemento id son cosas distintas, y en JSON las dos serían una clave llamada id. El prefijo marca cuáles venían de atributos para poder devolverlos a su sitio al convertir de vuelta. Puedes cambiarlo o desactivar los atributos en los ajustes.
¿Un elemento que aparece una sola vez se convierte en array?
No, y ese es el punto delicado de la conversión. Si un elemento aparece dos veces se convierte en array, y si aparece una vez en valor suelto. Eso significa que dos documentos con la misma estructura pueden dar JSON de formas distintas según cuántos hijos tengan. Si vas a consumir el resultado por código, contémplalo.
¿La conversión de ida y vuelta devuelve el original exacto?
La estructura y los datos sí, pero el formato no necesariamente: se pierden los comentarios y las secciones CDATA, porque JSON no tiene dónde guardarlos. Si lo que necesitas es conservar el documento tal cual, usa el formateador de XML en lugar de pasar por JSON.
¿Se sube mi archivo a algún servidor?
No. La conversión ocurre entera en tu navegador. Puedes comprobarlo en la pestaña de red de las herramientas de desarrollo: al convertir no sale ninguna petición.
Reseñas y valoraciones
Aún no hay reseñas. ¡Sé la primera persona en opinar!
Herramientas relacionadas
Otras del catálogo que se usan bien junto a esta.