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.

Ready
Ln 1, Col 1

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

  1. 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).
  2. 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.
  3. 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.
  4. 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.
  5. 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 &amp;
En el texto y los atributos XML, & inicia una entidad. Escribe &amp; para un ampersand, &lt; para <, o envuelve el texto en <![CDATA[ ... ]]>.
Entidad desconocida &nbsp;
Solo están definidas las cinco entidades de XML (&lt; &gt; &amp; &quot; &apos;) y las referencias de carácter como &#160;. &nbsp; viene de HTML; usa &#160; 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 name pasa a <first_name> y 2fa a <_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.