Herramientas
Guías

Conversor JSON ↔ XML

JSON

Convierte entre JSON y XML. Los objetos anidados se envuelven bajo un elemento raíz configurable.

100 % del lado del cliente Sin backend
Entrada
Salida
En esta página

¿Qué es un conversor JSON ↔ XML?#

JSON y XML son dos formas distintas de anotar datos estructurados y no son intercambiables a nivel de sintaxis: uno usa llaves y corchetes, el otro usa etiquetas con corchetes angulares. Un conversor entre ambos no «comprime» ni «codifica»; vuelve a expresar el mismo árbol de valores en la otra notación, de modo que un sistema que solo entiende XML puede consumir datos que llegaron como JSON y viceversa.

La correspondencia es sobre todo mecánica, pero tiene dos aristas conocidas. Primera: XML exige exactamente un elemento raíz que envuelva todo, mientras que JSON permite sin problema que el nivel superior sea un objeto o un array sueltos, así que el paso de JSON a XML siempre implica elegir un nombre para esa envoltura exterior. Segunda: los elementos XML pueden llevar atributos (<a id="7">), para los que JSON no tiene equivalente nativo; la convención habitual es aparcarlos bajo claves con prefijo @, y cualquier texto que conviva con atributos bajo una clave #text.

Esta página convierte en ambas direcciones dentro del navegador: de JSON a XML (envolviendo tu valor bajo un elemento raíz que tú nombras) y de XML a JSON (desempaquetando los atributos en claves @ y, por defecto, eliminando la raíz exterior para que recuperes el valor interior).

Cómo usarlo#

  1. Elige la dirección con el conmutador JSON → XML / XML → JSON en la parte superior izquierda de la barra de herramientas.
  2. Escribe o pega en el panel de Entrada a la izquierda.
    • JSON → XML espera JSON válido. Cualquier valor de nivel superior se envuelve bajo el elemento raíz.
    • XML → JSON espera un documento XML bien formado. El único elemento exterior se desempaqueta automáticamente, así que obtienes su contenido interior como JSON.
  3. En modo JSON → XML, ajusta el campo Elemento raíz (por defecto root) para nombrar la etiqueta envoltorio, por ejemplo user, feed, response. XML obliga a tener una única raíz, así que este nombre siempre es necesario.
  4. El resultado aparece en vivo en el panel de Salida. Pulsa Copiar para llevártelo.
  5. Ejemplo carga un documento pequeño adecuado a la dirección actual; Limpiar vacía ambos paneles.

Características principales#

  • Ambas direcciones en una sola herramienta. Un único conmutador alterna entre JSON a XML y XML a JSON, y el panel de entrada se reajusta solo.
  • Elemento raíz configurable. Como el XML no puede existir sin un único elemento exterior, tú nombras la envoltura; el conversor se encarga de ella para cualquier forma de nivel superior del JSON.
  • Declaración XML correcta. La salida de JSON a XML comienza con el prólogo estándar <?xml version="1.0" encoding="UTF-8"?> y se embellece con sangría de dos espacios.
  • Los atributos hacen el viaje de ida y vuelta. El paso de XML a JSON conserva los atributos de los elementos bajo claves con prefijo @, y el texto que acompaña a los atributos se guarda bajo #text, así que no se descarta nada en silencio.
  • Análisis con detección de números. XML es todo texto; el analizador convierte los valores de los elementos con aspecto numérico de vuelta a números JSON (así, <age>36</age> pasa a 36, no a "36").

Ejemplo detallado#

JSON → XML#

Con la dirección en JSON → XML y la raíz llamada root, carga Ejemplo:

{
  "name": "Ada",
  "age": 36,
  "skills": ["math", "logic"]
}

El conversor envuelve todo bajo <root> y expande el array como exige XML: cada elemento se convierte en su propia etiqueta con el mismo nombre:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>Ada</name>
  <age>36</age>
  <skills>math</skills>
  <skills>logic</skills>
</root>

Cambia el campo Elemento raíz a person y la envoltura pasa a ser <person> / </person>: la estructura interior queda intacta.

XML → JSON#

Cambia a XML → JSON y carga Ejemplo:

<?xml version="1.0"?>
<root><name>Ada</name><age>36</age></root>

El <root> exterior se elimina y los elementos interiores se convierten en propiedades JSON, con 36 reconocido como número:

{
  "name": "Ada",
  "age": 36
}

Los atributos también se conservan. Un elemento como <a id="7">label</a> produce { "@id": "7", "#text": "label" }: el atributo queda bajo @id, el texto bajo #text, y ninguno se pierde.

Preguntas frecuentes#

¿Por qué mi array JSON se convierte en elementos XML repetidos en vez de en una sola envoltura con elementos dentro?#

Porque así es como XML representa una lista: no existe la construcción «array», así que cada elemento tiene que ser su propia etiqueta con el mismo nombre. Un array JSON ["math", "logic"] bajo la clave skills se convierte por tanto en dos elementos hermanos <skills>, no en un único <skills> que contenga hijos. Es la correspondencia estándar y apta para esquemas: los consumidores XML la esperan.

En XML → JSON, ¿a dónde fue mi elemento exterior?#

El conversor desempaqueta automáticamente la raíz única. XML obliga a tener exactamente un elemento de nivel superior, pero en JSON esa envoltura suele ser redundante: <root><name>Ada</name></root> no aporta en root ninguna información que JSON necesite. Eliminarla te entrega directamente el valor interior con significado. Si de verdad necesitas conservar la raíz, mantenla como un elemento normal y accede a ella por su nombre.

¿Por qué 36 es un número en la salida y no una cadena?#

XML no tiene un tipo de número separado: todo lo que hay entre las etiquetas es texto. El analizador aplica coerción numérica, así que un elemento cuyo texto parece un número (36, 3.14) vuelve como número JSON. Es práctico para datos habituales, pero también significa que un valor como un código de producto <code>007</code> perderá sus ceros iniciales: guarda esos valores como atributos o acéptalos como cadenas.

¿Puede convertir cualquier documento XML?#

Uno bien formado, sí, incluido espacios de nombres en etiquetas, atributos, elementos con autocierre y declaraciones. No resuelve DTD, no valida contra un esquema ni recupera entidades externas: el proceso es local y solo de texto, lo cual además significa que es seguro pegar documentos en los que no confías plenamente.