Formato de código / Guías

Conversión JSON y XML: ¿qué conserva la ida y vuelta?

JSON y XML pueden representar registros relacionados, pero organizan los valores de otro modo. Las reglas de correspondencia afectan al resultado.

Dos estructuras, no dos grafías

JSON dispone de objetos, arreglos, cadenas, números, booleanos y null. XML contiene elementos con nombre, atributos, nodos de texto y un árbol documental ordenado. No existe una regla universal y sin pérdidas que transforme cualquier valor JSON en cualquier documento XML. Un conversor debe decidir cómo representar la raíz, los atributos y los hijos repetidos. MultiVerto utiliza un objeto JSON con una sola propiedad como raíz del documento XML. El nombre de esa propiedad pasa a ser un elemento. El objeto especial @attributes contiene atributos y los arreglos generan hijos repetidos. Son convenciones de esta herramienta, no nombres definidos por el estándar XML. Conoce el esquema esperado antes de aplicar este mapeo a datos reales.

Sigue un registro de pedido

En el ejemplo integrado, order tiene @attributes con id igual al texto 7, un arreglo item con pen y book, y count igual al número 2. La herramienta de JSON a XML crea una raíz order, el atributo id, dos elementos item y un elemento count. La herramienta inversa puede leer este documento sencillo. Agrupa los elementos item repetidos en un arreglo y guarda el atributo en @attributes. Sin embargo, el texto de un elemento se interpreta como texto: count, que era el número JSON 2, vuelve como cadena 2. El dígito visible coincide, pero el tipo ya no. Compara las estructuras de datos analizadas y no solamente el aspecto de la página.

El registro se convierte, pero el tipo numérico cambia al volver.
  1. JSON: count es número 2; item es arreglo
  2. XML: count es texto; aparecen dos item
  3. Vuelta a JSON: count es cadena 2; revisar esquema

Dónde cambia la información

En XML, atributos y elementos hijos son distintos; en un objeto JSON todo suele aparecer como propiedad hasta que una convención reserva ciertos nombres. Los nombres repetidos pueden transformarse en arreglos, pero un solo elemento puede convertirse en escalar y sorprender a un programa que espera siempre un arreglo. JSON null, la precisión numérica y los booleanos requieren reglas explícitas porque el texto XML por sí solo no revela esos tipos. El orden de elementos también puede importar a un consumidor XML aunque la aplicación trate las propiedades JSON como no ordenadas. MultiVerto rechaza deliberadamente documentos XML con texto significativo mezclado con elementos hijos y no admite todas las construcciones XML.

Diseña la correspondencia primero

Si conectas dos servicios, consigue un documento de ejemplo y el esquema del receptor. Decide si cada campo debe ser atributo o elemento y cómo representar arreglos. Define cómo interpretará el receptor número, booleano, cadena vacía y campo ausente. Si el origen es XML, comprueba espacios de nombres y contenido mixto antes de usar un mapeador ligero; puede hacer falta un analizador XML especializado. Si el origen es JSON, verifica que la raíz sea un solo objeto con nombre y que sus claves sean nombres de elemento válidos para esta herramienta. Prueba un caso representativo en ambos sentidos y valida el resultado en el sistema de destino.

Comprueba la vuelta con intención

Copia la salida de ejemplo al conversor enlazado de XML a JSON y compara los datos reconstruidos con el JSON inicial. Fíjate en tipos, elementos repetidos, ubicación de atributos y valores vacíos. Deja el arreglo item con un solo elemento y comprueba si la aplicación receptora sigue esperando un arreglo. Prueba un count con cero inicial solo si tu esquema lo permite; el significado de texto y número no es el mismo. Conserva el original junto a la versión convertida. Formatear XML facilita revisar su anidamiento, pero no arregla un mapeo equivocado. Analizarlo sin errores confirma sintaxis, no el significado de negocio esperado.

Prueba el convertidor

Convierte el pedido a XML y prueba después el mapeo inverso.

Convierte un objeto JSON con una raíz en elementos XML.

Abrir el convertidor completo

Más guías

Guías de conversión

Explorar guías