Convertidor de JSON a XML
Pega JSON a la izquierda, obtén XML bien formado a la derecha. Las claves con prefijo @_ se vuelven atributos. Sin subida.
- Pega JSON en el área de texto izquierda.
- Haz clic en "Convertir a XML". Las claves JSON se vuelven elementos; las @_claves se vuelven atributos.
- Copia o descarga el XML formateado.
- Envuelve tus datos con una sola clave raíz — XML requiere un elemento de nivel superior.
¿Qué hace?
Convierte un objeto JSON a XML usando la convención de fast-xml-parser. Las propiedades de objeto se vuelven elementos hijos; las propiedades con prefijo `@_` se vuelven atributos en el padre; los arrays se vuelven elementos hermanos repetidos con el mismo nombre de etiqueta. Números, booleanos y cadenas se emiten como contenido de texto. La salida está sangrada para legibilidad.
Ejemplo
Entrada JSON:
{
"root": {
"@_version": 1,
"name": "Ada",
"tags": ["math", "logic"]
}
} Salida XML:
<root version="1">
<name>Ada</name>
<tags>math</tags>
<tags>logic</tags>
</root> Trampas comunes de JSON a XML
XML es más estricto que JSON con la estructura. Los patrones a continuación cubren la mayor parte de las salidas sorprendentes.
- Sin raíz única. XML requiere exactamente un elemento raíz. Los objetos JSON con múltiples claves de nivel superior producen múltiples raíces, lo cual es XML inválido. Envuelve tu entrada en una sola clave: `{"root": {"a":1, "b":2}}`.
- Array de nivel superior. Un array JSON `[{"a":1},{"a":2}]` no tiene nombre de elemento raíz que usar. Envuélvelo: `{"items": [{"a":1},{"a":2}]}`. Cada entrada del array se vuelve entonces un elemento `<items>`.
- Nombres de elemento con espacios o símbolos. Los nombres de elementos XML no pueden contener espacios, empezar con un dígito ni contener `:`, `/`, `<`, etc. Sanea las claves JSON antes de convertir — sustituye espacios por `_`, prefija dígitos con una letra.
- Atributos vs. elementos. Una clave JSON `id` se vuelve un elemento hijo `<id>1</id>`. Para hacerla un atributo (`<user id="1">`), prefija la clave con `@_`: `{"user":{"@_id":1}}`. El prefijo se quita en la salida.
- Valores null. JSON `null` se vuelve un elemento vacío (`<x/>`). Si necesitas omitirlo por completo, quita los valores null de tu JSON antes de convertir.
- Caracteres especiales en texto. XML escapa `<`, `>`, `&`, `"`, y `\'` automáticamente. Tu cadena JSON `"<b>hi</b>"` se vuelve el texto `<b>hi</b>`, no elementos anidados. Usa estructura JSON intermedia si quieres anidamiento real.
Preguntas frecuentes
¿Cómo obtengo una declaración XML `<?xml version="1.0"?>`?
Anteponla a la salida tú mismo — el conversor no emite declaración. Para XML UTF-8, la declaración es técnicamente opcional pero comúnmente incluida: `<?xml version="1.0" encoding="UTF-8"?>` seguido de tu XML convertido.
¿Los arrays JSON se preservan como elementos repetidos?
Sí. `{"tags":["a","b"]}` se vuelve `<tags>a</tags><tags>b</tags>` — dos hermanos con la misma etiqueta, que es la representación XML estándar de un valor repetido.
¿Puedo obtener arrays anidados estilo JSON en XML?
No directamente. XML no tiene concepto nativo de array; solo hermanos repetidos. Los arrays anidados en JSON se vuelven una estructura XML más plana donde el contexto determina el agrupamiento. El round-trip XML → JSON → XML por esta herramienta preserva el subconjunto round-trippable.
¿Cómo se manejan las fechas?
JSON no tiene tipo Date — las fechas suelen ser ya cadenas ISO 8601. Esas se vuelven contenido de texto del elemento sin cambios. Si tu XML aguas abajo espera un formato de fecha particular, asegúrate de que el JSON use ese formato.
¿Mi JSON se sube?
No. Todo se ejecuta en tu navegador — tu entrada se parsea y convierte por JavaScript en esta página y nunca se envía a un servidor.
¿El round-trip JSON → XML → JSON preservará mis datos?
Para datos estructurados típicos con la convención de atributo @_, sí — semánticamente. Algunos casos límite (texto mixto + elementos hijos, orden de atributos vs. orden de elementos) pueden normalizarse. Si la equivalencia exacta byte a byte importa, no hagas round-trip por XML.