Conversor de JSON y XML
Se ejecuta en tu navegador; no se sube nada
Convierte JSON a XML o XML a JSON, con atributos, elementos repetidos y espacios de nombres tratados de forma explícita.
Input · JSON
Output · XML
Converted XML appears here as you type.
JSON y XML en las APIs
JSON y XML describen datos estructurados como texto. JSON tiene objetos, arrays y valores con tipo, como números y booleanos. XML tiene elementos anidados, atributos y texto, y todo es texto salvo que un esquema diga lo contrario. Los servicios web SOAP, los feeds RSS y Atom y muchos sistemas bancarios, de pagos y de administraciones públicas siguen usando XML, así que las aplicaciones basadas en JSON a menudo tienen que traducir.
Los dos formatos no se corresponden uno a uno, así que este conversor sigue una convención habitual y reversible. Un elemento se convierte en una clave y su texto en el valor. Los atributos pasan a ser claves que empiezan por @, como @id. Cuando un elemento tiene atributos o elementos hijos además de texto, el texto va en #text. Un elemento que se repite se convierte en un array. Los prefijos de espacio de nombres se mantienen tal cual, así que <soap:Body> se convierte en "soap:Body" y la declaración en "@xmlns:soap".
XML no tiene tipos, así que por defecto todo sigue siendo una cadena: <zip>007</zip> da "007" y <id>7</id> da "7". Activa Numbers para leer como valores con tipo los que están escritos exactamente como números JSON, y también true y false (007 sigue siendo texto). En el sentido contrario, el elemento raíz sale de la única clave de primer nivel del JSON, o de Root name cuando hay varias.
Cómo usar esta herramienta
- 1Elige JSON → XML o XML → JSON en la barra de herramientas. Pega tus datos en el panel Input, arrastra un archivo encima o pulsa Ctrl+O para abrir uno (hasta 5 MB).
- 2Lee el resultado en el panel Output; se actualiza mientras escribes. Las notas encima de la salida indican qué tuvo que cambiar la conversión, como claves renombradas o comentarios omitidos.
- 3Para XML → JSON, elige Always arrays para que cada elemento hijo sea un array (más fácil de leer desde el código) y Numbers para convertir números y booleanos. Para JSON → XML, define Root name y si quieres empezar con una declaración XML.
- 4Si la entrada no es válida, el panel de salida da la línea y la columna; pulsa F8 para poner el cursor en el problema.
- 5Swap (Shift+Alt+S) pasa la salida a la entrada e invierte el sentido, para comprobar el viaje de ida y vuelta. Copia el resultado o descárgalo con Ctrl+S.
Solución de problemas
- Se esperaba </item> para cerrar el elemento abierto en la línea 3
- Las etiquetas deben cerrarse en orden inverso al que se abrieron, con el mismo nombre y las mismas mayúsculas. Revisa el elemento que nombra el mensaje: falta la etiqueta de cierre o está mal escrita.
- Un
&suelto debe escribirse como& - En el texto y los atributos XML,
&inicia una entidad. Escribe&para un ampersand,<para<, o envuelve el texto en<![CDATA[ ... ]]>. - Entidad desconocida
- Solo están definidas las cinco entidades de XML (
<>&"') y las referencias de carácter como . viene de HTML; usa en su lugar. - Un segundo elemento raíz: XML tiene exactamente uno
- Un documento XML debe tener un único elemento de primer nivel. Envuelve los elementos en un elemento padre.
- Claves renombradas en la salida XML
- Los nombres XML no pueden contener espacios ni la mayoría de los signos de puntuación, ni empezar por un dígito, así que
first namepasa a<first_name>y2faa<_2fa>. La nota lista cada cambio de nombre; cambia las claves en el JSON si el XML debe usar otros nombres.
Preguntas frecuentes
¿Cómo se convierten los arrays de JSON a XML?
Cada elemento del array se convierte en un elemento XML con el nombre de la clave del array, repetido una vez por elemento: "tag": ["a", "b"] pasa a <tag>a</tag><tag>b</tag>. Un array de primer nivel se envuelve en el elemento raíz con un <item> por entrada. Un array vacío no produce elementos, así que no puede recuperarse al volver a JSON; las notas avisan cuando pasa.
¿Qué pasa con los comentarios, CDATA y las instrucciones de procesamiento?
Las secciones CDATA se convierten en texto normal. Los comentarios y las instrucciones de procesamiento no tienen sitio en JSON y se omiten, con una nota. El DOCTYPE se ignora y las entidades que declara no se expanden.
¿Y el contenido mixto, como `<p>Hello <b>world</b></p>`?
Los elementos hijos se convierten en claves como siempre y el texto que los rodea se reúne en #text. JSON no puede registrar en qué punto estaba el texto entre los elementos, así que ese orden se pierde; el conversor añade una nota cuando ocurre.
¿La conversión se hace en un servidor?
No. El XML se analiza y se genera en tu navegador, y nada de lo que pegas o abres se sube. Para que sobreviva a una recarga, lo que pegas se guarda en el almacenamiento de sesión de esta pestaña hasta que lo borras o cierras la pestaña. Copy link pone la entrada en el enlace después de #, una parte que los navegadores nunca envían a un servidor, pero cualquiera a quien le des el enlace podrá leerla.