Convierte JSON a XML sencillo y legible, con tus números y textos copiados exactamente como se escribieron.
Qué hace
JSON to XML convierte JSON en XML sencillo y legible: una línea de declaración, un elemento raíz y un elemento por cada valor, con el nombre de su clave. Una lista se convierte en el mismo elemento repetido una vez por cada entrada. Los números y los textos se copian exactamente como se escribieron.
XML no tiene números, true o false, null ni listas, así que el resultado sirve para leerse y usarse como XML, no para volver al mismo JSON. La herramienta o escribe el XML o se niega y te explica por qué. Nunca cambia tus textos ni tus números; lo único que ajusta es una clave que XML no admite como nombre, con una regla fija descrita más abajo.
Qué admite
- Cualquier valor JSON puede ser el nivel superior. El resultado empieza con la línea <?xml version="1.0" encoding="UTF-8"?> y tiene un único elemento raíz, root, que contiene todo el documento.
- Cada miembro de un objeto se convierte en un elemento con el nombre de su clave. Un miembro cuyo valor es una lista se convierte en ese elemento repetido una vez por cada entrada, en orden. Una lista en el nivel superior, o dentro de otra lista, se escribe con elementos item.
- Las cadenas, los números y los booleanos se escriben como el texto del elemento. Los números se copian exactamente como se escribieron: 9007199254740993, 2.370 y 1e400 salen sin cambios.
- null y el objeto vacío se escriben como un elemento de etiqueta única, como <note/>. La cadena vacía se escribe como un elemento sin nada entre sus etiquetas, como <note></note>. Una lista vacía que es el valor de una clave no deja ningún elemento.
- Una clave que no es un nombre XML válido se ajusta: cada carácter que un nombre XML no puede contener se convierte en un guion bajo, una clave vacía pasa a ser _, y un nombre que empieza por un dígito, un guion o un punto, o por las letras xml en cualquier combinación de mayúsculas y minúsculas, recibe un guion bajo delante. Así, «1abc» pasa a ser _1abc, «with space» pasa a ser with_space y «x:y» pasa a ser x_y. Las letras acentuadas, otros alfabetos y los emojis se conservan.
- Cuando dos claves acaban con el mismo nombre, por ejemplo «a b» y «a_b», se conservan todos los elementos, en orden.
- Los caracteres & < > del texto se escapan, y un retorno de carro se escribe como , así que un <b> literal dentro de una cadena nunca se convierte en un elemento y un lector de XML devuelve cada cadena exactamente como era. Las comillas se dejan como están.
Conviene saber
- El XML no se puede convertir de nuevo en el mismo JSON. XML no tiene tipos, así que el número 1 y la cadena «1» se escriben igual, una lista con una entrada parece un valor normal, una lista vacía no deja ningún elemento, y null y el objeto vacío son ambos elementos de etiqueta única. Si necesitas conservar esas diferencias, conserva el JSON.
- Un nombre repetido dentro de un objeto se rechaza. Los lectores de XML discrepan sobre qué valor prevalece, así que la herramienta no conserva uno y descarta el otro. Haz los nombres únicos y convierte de nuevo.
- Una cadena con un escape subrogado sin pareja, como \ud800, se rechaza porque no se puede escribir con fidelidad en XML.
- XML 1.0 prohíbe la mayoría de los caracteres de control (como \u0000, el retroceso \b y el avance de página \f), salvo el tabulador, el salto de línea y el retorno de carro, y también los caracteres U+FFFE y U+FFFF. Una cadena que contiene alguno se rechaza. La herramienta nunca cambia ni elimina caracteres de tu texto. Un carácter prohibido en una clave no provoca un rechazo, porque la clave se ajusta como cualquier otro nombre no válido.
- Todo rechazo indica su motivo concreto. Con los caracteres prohibidos no señala línea y columna, así que busca en tu JSON escapes de caracteres de control como \u0000.
- El XML es más grande que el JSON de origen (etiquetas, sangría, escapes). Si el resultado completo superara el límite de tamaño, se rechaza con una vista previa incompleta (mira abajo).
Cómo usarla
- Pega o escribe tu JSON en el cuadro de entrada. No se ejecuta nada mientras escribes.
- Elige la sangría («2 espacios» o «4 espacios») y pulsa «Convertir».
- Lee el XML junto a tu entrada. Si se rechaza la conversión, el mensaje explica el motivo.
- Pulsa «Copiar» para poner el XML en el portapapeles, o «Descargar» para guardarlo como converted.xml.
Ejemplos
XML sencillo a partir de JSON
Pega este JSON y pulsa «Convertir». El resultado empieza con una declaración y tiene un elemento raíz. La clave «first name» no es un nombre XML válido, así que pasa a ser first_name. La lista se escribe como el elemento tags repetido una vez por cada entrada, el número 2.50 conserva el cero final, y null se convierte en un elemento de etiqueta única.
{ "first name": "Ada", "tags": ["json", "xml"], "score": 2.50, "note": null }<?xml version="1.0" encoding="UTF-8"?>
<root>
<first_name>Ada</first_name>
<tags>json</tags>
<tags>xml</tags>
<score>2.50</score>
<note/>
</root>Un carácter que XML no admite
El texto contiene \u0007, el escape del carácter de campana. XML 1.0 no lo admite, así que la herramienta se niega en lugar de cambiar el texto.
{"note": "ring\u0007"}Una cadena contiene un carácter que XML 1.0 no admite, como un carácter de control. Cambiar el texto alteraría tus datos, así que se rechazó la conversión.
Nombres repetidos
El nombre «id» aparece dos veces en el mismo objeto, así que la herramienta se niega en lugar de elegir uno de los dos valores.
{"id": 1, "id": 2}Un objeto repite el nombre de un miembro. Cada programa decide qué valor prevalece, así que se rechazó la conversión en lugar de conservar un valor y descartar el otro. Haz los nombres únicos e inténtalo de nuevo.
Lo que XML no puede distinguir
Pega este JSON y pulsa «Convertir». En el resultado, n y s son iguales, one parece un valor normal, empty no aparece, y obj y nil son ambos elementos de etiqueta única.
{ "n": 1, "s": "1", "one": [1], "empty": [], "obj": {}, "nil": null }<?xml version="1.0" encoding="UTF-8"?>
<root>
<n>1</n>
<s>1</s>
<one>1</one>
<obj/>
<nil/>
</root>Límites y privacidad
Límites de tamaño
- Entrada: hasta 2.000.000 bytes de texto en UTF-8 (unos 2 MB). Las letras acentuadas y los emojis ocupan más de un byte cada uno. Una entrada mayor se rechaza.
- Resultado: también hasta 2.000.000 bytes. Si el resultado completo fuera mayor, la herramienta muestra solo una vista previa incompleta de los primeros 100.000 bytes, y esa vista previa no se puede copiar ni descargar.
- Anidamiento: hasta 256 niveles de objetos y listas dentro de otros. Un JSON más profundo se rechaza porque supera lo que procesa la herramienta.
- Tiempo: una ejecución que tarda más que su límite de tiempo se detiene. Prueba con una entrada más pequeña.
Tu privacidad
El texto que escribes o pegas, o abres desde un archivo local, se procesa localmente en tu navegador, en un Web Worker dedicado. Nunca se sube ni se envía al servidor (un archivo que abres se lee solo en tu navegador), y no se escribe en el almacenamiento, en cookies ni en la barra de direcciones.
«Copiar» pone el resultado en el portapapeles y «Descargar» lo guarda como archivo, pero solo cuando pulsas el botón. El archivo se crea en tu navegador, así que no se sube nada.
Para conocer todos los detalles, consulta la Política de privacidad
Herramientas y páginas relacionadas
Tu texto se queda en la página cuando cambias de herramienta en la misma pestaña, así que puedes probar el mismo texto en otra. Recargar o cerrar la pestaña lo termina.