Cómo convertir entre JSON y XML

JSON a XML convierte un objeto o un array JSON en un documento XML; XML a JSON lee un documento XML como JSON. Las dos direcciones se ejecutan en la página, así que nada de lo que pegas se sube, y el resultado aparece en el panel situado debajo de los botones.

Los dos botones de ejemplo cargan el mismo catálogo pequeño en los dos formatos: si conviertes el ejemplo JSON obtienes el ejemplo XML, y si conviertes ese ejemplo XML de vuelta recuperas el ejemplo JSON.

  1. Carga un ejemplo con Ejemplo XML o Ejemplo JSON, o pega tu propio objeto JSON, array JSON o documento XML en el área de texto.
  2. Pulsa JSON a XML o XML a JSON. La línea de estado encima del resultado indica el elemento raíz y el número de elementos y atributos, o explica por qué no se ha escrito nada.
  3. Cuando la entrada no se puede analizar, el mensaje indica el carácter en JSON o la línea y la columna en XML, y el resultado anterior se borra para no dejar nada antiguo en pantalla.
  4. Formatear JSON sangra la salida JSON con dos espacios cuando está marcado y la deja en una sola línea compacta cuando no lo está; la salida XML siempre va sangrada. Copiar resultado copia el texto y Limpiar vacía el área de texto.

Qué hace la conversión con tus datos

Cómo se convierte JSON en XML

El documento tiene exactamente un elemento raíz. Una única clave de nivel superior se convierte en ese elemento — {"user":{"name":"Ann"}} se escribe como <user><name>Ann</name></user> —, mientras que varias claves, un array de nivel superior y una única clave que contiene un array se envuelven en <root>; los elementos de un array sin nombre propio se escriben como <item>.

Dentro de un elemento, una clave se convierte en un elemento hijo y un array repite su elemento una vez por elemento de la lista. Una clave que empieza por - se convierte en un atributo y #text en el texto del elemento, así que {"a":{"-x":"1","#text":"hi"}} se escribe como <a x="1">hi</a>, la misma forma que produce la dirección XML a JSON, que es lo que permite encadenar las dos direcciones. null y "" se escriben como <name />.

Los nombres se reparan en lugar de escribirse mal: un espacio, < o & en una clave, o una clave que empieza por un dígito, se escribe con un guion bajo, y la línea de estado indica cuántos nombres se han cambiado. El marcado dentro de un valor se escapa, y las comillas, los saltos de línea y los tabuladores de un valor de atributo se escriben como &quot;, &#10; y &#9; para que el documento siga siendo válido.

Cómo se convierte XML en JSON

Los atributos vuelven con el prefijo -, un elemento que solo contiene texto se convierte en una cadena, un elemento con hijos se convierte en un objeto y un nombre que aparece más de una vez se convierte en un array: <r><i>1</i><i>2</i></r> da {"r":{"i":["1","2"]}}, mientras que un solo <i> sigue siendo una cadena. XML no tiene tipos, así que los valores llegan como cadenas: 24.90 en XML es "24.90" en JSON.

Un elemento sin contenido se convierte en una cadena vacía, el texto dentro de un elemento se conserva tal como está escrito, con sus espacios y saltos de línea, y la sangría entre elementos se ignora. Los comentarios se omiten, las secciones CDATA se leen como texto y el texto que comparte un elemento con elementos hijos se recoge en una clave #text.

Privacidad, tamaño y límites

La conversión se ejecuta en la página: con la red bloqueada sigue funcionando y no envía ninguna petición, así que un documento que no puede salir de tu equipo se puede convertir aquí. Los resultados de hasta 120.000 caracteres se resaltan con colores y los más grandes se muestran como texto plano: 1.000 filas (45 KB de JSON a 99 KB de XML) tardan unos 0,8 segundos con resaltado, mientras que 5.000 filas (233 KB a 503 KB, y de vuelta a 618 KB de JSON) tardan unos 0,2 segundos en total, medido en Chrome en esta página.

Es un conversor de formato, no una herramienta de esquemas: no hay validación XSD ni DTD, no se gestionan espacios de nombres (los dos puntos de un nombre se escriben como guion bajo) y no se deducen tipos. Un documento anidado miles de niveles se rechaza con un mensaje en lugar de dejar un documento a medias en pantalla.

Herramientas recientes: