Convierte JSON y XML localmente
Convierte JSON a XML o XML a JSON en tu navegador. Trabaja con atributos y elementos repetidos, y revisa qué cambia en la conversión.
Espacio de trabajo de la herramienta
Usa @attributes para atributos string y #text para texto de hojas. Arrays producen elementos repetidos. Nombres ASCII; sin namespaces ni contenido mixto. Leer explicación completa del modelo
Pega texto o elige un archivo local UTF-8. Pulsa Convertir para procesarlo.
Listo para recibir entrada.
Web Workers no disponibles. No se puede convertir aquí; la entrada sigue local.
Errores y avisos de conversión
Se omitieron detalles de diagnóstico; el error causal se conserva.
Copia y descarga usan la salida completa vigente.
Modelo y subconjunto admitido
Usar la única propiedad raíz requiere objeto JSON con una propiedad: su nombre será la raíz XML. Envolver con nombre raíz añade la raíz elegida al contenido. Un array raíz usa el nombre de ítem; arrays de propiedad repiten su nombre. Arrays no vacíos y sin anidamiento directo. @attributes es objeto de valores string; #text es string permitido solo sin hijos, incluso vacío o whitespace. Atributos XML vuelven en @attributes; una hoja con atributos incluye #text. Hijos contiguos del mismo nombre pasan a arrays; grupos intercalados se rechazan para conservar orden. Una hoja XML vacía sin atributos vuelve como string JSON vacío; con atributos conserva #text="" dentro de un objeto. Números y booleanos pierden tipo; null, objetos vacíos y arrays singleton pierden intención. Subconjunto de datos XML 1.0: nombres ASCII de 1–64 caracteres, sin prefijo xml, namespaces, DTD ni processing instructions. Solo entidades predefinidas y referencias numéricas se decodifican una vez. Comentarios, delimitadores CDATA, declaración y whitespace de presentación se omiten con avisos. Espacios de hojas conservados; se normalizan finales de línea XML y whitespace literal de atributos. Sin inferencia de tipos ni reparación automática.
Texto y atributos XML siguen strings, incluido 00123. La raíz se conserva; no se infieren tipos JSON.
XML pierde tipos JSON e intención de arrays de un ítem. Sin round-trip universal: null y objeto vacío pueden ser el mismo elemento vacío. XML → JSON conserva strings y la raíz real.
Límites
Entrada: 1.000.000 unidades UTF-16 / 2.000.000 bytes UTF-8. Archivo: 2.000.000 bytes. Profundidad JSON/XML: 100/40. Salida: 2.000.000 unidades UTF-16 / 4.000.000 bytes UTF-8.
Procesamiento local. Los documentos no se suben, registran ni persisten.
Convierte un catálogo de JSON a XML
Pega JSON o carga un archivo local .json, elige JSON → XML y pulsa Convertir. En este ejemplo, la única propiedad raíz se convierte en el elemento XML catalog. Los dos artículos forman dos elementos item y @attributes aporta sus atributos.
{"catalog":{"@attributes":{"id":"00123"},"item":[{"@attributes":{"code":"a"},"#text":"uno & dos"},{"@attributes":{"code":"b"},"#text":"tres"}]}}
<catalog id="00123"><item code="a">uno & dos</item><item code="b">tres</item></catalog>
La opción predeterminada Usar la única propiedad raíz necesita un objeto con una sola propiedad ordinaria. Para otras entradas, elige Envolver con nombre raíz: añade un elemento que las rodea, llamado inicialmente root. Si la raíz es un array, cada elemento usa el nombre item por defecto; este ajuste no cambia los arrays dentro de propiedades. Puedes elegir salida compacta o sangría de 2 o 4 espacios.
Usa @attributes para un objeto cuyos valores sean cadenas de texto. Usa #text para el texto de un elemento sin hijos; su valor también debe ser una cadena, aunque esté vacía. Los arrays repiten el nombre de su propiedad. No se admiten arrays vacíos ni arrays anidados directamente dentro de otros arrays.
Convierte XML a JSON
Elige XML → JSON, pega XML o abre un archivo .xml y convierte. La raíz XML se conserva como propiedad JSON. Los atributos aparecen bajo @attributes.
El texto y los atributos siguen siendo cadenas: 00123 conserva los ceros iniciales y true no se convierte en booleano. Un elemento sin atributos ni hijos pasa a ser una cadena. Si tiene atributos pero no hijos, incluye también #text, incluso cuando el texto está vacío.
Los elementos consecutivos con el mismo nombre forman un array. Una secuencia a/b/a se rechaza porque agrupar los dos elementos a alteraría su orden.
Qué puede cambiar al convertir de ida y vuelta
Revisa los avisos antes de usar el resultado. XML no conserva todas las diferencias que existen en JSON:
| Entrada JSON | Tras convertir a XML y volver a JSON |
|---|---|
| Número o booleano | Una cadena con su texto |
null u objeto vacío {} |
Una cadena vacía |
| Array con un solo elemento | Un valor sin el array que lo rodeaba |
Objeto que solo contiene #text |
Una cadena |
Números como 9007199254740993, 1.2300 y -0 conservan su escritura al pasar a XML, aunque pierdan el tipo numérico de JSON. Los números fuera del rango finito admitido se rechazan.
Un objeto @attributes: {} vacío se omite con aviso; un atributo vacío como id="" sí se conserva. Un array raíz vuelve dentro de la propiedad que representa la raíz XML, no como array raíz de JSON.
Qué XML admite
La herramienta convierte datos XML 1.0 con un único elemento raíz. Los nombres deben tener entre 1 y 64 caracteres ASCII, empezar por letra o guion bajo y continuar con letras, dígitos, guiones bajos, guiones o puntos. Se rechazan nombres que empiecen por xml, la sintaxis de espacios de nombres y nombres inseguros relacionados con prototipos. Las claves no se renombran automáticamente.
No se admiten espacios de nombres, DTD/DOCTYPE, declaraciones ENTITY, instrucciones de procesamiento ni texto mezclado con elementos hijos. Las etiquetas de cierre deben coincidir, los atributos deben ser distintos y las claves JSON no pueden estar duplicadas.
Las cinco entidades XML predefinidas y las referencias numéricas válidas se decodifican una sola vez: &lt; se convierte en el texto <. Se conserva el texto de CDATA; sus delimitadores, los comentarios y la declaración XML se omiten con aviso. Los saltos de línea XML pasan a LF. Las tabulaciones y saltos literales de los atributos pasan a espacios; las referencias numéricas conservan esos caracteres. Se omiten los espacios de formato entre hijos, pero se conservan los del texto de un elemento sin hijos.
Archivos, límites y descargas
Los archivos deben usar UTF-8. Se retira un BOM inicial con aviso y se rechaza un segundo. Copiar y descargar incluyen el resultado completo, aunque la vista previa se detenga en 50.000 unidades UTF-16. Si falla el portapapeles, puedes copiarlo manualmente.
| Límite | Máximo |
|---|---|
| Archivo / entrada codificada en UTF-8 | 2.000.000 bytes |
| Longitud de entrada | 1.000.000 unidades UTF-16 |
| Salida | 2.000.000 unidades UTF-16 / 4.000.000 bytes |
| Profundidad del JSON de entrada / XML | 100 / 40 |
| Tiempo de conversión | 8 segundos |
Los documentos complejos pueden alcanzar otros límites de procesamiento antes de estos máximos. Los errores, la cancelación y los límites superados no generan una salida parcial.
Las descargas se llaman converted.xml o converted.json, en UTF-8 sin BOM. XML sale sin declaración y termina con LF. JSON usa la sangría elegida, sin salto de línea final.
La conversión usa un Worker local y requiere JavaScript. Los documentos no se suben ni se guardan en el navegador. Tras cambiar la entrada, el modo o las opciones, vuelve a convertir para obtener un resultado que puedas exportar.