Saltar al contenido principal

JSON vs XML

Elige JSON para cargas de API y cualquier cosa que consuma un navegador o una app móvil: más pequeño, con tipos, procesado universalmente. Elige XML para datos con forma de documento, integración empresarial e interfaces que necesiten espacios de nombres o validación XSD estricta. Ninguno está obsoleto: JSON domina la transmisión, XML domina los documentos, y los convertidores de esta página unen ambas direcciones.

Solo local

JSON vs XML: explicación

Durante quince años XML fue la respuesta por defecto a casi cualquier pregunta sobre datos —servicios SOAP, canales RSS, documentos Office, configuración de builds—. JSON tomó después la capa de API casi por completo, y desde entonces los dos formatos viven en una cómoda división del trabajo. El relato de la rivalidad esconde la historia real: se construyeron para trabajos distintos. XML desciende de SGML y es un lenguaje de marcado para documentos; JSON es un formato de intercambio de datos cuya gramática cabe en una tarjeta. La mayoría de las decepciones con cualquiera de los dos vienen de pedirle que haga el trabajo del otro.

Las diferencias cotidianas son concretas. XML marca cada valor con una etiqueta de apertura y otra de cierre, lo que aproximadamente duplica el marcado por campo; JSON envuelve los valores entre comillas y comas. XML está tipado como cadenas —todo es texto hasta que un esquema diga otra cosa—, mientras que JSON declara números, booleanos y null en la propia sintaxis. XML tiene atributos, espacios de nombres y contenido mixto; JSON tiene claves, arrays y nada de eso. Cada una de esas decisiones se propaga hacia los esquemas, las herramientas y el tamaño de la carga.

Esta página mantiene la comparación donde muerde: sintaxis y el impuesto de etiquetas, tipos, esquemas y espacios de nombres, tamaño y streaming. Cuando necesites cruzar de uno a otro, ambas direcciones tienen convertidores en este sitio —y como todo aquí, procesan y emiten por completo en tu navegador—.

¿Necesitas entregar una carga JSON a un sistema que solo habla XML? El el convertidor de JSON a XML mapea claves y arrays a elementos en tu navegador, sin subir nada.

¿Has heredado un feed antiguo o una respuesta SOAP? El el convertidor de XML a JSON le da forma de JSON localmente, antes de que tu código toque una etiqueta.

Orígenes: un lenguaje de marcado frente a un formato de datos

El ancestro de XML es SGML, y su objetivo de diseño era marcar documentos: prosa que mezcla párrafos, énfasis y estructura. Por eso XML, solo de los dos, soporta contenido mixto —texto con marcado en línea como <title>Learning <em>XML</em></title>— y por eso creció con atributos, referencias a entidades y un modelo de procesamiento pesado. JSON se extrajo de los literales de objeto de JavaScript hacia 2001 con un único propósito: mover datos estructurados entre programas con la mínima gramática posible. En JSON no hay contenido mixto, ni maquinaria de entidades, ni árbol de documento —objetos, arrays y cuatro tipos escalares son todo el universo—.

Sintaxis: el impuesto de etiquetas, los atributos y el array que falta

Cada elemento XML abre y cierra, así que un valor simple cuesta dos etiquetas: <price>19.99</price>. XML ofrece una grafía alternativa —<price currency="EUR">19.99</price>— y la elección atributo-o-elemento lleva dos décadas generando debate sin respuesta universal. JSON tiene exactamente una grafía para un par clave/valor y una para una lista. Lo crucial: JSON tiene arrays nativos; XML no tiene ningún tipo array. Una lista se expresa repitiendo un elemento, lo que significa que toda herramienta de JSON a XML debe ponerse de acuerdo en una convención para nombrar y envolver los elementos repetidos.

AspectoJSONXML
GramáticaUna página (RFC 8259)XML 1.0 más espacios de nombres, infoset y maquinaria DTD
ContenedoresObjetos y arraysElementos; los arrays son elementos repetidos
TipadoNúmeros, booleanos y null son nativosTodos los valores son texto hasta que un esquema los tipa
AtributosNinguno — una grafía por parAtributo o elemento, una elección permanente
Espacios de nombresNinguno; solo convenciones de prefijoMecanismo xmlns integrado para vocabularios fusionados
ComentariosNinguno, eliminados por diseñoSí, <!-- --> en cualquier parte del árbol
Lenguaje de esquemasJSON SchemaXSD, DTD, Relax NG
Contenido mixtoNo expresableNativo — texto entrelazado con marcado

Esquemas y espacios de nombres: donde XML todavía se gana la vida

XSD es la ventaja silenciosa de XML en las empresas: un lenguaje de esquemas maduro, con tipos derivados, restricciones de cardinalidad, facetas de patrón y dos décadas de herramientas capaces de validar un documento e informar con precisión de qué elemento rompió qué regla. JSON Schema persigue el mismo objetivo con otra forma —es expresivo, soporta lógica condicional y se ha vuelto el lenguaje de contratos de facto para las APIs modernas—, pero su larga historia de borradores hace que las herramientas varíen más en lo que aceptan. Ambos ecosistemas pueden ser estrictos; el de XML simplemente es más viejo.

Los espacios de nombres son la otra característica duradera de XML. Una página XHTML puede incrustar SVG y MathML sin colisiones de claves porque cada vocabulario lleva su propio URI. JSON no tiene mecanismo equivalente —las colisiones de nombres se evitan por convención, o con diseños por capas como JSON-LD que adjuntan el contexto de forma explícita—.

Tamaño, streaming y cuándo elegir cuál

Para los mismos datos, las cargas XML suelen ser más grandes: solo las etiquetas de cierre duplican aproximadamente el marcado de los elementos, y los estilos cargados de atributos añaden más. Ambos formatos comprimen bien con gzip —la redundancia de XML es muy compresible—, pero el sobrecoste base rara vez se cierra del todo. En streaming, el ecosistema de parsers de XML llega más lejos: los parsers push SAX y StAX se diseñaron para documentos demasiado grandes para la memoria, y todas las plataformas traen uno. Los parsers de JSON en streaming existen y son excelentes, pero el procesado del documento completo sigue siendo lo habitual por defecto.

Elige JSON para cualquier cosa que se intercambien un par de programas: APIs web y móviles, logs estructurados, cargas de servicio a servicio. Elige XML cuando una especificación lo obliga —pilas SOAP, cadenas de publicación, formatos Office, muchos estándares sanitarios y financieros— o cuando necesitas validación XSD y espacios de nombres en la transmisión. La recomendación se invierte con claridad: el JSON que se cuela en una cadena de documentos suele querer ser XML, y una API de era SOAP que expone JSON limpio es una victoria de migración, no una traición.

Preguntas frecuentes

¿JSON está reemplazando a XML?

Desalojó a XML de un territorio, no de todos. JSON ahora domina la capa de API —REST, móvil, navegador—, mientras que XML sigue aferrado a donde dominan los documentos o los estándares: archivos Office y EPUB, gráficos SVG, empresas SOAP y especificaciones de edición, salud y finanzas que lo obligan. Aprender ambos sigue valiendo la pena; convertir entre ellos es rutina.

¿Por qué XML es más grande que JSON para los mismos datos?

Dos razones estructurales. Cada elemento necesita una etiqueta de cierre, así que cada valor paga el marcado dos veces, y XML no tiene array nativo —las listas se vuelven elementos repetidos con sus propias etiquetas—. La compresión estrecha la diferencia porque las etiquetas repetidas comprimen extremadamente bien con gzip, pero los tamaños en crudo difieren lo suficiente como para que las APIs de la era móvil se estandarizaran en JSON.

¿Convertir XML o JSON aquí sube mis datos?

No. Ambos convertidores procesan y emiten dentro de tu pestaña del navegador sin que un servidor intervenga —no hay ningún endpoint de subida, y la Content-Security-Policy del sitio restringe el acceso de red a sí misma—. Abre el panel Network de DevTools mientras conviertes y no verás ninguna petición saliente que lleve tu carga.

¿Los valores XML deben vivir en atributos o en elementos hijos?

Una regla que funciona: atributos para los metadatos sobre el elemento —identificadores, tipos, unidades, idioma— y elementos hijos para el contenido, en especial cualquier cosa larga, ordenada, repetida o con marcado propio. Los atributos no pueden repetirse, no pueden sostener estructura y son invisibles para el contenido mixto, que es por lo que cualquier lista de cosas tiene que ser elementos.

¿La validación XSD es más fuerte que la de JSON Schema?

Más fuerte en madurez, no en principio. XSD tiene veinte años de herramientas estables, tipos derivados y reglas estrictas de secuenciación en las que confían las empresas. JSON Schema es expresivo —condiciones, propiedades de patrón, definiciones reutilizables— y dominante para los contratos de APIs modernas. Elige con el que tu cadena de herramientas ya valide; cambiar de formato no elimina la necesidad de un esquema.

¿Cómo se convierten los arrays JSON en elementos XML?

Como a XML le falta un tipo array, los convertidores mapean un array a elementos hijos repetidos bajo un envoltorio, o a hermanos que comparten un nombre —la convención varía según la herramienta y pesa enormemente en los viajes de ida y vuelta—. Los convertidores de este sitio documentan el mapeo exacto que usan, así que un documento que pasa por ambas direcciones se mantiene predecible.

¿Dónde puedo leer las normas citadas aquí?

  • RFC 8259 — El formato de intercambio de datos JavaScript Object Notation (JSON)
  • XML 1.0 — Lenguaje de marcado extensible (XML) 1.0